From 8c3137a1b2d90feb3aeaae83d31898367b3f0a25 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 19:35:16 -0300 Subject: [PATCH 001/435] Update README.md --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1559bd7b5..0f6d8cbc2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,7 @@ -## Sonoff-Tasmota +## Sonoff-Tasmota (KNX_MOD) + +-- WORK IN PROGRESS -- + Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. Current version is **5.12.0d** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. @@ -66,4 +69,4 @@ The following devices are supported: ### License -This program is licensed under GPL-3.0 \ No newline at end of file +This program is licensed under GPL-3.0 From 893e10d8b1c416578c42064b4592532d0d238518 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 19:37:07 -0300 Subject: [PATCH 002/435] Create xdrv_08_KNX.ino --- sonoff/xdrv_08_KNX.ino | 188 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 188 insertions(+) create mode 100644 sonoff/xdrv_08_KNX.ino diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_08_KNX.ino new file mode 100644 index 000000000..0aa1d6ab2 --- /dev/null +++ b/sonoff/xdrv_08_KNX.ino @@ -0,0 +1,188 @@ +/* + xdrv_08_KNX.ino - KNX IP Protocol support for Sonoff-Tasmota + + Copyright (C) 2018 Adrian Scillato + + Based on esp-knx-ip library for KNX/IP communication on an ESP8266 + Author: Nico Weichbrodt + Web: https://github.com/envy/esp-knx-ip + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_KNX + +#define ROOT_PREFIX "/knx" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx + +#include // Include KNX IP Lite library + +config_id_t hostname_id; +callback_id_t callback_id; +config_id_t enable_sending_id; +config_id_t update_rate_id; +config_id_t status_ga_id; +bool button_knx_state; + +void KNXStart() +{ + + button_knx_state = false; + + snprintf_P(log_data, sizeof(log_data), PSTR("KNX START")); + AddLog(LOG_LEVEL_DEBUG); + + // Set Physical KNX Address of ESP KNX + knx.physical_address_set(knx.GA_to_address(1,1,1)); + + // Register the config options + hostname_id = knx.config_register_string("Hostname", 20, String("sonoff_DHT11")); + //type_id = knx.config_register_options("Type", type_options, SONOFF_TYPE_BASIC); + enable_sending_id = knx.config_register_bool("Send on update", true); + update_rate_id = knx.config_register_int("Update rate (s)", 1); + + // Register and Set Group Addresses to Write to + status_ga_id = knx.config_register_ga("Channel 1 Status GA"); + knx.config_set_ga(status_ga_id, knx.GA_to_address(2,2,1)); + //channels[1].status_ga_id = knx.config_register_ga("Channel 2 Status GA", is_4ch_or_4ch_pro); + //channels[2].status_ga_id = knx.config_register_ga("Channel 3 Status GA", is_4ch_or_4ch_pro); + //channels[3].status_ga_id = knx.config_register_ga("Channel 4 Status GA", is_4ch_or_4ch_pro); + //temp_ga = knx.config_register_ga("Temperature", show_periodic_options); + //knx.config_set_ga(temp_ga,4,1,1); + //hum_ga = knx.config_register_ga("Humidity", show_periodic_options); + //knx.config_set_ga(hum_ga,4,1,2); + + // Register and set Group Addresses to Receive data from and execute callbacks +// callback_id = knx.callback_register("Channel 1", channel_cb, &button_knx_state); +// knx.callback_assign(callback_id, knx.GA_to_address(2,2,1)); + //knx.callback_register("Channel 2", channel_cb, &channels[1], is_4ch_or_4ch_pro); + //knx.callback_register("Channel 3", channel_cb, &channels[2], is_4ch_or_4ch_pro); + //knx.callback_register("Channel 4", channel_cb, &channels[3], is_4ch_or_4ch_pro); + //knx.callback_register("Read Temperature", temp_cb); + //knx.callback_register("Read Humidity", hum_cb); + + // Register data to be shown on the webserver + knx.feedback_register_bool("Channel 1 is on", &button_knx_state); + knx.feedback_register_action("Toogle channel 1", toggle_chan); + //knx.feedback_register_bool("Channel 2 is on", &(channels[1].state), is_4ch_or_4ch_pro); + //knx.feedback_register_action("Toogle channel 2", toggle_chan, &channels[1], is_4ch_or_4ch_pro); + //knx.feedback_register_bool("Channel 3 is on", &(channels[2].state), is_4ch_or_4ch_pro); + //knx.feedback_register_action("Toogle channel 3", toggle_chan, &channels[2], is_4ch_or_4ch_pro); + //knx.feedback_register_bool("Channel 4 is on", &(channels[3].state), is_4ch_or_4ch_pro); + //knx.feedback_register_action("Toogle channel 4", toggle_chan, &channels[3], is_4ch_or_4ch_pro); + //knx.feedback_register_float("Temperature (°C)", &last_temp); + //knx.feedback_register_float("Humidity (%)", &last_hum); + + + + + // Start knx + #ifdef USE_WEBSERVER + //knx.start(); // Start KNX with its own webserver + knx.start(WebServer); // Start KNX with a webserver already running on 'WebServer' + // On this case you might want to change ROOT_PREFIX to + // #define ROOT_PREFIX "/knx" before #include + snprintf_P(log_data, sizeof(log_data), PSTR("KNX START WEBSERVER")); + AddLog(LOG_LEVEL_DEBUG); + #else + knx.start(nullptr); // Start KNX WITHOUT webserver + snprintf_P(log_data, sizeof(log_data), PSTR("KNX START WITHOUT WEBSERVER")); + AddLog(LOG_LEVEL_DEBUG); + #endif // USE_WEBSERVER + +} + + +void KNXLoop() +{ + knx.loop(); // Process knx events +} + +/* +void KNX_EVERY_SECOND() { + +} +*/ + +void toggle_chan(void *arg) +{ +// sonoff_channel_t *chan = (sonoff_channel_t *)arg; + button_knx_state = !button_knx_state; +// digitalWrite(chan->pin, chan->state ? HIGH : LOW); +// digitalWrite(LED_PIN, chan->state ? LOW : HIGH); + knx.write_1bit(knx.config_get_ga(status_ga_id), button_knx_state); + snprintf_P(log_data, sizeof(log_data), PSTR("KNX TOGGLE")); + AddLog(LOG_LEVEL_DEBUG); +} + +/* +void channel_cb(message_t const &msg, void *arg) +{ +// sonoff_channel_t *chan = (sonoff_channel_t *)arg; + switch (msg.ct) + { + case KNX_CT_WRITE: +// chan->state = msg.data[0]; +// Serial.println(chan->state ? "Toggle on" : "Toggle off"); +// digitalWrite(chan->pin, chan->state ? HIGH : LOW); +// digitalWrite(LED_PIN, chan->state ? LOW : HIGH); + knx.write_1bit(knx.config_get_ga(status_ga_id), button_knx_state); + snprintf_P(log_data, sizeof(log_data), PSTR("KNX WRITE")); + AddLog(LOG_LEVEL_DEBUG); + break; + case KNX_CT_READ: + knx.answer_1bit(msg.received_on, button_knx_state); + snprintf_P(log_data, sizeof(log_data), PSTR("KNX TELEGRAM RECEIVED")); + AddLog(LOG_LEVEL_DEBUG); + break; + } +} +*/ + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_08 + +boolean Xdrv08(byte function) +{ + boolean result = false; +// if (Settings.flag.knx_enabled) { + switch (function) { + case FUNC_INIT: + KNXStart(); + break; + case FUNC_LOOP: + KNXLoop(); + break; +// case FUNC_EVERY_SECOND; +// KNX_EVERY_SECOND(); +// break; +//#ifdef USE_WEBSERVER +// case FUNC_WEB_APPEND: +// EnergyShow(0); +// break; +//#endif // USE_WEBSERVER +// case FUNC_SAVE_BEFORE_RESTART: +// EnergySaveState(); +// break; +// case FUNC_COMMAND: +// result = MqttCommand(); +// break; + } +// } + return result; +} + +#endif // USE_KNX From 885d9c52673c063b6c03749cefb2e704200266f9 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 19:38:13 -0300 Subject: [PATCH 003/435] Update user_config.h --- sonoff/user_config.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index f5f7acdc7..a355796a7 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -138,6 +138,9 @@ #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix #define HOME_ASSISTANT_DISCOVERY_ENABLE 0 // [SetOption19] Home Assistant Discovery (0 = Disable, 1 = Enable) +// -- KNX IP Protocol ----------------------------- +#define USE_KNX // Enable KNX IP Protocol Support + // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) - Disable by // #define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin) From 9bd73732fab22ca90b826075f6ceec8f689f3175 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 19:39:57 -0300 Subject: [PATCH 004/435] Update user_config.h --- sonoff/user_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index a355796a7..4fd147b2a 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -76,9 +76,9 @@ * Select ONE of possible MQTT library types below \*********************************************************************************************/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE 1 // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE 1 // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE 2 // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE 2 // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE 3 // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only From f70286508987e9ab184a5c1174a86b55f953a6ab Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 19:40:39 -0300 Subject: [PATCH 005/435] Update xdrv_00_mqtt.ino --- sonoff/xdrv_00_mqtt.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_00_mqtt.ino b/sonoff/xdrv_00_mqtt.ino index b8e76ca7e..536ff1469 100644 --- a/sonoff/xdrv_00_mqtt.ino +++ b/sonoff/xdrv_00_mqtt.ino @@ -68,8 +68,10 @@ bool mqtt_connected = false; // MQTT virtual connection status #include // Max message size calculated by PubSubClient is (MQTT_MAX_PACKET_SIZE < 5 + 2 + strlen(topic) + plength) -#if (MQTT_MAX_PACKET_SIZE -TOPSZ -7) < MIN_MESSZ // If the max message size is too small, throw an error at compile time. See PubSubClient.cpp line 359 - #error "MQTT_MAX_PACKET_SIZE is too small in libraries/PubSubClient/src/PubSubClient.h, increase it to at least 1000" +#if (MQTT_MAX_PACKET_SIZE -TOPSZ -7) < MIN_MESSZ // If the max message size is too small, throw a warning at compile time. See PubSubClient.cpp line 359 + #warning "MQTT_MAX_PACKET_SIZE is too small in libraries/PubSubClient/src/PubSubClient.h, increasing it to 1000" + #undef MQTT_MAX_PACKET_SIZE + #define MQTT_MAX_PACKET_SIZE 1000 #endif PubSubClient MqttClient(EspClient); From 4b94da4d0648a63160bb90a294460a71d3cc98e7 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 7 Mar 2018 22:49:24 -0300 Subject: [PATCH 006/435] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0f6d8cbc2..952bb895e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ## Sonoff-Tasmota (KNX_MOD) --- WORK IN PROGRESS -- +-- WORK IN PROGRESS -- Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) + +----------------------------------------------------------------------------------------------------------------------------------- Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. From 3c65fa51d1fa3178cfb2c7fa479ef3506b37f35e Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Fri, 9 Mar 2018 23:48:21 -0300 Subject: [PATCH 007/435] Update webserver.ino --- sonoff/webserver.ino | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index fb248a2a7..cae0b27ca 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -25,6 +25,10 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ +#ifdef USE_KNX +#include // Include KNX IP library +#endif // USE_KNX + #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) @@ -367,6 +371,9 @@ void StartWebserver(int type, IPAddress ipweb) } #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); +#ifdef USE_KNX + knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library +#endif // USE_KNX } reset_web_log_flag = 0; WebServer->begin(); // Web server start From 633fba2efee219687d6b3fa2f6b83575c1d1867a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Fri, 9 Mar 2018 23:52:33 -0300 Subject: [PATCH 008/435] Update xdrv_08_KNX.ino --- sonoff/xdrv_08_KNX.ino | 155 ++++++++++++----------------------------- 1 file changed, 43 insertions(+), 112 deletions(-) diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_08_KNX.ino index 0aa1d6ab2..d1f263aad 100644 --- a/sonoff/xdrv_08_KNX.ino +++ b/sonoff/xdrv_08_KNX.ino @@ -23,89 +23,26 @@ #ifdef USE_KNX -#define ROOT_PREFIX "/knx" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx +#include // Include KNX IP library + // esp-knx-ip library modifications: + // esp-knx-ip.h -> Root_prefix "/knx" + // debug off + // esp-knx-ip-send.cpp -> no checksum + // esp-knx-ip-webserver.cpp -> order and format -#include // Include KNX IP Lite library - -config_id_t hostname_id; -callback_id_t callback_id; -config_id_t enable_sending_id; -config_id_t update_rate_id; -config_id_t status_ga_id; -bool button_knx_state; +address_t physaddr; void KNXStart() { - - button_knx_state = false; - - snprintf_P(log_data, sizeof(log_data), PSTR("KNX START")); - AddLog(LOG_LEVEL_DEBUG); - - // Set Physical KNX Address of ESP KNX - knx.physical_address_set(knx.GA_to_address(1,1,1)); - - // Register the config options - hostname_id = knx.config_register_string("Hostname", 20, String("sonoff_DHT11")); - //type_id = knx.config_register_options("Type", type_options, SONOFF_TYPE_BASIC); - enable_sending_id = knx.config_register_bool("Send on update", true); - update_rate_id = knx.config_register_int("Update rate (s)", 1); - - // Register and Set Group Addresses to Write to - status_ga_id = knx.config_register_ga("Channel 1 Status GA"); - knx.config_set_ga(status_ga_id, knx.GA_to_address(2,2,1)); - //channels[1].status_ga_id = knx.config_register_ga("Channel 2 Status GA", is_4ch_or_4ch_pro); - //channels[2].status_ga_id = knx.config_register_ga("Channel 3 Status GA", is_4ch_or_4ch_pro); - //channels[3].status_ga_id = knx.config_register_ga("Channel 4 Status GA", is_4ch_or_4ch_pro); - //temp_ga = knx.config_register_ga("Temperature", show_periodic_options); - //knx.config_set_ga(temp_ga,4,1,1); - //hum_ga = knx.config_register_ga("Humidity", show_periodic_options); - //knx.config_set_ga(hum_ga,4,1,2); - - // Register and set Group Addresses to Receive data from and execute callbacks -// callback_id = knx.callback_register("Channel 1", channel_cb, &button_knx_state); -// knx.callback_assign(callback_id, knx.GA_to_address(2,2,1)); - //knx.callback_register("Channel 2", channel_cb, &channels[1], is_4ch_or_4ch_pro); - //knx.callback_register("Channel 3", channel_cb, &channels[2], is_4ch_or_4ch_pro); - //knx.callback_register("Channel 4", channel_cb, &channels[3], is_4ch_or_4ch_pro); - //knx.callback_register("Read Temperature", temp_cb); - //knx.callback_register("Read Humidity", hum_cb); - - // Register data to be shown on the webserver - knx.feedback_register_bool("Channel 1 is on", &button_knx_state); - knx.feedback_register_action("Toogle channel 1", toggle_chan); - //knx.feedback_register_bool("Channel 2 is on", &(channels[1].state), is_4ch_or_4ch_pro); - //knx.feedback_register_action("Toogle channel 2", toggle_chan, &channels[1], is_4ch_or_4ch_pro); - //knx.feedback_register_bool("Channel 3 is on", &(channels[2].state), is_4ch_or_4ch_pro); - //knx.feedback_register_action("Toogle channel 3", toggle_chan, &channels[2], is_4ch_or_4ch_pro); - //knx.feedback_register_bool("Channel 4 is on", &(channels[3].state), is_4ch_or_4ch_pro); - //knx.feedback_register_action("Toogle channel 4", toggle_chan, &channels[3], is_4ch_or_4ch_pro); - //knx.feedback_register_float("Temperature (°C)", &last_temp); - //knx.feedback_register_float("Humidity (%)", &last_hum); - - - - - // Start knx - #ifdef USE_WEBSERVER - //knx.start(); // Start KNX with its own webserver - knx.start(WebServer); // Start KNX with a webserver already running on 'WebServer' - // On this case you might want to change ROOT_PREFIX to - // #define ROOT_PREFIX "/knx" before #include - snprintf_P(log_data, sizeof(log_data), PSTR("KNX START WEBSERVER")); - AddLog(LOG_LEVEL_DEBUG); - #else - knx.start(nullptr); // Start KNX WITHOUT webserver - snprintf_P(log_data, sizeof(log_data), PSTR("KNX START WITHOUT WEBSERVER")); - AddLog(LOG_LEVEL_DEBUG); - #endif // USE_WEBSERVER - + knx.physical_address_set(knx.PA_to_address(1, 1, 1)); // Set Physical KNX Address of the device } void KNXLoop() { +// if (Settings.flag.knx_enabled) { knx.loop(); // Process knx events +// } } /* @@ -114,40 +51,42 @@ void KNX_EVERY_SECOND() { } */ -void toggle_chan(void *arg) +void KNXSaveSettings() { -// sonoff_channel_t *chan = (sonoff_channel_t *)arg; - button_knx_state = !button_knx_state; -// digitalWrite(chan->pin, chan->state ? HIGH : LOW); -// digitalWrite(LED_PIN, chan->state ? LOW : HIGH); - knx.write_1bit(knx.config_get_ga(status_ga_id), button_knx_state); - snprintf_P(log_data, sizeof(log_data), PSTR("KNX TOGGLE")); - AddLog(LOG_LEVEL_DEBUG); -} + /* + char stemp[20]; + char ssensor_indices[6 * MAX_DOMOTICZ_SNS_IDX]; + char tmp[100]; -/* -void channel_cb(message_t const &msg, void *arg) -{ -// sonoff_channel_t *chan = (sonoff_channel_t *)arg; - switch (msg.ct) - { - case KNX_CT_WRITE: -// chan->state = msg.data[0]; -// Serial.println(chan->state ? "Toggle on" : "Toggle off"); -// digitalWrite(chan->pin, chan->state ? HIGH : LOW); -// digitalWrite(LED_PIN, chan->state ? LOW : HIGH); - knx.write_1bit(knx.config_get_ga(status_ga_id), button_knx_state); - snprintf_P(log_data, sizeof(log_data), PSTR("KNX WRITE")); - AddLog(LOG_LEVEL_DEBUG); - break; - case KNX_CT_READ: - knx.answer_1bit(msg.received_on, button_knx_state); - snprintf_P(log_data, sizeof(log_data), PSTR("KNX TELEGRAM RECEIVED")); - AddLog(LOG_LEVEL_DEBUG); - break; + for (byte i = 0; i < MAX_DOMOTICZ_IDX; i++) { + snprintf_P(stemp, sizeof(stemp), PSTR("r%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.domoticz_relay_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); + snprintf_P(stemp, sizeof(stemp), PSTR("k%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.domoticz_key_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); + snprintf_P(stemp, sizeof(stemp), PSTR("s%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.domoticz_switch_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); } + ssensor_indices[0] = '\0'; + for (byte i = 0; i < DZ_MAX_SENSORS; i++) { + snprintf_P(stemp, sizeof(stemp), PSTR("l%d"), i +1); + WebGetArg(stemp, tmp, sizeof(tmp)); + Settings.domoticz_sensor_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); + snprintf_P(ssensor_indices, sizeof(ssensor_indices), PSTR("%s%s%d"), ssensor_indices, (strlen(ssensor_indices)) ? "," : "", Settings.domoticz_sensor_idx[i]); + } + WebGetArg("ut", tmp, sizeof(tmp)); + Settings.domoticz_update_timer = (!strlen(tmp)) ? DOMOTICZ_UPDATE_TIMER : atoi(tmp); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DOMOTICZ D_CMND_IDX " %d,%d,%d,%d, " D_CMND_KEYIDX " %d,%d,%d,%d, " D_CMND_SWITCHIDX " %d,%d,%d,%d, " D_CMND_SENSORIDX " %s, " D_CMND_UPDATETIMER " %d"), + Settings.domoticz_relay_idx[0], Settings.domoticz_relay_idx[1], Settings.domoticz_relay_idx[2], Settings.domoticz_relay_idx[3], + Settings.domoticz_key_idx[0], Settings.domoticz_key_idx[1], Settings.domoticz_key_idx[2], Settings.domoticz_key_idx[3], + Settings.domoticz_switch_idx[0], Settings.domoticz_switch_idx[1], Settings.domoticz_switch_idx[2], Settings.domoticz_switch_idx[3], + ssensor_indices, Settings.domoticz_update_timer); + AddLog(LOG_LEVEL_INFO); + */ } -*/ /*********************************************************************************************\ * Interface @@ -168,15 +107,7 @@ boolean Xdrv08(byte function) break; // case FUNC_EVERY_SECOND; // KNX_EVERY_SECOND(); -// break; -//#ifdef USE_WEBSERVER -// case FUNC_WEB_APPEND: -// EnergyShow(0); -// break; -//#endif // USE_WEBSERVER -// case FUNC_SAVE_BEFORE_RESTART: -// EnergySaveState(); -// break; +// break; // case FUNC_COMMAND: // result = MqttCommand(); // break; From 5731f24b470d2fde0219266902e9fb1ea8c98c78 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Fri, 9 Mar 2018 23:54:14 -0300 Subject: [PATCH 009/435] Update webserver.ino --- sonoff/webserver.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index cae0b27ca..b5da167d7 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -192,6 +192,9 @@ const char HTTP_BTN_MENU3[] PROGMEM = #endif // USE_DOMOTICZ ""; const char HTTP_BTN_MENU4[] PROGMEM = +#ifdef USE_KNX + "
" +#endif // USE_KNX "
" "
" "
" From 0964a1a9dd7244eb35abbf04b51cd947f315d81b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 13 Mar 2018 04:42:57 -0300 Subject: [PATCH 010/435] Update xdrv_00_mqtt.ino --- sonoff/xdrv_00_mqtt.ino | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sonoff/xdrv_00_mqtt.ino b/sonoff/xdrv_00_mqtt.ino index dd46b8c07..9f89eb259 100644 --- a/sonoff/xdrv_00_mqtt.ino +++ b/sonoff/xdrv_00_mqtt.ino @@ -68,10 +68,8 @@ bool mqtt_connected = false; // MQTT virtual connection status #include // Max message size calculated by PubSubClient is (MQTT_MAX_PACKET_SIZE < 5 + 2 + strlen(topic) + plength) -#if (MQTT_MAX_PACKET_SIZE -TOPSZ -7) < MIN_MESSZ // If the max message size is too small, throw a warning at compile time. See PubSubClient.cpp line 359 - #warning "MQTT_MAX_PACKET_SIZE is too small in libraries/PubSubClient/src/PubSubClient.h, increasing it to 1000" - #undef MQTT_MAX_PACKET_SIZE - #define MQTT_MAX_PACKET_SIZE 1000 +#if (MQTT_MAX_PACKET_SIZE -TOPSZ -7) < MIN_MESSZ // If the max message size is too small, throw an error at compile time. See PubSubClient.cpp line 359 + #error "MQTT_MAX_PACKET_SIZE is too small in libraries/PubSubClient/src/PubSubClient.h, increase it to at least 1000" #endif PubSubClient MqttClient(EspClient); From 8d7bcf94f2668b2460aedfad189fcfb7bc5b976a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:42:18 -0300 Subject: [PATCH 011/435] Update sonoff.ino --- sonoff/sonoff.ino | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 3edbeac23..2e7d1b7fb 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -18,14 +18,11 @@ */ /*==================================================== Prerequisites: - - Change libraries/PubSubClient/src/PubSubClient.h - #define MQTT_MAX_PACKET_SIZE 1000 - - Select IDE Tools - Flash Mode: "DOUT" - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050C0005 // 5.12.0e +#define VERSION 0x050C0004 // 5.12.0d // Location specific includes #include // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) @@ -36,12 +33,14 @@ #include "sonoff_template.h" // Hardware configuration #include "sonoff_post.h" // Configuration overrides for all previous includes +/* #ifdef ARDUINO_ESP8266_RELEASE_2_4_0 #include "lwip/init.h" #if LWIP_VERSION_MAJOR != 1 #error Please use stable lwIP v1.4 #endif #endif +*/ // Libraries #include // RTC, Energy, OSWatch @@ -513,7 +512,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) Settings.pulse_timer[index -1] = payload16; // 0 - 65535 pulse_timer[index -1] = 0; } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE_ACTIVE_NVALUE, command, index, Settings.pulse_timer[index -1], pulse_timer[index -1]); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.pulse_timer[index -1]); } else if (CMND_BLINKTIME == command_code) { if ((payload > 2) && (payload <= 3600)) { @@ -1142,6 +1141,9 @@ void ExecuteCommandPower(byte device, byte state) #ifdef USE_DOMOTICZ DomoticzUpdatePowerState(device); #endif // USE_DOMOTICZ +#ifdef USE_KNX + KNXUpdatePowerState(device, power); +#endif // USE_KNX if (device <= MAX_PULSETIMERS) { // pulse_timer[(device -1)] = (power & mask) ? Settings.pulse_timer[(device -1)] : 0; pulse_timer[(device -1)] = (((POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? ~power : power) & mask) ? Settings.pulse_timer[(device -1)] : 0; @@ -1218,8 +1220,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (1 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), - baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), + baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } @@ -1262,8 +1264,8 @@ void PublishStatus(uint8_t payload) if (energy_flg) { if ((0 == payload) || (9 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":%d,\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), - Settings.energy_power_delta, Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), + Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "9")); } } From 43af6a1e0ff2da8d9d387d2ca04172ee8cc4b691 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:43:14 -0300 Subject: [PATCH 012/435] Update xdrv_08_KNX.ino --- sonoff/xdrv_08_KNX.ino | 233 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 221 insertions(+), 12 deletions(-) diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_08_KNX.ino index d1f263aad..0f03139a9 100644 --- a/sonoff/xdrv_08_KNX.ino +++ b/sonoff/xdrv_08_KNX.ino @@ -23,35 +23,242 @@ #ifdef USE_KNX + #include // Include KNX IP library - // esp-knx-ip library modifications: - // esp-knx-ip.h -> Root_prefix "/knx" - // debug off - // esp-knx-ip-send.cpp -> no checksum - // esp-knx-ip-webserver.cpp -> order and format + +void relay_cb(message_t const &msg, void *arg); address_t physaddr; +config_id_t enable_knx_id; +config_id_t disable_knx_id; +config_id_t ga_conf_id; +config_id_t cb_conf_id; +config_id_t update_rate_id; + +typedef struct __device_parameters +{ + const char *name; + config_id_t id; + bool show; +} device_parameters_t; + +device_parameters_t device_param[] = { + { D_SENSOR_RELAY " 1", 0, true}, + { D_SENSOR_RELAY " 2", 0, true}, + { D_SENSOR_RELAY " 3", 0, true}, + { D_SENSOR_RELAY " 4", 0, true}, +// {"Send Temp", 5, true}, +// {"BUTTON 1", 6, true}, + {nullptr, 0} +}; + +// Translations +config_webUI_t config_webUI = { + D_CONFIGURE_KNX, + D_KNX_PHYSICAL_ADDRESS, + D_KNX_SET, + D_KNX_ADD, + D_DELETE +}; + +int device_param_quantity = 4; +bool flag_knx_enabled = true; void KNXStart() { - knx.physical_address_set(knx.PA_to_address(1, 1, 1)); // Set Physical KNX Address of the device + +// KNX WebPage Configuration +// ------------------------- + +// The order of the knx.***_register_*** code, is the order that is going to be shown on the web page. + +// Translations +knx.config_web_UI(config_webUI); + +//knx.config_register_Title( D_KNX_PARAMETERS ); + +//knx.config_register_line(); + +//knx.config_register_SubTitle( D_KNX_GENERAL_CONFIG ); + +//Set Physical KNX Address of the device +knx.config_register_pa(); +//knx.physical_address_set(Settings.knx_physs_addr); +knx.physical_address_set(knx.PA_to_address(1, 1, 1)); + +//knx.config_register_label( D_KNX_PHYSICAL_ADDRESS_NOTE ); + +//knx.config_register_blankspace(); + +knx.feedback_register_action("KNX: " D_ON, knx_toggle_flag_enabled, D_STOP, nullptr, knx_status_enabled); +knx.feedback_register_action("KNX: " D_OFF, knx_toggle_flag_enabled, D_START, nullptr, knx_status_disabled); + +//knx.config_register_line(); + +//knx.config_register_SubTitle( D_KNX_GROUP_ADDRESS_TO_WRITE ); + +// Register Group Addresses to Send Data to +//for (int i = 0; i < Settings.knx_Registered_GA; ++i) +for (int i = 0; i < 4; ++i) +{ + device_param[i].id = knx.config_register_ga(String(device_param[i].name)); + + //////buscar en la config el param para setearlo + //knx.config_set_ga(ga_conf, Settings.knx_GA_addr(i)); + + //knx.config_set_ga(device_param[i].id, knx.GA_to_address(2,2,1)); +} + +knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); + + + + + + + + + + +/* /////config +Settings.knx.physs_addr = physical_address_get(); +Settings.knx.flag_knx_enabled + +k = 0 +for j = 0 to max cant items (relay1,2,3,etc) + for i = 0 to max cant items por param (cant de addr a relay 1) + address_t = knx.config_get_ga(device_param[j].id, i + 1); + if address_t then + settings.knx.paramGA(k) = j; + settings.knx.addressGA(k) = address_t + k++ + end if + next i +next j +settings.knx.Registered_GA = k - 1 + +settings.knx.update_rate = knx.config_get_int(update_rate_id) + +k = 0 +for j = 0 to max cant items (relay1,2,3,etc) + for i = 0 to max cant items por param (cant de addr a relay 1) + address_t = knx.config_get_cb(device_param[j].id, i + 1); + if address_t then + settings.knx.paramCB(k) = j; + settings.knx.addressCB(k) = address_t + k++ + end if + next i +next j +settings.knx.Registered_CB = k - 1 + + +*/ ////// + + + + + + + + + +//knx.config_register_blankspace(); + +//update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , Settings.knx_update_rate); +update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , 5); + +//knx.config_register_line(); + +//knx.config_register_SubTitle( D_KNX_GROUP_ADDRESS_TO_READ ); + +// Register Group Addresses to Receive data from and execute callbacks +//for (int i = 0; i < Settings.knx_Registered_CB; ++i) +for (int i = 0; i < 4; ++i) +{ + cb_conf_id = knx.callback_register(String(device_param[i].name), relay_cb, &device_param[i]); + //////cb_conf_id = knx.callback_register("Channel 1", relay_cb, &channels[i]); + //cb_conf_id = knx.callback_register(device_param[i].name, relay_cb, &device_param[i].id, &device_param[i].show, D_KNX_ADD); + //////buscar en la config el param para setearlo + //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); + knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); +} + +//knx.config_register_line(); + +knx.feedback_register_action("", KNXSaveSettings, D_SAVE); // Save Button + +knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Button + +// END KNX WebPage Configuration + + + + } void KNXLoop() { // if (Settings.flag.knx_enabled) { - knx.loop(); // Process knx events -// } + if (flag_knx_enabled) { + knx.loop(); // Process knx events + } + } /* void KNX_EVERY_SECOND() { - + } */ -void KNXSaveSettings() +void knx_toggle_flag_enabled(void *arg) +{ + flag_knx_enabled = !flag_knx_enabled; + // if flag_knx_enabled then knx.pause else knx.stop +} + +bool knx_status_enabled() +{ + return flag_knx_enabled; +} + +bool knx_status_disabled() +{ + return !flag_knx_enabled; +} + + +void relay_cb(message_t const &msg, void *arg) +{ + device_parameters_t *chan = (device_parameters_t *)arg; + switch (msg.ct) + { + case KNX_CT_WRITE: + ExecuteCommandPower(chan->id, msg.data[0]); + knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]); + break; + case KNX_CT_READ: + //knx.answer_1bit(msg.received_on, chan->state); + knx.answer_1bit(msg.received_on, false); + } +} + +void KNXUpdatePowerState(byte device, power_t state) +{ + bool power = bitRead(state, device -1); + knx.write_1bit(knx.config_get_ga(device_param[device -1].id), power); +} + + +void KNX_Return_button(void *arg) +{ + WebServer->sendHeader(F("Location"),F("/cn")); + WebServer->send(302); +} + +void KNXSaveSettings(void *arg) { /* char stemp[20]; @@ -105,14 +312,16 @@ boolean Xdrv08(byte function) case FUNC_LOOP: KNXLoop(); break; +// case FUNC_SET_POWER: +// break; // case FUNC_EVERY_SECOND; // KNX_EVERY_SECOND(); -// break; +// break; // case FUNC_COMMAND: // result = MqttCommand(); // break; } -// } +// } return result; } From de7746b008eeb9d6be5949282924e295176b4843 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:46:37 -0300 Subject: [PATCH 013/435] Add KNX Keys --- sonoff/language/en-GB.h | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 99faed325..5c7bc6ee8 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -32,9 +32,6 @@ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) -// HTML (ISO 639-1) Language Code -#define D_HTML_LANGUAGE "en" - // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -165,6 +162,13 @@ #define D_DATA_SIZE "Data Size" #define D_ANALOG_INPUT "Analog" +#define D_FINGERPRINT "Verify TLS fingerprint..." +#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" +#define D_RETRY_IN "Retry in" +#define D_VERIFIED "Verified" +#define D_INSECURE "Insecure connection due to invalid Fingerprint" +#define D_CONNECT_FAILED_TO "Connect failed to" + // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Blocked Loop" @@ -216,6 +220,7 @@ #define D_CONFIGURE_WIFI "Configure WiFi" #define D_CONFIGURE_MQTT "Configure MQTT" #define D_CONFIGURE_DOMOTICZ "Configure Domoticz" +#define D_CONFIGURE_KNX "Configure KNX" #define D_CONFIGURE_LOGGING "Configure Logging" #define D_CONFIGURE_OTHER "Configure Other" #define D_CONFIRM_RESET_CONFIGURATION "Confirm Reset Configuration" @@ -313,14 +318,6 @@ #define D_ENABLE_WEBLOG_FOR_RESPONSE "Enable weblog 2 if response expected" #define D_NEED_USER_AND_PASSWORD "Need user=&password=" -// xdrv_00_mqtt.ino -#define D_FINGERPRINT "Verify TLS fingerprint..." -#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" -#define D_RETRY_IN "Retry in" -#define D_VERIFIED "Verified using Fingerprint" -#define D_INSECURE "Insecure connection due to invalid Fingerprint" -#define D_CONNECT_FAILED_TO "Connect failed to" - // xdrv_wemohue.ino #define D_MULTICAST_DISABLED "Multicast disabled" #define D_MULTICAST_REJOINED "Multicast (re)joined" @@ -352,12 +349,25 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" #define D_DOMOTICZ_POWER_ENERGY "Power,Energy" #define D_DOMOTICZ_ILLUMINANCE "Illuminance" - #define D_DOMOTICZ_COUNT "Count/PM1" - #define D_DOMOTICZ_VOLTAGE "Voltage/PM2.5" - #define D_DOMOTICZ_CURRENT "Current/PM10" + #define D_DOMOTICZ_COUNT "Count" + #define D_DOMOTICZ_VOLTAGE "Voltage" + #define D_DOMOTICZ_CURRENT "Current" #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" +// xdrv_08_KNX.ino +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_SET "Set" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Must be unique on the KNX network)" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Group Addresses to Send Data to" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_KNX_PARAMETER_TO_SEND "Parameter to Send" +#define D_KNX_UPDATE_INTERVAL "Sensor Update Interval (sec)" + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_YESTERDAY "Energy Yesterday" From 6f7f31d0cea7cdc8854da43e68a954af00ad4d75 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 03:47:15 -0300 Subject: [PATCH 014/435] Add KNX Keys --- sonoff/language/es-AR.h | 51 +++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 531f78d26..5242a0ea2 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -32,9 +32,6 @@ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) -// HTML (ISO 639-1) Language Code -#define D_HTML_LANGUAGE "es" - // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -165,6 +162,13 @@ #define D_DATA_SIZE "Tamaño de Datos" #define D_ANALOG_INPUT "Entrada Analógica" +#define D_FINGERPRINT "Verificar TLS fingerprint..." +#define D_TLS_CONNECT_FAILED_TO "Falló Conexión TLS a" +#define D_RETRY_IN "Reintentando" +#define D_VERIFIED "Verificado" +#define D_INSECURE "Conexión insegura por Fingerprint no válido" +#define D_CONNECT_FAILED_TO "Falló Conexión a" + // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Ciclo Bloqueado" @@ -174,12 +178,12 @@ #define D_PATCH_ISSUE_2186 "Patch issue 2186" #define D_CONNECTING_TO_AP "Connectando a AP" #define D_IN_MODE "en modo" -#define D_CONNECT_FAILED_NO_IP_ADDRESS "Falló Conección, Dirección IP no recibida" -#define D_CONNECT_FAILED_AP_NOT_REACHED "Falló Conección, AP no pudo ser contactado" -#define D_CONNECT_FAILED_WRONG_PASSWORD "Falló Conección, clave de AP incorrecta" -#define D_CONNECT_FAILED_AP_TIMEOUT "Falló Conección, timeout de AP" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "Falló Conexión, Dirección IP no recibida" +#define D_CONNECT_FAILED_AP_NOT_REACHED "Falló Conexión, AP no pudo ser contactado" +#define D_CONNECT_FAILED_WRONG_PASSWORD "Falló Conexión, clave de AP incorrecta" +#define D_CONNECT_FAILED_AP_TIMEOUT "Falló Conexión, timeout de AP" #define D_ATTEMPTING_CONNECTION "Intentando conectar..." -#define D_CHECKING_CONNECTION "Probando conección..." +#define D_CHECKING_CONNECTION "Probando Conexión..." #define D_QUERY_DONE "Consulta lista. Servicio MQTT encontrado" #define D_MQTT_SERVICE_FOUND "Servicio MQTT encontrado en" #define D_FOUND_AT "encontrado en" @@ -216,6 +220,7 @@ #define D_CONFIGURE_WIFI "Configuración WiFi" #define D_CONFIGURE_MQTT "Configuración MQTT" #define D_CONFIGURE_DOMOTICZ "Configuración Domoticz" +#define D_CONFIGURE_KNX "Configuración de KNX" #define D_CONFIGURE_LOGGING "Configuración Logging" #define D_CONFIGURE_OTHER "Configuración Extra" #define D_CONFIRM_RESET_CONFIGURATION "Confirmar Reset Configuración" @@ -313,18 +318,10 @@ #define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 si desea respuesta" #define D_NEED_USER_AND_PASSWORD "Se necesita user=&password=" -// xdrv_00_mqtt.ino -#define D_FINGERPRINT "Verificar TLS fingerprint..." -#define D_TLS_CONNECT_FAILED_TO "Falló Conección TLS a" -#define D_RETRY_IN "Reintentando" -#define D_VERIFIED "Verificado Fingerprint" -#define D_INSECURE "Conección insegura por Fingerprint no válido" -#define D_CONNECT_FAILED_TO "Falló Conección a" - // xdrv_wemohue.ino #define D_MULTICAST_DISABLED "Multicast deshabilitado" #define D_MULTICAST_REJOINED "Multicast (re)conectado" -#define D_MULTICAST_JOIN_FAILED "Conección Multicast fallida" +#define D_MULTICAST_JOIN_FAILED "Conexión Multicast fallida" #define D_FAILED_TO_SEND_RESPONSE "Falla al enviar respuesta" #define D_WEMO "WeMo" @@ -352,12 +349,25 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" #define D_DOMOTICZ_POWER_ENERGY "Potencia,Energía" #define D_DOMOTICZ_ILLUMINANCE "Luminancia" - #define D_DOMOTICZ_COUNT "Contador/PM1" - #define D_DOMOTICZ_VOLTAGE "Voltaje/PM2,5" - #define D_DOMOTICZ_CURRENT "Corriente/PM10" + #define D_DOMOTICZ_COUNT "Contador" + #define D_DOMOTICZ_VOLTAGE "Voltaje" + #define D_DOMOTICZ_CURRENT "Corriente" #define D_DOMOTICZ_AIRQUALITY "Calidad del Aire" #define D_DOMOTICZ_UPDATE_TIMER "Intervalo de refresco" +// xdrv_08_KNX.ino +#define D_KNX_PARAMETERS "Parámetros de KNX" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" +#define D_KNX_SET "Establecer" +#define D_KNX_ADD "Agregar" +#define D_DELETE "Eliminar" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" +#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" +#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" +#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" #define D_ENERGY_YESTERDAY "Energía Ayer" @@ -450,6 +460,7 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From f709f5cca2b0bf7012909e17bd8ddbb17866922b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 04:05:58 -0300 Subject: [PATCH 015/435] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 784695004..8ec0f0f1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ## Sonoff-Tasmota (KNX_MOD) --- WORK IN PROGRESS -- Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) +Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) + +Basic Functionality Available. Work in progress. ----------------------------------------------------------------------------------------------------------------------------------- From f3fba7e818b93ba85662c96a1426d77412136caf Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 12:38:12 -0300 Subject: [PATCH 016/435] Update sonoff.ino --- sonoff/sonoff.ino | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 2e7d1b7fb..6545720d6 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -18,11 +18,14 @@ */ /*==================================================== Prerequisites: + - Change libraries/PubSubClient/src/PubSubClient.h + #define MQTT_MAX_PACKET_SIZE 1000 + - Select IDE Tools - Flash Mode: "DOUT" - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050C0004 // 5.12.0d +#define VERSION 0x050C0006 // 5.12.0f // Location specific includes #include // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) @@ -33,14 +36,12 @@ #include "sonoff_template.h" // Hardware configuration #include "sonoff_post.h" // Configuration overrides for all previous includes -/* #ifdef ARDUINO_ESP8266_RELEASE_2_4_0 #include "lwip/init.h" #if LWIP_VERSION_MAJOR != 1 #error Please use stable lwIP v1.4 #endif #endif -*/ // Libraries #include // RTC, Energy, OSWatch @@ -512,7 +513,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) Settings.pulse_timer[index -1] = payload16; // 0 - 65535 pulse_timer[index -1] = 0; } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE, command, index, Settings.pulse_timer[index -1]); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_NVALUE_ACTIVE_NVALUE, command, index, Settings.pulse_timer[index -1], pulse_timer[index -1]); } else if (CMND_BLINKTIME == command_code) { if ((payload > 2) && (payload <= 3600)) { @@ -1143,7 +1144,7 @@ void ExecuteCommandPower(byte device, byte state) #endif // USE_DOMOTICZ #ifdef USE_KNX KNXUpdatePowerState(device, power); -#endif // USE_KNX +#endif // USE_KNX if (device <= MAX_PULSETIMERS) { // pulse_timer[(device -1)] = (power & mask) ? Settings.pulse_timer[(device -1)] : 0; pulse_timer[(device -1)] = (((POWER_ALL_OFF_PULSETIME_ON == Settings.poweronstate) ? ~power : power) & mask) ? Settings.pulse_timer[(device -1)] : 0; @@ -1220,8 +1221,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (1 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), - baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_RESTARTREASON "\":\"%s\",\"" D_JSON_UPTIME "\":\"%s\",\"" D_JSON_STARTUPUTC "\":\"%s\",\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), + baudrate, Settings.mqtt_grptopic, Settings.ota_url, GetResetReason().c_str(), GetDateAndTime(DT_UPTIME).c_str(), GetDateAndTime(DT_RESTART).c_str(), Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } @@ -1264,8 +1265,8 @@ void PublishStatus(uint8_t payload) if (energy_flg) { if ((0 == payload) || (9 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), - Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS9_MARGIN "\":{\"" D_CMND_POWERDELTA "\":%d,\"" D_CMND_POWERLOW "\":%d,\"" D_CMND_POWERHIGH "\":%d,\"" D_CMND_VOLTAGELOW "\":%d,\"" D_CMND_VOLTAGEHIGH "\":%d,\"" D_CMND_CURRENTLOW "\":%d,\"" D_CMND_CURRENTHIGH "\":%d}}"), + Settings.energy_power_delta, Settings.energy_min_power, Settings.energy_max_power, Settings.energy_min_voltage, Settings.energy_max_voltage, Settings.energy_min_current, Settings.energy_max_current); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "9")); } } From e8c90d1e5ab3d0137ae1b95c3e5804755f852925 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 12:40:05 -0300 Subject: [PATCH 017/435] Update user_config.h --- sonoff/user_config.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 8c5c196f0..693cab1c0 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -78,11 +78,11 @@ * Select ONE of possible MQTT library types below \*********************************************************************************************/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE 1 // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE 2 // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE 3 // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only // -- MQTT ---------------------------------------- #define MQTT_USE 1 // [SetOption3] Select default MQTT use (0 = Off, 1 = On) @@ -136,14 +136,14 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) (Optional) +// -- KNX IP Protocol ----------------------------- +#define USE_KNX // Enable KNX IP Protocol Support + // -- MQTT - Home Assistant Discovery ------------- #define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+1k4 code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix #define HOME_ASSISTANT_DISCOVERY_ENABLE 0 // [SetOption19] Home Assistant Discovery (0 = Disable, 1 = Enable) -// -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support - // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) - Disable by // #define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin) @@ -230,7 +230,7 @@ #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // - #define USE_WS2812_CTYPE 1 // WS2812 Color type (0 - RGB, 1 - GRB, 2 - RGBW, 3 - GRBW) + #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow #define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) From 49a2dcab2b7c951a8ed373b832a0d187c332d613 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 14:56:00 -0300 Subject: [PATCH 018/435] Update webserver.ino --- sonoff/webserver.ino | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index ea92640a8..576a39c27 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -194,7 +194,7 @@ const char HTTP_BTN_MENU3[] PROGMEM = const char HTTP_BTN_MENU4[] PROGMEM = #ifdef USE_KNX "
" -#endif // USE_KNX +#endif // USE_KNX "
" "
" "
" @@ -376,7 +376,7 @@ void StartWebserver(int type, IPAddress ipweb) WebServer->onNotFound(HandleNotFound); #ifdef USE_KNX knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library -#endif // USE_KNX +#endif // USE_KNX } reset_web_log_flag = 0; WebServer->begin(); // Web server start @@ -881,7 +881,8 @@ void HandleMqttConfiguration() page.replace(F("{m2"), String(Settings.mqtt_port)); page.replace(F("{m3"), Settings.mqtt_client); page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + //page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + page.replace(F("{m5"), "**********"); page.replace(F("{m6"), Settings.mqtt_topic); page.replace(F("{m7"), Settings.mqtt_fulltopic); page += FPSTR(HTTP_FORM_END); @@ -1068,7 +1069,8 @@ void HandleSaveSettings() WebGetArg("mu", tmp, sizeof(tmp)); strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); WebGetArg("mp", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + //strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.mqtt_pwd : tmp, sizeof(Settings.mqtt_pwd)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); AddLog(LOG_LEVEL_INFO); From 50d3ce15e64afd4b2640211ad0cd5cf9a1d36c60 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:17:16 -0300 Subject: [PATCH 019/435] Update es-AR.h --- sonoff/language/es-AR.h | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 5242a0ea2..3132a0632 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -32,6 +32,9 @@ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) +// HTML (ISO 639-1) Language Code +#define D_HTML_LANGUAGE "es" + // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -162,13 +165,6 @@ #define D_DATA_SIZE "Tamaño de Datos" #define D_ANALOG_INPUT "Entrada Analógica" -#define D_FINGERPRINT "Verificar TLS fingerprint..." -#define D_TLS_CONNECT_FAILED_TO "Falló Conexión TLS a" -#define D_RETRY_IN "Reintentando" -#define D_VERIFIED "Verificado" -#define D_INSECURE "Conexión insegura por Fingerprint no válido" -#define D_CONNECT_FAILED_TO "Falló Conexión a" - // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Ciclo Bloqueado" @@ -178,12 +174,12 @@ #define D_PATCH_ISSUE_2186 "Patch issue 2186" #define D_CONNECTING_TO_AP "Connectando a AP" #define D_IN_MODE "en modo" -#define D_CONNECT_FAILED_NO_IP_ADDRESS "Falló Conexión, Dirección IP no recibida" -#define D_CONNECT_FAILED_AP_NOT_REACHED "Falló Conexión, AP no pudo ser contactado" -#define D_CONNECT_FAILED_WRONG_PASSWORD "Falló Conexión, clave de AP incorrecta" -#define D_CONNECT_FAILED_AP_TIMEOUT "Falló Conexión, timeout de AP" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "Falló Conección, Dirección IP no recibida" +#define D_CONNECT_FAILED_AP_NOT_REACHED "Falló Conección, AP no pudo ser contactado" +#define D_CONNECT_FAILED_WRONG_PASSWORD "Falló Conección, clave de AP incorrecta" +#define D_CONNECT_FAILED_AP_TIMEOUT "Falló Conección, timeout de AP" #define D_ATTEMPTING_CONNECTION "Intentando conectar..." -#define D_CHECKING_CONNECTION "Probando Conexión..." +#define D_CHECKING_CONNECTION "Probando conección..." #define D_QUERY_DONE "Consulta lista. Servicio MQTT encontrado" #define D_MQTT_SERVICE_FOUND "Servicio MQTT encontrado en" #define D_FOUND_AT "encontrado en" @@ -318,10 +314,18 @@ #define D_ENABLE_WEBLOG_FOR_RESPONSE "Habilitar weblog 2 si desea respuesta" #define D_NEED_USER_AND_PASSWORD "Se necesita user=&password=" +// xdrv_00_mqtt.ino +#define D_FINGERPRINT "Verificar TLS fingerprint..." +#define D_TLS_CONNECT_FAILED_TO "Falló Conección TLS a" +#define D_RETRY_IN "Reintentando" +#define D_VERIFIED "Verificado Fingerprint" +#define D_INSECURE "Conección insegura por Fingerprint no válido" +#define D_CONNECT_FAILED_TO "Falló Conección a" + // xdrv_wemohue.ino #define D_MULTICAST_DISABLED "Multicast deshabilitado" #define D_MULTICAST_REJOINED "Multicast (re)conectado" -#define D_MULTICAST_JOIN_FAILED "Conexión Multicast fallida" +#define D_MULTICAST_JOIN_FAILED "Conección Multicast fallida" #define D_FAILED_TO_SEND_RESPONSE "Falla al enviar respuesta" #define D_WEMO "WeMo" @@ -349,16 +353,16 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" #define D_DOMOTICZ_POWER_ENERGY "Potencia,Energía" #define D_DOMOTICZ_ILLUMINANCE "Luminancia" - #define D_DOMOTICZ_COUNT "Contador" - #define D_DOMOTICZ_VOLTAGE "Voltaje" - #define D_DOMOTICZ_CURRENT "Corriente" + #define D_DOMOTICZ_COUNT "Contador/PM1" + #define D_DOMOTICZ_VOLTAGE "Voltaje/PM2,5" + #define D_DOMOTICZ_CURRENT "Corriente/PM10" #define D_DOMOTICZ_AIRQUALITY "Calidad del Aire" #define D_DOMOTICZ_UPDATE_TIMER "Intervalo de refresco" // xdrv_08_KNX.ino #define D_KNX_PARAMETERS "Parámetros de KNX" #define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" +#define D_KNX_PHYSICAL_ADDRESS "Dirección Fí­sica" #define D_KNX_SET "Establecer" #define D_KNX_ADD "Agregar" #define D_DELETE "Eliminar" From 0b8e504d27f6924a4e42d65b1e2e2c045c74d940 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:19:59 -0300 Subject: [PATCH 020/435] Update en-GB.h --- sonoff/language/en-GB.h | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 5c7bc6ee8..3a44d8e53 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -32,6 +32,9 @@ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) +// HTML (ISO 639-1) Language Code +#define D_HTML_LANGUAGE "en" + // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -162,13 +165,6 @@ #define D_DATA_SIZE "Data Size" #define D_ANALOG_INPUT "Analog" -#define D_FINGERPRINT "Verify TLS fingerprint..." -#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" -#define D_RETRY_IN "Retry in" -#define D_VERIFIED "Verified" -#define D_INSECURE "Insecure connection due to invalid Fingerprint" -#define D_CONNECT_FAILED_TO "Connect failed to" - // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Blocked Loop" @@ -318,6 +314,14 @@ #define D_ENABLE_WEBLOG_FOR_RESPONSE "Enable weblog 2 if response expected" #define D_NEED_USER_AND_PASSWORD "Need user=&password=" +// xdrv_00_mqtt.ino +#define D_FINGERPRINT "Verify TLS fingerprint..." +#define D_TLS_CONNECT_FAILED_TO "TLS Connect failed to" +#define D_RETRY_IN "Retry in" +#define D_VERIFIED "Verified using Fingerprint" +#define D_INSECURE "Insecure connection due to invalid Fingerprint" +#define D_CONNECT_FAILED_TO "Connect failed to" + // xdrv_wemohue.ino #define D_MULTICAST_DISABLED "Multicast disabled" #define D_MULTICAST_REJOINED "Multicast (re)joined" @@ -349,9 +353,9 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" #define D_DOMOTICZ_POWER_ENERGY "Power,Energy" #define D_DOMOTICZ_ILLUMINANCE "Illuminance" - #define D_DOMOTICZ_COUNT "Count" - #define D_DOMOTICZ_VOLTAGE "Voltage" - #define D_DOMOTICZ_CURRENT "Current" + #define D_DOMOTICZ_COUNT "Count/PM1" + #define D_DOMOTICZ_VOLTAGE "Voltage/PM2.5" + #define D_DOMOTICZ_CURRENT "Current/PM10" #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" @@ -460,6 +464,7 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From fc66689168e6b61418121efbcb74d2d75d84be66 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:32:25 -0300 Subject: [PATCH 021/435] Update webserver.ino --- sonoff/webserver.ino | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 576a39c27..f2fe6dbe0 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -881,8 +881,7 @@ void HandleMqttConfiguration() page.replace(F("{m2"), String(Settings.mqtt_port)); page.replace(F("{m3"), Settings.mqtt_client); page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - //page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); - page.replace(F("{m5"), "**********"); + page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); page.replace(F("{m6"), Settings.mqtt_topic); page.replace(F("{m7"), Settings.mqtt_fulltopic); page += FPSTR(HTTP_FORM_END); @@ -1069,8 +1068,7 @@ void HandleSaveSettings() WebGetArg("mu", tmp, sizeof(tmp)); strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); WebGetArg("mp", tmp, sizeof(tmp)); - //strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.mqtt_pwd : tmp, sizeof(Settings.mqtt_pwd)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); AddLog(LOG_LEVEL_INFO); From 5867088d0e713b37522b3af6ff901893ff7882b4 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:33:57 -0300 Subject: [PATCH 022/435] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0b1435dd0..65d73b36f 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Basic Functionality Available. Work in progress. ----------------------------------------------------------------------------------------------------------------------------------- +## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. Current version is **5.12.0f** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. From 87fb351aa4ce410bf883becbfecf53dd7c9daadc Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:35:50 -0300 Subject: [PATCH 023/435] Update README.md --- README.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/README.md b/README.md index 65d73b36f..79b32466d 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,3 @@ -## Sonoff-Tasmota (KNX_MOD) - -Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) - -Basic Functionality Available. Work in progress. - ------------------------------------------------------------------------------------------------------------------------------------ - ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. From c7407b58adbdfd799886a20937877a51b99964e9 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 15:37:43 -0300 Subject: [PATCH 024/435] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 79b32466d..65d73b36f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ +## Sonoff-Tasmota (KNX_MOD) + +Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) + +Basic Functionality Available. Work in progress. + +----------------------------------------------------------------------------------------------------------------------------------- + ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. From c83dcc01038242e429d4c166dada19bb355b01e9 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 16:43:17 -0300 Subject: [PATCH 025/435] Update user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 693cab1c0..2277c996b 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -137,7 +137,7 @@ #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) (Optional) // -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support +#define USE_KNX // Enable KNX IP Protocol Support (+14.7k code) // -- MQTT - Home Assistant Discovery ------------- #define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+1k4 code) From 95ba29a909ef8b7e73e8ebfa6b880110a8838bdb Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:38:15 -0300 Subject: [PATCH 026/435] Update README.md --- README.md | 36 +++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 65d73b36f..b254a209b 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,38 @@ -## Sonoff-Tasmota (KNX_MOD) +# Sonoff-Tasmota (KNX_MOD) -Using the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) +This is a MOD for Sonoff-Tasmota to integrate KNX Protocol to its features. + +This MOD uses the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) + +Basic Functionality is Available. Work in progress. + +----------------------------------------------------------------------------------------------------------------------------------- +## Road Map ## + +**For Sonoff-Tasmota_KNX:** +- [x] Add Web Menu (uses the one provided by the library) +- [x] Add Feature to Receive telegrams and modify Relay Status +- [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) +- [x] Add Feature to Send telegrams of relay status change +- [ ] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) +- [x] Add Feature to Send telegrams of button pressed +- [x] Add Feature to receive telegrams to toggle relay status +- [ ] Add Feature to send Temperature by a set interval +- [ ] Add Feature to receive command to read temperature +- [ ] Add Feature to recognice Tasmota config to show the same amount of relays, buttons, etc +- [ ] Add Feature to Save Config +- [ ] Add Feature to Load Config +- [ ] Change Web Menu to a Tasmota one to save FLASH and RAM +- [ ] Optimize code to reduce Flash and RAM + +**For KNX_IP_LITE:** +- [x] Add Functions to control library from code and not only by Web Menu +- [ ] Complete needed functions for Tasmota +- [ ] Add WebUI Functions +- [ ] Change all *_id_t to config_id_t so as to have control over webpage order +- [ ] Mod GA_Register function to be similar to CB_Register (needed for Send telegrams of one relay status to multiple Group Addresses) +- [ ] Optimize code to reduce Flash and RAM -Basic Functionality Available. Work in progress. ----------------------------------------------------------------------------------------------------------------------------------- From 279fe0d7dd998b1b9dfe3aa03380c31cca25e27b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:49:49 -0300 Subject: [PATCH 027/435] Update README.md --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b254a209b..2f32fb967 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # Sonoff-Tasmota (KNX_MOD) -This is a MOD for Sonoff-Tasmota to integrate KNX Protocol to its features. +This is a [MOD](https://github.com/ascillato/Sonoff-Tasmota_KNX) for Sonoff-Tasmota to integrate KNX Protocol to its features. -This MOD uses the KNX Libary [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) +This MOD requires the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) Basic Functionality is Available. Work in progress. @@ -25,7 +25,7 @@ Basic Functionality is Available. Work in progress. - [ ] Change Web Menu to a Tasmota one to save FLASH and RAM - [ ] Optimize code to reduce Flash and RAM -**For KNX_IP_LITE:** +**For ESP_KNX_IP_LITE:** - [x] Add Functions to control library from code and not only by Web Menu - [ ] Complete needed functions for Tasmota - [ ] Add WebUI Functions @@ -33,6 +33,17 @@ Basic Functionality is Available. Work in progress. - [ ] Mod GA_Register function to be similar to CB_Register (needed for Send telegrams of one relay status to multiple Group Addresses) - [ ] Optimize code to reduce Flash and RAM +----------------------------------------------------------------------------------------------------------------------------------- + +## Modifications to [Original Tasmota](https://github.com/arendst/Sonoff-Tasmota) ## + +* Adding the file _/sonoff/xdrv_08_KNX.ino_ +* Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ +* Add entries to the file _/sonoff/webserver.ino_ +* Add entries to the file _/sonoff/sonoff.ino_ +* Add entries to language files + +Up to now, enabling KNX uses +14.7k of code ----------------------------------------------------------------------------------------------------------------------------------- From 2229cf5d10bb8cf9dd739186b58efc91b4d52a58 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:55:06 -0300 Subject: [PATCH 028/435] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 2f32fb967..70d81a889 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,8 @@ Basic Functionality is Available. Work in progress. Up to now, enabling KNX uses +14.7k of code +There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. + ----------------------------------------------------------------------------------------------------------------------------------- ## Sonoff-Tasmota From a388fe068e8eae23b21bc112bfe1ab7afde6f6cc Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:55:44 -0300 Subject: [PATCH 029/435] Update en-GB.h --- sonoff/language/en-GB.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 3a44d8e53..996b859e1 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -366,6 +366,7 @@ #define D_KNX_SET "Set" #define D_KNX_ADD "Add" #define D_DELETE "Delete" +#define D_REPLY "Reply" #define D_KNX_PHYSICAL_ADDRESS_NOTE "(Must be unique on the KNX network)" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Group Addresses to Send Data to" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" From e633ea2cae07fd221355ab771f633a2e9befba89 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:56:25 -0300 Subject: [PATCH 030/435] Update es-AR.h --- sonoff/language/es-AR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 3132a0632..cbca9943b 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -366,6 +366,7 @@ #define D_KNX_SET "Establecer" #define D_KNX_ADD "Agregar" #define D_DELETE "Eliminar" +#define D_REPLY "Responder" #define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" #define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" From 54423e2089c4f942d785b05f27ffe3e7037df06f Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:57:19 -0300 Subject: [PATCH 031/435] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 70d81a889..e2994f125 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ Basic Functionality is Available. Work in progress. - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config - [ ] Change Web Menu to a Tasmota one to save FLASH and RAM +- [ ] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM **For ESP_KNX_IP_LITE:** From d45b3ffa370041febfb48ec5b64a517e5e22b0ac Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:58:59 -0300 Subject: [PATCH 032/435] Update sonoff.ino --- sonoff/sonoff.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 6545720d6..6c5df4e28 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1092,6 +1092,9 @@ boolean send_button_power(byte key, byte device, byte state) #endif // USE_DOMOTICZ result = true; } +#ifdef USE_KNX + knx_send_button_power(key, device, state); +#endif return result; } From e5663fc0cf15988f82d6f7ea7d8522d3b15115d0 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sat, 17 Mar 2018 23:59:54 -0300 Subject: [PATCH 033/435] Update webserver.ino --- sonoff/webserver.ino | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index f2fe6dbe0..576a39c27 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -881,7 +881,8 @@ void HandleMqttConfiguration() page.replace(F("{m2"), String(Settings.mqtt_port)); page.replace(F("{m3"), Settings.mqtt_client); page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + //page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); + page.replace(F("{m5"), "**********"); page.replace(F("{m6"), Settings.mqtt_topic); page.replace(F("{m7"), Settings.mqtt_fulltopic); page += FPSTR(HTTP_FORM_END); @@ -1068,7 +1069,8 @@ void HandleSaveSettings() WebGetArg("mu", tmp, sizeof(tmp)); strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); WebGetArg("mp", tmp, sizeof(tmp)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + //strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.mqtt_pwd : tmp, sizeof(Settings.mqtt_pwd)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); AddLog(LOG_LEVEL_INFO); From 1d821fce8417332beba28aa9570d092b134cc06a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 00:00:36 -0300 Subject: [PATCH 034/435] Update xdrv_08_KNX.ino --- sonoff/xdrv_08_KNX.ino | 307 +++++++++++++++++++++++++++-------------- 1 file changed, 202 insertions(+), 105 deletions(-) diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_08_KNX.ino index 0f03139a9..04d19fcfb 100644 --- a/sonoff/xdrv_08_KNX.ino +++ b/sonoff/xdrv_08_KNX.ino @@ -26,30 +26,59 @@ #include // Include KNX IP library +#define KNX_Empty_ID 255 + void relay_cb(message_t const &msg, void *arg); +void temp_cb(message_t const &msg, void *arg); address_t physaddr; config_id_t enable_knx_id; config_id_t disable_knx_id; config_id_t ga_conf_id; config_id_t cb_conf_id; +config_id_t cb_temp_id; config_id_t update_rate_id; typedef struct __device_parameters { const char *name; + byte type; config_id_t id; bool show; } device_parameters_t; device_parameters_t device_param[] = { - { D_SENSOR_RELAY " 1", 0, true}, - { D_SENSOR_RELAY " 2", 0, true}, - { D_SENSOR_RELAY " 3", 0, true}, - { D_SENSOR_RELAY " 4", 0, true}, -// {"Send Temp", 5, true}, -// {"BUTTON 1", 6, true}, - {nullptr, 0} + { D_SENSOR_RELAY " 1",1 , 255, true}, // device_param[0] = Relay 1 + { D_SENSOR_RELAY " 2",2 , 255, true}, // device_param[1] = Relay 2 + { D_SENSOR_RELAY " 3",3 , 255, true}, + { D_SENSOR_RELAY " 4",4 , 255, true}, + { D_SENSOR_RELAY " 5",5 , 255, false}, + { D_SENSOR_RELAY " 6",6 , 255, false}, + { D_SENSOR_RELAY " 7",7 , 255, false}, // device_param[6] = Relay 7 + { D_SENSOR_RELAY " 8",8 , 255, false}, // device_param[7] = Relay 8 + { D_SENSOR_BUTTON " 1",9 , 255, true}, // device_param[8] = Button 1 + { D_SENSOR_BUTTON " 2",10 , 255, true}, // device_param[9] = Button 2 + { D_SENSOR_BUTTON " 3",11 , 255, true}, // device_param[10] = Button 3 + { D_SENSOR_BUTTON " 4",12 , 255, true}, // device_param[11] = Button 4 + { D_TEMPERATURE ,13 , 255, true}, // device_param[12] = Temperature + {nullptr,0 , 255, false} +}; + +const char *device_param_cb[] = { + D_SENSOR_RELAY " 1", + D_SENSOR_RELAY " 2", + D_SENSOR_RELAY " 3", + D_SENSOR_RELAY " 4", + D_SENSOR_RELAY " 5", + D_SENSOR_RELAY " 6", + D_SENSOR_RELAY " 7", + D_SENSOR_RELAY " 8", + D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 1", + D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 2", + D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 3", + D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 4", + D_REPLY " " D_TEMPERATURE, + nullptr }; // Translations @@ -63,13 +92,43 @@ config_webUI_t config_webUI = { int device_param_quantity = 4; bool flag_knx_enabled = true; +float last_temp = 0.0; void KNXStart() { +// Check which relays, buttons and sensors where consigured for this device +// for (int i = 0; i < MAX_GPIO_PIN; ++i) +// { +// switch (GPIO(i)) +// { +// case Relay: +// break; +// case Button: +// break; +/* +for (byte j = 0; j < GPIO_SENSOR_END; j++) { + if (!GetUsedInModule(j, cmodule.gp.io)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, j, j, GetTextIndexed(stemp, sizeof(stemp), j, kSensorNames)); + page += mqtt_data; + } +} +*/ + +// +// device_param[i].show = (GPIO[i] == Relay) +// } +// for (int i = 0; i < MAX_BUTTONS; ++i) +// { +// device_param[i+7].show = (GPIO[i] == Button) +// } +// for (int i = 0; i < MAX_SENSOR; ++i) +// { +// device_param[i+7].show = (GPIO[i] == Button) +// } + // KNX WebPage Configuration // ------------------------- - // The order of the knx.***_register_*** code, is the order that is going to be shown on the web page. // Translations @@ -99,9 +158,13 @@ knx.feedback_register_action("KNX: " D_OFF, knx_toggle_flag_enabled, D_START, nu // Register Group Addresses to Send Data to //for (int i = 0; i < Settings.knx_Registered_GA; ++i) -for (int i = 0; i < 4; ++i) +for (int i = 0; i < 13; ++i) { - device_param[i].id = knx.config_register_ga(String(device_param[i].name)); + if (device_param[i].show) + { + device_param[i].id = knx.config_register_ga(String(device_param[i].name)); + } + //////buscar en la config el param para setearlo //knx.config_set_ga(ga_conf, Settings.knx_GA_addr(i)); @@ -111,58 +174,6 @@ for (int i = 0; i < 4; ++i) knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); - - - - - - - - - -/* /////config -Settings.knx.physs_addr = physical_address_get(); -Settings.knx.flag_knx_enabled - -k = 0 -for j = 0 to max cant items (relay1,2,3,etc) - for i = 0 to max cant items por param (cant de addr a relay 1) - address_t = knx.config_get_ga(device_param[j].id, i + 1); - if address_t then - settings.knx.paramGA(k) = j; - settings.knx.addressGA(k) = address_t - k++ - end if - next i -next j -settings.knx.Registered_GA = k - 1 - -settings.knx.update_rate = knx.config_get_int(update_rate_id) - -k = 0 -for j = 0 to max cant items (relay1,2,3,etc) - for i = 0 to max cant items por param (cant de addr a relay 1) - address_t = knx.config_get_cb(device_param[j].id, i + 1); - if address_t then - settings.knx.paramCB(k) = j; - settings.knx.addressCB(k) = address_t - k++ - end if - next i -next j -settings.knx.Registered_CB = k - 1 - - -*/ ////// - - - - - - - - - //knx.config_register_blankspace(); //update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , Settings.knx_update_rate); @@ -174,14 +185,25 @@ update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , 5); // Register Group Addresses to Receive data from and execute callbacks //for (int i = 0; i < Settings.knx_Registered_CB; ++i) -for (int i = 0; i < 4; ++i) +for (int i = 0; i < 12; ++i) { - cb_conf_id = knx.callback_register(String(device_param[i].name), relay_cb, &device_param[i]); - //////cb_conf_id = knx.callback_register("Channel 1", relay_cb, &channels[i]); - //cb_conf_id = knx.callback_register(device_param[i].name, relay_cb, &device_param[i].id, &device_param[i].show, D_KNX_ADD); - //////buscar en la config el param para setearlo - //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); - knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); + if (device_param[i].show) + { + cb_conf_id = knx.callback_register( String( device_param_cb[i] ), relay_cb, &device_param[i]); + //////buscar en la config el param para setearlo + //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); + if (i==0) + { + knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); + } + } +} + +// Temperature +int j=12; +if (device_param[j].show) +{ + cb_temp_id = knx.callback_register( String( device_param_cb[j] ), temp_cb, &device_param[j]); } //knx.config_register_line(); @@ -191,10 +213,6 @@ knx.feedback_register_action("", KNXSaveSettings, D_SAVE); // Save Button knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Button // END KNX WebPage Configuration - - - - } @@ -204,29 +222,15 @@ void KNXLoop() if (flag_knx_enabled) { knx.loop(); // Process knx events } - } -/* + void KNX_EVERY_SECOND() { + // if (Settings.flag.knx_enabled) { + if (flag_knx_enabled) + { -} -*/ - -void knx_toggle_flag_enabled(void *arg) -{ - flag_knx_enabled = !flag_knx_enabled; - // if flag_knx_enabled then knx.pause else knx.stop -} - -bool knx_status_enabled() -{ - return flag_knx_enabled; -} - -bool knx_status_disabled() -{ - return !flag_knx_enabled; + } } @@ -236,21 +240,77 @@ void relay_cb(message_t const &msg, void *arg) switch (msg.ct) { case KNX_CT_WRITE: - ExecuteCommandPower(chan->id, msg.data[0]); - knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]); + if (chan->type > 8) + { + ExecuteCommandPower(chan->id, 2); + knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]==0); + } + else + { + ExecuteCommandPower(chan->id, msg.data[0]); + knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]); + } break; - case KNX_CT_READ: + //case KNX_CT_READ: //knx.answer_1bit(msg.received_on, chan->state); - knx.answer_1bit(msg.received_on, false); } } void KNXUpdatePowerState(byte device, power_t state) { - bool power = bitRead(state, device -1); - knx.write_1bit(knx.config_get_ga(device_param[device -1].id), power); + if ( device_param[device -1].id != KNX_Empty_ID ) // Group Address configured? 255 = empty + { + bool power = bitRead(state, device -1); + knx.write_1bit(knx.config_get_ga(device_param[device -1].id), power); + } } +void knx_send_button_power(byte key, byte device, byte state) +{ +// key 0 = button_topic +// key 1 = switch_topic +// state 0 = off +// state 1 = on +// state 2 = toggle +// state 3 = hold +// state 9 = clear retain flag +// if (key) +// { + if (device_param[device+7].id) + { + knx.write_1bit(knx.config_get_ga(device_param[device+7].id), !(state == 0)); + } +// } +} + +void temp_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_temp); + break; + } + } +} + +void knx_toggle_flag_enabled(void *arg) +{ + flag_knx_enabled = !flag_knx_enabled; + /*if (Settings.flag.knx_enabled) + { + knx.pause(); + } + else + { + knx.continue(); + }*/ +} + +bool knx_status_enabled() { return flag_knx_enabled; } + +bool knx_status_disabled() { return !flag_knx_enabled; } void KNX_Return_button(void *arg) { @@ -260,6 +320,45 @@ void KNX_Return_button(void *arg) void KNXSaveSettings(void *arg) { + + + /* /////config + Settings.knx.physs_addr = physical_address_get(); + Settings.knx.flag_knx_enabled + + k = 0 + for j = 0 to max cant items (relay1,2,3,etc) + for i = 0 to max cant items por param (cant de addr a relay 1) + address_t = knx.config_get_ga(device_param[j].id, i + 1); + if address_t then + settings.knx.paramGA(k) = j; + settings.knx.addressGA(k) = address_t + k++ + end if + next i + next j + settings.knx.Registered_GA = k - 1 + + settings.knx.update_rate = knx.config_get_int(update_rate_id) + + k = 0 + for j = 0 to max cant items (relay1,2,3,etc) + for i = 0 to max cant items por param (cant de addr a relay 1) + address_t = knx.config_get_cb(device_param[j].id, i + 1); + if address_t then + settings.knx.paramCB(k) = j; + settings.knx.addressCB(k) = address_t + k++ + end if + next i + next j + settings.knx.Registered_CB = k - 1 + + + */ ////// + + + /* char stemp[20]; char ssensor_indices[6 * MAX_DOMOTICZ_SNS_IDX]; @@ -304,7 +403,6 @@ void KNXSaveSettings(void *arg) boolean Xdrv08(byte function) { boolean result = false; -// if (Settings.flag.knx_enabled) { switch (function) { case FUNC_INIT: KNXStart(); @@ -312,16 +410,15 @@ boolean Xdrv08(byte function) case FUNC_LOOP: KNXLoop(); break; -// case FUNC_SET_POWER: -// break; -// case FUNC_EVERY_SECOND; -// KNX_EVERY_SECOND(); -// break; + case FUNC_EVERY_SECOND: + KNX_EVERY_SECOND(); + break; // case FUNC_COMMAND: // result = MqttCommand(); +// break; +// case FUNC_SET_POWER: // break; } -// } return result; } From 40ebca2f1c80c4f8ed1954a41b04b2b286226aa3 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 00:10:23 -0300 Subject: [PATCH 035/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e2994f125..a197c4a75 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a [MOD](https://github.com/ascillato/Sonoff-Tasmota_KNX) for Sonoff-Tasm This MOD requires the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) -Basic Functionality is Available. Work in progress. +Basic Functionality is Available. **Work in progress**. ----------------------------------------------------------------------------------------------------------------------------------- ## Road Map ## From 0b91203fbcedcfd76d43b893a30b4ce591b297d5 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 00:14:45 -0300 Subject: [PATCH 036/435] Update webserver.ino --- sonoff/webserver.ino | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 576a39c27..f2fe6dbe0 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -881,8 +881,7 @@ void HandleMqttConfiguration() page.replace(F("{m2"), String(Settings.mqtt_port)); page.replace(F("{m3"), Settings.mqtt_client); page.replace(F("{m4"), (Settings.mqtt_user[0] == '\0')?"0":Settings.mqtt_user); - //page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); - page.replace(F("{m5"), "**********"); + page.replace(F("{m5"), (Settings.mqtt_pwd[0] == '\0')?"0":Settings.mqtt_pwd); page.replace(F("{m6"), Settings.mqtt_topic); page.replace(F("{m7"), Settings.mqtt_fulltopic); page += FPSTR(HTTP_FORM_END); @@ -1069,8 +1068,7 @@ void HandleSaveSettings() WebGetArg("mu", tmp, sizeof(tmp)); strlcpy(Settings.mqtt_user, (!strlen(tmp)) ? MQTT_USER : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_user)); WebGetArg("mp", tmp, sizeof(tmp)); - //strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); - strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? "" : (strchr(tmp,'*')) ? Settings.mqtt_pwd : tmp, sizeof(Settings.mqtt_pwd)); + strlcpy(Settings.mqtt_pwd, (!strlen(tmp)) ? MQTT_PASS : (!strcmp(tmp,"0")) ? "" : tmp, sizeof(Settings.mqtt_pwd)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_MQTT D_CMND_MQTTHOST " %s, " D_CMND_MQTTPORT " %d, " D_CMND_MQTTCLIENT " %s, " D_CMND_MQTTUSER " %s, " D_CMND_MQTTPASSWORD " %s, " D_CMND_TOPIC " %s, " D_CMND_FULLTOPIC " %s"), Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, Settings.mqtt_user, Settings.mqtt_pwd, Settings.mqtt_topic, Settings.mqtt_fulltopic); AddLog(LOG_LEVEL_INFO); From 7f815351719508abc1c2adac85ade929206aecda Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 01:07:42 -0300 Subject: [PATCH 037/435] Update xdrv_08_KNX.ino --- sonoff/xdrv_08_KNX.ino | 48 +++++++++++++++++++++++++++--------------- 1 file changed, 31 insertions(+), 17 deletions(-) diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_08_KNX.ino index 04d19fcfb..6c24a271d 100644 --- a/sonoff/xdrv_08_KNX.ino +++ b/sonoff/xdrv_08_KNX.ino @@ -90,9 +90,10 @@ config_webUI_t config_webUI = { D_DELETE }; -int device_param_quantity = 4; bool flag_knx_enabled = true; -float last_temp = 0.0; +float last_temp = 25.0; +int knx_update_rate = 5; +unsigned long next_change = 0; void KNXStart() { @@ -143,7 +144,7 @@ knx.config_web_UI(config_webUI); //Set Physical KNX Address of the device knx.config_register_pa(); //knx.physical_address_set(Settings.knx_physs_addr); -knx.physical_address_set(knx.PA_to_address(1, 1, 1)); +//knx.physical_address_set(knx.PA_to_address(1, 1, 1)); //knx.config_register_label( D_KNX_PHYSICAL_ADDRESS_NOTE ); @@ -172,12 +173,13 @@ for (int i = 0; i < 13; ++i) //knx.config_set_ga(device_param[i].id, knx.GA_to_address(2,2,1)); } -knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); +//knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); +//knx.config_set_ga(device_param[12].id, knx.GA_to_address(4,1,1)); //knx.config_register_blankspace(); //update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , Settings.knx_update_rate); -update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , 5); +update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , knx_update_rate); //knx.config_register_line(); @@ -194,7 +196,7 @@ for (int i = 0; i < 12; ++i) //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); if (i==0) { - knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); + //knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); } } } @@ -205,6 +207,7 @@ if (device_param[j].show) { cb_temp_id = knx.callback_register( String( device_param_cb[j] ), temp_cb, &device_param[j]); } +//knx.callback_assign(cb_temp_id, knx.GA_to_address(4,1,1)); //knx.config_register_line(); @@ -218,25 +221,33 @@ knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Bu void KNXLoop() { -// if (Settings.flag.knx_enabled) { - if (flag_knx_enabled) { - knx.loop(); // Process knx events - } + knx.loop(); // Process knx events } -void KNX_EVERY_SECOND() { - // if (Settings.flag.knx_enabled) { - if (flag_knx_enabled) +void KNX_EVERY_SECOND() +{ + if (!flag_knx_enabled) { return; } + + if ( knx.config_get_int(update_rate_id) > 0 ) + { + unsigned long now = millis(); + + if (next_change < now) { + next_change = now + 1000 * knx.config_get_int(update_rate_id); + + knx.write_2byte_float(knx.config_get_ga(device_param[12].id), last_temp); } + } } void relay_cb(message_t const &msg, void *arg) { device_parameters_t *chan = (device_parameters_t *)arg; + if (!flag_knx_enabled) { return; } switch (msg.ct) { case KNX_CT_WRITE: @@ -258,6 +269,7 @@ void relay_cb(message_t const &msg, void *arg) void KNXUpdatePowerState(byte device, power_t state) { + if (!flag_knx_enabled) { return; } if ( device_param[device -1].id != KNX_Empty_ID ) // Group Address configured? 255 = empty { bool power = bitRead(state, device -1); @@ -276,15 +288,17 @@ void knx_send_button_power(byte key, byte device, byte state) // state 9 = clear retain flag // if (key) // { - if (device_param[device+7].id) - { - knx.write_1bit(knx.config_get_ga(device_param[device+7].id), !(state == 0)); - } + if (!flag_knx_enabled) { return; } + if (device_param[device+7].id) + { + knx.write_1bit(knx.config_get_ga(device_param[device+7].id), !(state == 0)); + } // } } void temp_cb(message_t const &msg, void *arg) { + if (!flag_knx_enabled) { return; } switch (msg.ct) { case KNX_CT_READ: From 71b59dd17fb60fe744ce523a57e4aeeebeaf7086 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 01:08:40 -0300 Subject: [PATCH 038/435] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a197c4a75..4e4347bc3 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,9 @@ Basic Functionality is Available. **Work in progress**. - [ ] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status -- [ ] Add Feature to send Temperature by a set interval -- [ ] Add Feature to receive command to read temperature +- [ ] Add Feature to read Temperature from Tasmota +- [x] Add Feature to send Temperature by a set interval +- [x] Add Feature to receive command to read temperature - [ ] Add Feature to recognice Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config From dda56a508be17a6e26441c4e08a35598d7fb0507 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 19:27:39 -0300 Subject: [PATCH 039/435] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 4e4347bc3..862558ce9 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,14 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re ----------------------------------------------------------------------------------------------------------------------------------- +## Contributors to this Project ## + +* Adrian Scillato [ascillato](https://github.com/ascillato) +* Sisamiwe [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. +* Nico Weichbrodt [envy](https://github.com/envy) - Thanks for the patience and help with the modifications to ESP_KNX_IP. + +----------------------------------------------------------------------------------------------------------------------------------- + ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. From bbe8b8fb017c13b674a66c00cf9c2b64dd69d50a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 18 Mar 2018 19:32:22 -0300 Subject: [PATCH 040/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eb7c1d6e7..22116ef91 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Basic Functionality is Available. **Work in progress**. - [ ] Add Feature to read Temperature from Tasmota - [x] Add Feature to send Temperature by a set interval - [x] Add Feature to receive command to read temperature -- [ ] Add Feature to recognice Tasmota config to show the same amount of relays, buttons, etc +- [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config - [ ] Change Web Menu to a Tasmota one to save FLASH and RAM From 01609f84f9686011c1e3efae76c9ba206dafeff2 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 22 Mar 2018 11:33:45 -0300 Subject: [PATCH 041/435] Update and rename xdrv_08_KNX.ino to xdrv_10_KNX.ino --- sonoff/{xdrv_08_KNX.ino => xdrv_10_KNX.ino} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename sonoff/{xdrv_08_KNX.ino => xdrv_10_KNX.ino} (99%) diff --git a/sonoff/xdrv_08_KNX.ino b/sonoff/xdrv_10_KNX.ino similarity index 99% rename from sonoff/xdrv_08_KNX.ino rename to sonoff/xdrv_10_KNX.ino index 6c24a271d..8289a96ad 100644 --- a/sonoff/xdrv_08_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -412,9 +412,9 @@ void KNXSaveSettings(void *arg) * Interface \*********************************************************************************************/ -#define XDRV_08 +#define XDRV_10 -boolean Xdrv08(byte function) +boolean Xdrv10(byte function) { boolean result = false; switch (function) { From 393b279eca45215b77dd32c6ab10d4ef49034ae3 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 22 Mar 2018 11:36:36 -0300 Subject: [PATCH 042/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fa7230d1e..97ca0bf00 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Basic Functionality is Available. **Work in progress**. ## Modifications to [Original Tasmota](https://github.com/arendst/Sonoff-Tasmota) ## -* Adding the file _/sonoff/xdrv_08_KNX.ino_ +* Adding the file _/sonoff/xdrv_10_KNX.ino_ * Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ * Add entries to the file _/sonoff/webserver.ino_ * Add entries to the file _/sonoff/sonoff.ino_ From 2339cf2793a99695912d3e7b5505f874fe5dae91 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:45:56 -0300 Subject: [PATCH 043/435] Update webserver.ino --- sonoff/webserver.ino | 79 +++++++++++++++++++++++++++----------------- 1 file changed, 48 insertions(+), 31 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index f2fe6dbe0..79da30741 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -25,10 +25,10 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ -#ifdef USE_KNX -#include // Include KNX IP library +#ifdef USE_KNX +#include // Include KNX IP library #endif // USE_KNX - + #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) @@ -43,16 +43,19 @@ const char HTTP_HEAD[] PROGMEM = "var cn,x,lt;" "cn=180;" "x=null;" // Allow for abortion + "function eb(s){" + "return document.getElementById(s);" // Save code space + "}" "function u(){" "if(cn>=0){" - "document.getElementById('t').innerHTML='" D_RESTART_IN " '+cn+' " D_SECONDS "';" + "eb('t').innerHTML='" D_RESTART_IN " '+cn+' " D_SECONDS "';" "cn--;" "setTimeout(u,1000);" "}" "}" "function c(l){" - "document.getElementById('s1').value=l.innerText||l.textContent;" - "document.getElementById('p1').focus();" + "eb('s1').value=l.innerText||l.textContent;" + "eb('p1').focus();" "}" "function la(p){" "var a='';" @@ -65,7 +68,7 @@ const char HTTP_HEAD[] PROGMEM = "x.onreadystatechange=function(){" "if(x.readyState==4&&x.status==200){" "var s=x.responseText.replace(/{t}/g,\"\").replace(/{s}/g,\"\").replace(/{c}/g,\"%'>
" - ""; + ""; void HandleKNXConfiguration() { + char tmp[100]; + String stmp; + if (HTTP_USER == webserver_state) { HandleRoot(); return; } AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_KNX); - String page = FPSTR(HTTP_HEAD); - page.replace(F("{v}"), FPSTR(S_CONFIGURE_KNX)); - page += FPSTR(HTTP_HEAD_STYLE); - page.replace(F("340px"), F("530px")); - page += FPSTR(HTTP_FORM_KNX); - page.replace(F("{kna"), String(KNX_physs_addr.pa.area)); - page.replace(F("{knl"), String(KNX_physs_addr.pa.line)); - page.replace(F("{knm"), String(KNX_physs_addr.pa.member)); - if ( Settings.flag.knx_enabled ) { page += F(" checked"); } + if ( WebServer->hasArg("save") ) { + KNX_Save_Settings(); + HandleConfiguration(); + } + else + { + if ( WebServer->hasArg("btn_add") ) { + if ( WebServer->arg("btn_add") == "1" ) { - page += FPSTR(HTTP_FORM_KNX2); - for (byte i = 0; i < KNX_MAX_device_param ; i++) - { - if ( device_param[i].show ) - { - page += FPSTR(HTTP_FORM_KNX_OPT); - page.replace(F("{vop}"), String(device_param[i].type)); - page.replace(F("{nop}"), String(device_param_ga[i])); + stmp = WebServer->arg("GAop"); //option selected + byte GAop = stmp.toInt(); + stmp = WebServer->arg("GA_FNUM"); + byte GA_FNUM = stmp.toInt(); + stmp = WebServer->arg("GA_AREA"); + byte GA_AREA = stmp.toInt(); + stmp = WebServer->arg("GA_FDEF"); + byte GA_FDEF = stmp.toInt(); + + KNX_ADD_GA( GAop, GA_FNUM, GA_AREA, GA_FDEF ); + + } + else + { + + stmp = WebServer->arg("CBop"); //option selected + byte CBop = stmp.toInt(); + stmp = WebServer->arg("CB_FNUM"); + byte CB_FNUM = stmp.toInt(); + stmp = WebServer->arg("CB_AREA"); + byte CB_AREA = stmp.toInt(); + stmp = WebServer->arg("CB_FDEF"); + byte CB_FDEF = stmp.toInt(); + + KNX_ADD_CB( CB_FNUM, CB_AREA, CB_FDEF, CBop ); + + } } - } - page += F(" -> "); - page += FPSTR(HTTP_FORM_KNX_GA); - page += FPSTR(HTTP_FORM_KNX_ADD_BTN); - page.replace(F("{btnval}"), String(1)); - for (byte i = 0; i < Settings.knx_GA_registered ; i++) - { - if ( Settings.knx_GA_param[i] ) + else if ( WebServer->hasArg("btn_del_ga") ) { - page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW); - page.replace(F("{opval}"), String(Settings.knx_GA_param[i])); - page.replace(F("{optex}"), String(device_param_ga[Settings.knx_GA_param[i]-1])); - KNX_addr.value = Settings.knx_GA_addr[i]; - page.replace(F("GAfnum"), String(KNX_addr.ga.area)); - page.replace(F("GAarea"), String(KNX_addr.ga.line)); - page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + + stmp = WebServer->arg("btn_del_ga"); + byte GA_NUM = stmp.toInt(); + + KNX_DEL_GA(GA_NUM); + } - } - page += FPSTR(HTTP_FORM_KNX3); - page += FPSTR(HTTP_FORM_KNX_GA); - page.replace(F("GAfnum"), F("CBfnum")); - page.replace(F("GAarea"), F("CBarea")); - page.replace(F("GAfdef"), F("CBfdef")); - page += FPSTR(HTTP_FORM_KNX4); - for (byte i = 0; i < KNX_MAX_device_param ; i++) - { - if ( device_param[i].show ) + else if ( WebServer->hasArg("btn_del_cb") ) { - page += FPSTR(HTTP_FORM_KNX_OPT); - page.replace(F("{vop}"), String(device_param[i].type)); - page.replace(F("{nop}"), String(device_param_cb[i])); + + stmp = WebServer->arg("btn_del_cb"); + byte CB_NUM = stmp.toInt(); + + KNX_DEL_CB(CB_NUM); + } - } - page += F(" "); - page += FPSTR(HTTP_FORM_KNX_ADD_BTN); - page.replace(F("{btnval}"), String(2)); - for (byte i = 0; i < Settings.knx_CB_registered ; i++) - { - if ( Settings.knx_CB_param[i] ) + + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_CONFIGURE_KNX)); + page += FPSTR(HTTP_HEAD_STYLE); + page.replace(F("340px"), F("530px")); + page += FPSTR(HTTP_FORM_KNX); + KNX_physs_addr.value = Settings.knx_physsical_addr; + page.replace(F("{kna"), String(KNX_physs_addr.pa.area)); + page.replace(F("{knl"), String(KNX_physs_addr.pa.line)); + page.replace(F("{knm"), String(KNX_physs_addr.pa.member)); + if ( Settings.flag.knx_enabled ) { page += F(" checked"); } + + page += FPSTR(HTTP_FORM_KNX2); + for (byte i = 0; i < KNX_MAX_device_param ; i++) { - page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW2); - page.replace(F("{opval}"), String(Settings.knx_CB_param[i])); - page.replace(F("{optex}"), String(device_param_cb[Settings.knx_CB_param[i]-1])); - KNX_addr.value = Settings.knx_CB_addr[i]; - page.replace(F("GAfnum"), String(KNX_addr.ga.area)); - page.replace(F("GAarea"), String(KNX_addr.ga.line)); - page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + if ( device_param[i].show ) + { + page += FPSTR(HTTP_FORM_KNX_OPT); + page.replace(F("{vop}"), String(device_param[i].type)); + page.replace(F("{nop}"), String(device_param_ga[i])); + } } + page += F(" -> "); + page += FPSTR(HTTP_FORM_KNX_GA); + page.replace(F("GAfnum"), F("GA_FNUM")); + page.replace(F("GAarea"), F("GA_AREA")); + page.replace(F("GAfdef"), F("GA_FDEF")); + page.replace(F("GAfnum"), F("GA_FNUM")); + page.replace(F("GAarea"), F("GA_AREA")); + page.replace(F("GAfdef"), F("GA_FDEF")); + page += FPSTR(HTTP_FORM_KNX_ADD_BTN); + page.replace(F("{btnval}"), String(1)); + if (Settings.knx_GA_registered < MAX_KNX_GA) { + page.replace(F("btndis"), F(" ")); + } + else + { + page.replace(F("btndis"), F("disabled")); + } + page.replace(F("fncbtnadd"), F("GAwarning")); + for (byte i = 0; i < Settings.knx_GA_registered ; i++) + { + if ( Settings.knx_GA_param[i] ) + { + page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW); + page.replace(F("{opval}"), String(Settings.knx_GA_param[i])); + page.replace(F("{optex}"), String(device_param_ga[Settings.knx_GA_param[i]-1])); + KNX_addr.value = Settings.knx_GA_addr[i]; + page.replace(F("GAfnum"), String(KNX_addr.ga.area)); + page.replace(F("GAarea"), String(KNX_addr.ga.line)); + page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + } + } + page += FPSTR(HTTP_FORM_KNX3); + page += FPSTR(HTTP_FORM_KNX_GA); + page.replace(F("GAfnum"), F("CB_FNUM")); + page.replace(F("GAarea"), F("CB_AREA")); + page.replace(F("GAfdef"), F("CB_FDEF")); + page.replace(F("GAfnum"), F("CB_FNUM")); + page.replace(F("GAarea"), F("CB_AREA")); + page.replace(F("GAfdef"), F("CB_FDEF")); + page += FPSTR(HTTP_FORM_KNX4); + for (byte i = 0; i < KNX_MAX_device_param ; i++) + { + if ( device_param[i].show ) + { + page += FPSTR(HTTP_FORM_KNX_OPT); + page.replace(F("{vop}"), String(device_param[i].type)); + page.replace(F("{nop}"), String(device_param_cb[i])); + } + } + page += F(" "); + page += FPSTR(HTTP_FORM_KNX_ADD_BTN); + page.replace(F("{btnval}"), String(2)); + if (Settings.knx_CB_registered < MAX_KNX_CB) { + page.replace(F("btndis"), F(" ")); + } + else + { + page.replace(F("btndis"), F("disabled")); + } + page.replace(F("fncbtnadd"), F("CBwarning")); + for (byte i = 0; i < Settings.knx_CB_registered ; i++) + { + if ( Settings.knx_CB_param[i] ) + { + page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW2); + page.replace(F("{opval}"), String(Settings.knx_CB_param[i])); + page.replace(F("{optex}"), String(device_param_cb[Settings.knx_CB_param[i]-1])); + KNX_addr.value = Settings.knx_CB_addr[i]; + page.replace(F("GAfnum"), String(KNX_addr.ga.area)); + page.replace(F("GAarea"), String(KNX_addr.ga.line)); + page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + } + } + page += F("
\").replace(/{m}/g,\"\").replace(/{e}/g,\"
\").replace(/}2/g,\"\");" - "document.getElementById('i').innerHTML=s;" + "eb('i').innerHTML=s;" "}" ""; const char HTTP_MSG_SLIDER1[] PROGMEM = @@ -184,6 +187,11 @@ const char HTTP_BTN_RSTRT[] PROGMEM = "
"; const char HTTP_BTN_MENU2[] PROGMEM = "
" +#ifdef USE_TIMERS +#ifdef USE_TIMERS_WEB + "
" +#endif // USE_TIMERS_WEB +#endif // USE_TIMERS "
"; const char HTTP_BTN_MENU3[] PROGMEM = "
" @@ -192,9 +200,9 @@ const char HTTP_BTN_MENU3[] PROGMEM = #endif // USE_DOMOTICZ ""; const char HTTP_BTN_MENU4[] PROGMEM = -#ifdef USE_KNX - "
" -#endif // USE_KNX +#ifdef USE_KNX + "
" +#endif // USE_KNX "
" "
" "
" @@ -213,7 +221,7 @@ const char HTTP_BTN_CONF[] PROGMEM = "

"; const char HTTP_FORM_MODULE[] PROGMEM = "
 " D_MODULE_PARAMETERS " 
" - "" + "" "
" D_MODULE_TYPE " ({mt)

"; const char HTTP_LNK_ITEM[] PROGMEM = "
{v} {i} {r}%
"; @@ -221,7 +229,7 @@ const char HTTP_LNK_SCAN[] PROGMEM = "
"; const char HTTP_FORM_WIFI[] PROGMEM = "
 " D_WIFI_PARAMETERS " " - "" + "" "
" D_AP1_SSID " (" STA_SSID1 ")

" "
" D_AP1_PASSWORD "

" "
" D_AP2_SSID " (" STA_SSID2 ")

" @@ -229,7 +237,7 @@ const char HTTP_FORM_WIFI[] PROGMEM = "
" D_HOSTNAME " (" WIFI_HOSTNAME ")

"; const char HTTP_FORM_MQTT[] PROGMEM = "
 " D_MQTT_PARAMETERS " " - "" + "" "
" D_HOST " (" MQTT_HOST ")

" "
" D_PORT " (" STR(MQTT_PORT) ")

" "
" D_CLIENT " ({m0)

" @@ -239,7 +247,7 @@ const char HTTP_FORM_MQTT[] PROGMEM = "
" D_FULL_TOPIC " (" MQTT_FULLTOPIC ")

"; const char HTTP_FORM_LOG1[] PROGMEM = "
 " D_LOGGING_PARAMETERS " " - ""; + ""; const char HTTP_FORM_LOG2[] PROGMEM = "
{b0 ({b1)

"; const char HTTP_FORM_OTHER[] PROGMEM = "
 " D_OTHER_PARAMETERS " " - "" + "" "
" D_WEB_ADMIN_PASSWORD "

" "
" D_MQTT_ENABLE "
"; const char HTTP_FORM_OTHER2[] PROGMEM = @@ -281,7 +289,7 @@ const char HTTP_FORM_UPG[] PROGMEM = const char HTTP_FORM_RST_UPG[] PROGMEM = "" "

" - "
" + "
" "
" "" ""; @@ -337,6 +345,11 @@ void StartWebserver(int type, IPAddress ipweb) WebServer->on("/", HandleRoot); WebServer->on("/cn", HandleConfiguration); WebServer->on("/md", HandleModuleConfiguration); +#ifdef USE_TIMERS +#ifdef USE_TIMERS_WEB + WebServer->on("/tm", HandleTimerConfiguration); +#endif // USE_TIMERS_WEB +#endif // USE_TIMERS WebServer->on("/w1", HandleWifiConfigurationWithScan); WebServer->on("/w0", HandleWifiConfiguration); if (Settings.flag.mqtt_enabled) { @@ -374,9 +387,9 @@ void StartWebserver(int type, IPAddress ipweb) } #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); -#ifdef USE_KNX - knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library -#endif // USE_KNX +#ifdef USE_KNX + knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library +#endif // USE_KNX } reset_web_log_flag = 0; WebServer->begin(); // Web server start @@ -1011,17 +1024,16 @@ void HandleSaveSettings() char stemp[TOPSZ]; char stemp2[TOPSZ]; - byte what = 0; - byte restart; String result = ""; AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_SAVE_CONFIGURATION); char tmp[100]; - WebGetArg("w", tmp, sizeof(tmp)); - if (strlen(tmp)) { - what = atoi(tmp); - } + WebGetArg("w", tmp, sizeof(tmp)); // Returns "5,1" where 5 is config type and 1 is restart flag + char *p = tmp; + uint8_t what = strtol(p, &p, 10); + p++; // Skip comma + uint8_t restart = strtol(p, &p, 10); switch (what) { case 1: WebGetArg("h", tmp, sizeof(tmp)); @@ -1095,6 +1107,13 @@ void HandleSaveSettings() Settings.seriallog_level, Settings.weblog_level, Settings.syslog_level, Settings.syslog_host, Settings.syslog_port, Settings.tele_period); AddLog(LOG_LEVEL_INFO); break; +#ifdef USE_TIMERS +#ifdef USE_TIMERS_WEB + case 7: + TimerSaveSettings(); + break; +#endif // USE_TIMERS_WEB +#endif // USE_TIMERS #ifdef USE_DOMOTICZ case 4: DomoticzSaveSettings(); @@ -1146,8 +1165,6 @@ void HandleSaveSettings() break; } - WebGetArg("r", tmp, sizeof(tmp)); - restart = (!strlen(tmp)) ? 1 : atoi(tmp); if (restart) { String page = FPSTR(HTTP_HEAD); page.replace(F("{v}"), FPSTR(S_SAVE_CONFIGURATION)); From bef2587ce68751c5fff34a3888fb12db5543899d Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:53:37 -0300 Subject: [PATCH 044/435] Update en-GB.h --- sonoff/language/en-GB.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 6191d391d..1c1268b82 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -359,7 +359,17 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" -// xdrv_08_KNX.ino ++// xdrv_09_timers.ino ++#define D_CONFIGURE_TIMER "Configure Timer" ++#define D_TIMER_PARAMETERS "Timer parameters" ++#define D_TIMER_ARM "Arm" ++#define D_TIMER_TIME "Time" ++#define D_TIMER_DAYS "Days" ++#define D_TIMER_REPEAT "Repeat" ++#define D_TIMER_DEVICE "Device" ++#define D_TIMER_POWER "Power" + +// xdrv_10_KNX.ino #define D_KNX_PARAMETERS "KNX parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" From 81d02add3d46437d0d32180803317c38e25ebbc3 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:56:04 -0300 Subject: [PATCH 045/435] Update es-AR.h --- sonoff/language/es-AR.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 6799b02d0..9a2f410d6 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -359,10 +359,20 @@ #define D_DOMOTICZ_AIRQUALITY "Calidad del Aire" #define D_DOMOTICZ_UPDATE_TIMER "Intervalo de refresco" -// xdrv_08_KNX.ino +// xdrv_09_timers.ino +#define D_CONFIGURE_TIMER "Configurar Temporizadores" +#define D_TIMER_PARAMETERS "Parámetros de Temporizador" +#define D_TIMER_ARM "Armado" +#define D_TIMER_TIME "Tiempo" +#define D_TIMER_DAYS "Días" +#define D_TIMER_REPEAT "Repetir" +#define D_TIMER_DEVICE "Dispositivo" +#define D_TIMER_POWER "Encender" + +// xdrv_10_KNX.ino #define D_KNX_PARAMETERS "Parámetros de KNX" #define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Dirección Fí­sica" +#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" #define D_KNX_SET "Establecer" #define D_KNX_ADD "Agregar" #define D_DELETE "Eliminar" From c7fa4397626cc583fef21566d2777e4aadcc2c26 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:58:59 -0300 Subject: [PATCH 046/435] Update settings.h --- sonoff/settings.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 173958b86..51a90af54 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -93,10 +93,10 @@ typedef union { uint32_t data; struct { uint32_t time : 11; // bits 0 - 10 = minutes in a day - uint32_t mday : 5; // bits 11 - 15 = optional day in a month + uint32_t mday : 5; // bits 11 - 15 = 32 days in a month uint32_t days : 7; // bits 16 - 22 = week day mask uint32_t device : 4; // bits 23 - 26 = 16 devices - uint32_t power : 2; // bits 27 - 28 = 4 power states - Off, On, Toggle + uint32_t power : 2; // bits 27 - 28 = 4 power states - Off, On, Toggle, Blink uint32_t repeat : 1; // bit 29 uint32_t arm : 1; // bit 30 uint32_t spare : 1; // bit 31 @@ -311,4 +311,4 @@ struct XDRVMAILBOX { ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif -#endif // _SETTINGS_H_ \ No newline at end of file +#endif // _SETTINGS_H_ From cb3157a3a248ee16e7654ca9825b503c1a23ffe6 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 16:59:38 -0300 Subject: [PATCH 047/435] Update en-GB.h --- sonoff/language/en-GB.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 1c1268b82..30c6ca547 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -359,15 +359,15 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" -+// xdrv_09_timers.ino -+#define D_CONFIGURE_TIMER "Configure Timer" -+#define D_TIMER_PARAMETERS "Timer parameters" -+#define D_TIMER_ARM "Arm" -+#define D_TIMER_TIME "Time" -+#define D_TIMER_DAYS "Days" -+#define D_TIMER_REPEAT "Repeat" -+#define D_TIMER_DEVICE "Device" -+#define D_TIMER_POWER "Power" +// xdrv_09_timers.ino +#define D_CONFIGURE_TIMER "Configure Timer" +#define D_TIMER_PARAMETERS "Timer parameters" +#define D_TIMER_ARM "Arm" +#define D_TIMER_TIME "Time" +#define D_TIMER_DAYS "Days" +#define D_TIMER_REPEAT "Repeat" +#define D_TIMER_DEVICE "Device" +#define D_TIMER_POWER "Power" // xdrv_10_KNX.ino #define D_KNX_PARAMETERS "KNX parameters" From 59bb4e177751d4860728e010784d9eb687548807 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:00:26 -0300 Subject: [PATCH 048/435] Update user_config.h --- sonoff/user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 7ef0891e4..2f03b7f4c 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -166,6 +166,7 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) #define USE_TIMERS // Add support for up to 16 timers (+2k2 code) +#define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes #define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes From 66d59fc808f5d7302e83eb6d1a02f9eb1860b569 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:01:29 -0300 Subject: [PATCH 049/435] Update xdrv_05_domoticz.ino --- sonoff/xdrv_05_domoticz.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_05_domoticz.ino b/sonoff/xdrv_05_domoticz.ino index 3e1dfdc49..5aa6a7c43 100644 --- a/sonoff/xdrv_05_domoticz.ino +++ b/sonoff/xdrv_05_domoticz.ino @@ -22,7 +22,7 @@ #ifdef USE_WEBSERVER const char HTTP_FORM_DOMOTICZ[] PROGMEM = "
 " D_DOMOTICZ_PARAMETERS " 
" - "" + "" "
"; const char HTTP_FORM_DOMOTICZ_RELAY[] PROGMEM = "" From aae79106ea405e60ba8bd45c43af2f01099390ea Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:04:06 -0300 Subject: [PATCH 050/435] Update xdrv_09_timers.ino --- sonoff/xdrv_09_timers.ino | 260 ++++++++++++++++++++++++++++++-------- 1 file changed, 206 insertions(+), 54 deletions(-) diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 350f49dfd..df124ecfa 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -36,7 +36,7 @@ enum TimerCommands { CMND_TIMER, CMND_TIMERS }; const char kTimerCommands[] PROGMEM = D_CMND_TIMER "|" D_CMND_TIMERS ; -power_t fired = 0; +uint16_t fired = 0; void TimerEverySecond() { @@ -45,6 +45,7 @@ void TimerEverySecond() uint8_t days = 1 << (RtcTime.day_of_week -1); for (byte i = 0; i < MAX_TIMERS; i++) { + if (Settings.timer[i].device >= devices_present) Settings.timer[i].data = 0; // Reset timer due to change in devices present if (Settings.timer[i].arm) { if (time == Settings.timer[i].time) { if (!bitRead(fired, i) && (Settings.timer[i].days & days)) { @@ -88,67 +89,74 @@ boolean TimerCommand() int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic, kTimerCommands); if ((CMND_TIMER == command_code) && (index > 0) && (index <= MAX_TIMERS)) { uint8_t error = 0; - if (XdrvMailbox.data_len) { - StaticJsonBuffer<128> jsonBuffer; - JsonObject& root = jsonBuffer.parseObject(dataBufUc); - if (!root.success()) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed - error = 1; - } - else { - char parm_uc[10]; - - index--; - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ARM))].success()) { - Settings.timer[index].arm = (root[parm_uc] != 0); + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= MAX_TIMERS)) { + if (XdrvMailbox.payload == 0) { + Settings.timer[index -1].data = 0; // Clear timer + } else { + Settings.timer[index -1].data = Settings.timer[XdrvMailbox.payload -1].data; // Copy timer } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_TIME))].success()) { - uint16_t itime = 0; - uint8_t value = 0; - char time_str[10]; + } else { + StaticJsonBuffer<128> jsonBuffer; + JsonObject& root = jsonBuffer.parseObject(dataBufUc); + if (!root.success()) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMER "%d\":\"" D_JSON_INVALID_JSON "\"}"), index); // JSON decode failed + error = 1; + } + else { + char parm_uc[10]; + index--; + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_ARM))].success()) { + Settings.timer[index].arm = (root[parm_uc] != 0); + } + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_TIME))].success()) { + uint16_t itime = 0; + uint8_t value = 0; + char time_str[10]; - snprintf(time_str, sizeof(time_str), root[parm_uc]); - const char *substr = strtok(time_str, ":"); - if (substr != NULL) { - value = atoi(substr); - if (value > 23) value = 23; - itime = value * 60; - substr = strtok(NULL, ":"); + snprintf(time_str, sizeof(time_str), root[parm_uc]); + const char *substr = strtok(time_str, ":"); if (substr != NULL) { value = atoi(substr); - if (value > 59) value = 59; - itime += value; + if (value > 23) value = 23; + itime = value * 60; + substr = strtok(NULL, ":"); + if (substr != NULL) { + value = atoi(substr); + if (value > 59) value = 59; + itime += value; + } + } + Settings.timer[index].time = itime; + } + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DAYS))].success()) { + // SMTWTFS = 1234567 = 0011001 = 00TW00S = --TW--S + Settings.timer[index].days = 0; + const char *tday = root[parm_uc]; + char ch = '.'; + + uint8_t i = 0; + while ((ch != '\0') && (i < 7)) { + ch = *tday++; + if (ch == '-') ch = '0'; + uint8_t mask = 1 << i++; + Settings.timer[index].days |= (ch == '0') ? 0 : mask; } } - Settings.timer[index].time = itime; - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DAYS))].success()) { - // SMTWTFS = 1234567 = 0011001 = 00TW00S = --TW--S - Settings.timer[index].days = 0; - const char *tday = root[parm_uc]; - char ch = '.'; - - uint8_t i = 0; - while ((ch != '\0') && (i < 7)) { - ch = *tday++; - if (ch == '-') ch = '0'; - uint8_t mask = 1 << i++; - Settings.timer[index].days |= (ch == '0') ? 0 : mask; + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_REPEAT))].success()) { + Settings.timer[index].repeat = (root[parm_uc] != 0); } - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_REPEAT))].success()) { - Settings.timer[index].repeat = (root[parm_uc] != 0); - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DEVICE))].success()) { - Settings.timer[index].device = ((uint8_t)root[parm_uc] -1) & 0x0F; - } - if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_POWER))].success()) { - Settings.timer[index].power = (uint8_t)root[parm_uc] & 0x03; - } - if (Settings.timer[index].arm) bitClear(fired, index); + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_DEVICE))].success()) { + uint8_t device = ((uint8_t)root[parm_uc] -1) & 0x0F; + Settings.timer[index].device = (device < devices_present) ? device : devices_present -1; + } + if (root[UpperCase_P(parm_uc, PSTR(D_JSON_TIMER_POWER))].success()) { + Settings.timer[index].power = (uint8_t)root[parm_uc] & 0x03; + } + if (Settings.timer[index].arm) bitClear(fired, index); - index++; + index++; + } } } if (!error) { @@ -181,6 +189,150 @@ boolean TimerCommand() return serviced; } +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ + +#ifdef USE_WEBSERVER +#ifdef USE_TIMERS_WEB +const char HTTP_TIMER_SCRIPT[] PROGMEM = + "var pt=[],ct=99;" + "function qs(s){" // Save code space + "return document.querySelector(s);" + "}" + "function ce(i,q){" // Create select option + "var o=document.createElement('option');" + "o.textContent=i;" + "q.appendChild(o);" + "}" + "function st(){" // Save parameters to hidden area + "var d,h,i,m,n,s,p;" + "h=qs('#ho');" + "m=qs('#mi');" + "d=qs('#d1');" + "s=0;" + "n=1<<30;if(eb('a0').checked){s|=n;}" // Get arm + "n=1<<29;if(eb('r0').checked){s|=n;}" // Get repeat + "for(i=0;i<7;i++){n=1<<(16+i);if(eb('w'+i).checked){s|=n;}}" // Get weekdays + "s|=(eb('p1').value<<27);" // Get power + "s|=(d.selectedIndex<<23);" // Get device + "s|=((h.selectedIndex*60)+m.selectedIndex)&0x7FF;" // Get time + "pt[ct]=s;" + "eb('t0').value=pt.join();" // Save parameters from array to hidden area + "}" + "function ot(t,e){" + "var d,h,i,m,n,s,tl,p,q;" + "h=qs('#ho');" + "m=qs('#mi');" + "d=qs('#d1');" + "if(ct==99){" // Do this once + "pt=eb('t0').value.split(',').map(Number);" // Get parameters from hidden area to array + "for(i=0;i<=23;i++){ce((i<10)?('0'+i):i,h);}" // Create hours select options + "for(i=0;i<=59;i++){ce((i<10)?('0'+i):i,m);}" // Create minutes select options + "for(i=0;i<}1;i++){ce(i+1,d);}" // Create devices + "}else{" + "st();" // Save changes + "}" + "tl=document.getElementsByClassName('tl');" // Remove the background color of all tablinks/buttons + "for(i=0;i>(16+i))&1;eb('w'+i).checked=p;}" // Set weekdays + "p=(s>>23)&0xF;d.value=p+1;" // Set device + "p=(s>>27)&3;eb('p1').value=p;" // Set power + "p=(s>>29)&1;eb('r0').checked=p;" // Set repeat + "p=(s>>30)&1;eb('a0').checked=p;" // Set arm + "ct=t;" + "}"; +const char HTTP_TIMER_STYLE[] PROGMEM = + ".tl{float:left;border-radius:0;border:1px solid #fff;padding:1px;width:6.25%;}" + ""; +const char HTTP_FORM_TIMER[] PROGMEM = + "
 " D_TIMER_PARAMETERS " " + " " + "" D_TIMER_POWER " " + "
" + "
" +// "Time  " + "" D_TIMER_TIME "  :  " + "" D_TIMER_ARM " " + "" D_TIMER_REPEAT "" + "

" + "
"; +const char HTTP_FORM_TIMER2[] PROGMEM = + "type='submit' onclick='st();this.form.submit();'"; + +const char S_CONFIGURE_TIMER[] PROGMEM = D_CONFIGURE_TIMER; + +void HandleTimerConfiguration() +{ + if (HTTP_USER == webserver_state) { + HandleRoot(); + return; + } + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_TIMER); + + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_CONFIGURE_TIMER)); + page += FPSTR(HTTP_TIMER_SCRIPT); + page += FPSTR(HTTP_HEAD_STYLE); + page.replace(F(""), FPSTR(HTTP_TIMER_STYLE)); + page += FPSTR(HTTP_FORM_TIMER); + for (byte i = 0; i < MAX_TIMERS; i++) { + if (i > 0) page += F(","); + page += String(Settings.timer[i].data); + } + page += F("' hidden>
"); + for (byte i = 0; i < MAX_TIMERS; i++) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(""), + i, (0 == i) ? " id='dP'" : "", i +1); + page += mqtt_data; + } + page += FPSTR(HTTP_FORM_TIMER1); + page.replace(F("}1"), String(devices_present)); + char day[4] = { 0 }; + for (byte i = 0; i < 7; i++) { + strncpy_P(day, PSTR(D_DAY3LIST) + (i *3), 3); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s"), i, i, day); + page += mqtt_data; + } + page += F("
"); + + page += FPSTR(HTTP_FORM_END); + page.replace(F("type='submit'"), FPSTR(HTTP_FORM_TIMER2)); + page += F(""); // Get the element with id='defaultOpen' and click on it + page += FPSTR(HTTP_BTN_CONF); + ShowPage(page); +} + +void TimerSaveSettings() +{ + char tmp[MAX_TIMERS *12]; // Need space for MAX_TIMERS x 10 digit numbers separated by a comma + + WebGetArg("t0", tmp, sizeof(tmp)); + char *p = tmp; + for (byte i = 0; i < MAX_TIMERS; i++) { + uint32_t data = strtol(p, &p, 10); + p++; // Skip comma + if ((data & 0x7FF) < 1440) Settings.timer[i].data = data; + } +} +#endif // USE_TIMERS_WEB +#endif // USE_WEBSERVER + /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -202,4 +354,4 @@ boolean Xdrv09(byte function) return result; } -#endif // USE_TIMERS \ No newline at end of file +#endif // USE_TIMERS From 145ed4e7591fcd0d79ee6e7069eb41b4ffea4639 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:21:02 -0300 Subject: [PATCH 051/435] Update en-GB.h --- sonoff/language/en-GB.h | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 30c6ca547..c7db040db 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -216,7 +216,6 @@ #define D_CONFIGURE_WIFI "Configure WiFi" #define D_CONFIGURE_MQTT "Configure MQTT" #define D_CONFIGURE_DOMOTICZ "Configure Domoticz" -#define D_CONFIGURE_KNX "Configure KNX" #define D_CONFIGURE_LOGGING "Configure Logging" #define D_CONFIGURE_OTHER "Configure Other" #define D_CONFIRM_RESET_CONFIGURATION "Confirm Reset Configuration" @@ -369,20 +368,6 @@ #define D_TIMER_DEVICE "Device" #define D_TIMER_POWER "Power" -// xdrv_10_KNX.ino -#define D_KNX_PARAMETERS "KNX parameters" -#define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Physical Address" -#define D_KNX_SET "Set" -#define D_KNX_ADD "Add" -#define D_DELETE "Delete" -#define D_REPLY "Reply" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Must be unique on the KNX network)" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Group Addresses to Send Data to" -#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" -#define D_KNX_PARAMETER_TO_SEND "Parameter to Send" -#define D_KNX_UPDATE_INTERVAL "Sensor Update Interval (sec)" - // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_YESTERDAY "Energy Yesterday" @@ -477,7 +462,6 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT -#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From 32905cd4d9d250a35c8f99b2ba644146514c5a63 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:21:33 -0300 Subject: [PATCH 052/435] Update es-AR.h --- sonoff/language/es-AR.h | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 9a2f410d6..5ad7d344c 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -216,7 +216,6 @@ #define D_CONFIGURE_WIFI "Configuración WiFi" #define D_CONFIGURE_MQTT "Configuración MQTT" #define D_CONFIGURE_DOMOTICZ "Configuración Domoticz" -#define D_CONFIGURE_KNX "Configuración de KNX" #define D_CONFIGURE_LOGGING "Configuración Logging" #define D_CONFIGURE_OTHER "Configuración Extra" #define D_CONFIRM_RESET_CONFIGURATION "Confirmar Reset Configuración" @@ -360,28 +359,14 @@ #define D_DOMOTICZ_UPDATE_TIMER "Intervalo de refresco" // xdrv_09_timers.ino -#define D_CONFIGURE_TIMER "Configurar Temporizadores" -#define D_TIMER_PARAMETERS "Parámetros de Temporizador" -#define D_TIMER_ARM "Armado" -#define D_TIMER_TIME "Tiempo" -#define D_TIMER_DAYS "Días" -#define D_TIMER_REPEAT "Repetir" -#define D_TIMER_DEVICE "Dispositivo" -#define D_TIMER_POWER "Encender" - -// xdrv_10_KNX.ino -#define D_KNX_PARAMETERS "Parámetros de KNX" -#define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" -#define D_KNX_SET "Establecer" -#define D_KNX_ADD "Agregar" -#define D_DELETE "Eliminar" -#define D_REPLY "Responder" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" -#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" -#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" -#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" +#define D_CONFIGURE_TIMER "Configure Timer" +#define D_TIMER_PARAMETERS "Timer parameters" +#define D_TIMER_ARM "Arm" +#define D_TIMER_TIME "Time" +#define D_TIMER_DAYS "Days" +#define D_TIMER_REPEAT "Repeat" +#define D_TIMER_DEVICE "Device" +#define D_TIMER_POWER "Power" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" @@ -477,7 +462,6 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT -#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From 5e7f46fe3ac0609d1f7abe7246046edb488a5dd2 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:22:17 -0300 Subject: [PATCH 053/435] Update user_config.h --- sonoff/user_config.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 2f03b7f4c..d49373f67 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -137,9 +137,6 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) (Optional) -// -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support (+14.7k code) - // -- MQTT - Home Assistant Discovery ------------- #define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+1k4 code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix @@ -166,7 +163,7 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) #define USE_TIMERS // Add support for up to 16 timers (+2k2 code) -#define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) + #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes #define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes From 8b4b839c42b9ba3632363112fdc57b9a6999e71e Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:29:26 -0300 Subject: [PATCH 054/435] Update user_config.h --- sonoff/user_config.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d49373f67..e84ad19f7 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -137,6 +137,9 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) (Optional) +// -- KNX IP Protocol ----------------------------- +#define USE_KNX // Enable KNX IP Protocol Support (+14.7k code) + // -- MQTT - Home Assistant Discovery ------------- #define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+1k4 code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix @@ -163,7 +166,7 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) #define USE_TIMERS // Add support for up to 16 timers (+2k2 code) - #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) +#define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes #define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes From 0e10a41b785fc3a011ff30711628311314ab9d32 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:31:09 -0300 Subject: [PATCH 055/435] Update en-GB.h --- sonoff/language/en-GB.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index c7db040db..4f46f7646 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -368,6 +368,20 @@ #define D_TIMER_DEVICE "Device" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_SET "Set" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Must be unique on the KNX network)" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Group Addresses to Send Data to" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_KNX_PARAMETER_TO_SEND "Parameter to Send" +#define D_KNX_UPDATE_INTERVAL "Sensor Update Interval (sec)" + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_YESTERDAY "Energy Yesterday" From 49b6ca70b398c8d5e775b71ece15669a1c532f89 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:35:59 -0300 Subject: [PATCH 056/435] Update es-AR.h --- sonoff/language/es-AR.h | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 5ad7d344c..e82e0508c 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -359,14 +359,29 @@ #define D_DOMOTICZ_UPDATE_TIMER "Intervalo de refresco" // xdrv_09_timers.ino -#define D_CONFIGURE_TIMER "Configure Timer" -#define D_TIMER_PARAMETERS "Timer parameters" +#define D_CONFIGURE_TIMER "Configuración Temporizadores" +#define D_TIMER_PARAMETERS "Parámetros de Temporizadores" #define D_TIMER_ARM "Arm" -#define D_TIMER_TIME "Time" -#define D_TIMER_DAYS "Days" -#define D_TIMER_REPEAT "Repeat" -#define D_TIMER_DEVICE "Device" -#define D_TIMER_POWER "Power" +#define D_TIMER_TIME "Tiempo" +#define D_TIMER_DAYS "Días" +#define D_TIMER_REPEAT "Repetir" +#define D_TIMER_DEVICE "Dispositivo" +#define D_TIMER_POWER "Encendido" + +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configuración de KNX" +#define D_KNX_PARAMETERS "Parámetros de KNX" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" +#define D_KNX_SET "Establecer" +#define D_KNX_ADD "Agregar" +#define D_DELETE "Eliminar" +#define D_REPLY "Responder" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" +#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" +#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" +#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" @@ -462,6 +477,7 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From 04d5cf1d489bbdd8a9c2643747e0ab31144d24e6 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 28 Mar 2018 17:37:07 -0300 Subject: [PATCH 057/435] Update en-GB.h --- sonoff/language/en-GB.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 4f46f7646..be64c3f2f 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -369,6 +369,7 @@ #define D_TIMER_POWER "Power" // xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" #define D_KNX_PARAMETERS "KNX parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" @@ -476,6 +477,7 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From f9cafb50fa0d8a8a64dc233bc5725ea3f5c24214 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:17:08 -0300 Subject: [PATCH 058/435] Update es-AR.h --- sonoff/language/es-AR.h | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index e82e0508c..bf35cc807 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -361,27 +361,12 @@ // xdrv_09_timers.ino #define D_CONFIGURE_TIMER "Configuración Temporizadores" #define D_TIMER_PARAMETERS "Parámetros de Temporizadores" -#define D_TIMER_ARM "Arm" -#define D_TIMER_TIME "Tiempo" +#define D_TIMER_ARM "Activo" +#define D_TIMER_TIME "Hora" #define D_TIMER_DAYS "Días" #define D_TIMER_REPEAT "Repetir" -#define D_TIMER_DEVICE "Dispositivo" -#define D_TIMER_POWER "Encendido" - -// xdrv_10_KNX.ino -#define D_CONFIGURE_KNX "Configuración de KNX" -#define D_KNX_PARAMETERS "Parámetros de KNX" -#define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" -#define D_KNX_SET "Establecer" -#define D_KNX_ADD "Agregar" -#define D_DELETE "Eliminar" -#define D_REPLY "Responder" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" -#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" -#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" -#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" +#define D_TIMER_DEVICE "Salida" +#define D_TIMER_POWER "Estado" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" @@ -477,7 +462,6 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT -#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From 45b1fe37eb8bba658e0adb6992dc87ef2dc5200b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:19:46 -0300 Subject: [PATCH 059/435] Update es-AR.h --- sonoff/language/es-AR.h | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index bf35cc807..69e86d8cd 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -368,6 +368,22 @@ #define D_TIMER_DEVICE "Salida" #define D_TIMER_POWER "Estado" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configuración de KNX" +#define D_KNX_PARAMETERS "Parámetros de KNX" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Dirección Física" +#define D_KNX_SET "Establecer" +#define D_KNX_ADD "Agregar" +#define D_DELETE "Eliminar" +#define D_REPLY "Responder" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" +#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" +#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" +#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" #define D_ENERGY_YESTERDAY "Energía Ayer" From dd7cf2a7d30a4f1faca6fb5827df1028bf46faeb Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:21:51 -0300 Subject: [PATCH 060/435] Update en-GB.h --- sonoff/language/en-GB.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index be64c3f2f..8989d9d5a 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -382,6 +382,7 @@ #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_KNX_PARAMETER_TO_SEND "Parameter to Send" #define D_KNX_UPDATE_INTERVAL "Sensor Update Interval (sec)" +#define D_LOG_KNX "KNX: " // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" @@ -477,7 +478,6 @@ #define D_LOG_MODULE "MOD: " // Module #define D_LOG_MDNS "DNS: " // mDNS #define D_LOG_MQTT "MQT: " // MQTT -#define D_LOG_KNX "KNX: " // KNX #define D_LOG_OTHER "OTH: " // Other #define D_LOG_RESULT "RSL: " // Result #define D_LOG_RFR "RFR: " // RF Received From a0a80e3449e9f9fd5203b2f214579ec4f71bd6eb Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:23:56 -0300 Subject: [PATCH 061/435] Update settings.h From 399b7bd25d0f24bf7ba577e9795465ae867f584a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:24:48 -0300 Subject: [PATCH 062/435] Update xdrv_09_timers.ino From 9cf2ed226b7672beffe045b070de02a516cef635 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:26:00 -0300 Subject: [PATCH 063/435] Update user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 76d38ce21..9392d534a 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -168,7 +168,7 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) #define USE_TIMERS // Add support for up to 16 timers (+2k2 code) -#define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) + #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes #define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes From 73fa8b2ecd3605a3600a78e547fc05a66d19cfc0 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:27:11 -0300 Subject: [PATCH 064/435] Update settings.h From 9133ec13dee9ccb432ad1946d75420158738645f Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:30:29 -0300 Subject: [PATCH 065/435] Update settings.h From 485eb523b126e2abfa3991a2ca1d54ba5c63462a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:30:55 -0300 Subject: [PATCH 066/435] Update settings.h --- sonoff/settings.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 51a90af54..25c21451d 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -310,5 +310,4 @@ struct XDRVMAILBOX { #ifdef USE_ADC_VCC ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif - #endif // _SETTINGS_H_ From a4ffae0eed514eb0e0099abe853794eca98a0110 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Thu, 29 Mar 2018 10:31:20 -0300 Subject: [PATCH 067/435] Update settings.h --- sonoff/settings.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/settings.h b/sonoff/settings.h index 25c21451d..51a90af54 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -310,4 +310,5 @@ struct XDRVMAILBOX { #ifdef USE_ADC_VCC ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif + #endif // _SETTINGS_H_ From 74bcf281a672fd53b6f141a08c4db7f4ba48174a Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Sun, 1 Apr 2018 15:23:14 -0300 Subject: [PATCH 068/435] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 96dbc0901..0ec9ffd8c 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,8 @@ Up to now, enabling KNX uses +14.7k of code There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. +This version is kept in sync with the Original Sonoff-Tasmota + ----------------------------------------------------------------------------------------------------------------------------------- ## Contributors to this Project ## From 96193b03e68ab5fdf342ebb237eea3380b90bc71 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:41:04 -0300 Subject: [PATCH 069/435] Update README.md --- README.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e49ad6400..a48483ff6 100644 --- a/README.md +++ b/README.md @@ -61,10 +61,21 @@ This version is kept in sync with the Original Sonoff-Tasmota ----------------------------------------------------------------------------------------------------------------------------------- -## Sonoff-Tasmota -Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. +# Sonoff-Tasmota -Current version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Alternative Firmware for 'ESP8266 based' **SONOFF** by [iTead Studio](https://www.itead.cc/) and for **ElectroDragon IoT Relay**, with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. + +[![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) +[![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) +[![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/stargazers) +[![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) +[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/master/LICENSE) + +Current Development Version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. + +If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! +[![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) ### Quick install From f99b198c0867af3ea7d43685c4e95f8fb6cb4632 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:44:01 -0300 Subject: [PATCH 070/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a48483ff6..8c32c55d0 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This version is kept in sync with the Original Sonoff-Tasmota # Sonoff-Tasmota -Alternative Firmware for 'ESP8266 based' **SONOFF** by [iTead Studio](https://www.itead.cc/) and for **ElectroDragon IoT Relay**, with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. +Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) or **ElectroDragon IoT Relay**, with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From d9ecdfdae9e0b6c2eaf812bedad60cbc39b1a4c2 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:47:31 -0300 Subject: [PATCH 071/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c32c55d0..9b39411d1 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This version is kept in sync with the Original Sonoff-Tasmota # Sonoff-Tasmota -Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) or **ElectroDragon IoT Relay**, with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. +Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From 148568d70822fd195a526e6bf2fdae52b8268a38 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:50:02 -0300 Subject: [PATCH 072/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9b39411d1..843c36d58 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This version is kept in sync with the Original Sonoff-Tasmota # Sonoff-Tasmota -Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Firmware written using Arduino IDE and PlatformIO. +Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Written using Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From 2e6957482420911c3b86eb420a0a6f977dd4b3e3 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:52:24 -0300 Subject: [PATCH 073/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 843c36d58..1829c0b76 100644 --- a/README.md +++ b/README.md @@ -71,12 +71,12 @@ Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studi [![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/master/LICENSE) -Current Development Version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. - If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) +Current Development Version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. + ### Quick install Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki. From 3a5915e828a877cdf8b9656bf2ad9f95ec114b80 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:56:12 -0300 Subject: [PATCH 074/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1829c0b76..9a88b5fe3 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ This version is kept in sync with the Original Sonoff-Tasmota ----------------------------------------------------------------------------------------------------------------------------------- -# Sonoff-Tasmota +## Sonoff-Tasmota Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Written using Arduino IDE and PlatformIO. @@ -75,7 +75,7 @@ If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) -Current Development Version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### Quick install From 2fe09e428252979d8920c26700165ebeef5b702e Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:57:20 -0300 Subject: [PATCH 075/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a88b5fe3..e901f773c 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) -Current version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current development version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### Quick install From 48944bdaca9b9202d70e926ce61278b4c0f5a655 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 17:59:25 -0300 Subject: [PATCH 076/435] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e901f773c..2facd353b 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,9 @@ If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) -Current development version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +### Development: + +Current version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### Quick install From 77f98565023dbcd07be4463f0bd0a7a84ed308ba Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 18:01:54 -0300 Subject: [PATCH 077/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2facd353b..af8ec3a4e 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This version is kept in sync with the Original Sonoff-Tasmota ## Sonoff-Tasmota -Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/) with _Serial_, _Web_, _KNX_ and _MQTT_ control, allowing 'Over the Air' (OTA) firmware updates. Written using Arduino IDE and PlatformIO. +Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/), with control under _Serial_, _Web_, _KNX_ and _MQTT_, and allowing 'Over the Air' (OTA) firmware updates. Written using Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From 8f0903b840d90f6fb14129030bbd6b2582d65941 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 18:08:42 -0300 Subject: [PATCH 078/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index af8ec3a4e..450d3d990 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studi [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) -[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/master/LICENSE) +[![License](https://img.shields.io/github/license/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/development/LICENSE.txt) If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) From 7420a577d647339d4ececd5aefc11f754737b670 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 18:11:54 -0300 Subject: [PATCH 079/435] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 450d3d990..05af2dfdf 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,6 @@ Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studi [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) -[![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/stargazers) -[![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) [![License](https://img.shields.io/github/license/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/development/LICENSE.txt) If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! @@ -76,6 +74,7 @@ If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) ### Development: +[![Build Status](https://img.shields.io/travis/arendst/Sonoff-Tasmota.svg)](https://travis-ci.org/arendst/Sonoff-Tasmota) Current version is **5.12.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. From 19cda53e3ca3dcbfdc5fef83d242e4ab0f3a5e0d Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 18:16:04 -0300 Subject: [PATCH 080/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 05af2dfdf..f2d1d4d2c 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studi [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![License](https://img.shields.io/github/license/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/blob/development/LICENSE.txt) -If you like **Sonoff Tasmota** - give it a star, or fork it and contribute! +If you like **Sonoff Tasmota**, give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/arendst/Sonoff-Tasmota.svg?style=social&label=Star)](https://github.com/arendst/Sonoff-Tasmota/stargazers) [![GitHub forks](https://img.shields.io/github/forks/arendst/Sonoff-Tasmota.svg?style=social&label=Fork)](https://github.com/arendst/Sonoff-Tasmota/network) From edd9a6fbb8124da6852189488948ede141323ef2 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Mon, 2 Apr 2018 19:21:29 -0300 Subject: [PATCH 081/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f2d1d4d2c..01af50a07 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Basic Functionality is Available. **Work in progress**. - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status - [ ] Add Feature to read Temperature from Tasmota -- [x] Add Feature to send Temperature by a set interval +- [x] Add Feature to send Temperature by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config From bb758e9f48d44d7b62956a3f3dccbac940f15f5f Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:42:31 -0300 Subject: [PATCH 082/435] Update user_config.h --- sonoff/user_config.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index c71e40e9a..778ecbd13 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -64,15 +64,15 @@ #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- #define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host #define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port -#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] -#define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] -#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] +#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE +#define SERIAL_LOG_LEVEL LOG_LEVEL_NONE // [SerialLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE +#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.ino.bin" // [OtaUrl] @@ -82,9 +82,9 @@ * Select ONE of possible MQTT library types below \*********************************************************************************************/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only From 6aa555d68f95ef6a5e575f18bc4f004babf9b29b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:45:05 -0300 Subject: [PATCH 083/435] Update settings.h --- sonoff/settings.h | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 51a90af54..46823faed 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -48,7 +48,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t not_power_linked : 1; // bit 20 (v5.11.1f) uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i) uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f) - uint32_t spare23 : 1; + uint32_t knx_enabled : 1; // bit 23 KNX uint32_t spare24 : 1; uint32_t spare25 : 1; uint32_t spare26 : 1; @@ -254,7 +254,15 @@ struct SYSCFG { Timer timer[MAX_TIMERS]; // 670 - // 6B0 - FFF free locations + uint16_t knx_physsical_addr; // 6B0 (address_t is a uint16_t) + byte knx_GA_registered; // 6B3 Number of Group Address to read + byte knx_CB_registered; // 6B4 Number of Group Address to write + uint16_t knx_GA_addr[KNX_max_GA]; // 6B5 (address_t is a uint16_t) x KNX_max_GA + uint16_t knx_CB_addr[KNX_max_CB]; // 6C9 (address_t is a uint16_t) x KNX_max_CB + byte knx_GA_param[KNX_max_GA]; // 6DD Type of Input (relay changed, button pressed, sensor read <-teleperiod) + byte knx_CB_param[KNX_max_GA]; // 6E7 Type of Output (set relay, toggle relay, reply sensor value) + + // 6F1 - FFF free locations } Settings; struct RTCMEM { From 42aff9d075c73084f9d50ae8acb3df902faef2cd Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:46:44 -0300 Subject: [PATCH 084/435] Update sonoff.h --- sonoff/sonoff.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 0869c6929..22be17380 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -48,6 +48,8 @@ typedef unsigned long power_t; // Power (Relay) type #define MAX_FRIENDLYNAMES 4 // Max number of Friendly names #define MAX_DOMOTICZ_IDX 4 // Max number of Domoticz device, key and switch indices #define MAX_DOMOTICZ_SNS_IDX 12 // Max number of Domoticz sensors indices +#define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set +#define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set #define MODULE SONOFF_BASIC // [Module] Select default model @@ -173,4 +175,4 @@ const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, extern uint8_t light_device; // Light device number -#endif // _SONOFF_H_ \ No newline at end of file +#endif // _SONOFF_H_ From 0c98d148136cc2b3b24433102f7a4e506f55b129 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:48:12 -0300 Subject: [PATCH 085/435] Update settings.h --- sonoff/settings.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 46823faed..ddcd15b2c 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -257,10 +257,10 @@ struct SYSCFG { uint16_t knx_physsical_addr; // 6B0 (address_t is a uint16_t) byte knx_GA_registered; // 6B3 Number of Group Address to read byte knx_CB_registered; // 6B4 Number of Group Address to write - uint16_t knx_GA_addr[KNX_max_GA]; // 6B5 (address_t is a uint16_t) x KNX_max_GA - uint16_t knx_CB_addr[KNX_max_CB]; // 6C9 (address_t is a uint16_t) x KNX_max_CB - byte knx_GA_param[KNX_max_GA]; // 6DD Type of Input (relay changed, button pressed, sensor read <-teleperiod) - byte knx_CB_param[KNX_max_GA]; // 6E7 Type of Output (set relay, toggle relay, reply sensor value) + uint16_t knx_GA_addr[MAX_KNX_GA]; // 6B5 (address_t is a uint16_t) x KNX_max_GA + uint16_t knx_CB_addr[MAX_KNX_CB]; // 6C9 (address_t is a uint16_t) x KNX_max_CB + byte knx_GA_param[MAX_KNX_GA]; // 6DD Type of Input (relay changed, button pressed, sensor read <-teleperiod) + byte knx_CB_param[MAX_KNX_CB]; // 6E7 Type of Output (set relay, toggle relay, reply sensor value) // 6F1 - FFF free locations } Settings; From a351a226b543cdf1a16931a413b7757a51e39ccc Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:49:21 -0300 Subject: [PATCH 086/435] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 01af50a07..075202b70 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,9 @@ Basic Functionality is Available. **Work in progress**. * Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ * Add entries to the file _/sonoff/webserver.ino_ * Add entries to the file _/sonoff/sonoff.ino_ +* Add entries to the file _/sonoff/sonoff.h_ +* Add entries to the file _/sonoff/settings.h_ +* Add entries to sensor files * Add entries to language files Up to now, enabling KNX uses +14.7k of code From f8fd75e22d1f58dc6d735215179083d295f37a4c Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:51:32 -0300 Subject: [PATCH 087/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 075202b70..8fb0498e0 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Basic Functionality is Available. **Work in progress**. - [ ] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status -- [ ] Add Feature to read Temperature from Tasmota +- [x] Add Feature to read Temperature from Tasmota - [x] Add Feature to send Temperature by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc From 58ab9bfba81974be6cc7b7020c249fe3a5248d09 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 00:52:27 -0300 Subject: [PATCH 088/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8fb0498e0..dbcf3c206 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Basic Functionality is Available. **Work in progress**. ## Road Map ## **For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu (uses the one provided by the library) +- [x] Add Web Menu (uses the one provided by the ESP KNX library) - [x] Add Feature to Receive telegrams and modify Relay Status - [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) - [x] Add Feature to Send telegrams of relay status change From cfba12f9292551c52ef90a1f85a302671daa71e2 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Tue, 3 Apr 2018 19:31:24 -0300 Subject: [PATCH 089/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index dbcf3c206..7d9db09ab 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,8 @@ Basic Functionality is Available. **Work in progress**. - [ ] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status -- [x] Add Feature to read Temperature from Tasmota -- [x] Add Feature to send Temperature by a set interval (tasmota teleperiod) +- [ ] Add Feature to read Temperature, Humidity from Tasmota +- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config From 52721d6fba6b380d4433179261ee8e5d474b2b1e Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 00:15:22 -0300 Subject: [PATCH 090/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7d9db09ab..c7b7a0e76 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ This version is kept in sync with the Original Sonoff-Tasmota ## Sonoff-Tasmota -Alternative Firmware for 'ESP8266 based Devices' like **Sonoff** by [iTead Studio](https://www.itead.cc/), with control under _Serial_, _Web_, _KNX_ and _MQTT_, and allowing 'Over the Air' (OTA) firmware updates. Written using Arduino IDE and PlatformIO. +Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_, with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **serial**, **HTTP**, **KNX** and **MQTT**, so as to be used on **Smart Home Systems**. Written using Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From a7ef10d60556b9d237558a82613f6372edc77942 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 00:20:31 -0300 Subject: [PATCH 091/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c7b7a0e76..b3be48bab 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ This version is kept in sync with the Original Sonoff-Tasmota ----------------------------------------------------------------------------------------------------------------------------------- -## Contributors to this Project ## +## Contributors to this MOD ## * Adrian Scillato [ascillato](https://github.com/ascillato) * Sisamiwe [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. From 6d69a958915751c56db1ca3c0bcacc388f420e79 Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 00:30:22 -0300 Subject: [PATCH 092/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b3be48bab..4665cccd9 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Up to now, enabling KNX uses +14.7k of code There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. -This version is kept in sync with the Original Sonoff-Tasmota +_Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff-Tasmota_ ----------------------------------------------------------------------------------------------------------------------------------- From 333261611ef094b0b5baa53a5362c34daaf3e40b Mon Sep 17 00:00:00 2001 From: Adrian <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 02:03:09 -0300 Subject: [PATCH 093/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4665cccd9..c6ac52eac 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff- ## Sonoff-Tasmota -Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_, with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **serial**, **HTTP**, **KNX** and **MQTT**, so as to be used on **Smart Home Systems**. Written using Arduino IDE and PlatformIO. +Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_, with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **serial**, **HTTP**, **KNX** and **MQTT**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO. [![GitHub version](https://img.shields.io/github/release/arendst/Sonoff-Tasmota.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/arendst/Sonoff-Tasmota/total.svg)](https://github.com/arendst/Sonoff-Tasmota/releases/latest) From 1308b93a49357527d8eafacefac2728590eb4208 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 19:12:13 -0300 Subject: [PATCH 094/435] Update README.md --- README.md | 56 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index c6ac52eac..c594d0f4f 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,43 @@ -# Sonoff-Tasmota (KNX_MOD) +# Sonoff-Tasmota (KNX MOD) -This is a [MOD](https://github.com/ascillato/Sonoff-Tasmota_KNX) for Sonoff-Tasmota to integrate KNX Protocol to its features. +This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to integrate [KNX Protocol](https://www.knx.org/knx-en/index.php) to its features. +Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) -This MOD requires the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite) +Basic KNX IP Functionality is Available. **( Work in progress )** -Basic Functionality is Available. **Work in progress**. +_Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff-Tasmota_ + +## KNX Explanation ## + +The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk +directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision +and for sending requests. + +Each device has a physical address (like a MAC) as 1.1.1 and that address is used for configuration purposes. + +Each device can be configured with group addresses as 1/1/1 and that address can be used for sending/receiving commands. +So, for example, if 2 devices that are configured with the 1/2/5 for turning on/off their outputs, and other device send _Turn ON_ command to 1/2/5, both devices will turn on their outputs. + +## Requirements ## + +This MOD requires the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). + +Further development will change library and will require the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch +Also, it is needed to change on _esp-knx-ip.h_ file the following: +``` +#define MAX_CALLBACK_ASSIGNMENTS 20 +#define MAX_CALLBACKS 20 +#define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 +//#define ESP_KNX_DEBUG <-- comment this line +``` +The ESP KNX IP library also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) ----------------------------------------------------------------------------------------------------------------------------------- -## Road Map ## + +## Development Road Map ## **For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu (uses the one provided by the ESP KNX library) +- [x] Add Web Menu (need improvement) - [x] Add Feature to Receive telegrams and modify Relay Status - [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) - [x] Add Feature to Send telegrams of relay status change @@ -19,24 +46,13 @@ Basic Functionality is Available. **Work in progress**. - [x] Add Feature to receive telegrams to toggle relay status - [ ] Add Feature to read Temperature, Humidity from Tasmota - [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [x] Add Feature to receive command to read temperature +- [x] Add Feature to receive command to read temperature, Humidity - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config -- [ ] Change Web Menu to a Tasmota one to save FLASH and RAM - [ ] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM -**For ESP_KNX_IP_LITE:** -- [x] Add Functions to control library from code and not only by Web Menu -- [ ] Complete needed functions for Tasmota -- [ ] Add WebUI Functions -- [ ] Change all *_id_t to config_id_t so as to have control over webpage order -- [ ] Mod GA_Register function to be similar to CB_Register (needed for Send telegrams of one relay status to multiple Group Addresses) -- [ ] Optimize code to reduce Flash and RAM - ------------------------------------------------------------------------------------------------------------------------------------ - ## Modifications to [Original Tasmota](https://github.com/arendst/Sonoff-Tasmota) ## * Adding the file _/sonoff/xdrv_10_KNX.ino_ @@ -48,12 +64,10 @@ Basic Functionality is Available. **Work in progress**. * Add entries to sensor files * Add entries to language files -Up to now, enabling KNX uses +14.7k of code +Up to now, enabling KNX uses +18k of code and +3k3 of memory. There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. -_Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff-Tasmota_ - ----------------------------------------------------------------------------------------------------------------------------------- ## Contributors to this MOD ## From 1b52030e98a3ba6a8bd54a975685aa07f1322384 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 19:41:43 -0300 Subject: [PATCH 095/435] Update README.md --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c594d0f4f..01801bde4 100644 --- a/README.md +++ b/README.md @@ -9,9 +9,7 @@ _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff- ## KNX Explanation ## -The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk -directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision -and for sending requests. +The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. Each device has a physical address (like a MAC) as 1.1.1 and that address is used for configuration purposes. @@ -32,7 +30,9 @@ Also, it is needed to change on _esp-knx-ip.h_ file the following: ``` The ESP KNX IP library also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) ------------------------------------------------------------------------------------------------------------------------------------ +A copy of both libraries with modifications is available: +* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip +* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP ## Development Road Map ## @@ -68,8 +68,6 @@ Up to now, enabling KNX uses +18k of code and +3k3 of memory. There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. ------------------------------------------------------------------------------------------------------------------------------------ - ## Contributors to this MOD ## * Adrian Scillato [ascillato](https://github.com/ascillato) From e540daf44f8b09f872802809772c0d4b2b73df21 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 4 Apr 2018 19:47:42 -0300 Subject: [PATCH 096/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 01801bde4..0bd99e772 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,9 @@ So, for example, if 2 devices that are configured with the 1/2/5 for turning on/ ## Requirements ## -This MOD requires the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). +This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). -Further development will change library and will require the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch +Further development will change the library to the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch Also, it is needed to change on _esp-knx-ip.h_ file the following: ``` #define MAX_CALLBACK_ASSIGNMENTS 20 From e8812af0cd116a17804151d666df39ce31d62057 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:54:37 -0300 Subject: [PATCH 097/435] Update en-GB.h --- sonoff/language/en-GB.h | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 6704cc2b7..c4bc2e063 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -77,7 +77,6 @@ #define D_DNS_SERVER "DNS Server" #define D_DONE "Done" #define D_DST_TIME "DST" -#define D_ECO2 "eCO2" #define D_EMULATION "Emulation" #define D_ENABLED "Enabled" #define D_ERASE "Erase" @@ -375,15 +374,13 @@ #define D_KNX_PARAMETERS "KNX parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" -#define D_KNX_SET "Set" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" #define D_KNX_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Must be unique on the KNX network)" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Group Addresses to Send Data to" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" -#define D_KNX_PARAMETER_TO_SEND "Parameter to Send" -#define D_KNX_UPDATE_INTERVAL "Sensor Update Interval (sec)" #define D_LOG_KNX "KNX: " // xdrv_03_energy.ino From f586a633eccb881192418e8a0343e9964764e49d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:55:15 -0300 Subject: [PATCH 098/435] Update es-AR.h --- sonoff/language/es-AR.h | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 0f3a24de2..2241f383b 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -77,7 +77,6 @@ #define D_DNS_SERVER "DNS Server" #define D_DONE "Listo" #define D_DST_TIME "DST" -#define D_ECO2 "eCO2" #define D_EMULATION "Emulación" #define D_ENABLED "Habilitado" #define D_ERASE "Borrar" @@ -375,15 +374,13 @@ #define D_KNX_PARAMETERS "Parámetros de KNX" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Dirección Física" -#define D_KNX_SET "Establecer" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Debe ser única en la red KNX )" +#define D_KNX_ENABLE "Habilitar KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Datos a Enviar a las Direcciones de Grupo" #define D_KNX_ADD "Agregar" #define D_DELETE "Eliminar" #define D_REPLY "Responder" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "(Debe ser única en la red KNX)" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Enviar Datos a las Direcciones de Grupo" -#define D_KNX_GROUP_ADDRESS_TO_READ "Recibir Datos de las Direcciones de Grupo" -#define D_KNX_PARAMETER_TO_SEND "Parámetro a Enviar" -#define D_KNX_UPDATE_INTERVAL "Enviar Valor de Sensores cada (seg)" +#define D_KNX_GROUP_ADDRESS_TO_READ "Direcciones de Grupo para Recibir Datos" #define D_LOG_KNX "KNX: " // xdrv_03_energy.ino From 309159159f049c917851b52f6a3e5bb1adc5dbca Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:56:09 -0300 Subject: [PATCH 099/435] Update cs-CZ.h --- sonoff/language/cs-CZ.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 21336443c..8d95619e9 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie Dnes" #define D_ENERGY_YESTERDAY "Energie Včera" From 2386f906314e0b21096c6597cd39791565cf229a Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:56:46 -0300 Subject: [PATCH 100/435] Update de-DE.h --- sonoff/language/de-DE.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index caa74fd41..ee3c711e8 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Ausgang" #define D_TIMER_POWER "Aktion" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" #define D_ENERGY_YESTERDAY "Energie gestern" From 5f3efd76b296d979f604b06aedac7c716b7e5aff Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:57:13 -0300 Subject: [PATCH 101/435] Update fr-FR.h --- sonoff/language/fr-FR.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 5d09cfcb6..3d4152022 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xsns_03_energy.ino #define D_ENERGY_TODAY "Energie aujourd'hui" #define D_ENERGY_YESTERDAY "Energie hier" From 51c31155adcf664bbc95f5c7a5709e3ecf7f4180 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:57:41 -0300 Subject: [PATCH 102/435] Update hu-HU.h --- sonoff/language/hu-HU.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index e043b1b96..94052142e 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Mai Energia" #define D_ENERGY_YESTERDAY "Tegnapi Energia" From 38d318f8cb394f4033978f023b55156d2a4694fa Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:58:10 -0300 Subject: [PATCH 103/435] Update it-IT.h --- sonoff/language/it-IT.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 59851e677..9cb27f117 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Oggi" #define D_ENERGY_YESTERDAY "Energia Ieri" From df4e98960904a272e11bfedef7ec4cd6d86cd516 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:58:35 -0300 Subject: [PATCH 104/435] Update nl-NL.h --- sonoff/language/nl-NL.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index b21bea2aa..2eb9cdb1f 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Uitgang" #define D_TIMER_POWER "Actie" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Verbruik vandaag" #define D_ENERGY_YESTERDAY "Verbruik gisteren" From 113cd2e424441edb5e2a073a3c68c7d7fbe028bc Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:59:00 -0300 Subject: [PATCH 105/435] Update pl-PL.h --- sonoff/language/pl-PL.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 9d0352315..3e2c0549e 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Dzisiaj" #define D_ENERGY_YESTERDAY "Energia Wczoraj" From 64f2130bd4dfd681ea209240199d45cf17e31462 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:59:29 -0300 Subject: [PATCH 106/435] Update pt-PT.h --- sonoff/language/pt-PT.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 5c52cd528..32504946a 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Consumo energético de hoje" #define D_ENERGY_YESTERDAY "Consumo energético de ontem" From 26cab1fda15110aa60476c5923bb060e2ef969d6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 00:59:51 -0300 Subject: [PATCH 107/435] Update ru-RU.h --- sonoff/language/ru-RU.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index d11bfcda2..8857a0d11 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "Энергия Сегодня" #define D_ENERGY_YESTERDAY "Энергия Вчера" From ed5be17f4c0f679b378d5ee590ec5fc4e7d7b851 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:00:16 -0300 Subject: [PATCH 108/435] Update zh-CN.h --- sonoff/language/zh-CN.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index f9d0d5cc2..1a3260415 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" #define D_ENERGY_YESTERDAY "昨日用电量" From f503028b93436a067d5433e3fbe307af10b25125 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:00:39 -0300 Subject: [PATCH 109/435] Update zh-TW.h --- sonoff/language/zh-TW.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index a95b772ca..369df117b 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -370,6 +370,20 @@ #define D_TIMER_OUTPUT "Output" #define D_TIMER_POWER "Power" +// xdrv_10_KNX.ino +#define D_CONFIGURE_KNX "Configure KNX" +#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_GENERAL_CONFIG "General" +#define D_KNX_PHYSICAL_ADDRESS "Physical Address" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" +#define D_KNX_ENABLE "Enable KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" +#define D_KNX_ADD "Add" +#define D_DELETE "Delete" +#define D_REPLY "Reply" +#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_LOG_KNX "KNX: " + // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用電量" #define D_ENERGY_YESTERDAY "昨日用電量" From f48e79e01e81dd187313e2144d5964b1f3a67be1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:01:24 -0300 Subject: [PATCH 110/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0bd99e772..44b1a9e90 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ A copy of both libraries with modifications is available: - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config -- [ ] Complete all the language files with keys +- [x] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM ## Modifications to [Original Tasmota](https://github.com/arendst/Sonoff-Tasmota) ## From 48512fdd9b8e466eafe5f89f5c8f1d83c5fd8282 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:07:25 -0300 Subject: [PATCH 111/435] Add files via upload --- lib/ESPAsyncUDP-master/README.md | 10 + .../AsyncUDPClient/AsyncUDPClient.ino | 51 ++ .../AsyncUDPMulticastServer.ino | 52 ++ .../AsyncUDPServer/AsyncUDPServer.ino | 50 ++ lib/ESPAsyncUDP-master/keywords.txt | 33 ++ lib/ESPAsyncUDP-master/library.json | 17 + lib/ESPAsyncUDP-master/library.properties | 9 + lib/ESPAsyncUDP-master/src/AsyncUDP.cpp | 425 ++++++++++++++ lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h | 130 +++++ lib/ESPAsyncUDP-master/travis/common.sh | 23 + lib/esp-knx-ip-async-udp/DPT.h | 72 +++ lib/esp-knx-ip-async-udp/LICENSE | 21 + lib/esp-knx-ip-async-udp/README.md | 107 ++++ .../esp-knx-ip-config.cpp | 358 ++++++++++++ .../esp-knx-ip-conversion.cpp | 87 +++ lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp | 180 ++++++ .../esp-knx-ip-webserver.cpp | 524 +++++++++++++++++ lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 477 ++++++++++++++++ lib/esp-knx-ip-async-udp/esp-knx-ip.h | 539 ++++++++++++++++++ .../environment-sensor/environment-sensor.ino | 159 ++++++ .../examples/sonoff/sonoff.ino | 183 ++++++ .../examples/static-config/static-config.ino | 142 +++++ lib/esp-knx-ip-async-udp/keywords.txt | 94 +++ lib/esp-knx-ip-async-udp/library.properties | 10 + 24 files changed, 3753 insertions(+) create mode 100644 lib/ESPAsyncUDP-master/README.md create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino create mode 100644 lib/ESPAsyncUDP-master/keywords.txt create mode 100644 lib/ESPAsyncUDP-master/library.json create mode 100644 lib/ESPAsyncUDP-master/library.properties create mode 100644 lib/ESPAsyncUDP-master/src/AsyncUDP.cpp create mode 100644 lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h create mode 100644 lib/ESPAsyncUDP-master/travis/common.sh create mode 100644 lib/esp-knx-ip-async-udp/DPT.h create mode 100644 lib/esp-knx-ip-async-udp/LICENSE create mode 100644 lib/esp-knx-ip-async-udp/README.md create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip.cpp create mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip.h create mode 100644 lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino create mode 100644 lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino create mode 100644 lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino create mode 100644 lib/esp-knx-ip-async-udp/keywords.txt create mode 100644 lib/esp-knx-ip-async-udp/library.properties diff --git a/lib/ESPAsyncUDP-master/README.md b/lib/ESPAsyncUDP-master/README.md new file mode 100644 index 000000000..997a7cc26 --- /dev/null +++ b/lib/ESPAsyncUDP-master/README.md @@ -0,0 +1,10 @@ +# ESPAsyncUDP +Async UDP Library for ESP8266 Arduino [![Build Status](https://travis-ci.org/me-no-dev/ESPAsyncUDP.svg?branch=master)](https://travis-ci.org/me-no-dev/ESPAsyncUDP) + +[![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +This is a fully asynchronous UDP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP8266 MCUs. + +The library is easy to use and includes support for Unicast, Broadcast and Multicast environments + +Latest GIT version of ESP8266 Arduino might be required for this library to work diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino new file mode 100644 index 000000000..cf528fe12 --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino @@ -0,0 +1,51 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.connect(IPAddress(192,168,1,100), 1234)) { + Serial.println("UDP connected"); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + //Send unicast + udp.print("Hello Server!"); + } +} + +void loop() +{ + delay(1000); + //Send broadcast on port 1234 + udp.broadcastTo("Anyone here?", 1234); +} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino new file mode 100644 index 000000000..bb3e69c9b --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino @@ -0,0 +1,52 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.listenMulticast(IPAddress(239,1,2,3), 1234)) { + Serial.print("UDP Listening on IP: "); + Serial.println(WiFi.localIP()); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + //Send multicast + udp.print("Hello!"); + } +} + +void loop() +{ + delay(1000); + //Send multicast + udp.print("Anyone here?"); +} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino new file mode 100644 index 000000000..fc12a7fc3 --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino @@ -0,0 +1,50 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.listen(1234)) { + Serial.print("UDP Listening on IP: "); + Serial.println(WiFi.localIP()); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + } +} + +void loop() +{ + delay(1000); + //Send broadcast + udp.broadcast("Anyone here?"); +} diff --git a/lib/ESPAsyncUDP-master/keywords.txt b/lib/ESPAsyncUDP-master/keywords.txt new file mode 100644 index 000000000..67c0b97a7 --- /dev/null +++ b/lib/ESPAsyncUDP-master/keywords.txt @@ -0,0 +1,33 @@ +####################################### +# Syntax Coloring Map For Ultrasound +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +AsyncUDP KEYWORD1 +AsyncUDPPacket KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +connect KEYWORD2 +connected KEYWORD2 +listen KEYWORD2 +listenMulticast KEYWORD2 +close KEYWORD2 +write KEYWORD2 +broadcast KEYWORD2 +onPacket KEYWORD2 +data KEYWORD2 +length KEYWORD2 +localIP KEYWORD2 +localPort KEYWORD2 +remoteIP KEYWORD2 +remotePort KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### diff --git a/lib/ESPAsyncUDP-master/library.json b/lib/ESPAsyncUDP-master/library.json new file mode 100644 index 000000000..fe300b6e6 --- /dev/null +++ b/lib/ESPAsyncUDP-master/library.json @@ -0,0 +1,17 @@ +{ + "name":"ESPAsyncUDP", + "description":"Asynchronous UDP Library for ESP8266", + "keywords":"async,udp,server,client,multicast,broadcast", + "authors": + { + "name": "Hristo Gochkov", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/me-no-dev/ESPAsyncUDP.git" + }, + "frameworks": "arduino", + "platforms":"espressif" +} diff --git a/lib/ESPAsyncUDP-master/library.properties b/lib/ESPAsyncUDP-master/library.properties new file mode 100644 index 000000000..1aa6ef1ad --- /dev/null +++ b/lib/ESPAsyncUDP-master/library.properties @@ -0,0 +1,9 @@ +name=ESP Async UDP +version=1.0.0 +author=Me-No-Dev +maintainer=Me-No-Dev +sentence=Async UDP Library for ESP8266 +paragraph=Async UDP Library for ESP8266 +category=Other +url=https://github.com/me-no-dev/ESPAsyncUDP +architectures=* diff --git a/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp b/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp new file mode 100644 index 000000000..6d2423819 --- /dev/null +++ b/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp @@ -0,0 +1,425 @@ +#include "Arduino.h" +#include "ESPAsyncUDP.h" + +extern "C" { +#include "user_interface.h" +#include "lwip/opt.h" +#include "lwip/inet.h" +#include "lwip/udp.h" +#include "lwip/igmp.h" +} + +AsyncUDPMessage::AsyncUDPMessage(size_t size) +{ + _index = 0; + if(size > 1460) { + size = 1460; + } + _size = size; + _buffer = (uint8_t *)malloc(size); +} + +AsyncUDPMessage::~AsyncUDPMessage() +{ + if(_buffer) { + free(_buffer); + } +} + +size_t AsyncUDPMessage::write(const uint8_t *data, size_t len) +{ + if(_buffer == NULL) { + return 0; + } + size_t s = space(); + if(len > s) { + len = s; + } + memcpy(_buffer + _index, data, len); + _index += len; + return len; +} + +size_t AsyncUDPMessage::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDPMessage::space() +{ + if(_buffer == NULL) { + return 0; + } + return _size - _index; +} + +uint8_t * AsyncUDPMessage::data() +{ + return _buffer; +} + +size_t AsyncUDPMessage::length() +{ + return _index; +} + +void AsyncUDPMessage::flush() +{ + _index = 0; +} + + +AsyncUDPPacket::AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len) +{ + _udp = udp; + _localIp = localIp; + _localPort = localPort; + _remoteIp = remoteIp; + _remotePort = remotePort; + _data = data; + _len = len; +} + +AsyncUDPPacket::~AsyncUDPPacket() +{ + +} + +uint8_t * AsyncUDPPacket::data() +{ + return _data; +} + +size_t AsyncUDPPacket::length() +{ + return _len; +} + +IPAddress AsyncUDPPacket::localIP() +{ + return IPAddress(_localIp->addr); +} + +uint16_t AsyncUDPPacket::localPort() +{ + return _localPort; +} + +IPAddress AsyncUDPPacket::remoteIP() +{ + return IPAddress(_remoteIp->addr); +} + +uint16_t AsyncUDPPacket::remotePort() +{ + return _remotePort; +} + +bool AsyncUDPPacket::isBroadcast() +{ + return _localIp->addr == 0xFFFFFFFF || _localIp->addr == (uint32_t)(0); +} + +bool AsyncUDPPacket::isMulticast() +{ + return ip_addr_ismulticast(_localIp); +} + +size_t AsyncUDPPacket::write(const uint8_t *data, size_t len) +{ + return _udp->writeTo(data, len, _remoteIp, _remotePort); +} + +size_t AsyncUDPPacket::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDPPacket::send(AsyncUDPMessage &message) +{ + return write(message.data(), message.length()); +} + + + +AsyncUDP::AsyncUDP() +{ + _pcb = NULL; + _connected = false; + _handler = NULL; +} + +AsyncUDP::~AsyncUDP() +{ + close(); +} + +AsyncUDP::operator bool() +{ + return _connected; +} + +bool AsyncUDP::connected() +{ + return _connected; +} + +void AsyncUDP::onPacket(AuPacketHandlerFunctionWithArg cb, void * arg) +{ + onPacket(std::bind(cb, arg, std::placeholders::_1)); +} + +void AsyncUDP::onPacket(AuPacketHandlerFunction cb) +{ + _handler = cb; +} + +void AsyncUDP::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) +{ + (void)upcb; // its unused, avoid warning + while(pb != NULL) { + if(_handler) { + uint8_t * data = (uint8_t*)((pb)->payload); + size_t len = pb->len; + + ip_hdr* iphdr = reinterpret_cast(data - UDP_HLEN - IP_HLEN); + ip_addr_t daddr; + daddr.addr = iphdr->dest.addr; + + udp_hdr* udphdr = reinterpret_cast(((uint8_t*)((pb)->payload)) - UDP_HLEN); + uint16_t dport = ntohs(udphdr->dest); + + AsyncUDPPacket packet(this, &daddr, dport, addr, port, data, len); + _handler(packet); + } + + pbuf * this_pb = pb; + pb = pb->next; + this_pb->next = NULL; + pbuf_free(this_pb); + } +} + +#if LWIP_VERSION_MAJOR == 1 +void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port) +#else +void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) +#endif +{ + reinterpret_cast(arg)->_recv(upcb, p, (ip_addr_t *)addr, port); +} + +bool AsyncUDP::listen(ip_addr_t *addr, uint16_t port) +{ + close(); + _pcb = udp_new(); + if(_pcb == NULL) { + return false; + } + err_t err = udp_bind(_pcb, addr, port); + if(err != ERR_OK) { + close(); + return false; + } + udp_recv(_pcb, &_s_recv, (void *) this); + _connected = true; + return true; +} + +bool AsyncUDP::listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl) +{ + close(); + if(!ip_addr_ismulticast(addr)) { + return false; + } + ip_addr_t multicast_if_addr; + struct ip_info ifIpInfo; + int mode = wifi_get_opmode(); + if(mode & STATION_MODE) { + wifi_get_ip_info(STATION_IF, &ifIpInfo); + multicast_if_addr.addr = ifIpInfo.ip.addr; + } else if (mode & SOFTAP_MODE) { + wifi_get_ip_info(SOFTAP_IF, &ifIpInfo); + multicast_if_addr.addr = ifIpInfo.ip.addr; + } else { + return false; + } + if (igmp_joingroup(&multicast_if_addr, addr)!= ERR_OK) { + return false; + } + if(!listen(IPADDR_ANY, port)) { + return false; + } +#if LWIP_VERSION_MAJOR == 1 + udp_set_multicast_netif_addr(_pcb, multicast_if_addr); +#else + udp_set_multicast_netif_addr(_pcb, &multicast_if_addr); +#endif + udp_set_multicast_ttl(_pcb, ttl); + ip_addr_copy(_pcb->remote_ip, *addr); + _pcb->remote_port = port; + return true; +} + +bool AsyncUDP::connect(ip_addr_t *addr, uint16_t port) +{ + close(); + _pcb = udp_new(); + if(_pcb == NULL) { + return false; + } + err_t err = udp_connect(_pcb, addr, port); + if(err != ERR_OK) { + close(); + return false; + } + udp_recv(_pcb, &_s_recv, (void *) this); + _connected = true; + return true; +} + +void AsyncUDP::close() +{ + if(_pcb != NULL) { + if(_connected) { + udp_disconnect(_pcb); + } + udp_remove(_pcb); + _connected = false; + _pcb = NULL; + } +} + +size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port) +{ + if(!_pcb && !connect(addr, port)) { + return 0; + } + if(len > 1460) { + len = 1460; + } + pbuf* pbt = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); + if(pbt != NULL) { + uint8_t* dst = reinterpret_cast(pbt->payload); + memcpy(dst, data, len); + err_t err = udp_sendto(_pcb, pbt, addr, port); + pbuf_free(pbt); + if(err < ERR_OK) { + return 0; + } + return len; + } + return 0; +} + +bool AsyncUDP::listen(const IPAddress addr, uint16_t port) +{ + ip_addr_t laddr; + laddr.addr = addr; + return listen(&laddr, port); +} + +bool AsyncUDP::listen(uint16_t port) +{ + return listen(IPAddress((uint32_t)INADDR_ANY), port); +} + +bool AsyncUDP::listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl) +{ + ip_addr_t laddr; + laddr.addr = addr; + return listenMulticast(&laddr, port, ttl); +} + +bool AsyncUDP::connect(const IPAddress addr, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = addr; + return connect(&daddr, port); +} + +size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = addr; + return writeTo(data, len, &daddr, port); +} + +size_t AsyncUDP::write(const uint8_t *data, size_t len) +{ + if(_pcb) + { + return writeTo(data, len, &(_pcb->remote_ip), _pcb->remote_port); + } +} + +size_t AsyncUDP::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDP::broadcastTo(uint8_t *data, size_t len, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = 0xFFFFFFFF; + return writeTo(data, len, &daddr, port); +} + +size_t AsyncUDP::broadcastTo(const char * data, uint16_t port) +{ + return broadcastTo((uint8_t *)data, strlen(data), port); +} + +size_t AsyncUDP::broadcast(uint8_t *data, size_t len) +{ + if(_pcb->local_port != 0) { + return broadcastTo(data, len, _pcb->local_port); + } + return 0; +} + +size_t AsyncUDP::broadcast(const char * data) +{ + return broadcast((uint8_t *)data, strlen(data)); +} + + +size_t AsyncUDP::sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port) +{ + if(!message) { + return 0; + } + return writeTo(message.data(), message.length(), addr, port); +} + +size_t AsyncUDP::sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port) +{ + if(!message) { + return 0; + } + return writeTo(message.data(), message.length(), addr, port); +} + +size_t AsyncUDP::send(AsyncUDPMessage &message) +{ + if((!message) || (!_pcb)) { + return 0; + } + return writeTo(message.data(), message.length(), &(_pcb->remote_ip), _pcb->remote_port); +} + +size_t AsyncUDP::broadcastTo(AsyncUDPMessage &message, uint16_t port) +{ + if(!message) { + return 0; + } + return broadcastTo(message.data(), message.length(), port); +} + +size_t AsyncUDP::broadcast(AsyncUDPMessage &message) +{ + if(!message) { + return 0; + } + return broadcast(message.data(), message.length()); +} diff --git a/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h b/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h new file mode 100644 index 000000000..8e5a70b21 --- /dev/null +++ b/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h @@ -0,0 +1,130 @@ +#ifndef ESPASYNCUDP_H +#define ESPASYNCUDP_H + +#include "IPAddress.h" +#include "Print.h" +#include +#include "lwip/init.h" + +class AsyncUDP; +class AsyncUDPPacket; +class AsyncUDPMessage; +struct udp_pcb; +struct pbuf; +#if LWIP_VERSION_MAJOR == 1 +struct ip_addr; +typedef struct ip_addr ip_addr_t; +#else +struct ip4_addr; +typedef struct ip4_addr ip_addr_t; +#endif + +class AsyncUDPMessage : public Print +{ +protected: + uint8_t *_buffer; + size_t _index; + size_t _size; +public: + AsyncUDPMessage(size_t size=1460); + virtual ~AsyncUDPMessage(); + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); + size_t space(); + uint8_t * data(); + size_t length(); + void flush(); + operator bool() + { + return _buffer != NULL; + } +}; + +class AsyncUDPPacket : public Print +{ +protected: + AsyncUDP *_udp; + ip_addr_t *_localIp; + uint16_t _localPort; + ip_addr_t *_remoteIp; + uint16_t _remotePort; + uint8_t *_data; + size_t _len; +public: + AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len); + virtual ~AsyncUDPPacket(); + + uint8_t * data(); + size_t length(); + bool isBroadcast(); + bool isMulticast(); + + IPAddress localIP(); + uint16_t localPort(); + IPAddress remoteIP(); + uint16_t remotePort(); + + size_t send(AsyncUDPMessage &message); + + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); +}; + +typedef std::function AuPacketHandlerFunction; +typedef std::function AuPacketHandlerFunctionWithArg; + +class AsyncUDP : public Print +{ +protected: + udp_pcb *_pcb; + bool _connected; + AuPacketHandlerFunction _handler; + + void _recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port); +#if LWIP_VERSION_MAJOR == 1 + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port); +#else + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); +#endif + +public: + AsyncUDP(); + virtual ~AsyncUDP(); + + void onPacket(AuPacketHandlerFunctionWithArg cb, void * arg=NULL); + void onPacket(AuPacketHandlerFunction cb); + + bool listen(ip_addr_t *addr, uint16_t port); + bool listen(const IPAddress addr, uint16_t port); + bool listen(uint16_t port); + + bool listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl=1); + bool listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl=1); + + bool connect(ip_addr_t *addr, uint16_t port); + bool connect(const IPAddress addr, uint16_t port); + + void close(); + + size_t writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port); + size_t writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port); + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); + + size_t broadcastTo(uint8_t *data, size_t len, uint16_t port); + size_t broadcastTo(const char * data, uint16_t port); + size_t broadcast(uint8_t *data, size_t len); + size_t broadcast(const char * data); + + size_t sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port); + size_t sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port); + size_t send(AsyncUDPMessage &message); + + size_t broadcastTo(AsyncUDPMessage &message, uint16_t port); + size_t broadcast(AsyncUDPMessage &message); + + bool connected(); + operator bool(); +}; + +#endif diff --git a/lib/ESPAsyncUDP-master/travis/common.sh b/lib/ESPAsyncUDP-master/travis/common.sh new file mode 100644 index 000000000..57bede343 --- /dev/null +++ b/lib/ESPAsyncUDP-master/travis/common.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +function build_sketches() +{ + local arduino=$1 + local srcpath=$2 + local platform=$3 + local sketches=$(find $srcpath -name *.ino) + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + if [[ -f "$sketchdir/.$platform.skip" ]]; then + echo -e "\n\n ------------ Skipping $sketch ------------ \n\n"; + continue + fi + echo -e "\n\n ------------ Building $sketch ------------ \n\n"; + $arduino --verify $sketch; + local result=$? + if [ $result -ne 0 ]; then + echo "Build failed ($1)" + return $result + fi + done +} diff --git a/lib/esp-knx-ip-async-udp/DPT.h b/lib/esp-knx-ip-async-udp/DPT.h new file mode 100644 index 000000000..72e0c7f54 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/DPT.h @@ -0,0 +1,72 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +typedef enum __dpt_1_001 +{ + DPT_1_001_OFF = 0x00, + DPT_1_001_ON = 0x01, +} dpt_1_001_t; + +typedef enum __dpt_2_001 +{ + DPT_2_001_NO_OFF = 0b00, + DPT_2_001_NO_ON = 0b01, + DPT_2_001_YES_OFF = 0b10, + DPT_2_001_YES_ON = 0b11, +} dpt_2_001_t; + +typedef enum __dpt_3_007 +{ + DPT_3_007_DECREASE_STOP = 0x00, + DPT_3_007_DECREASE_100 = 0x01, + DPT_3_007_DECREASE_50 = 0x02, + DPT_3_007_DECREASE_25 = 0x03, + DPT_3_007_DECREASE_12 = 0x04, + DPT_3_007_DECREASE_6 = 0x05, + DPT_3_007_DECREASE_3 = 0x06, + DPT_3_007_DECREASE_1 = 0x07, + DPT_3_007_INCREASE_STOP = 0x08, + DPT_3_007_INCREASE_100 = 0x09, + DPT_3_007_INCREASE_50 = 0x0A, + DPT_3_007_INCREASE_25 = 0x0B, + DPT_3_007_INCREASE_12 = 0x0C, + DPT_3_007_INCREASE_6 = 0x0D, + DPT_3_007_INCREASE_3 = 0x0E, + DPT_3_007_INCREASE_1 = 0x0F, +} dpt_3_007_t; + +typedef enum __weekday +{ + DPT_10_001_WEEKDAY_MONDAY = 1, + DPT_10_001_WEEKDAY_TUESDAY = 2, + DPT_10_001_WEEKDAY_WEDNESDAY = 3, + DPT_10_001_WEEKDAY_THURSDAY = 4, + DPT_10_001_WEEKDAY_FRIDAY = 5, + DPT_10_001_WEEKDAY_SATURDAY = 6, + DPT_10_001_WEEKDAY_SUNDAY = 8, +} weekday_t; + +typedef struct __time_of_day +{ + weekday_t weekday; + uint8_t hours; + uint8_t minutes; + uint8_t seconds; +} time_of_day_t; + +typedef struct __date +{ + uint8_t day; + uint8_t month; + uint8_t year; +} date_t; + +typedef struct __color +{ + uint8_t red; + uint8_t green; + uint8_t blue; +} color_t; \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/LICENSE b/lib/esp-knx-ip-async-udp/LICENSE new file mode 100644 index 000000000..80f432a97 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Nico Weichbrodt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/README.md b/lib/esp-knx-ip-async-udp/README.md new file mode 100644 index 000000000..b18b50d6b --- /dev/null +++ b/lib/esp-knx-ip-async-udp/README.md @@ -0,0 +1,107 @@ +# ESP-KNX-IP # + +This is a library for the ESP8266 to enable KNXnet/IP communication. It uses UDP multicast on 224.0.23.12:3671. +It is intended to be used with the Arduino platform for the ESP8266. + +## Prerequisities / Dependencies ## + +* You need version 2.4.0 of the esp8266 board libraries. + * I only tested with lwip v1.4. v2 might work, you need to test yourself. +* You need the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. +* You need a KNXnet/IP **router**. A gateway will **not** work. Alternatively use [knxd](https://github.com/knxd/knxd). + +## Caveats ## + +Receiving packets should work immediately. + +Sending sometimes only works after a substantial amount of time (max 5 minutes in my experiments). In my case, this was fixed by disabling IGMP snooping on the switch(es). + +## How to use ## + +The library is under development. API may change multiple times in the future. + +API documentation is available [here](https://github.com/envy/esp-knx-ip/wiki/API) + +A simple example: + +```c++ +#include + +const char* ssid = "my-ssid"; // your network SSID (name) +const char* pass = "my-pw"; // your network password + +config_id_t my_GA; +config_id_t param_id; + +int8_t some_var = 0; + +void setup() +{ + // Register a callback that is called when a configurable group address is receiving a telegram + knx.register_callback("Set/Get callback", my_callback); + knx.register_callback("Write callback", my_other_callback); + + int default_val = 21; + param_id = knx.config_register_int("My Parameter", default_val); + + // Register a configurable group address for sending out answers + my_GA = knx.config_register_ga("Answer GA"); + + knx.load(); // Try to load a config from EEPROM + + WiFi.begin(ssid, pass); + while (WiFi.status() != WL_CONNECTED) { + delay(500); + } + + knx.start(); // Start everything. Must be called after WiFi connection has been established +} + +void loop() +{ + knx.loop(); +} + + +void my_callback(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_WRITE: + // Save received data + some_var = knx.data_to_1byte_int(msg.data); + break; + case KNX_CT_READ: + // Answer with saved data + knx.answer1ByteInt(msg.received_on, some_var); + break; + } +} + +void my_other_callback(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_WRITE: + // Write an answer somewhere else + int value = knx.config_get_int(param_id); + address_t ga = knx.config_get_ga(my_GA); + knx.answer1ByteInt(ga, (int8_t)value); + break; + } +} + +``` + +## How to configure (buildtime) ## + +Open the `esp-knx-ip.h` and take a look at the config options at the top inside the block marked `CONFIG` + +## How to configure (runtime) ## + +Simply visit the IP of your ESP with a webbrowser. You can configure the following: +* KNX physical address +* Which group address should trigger which callback +* Which group address are to be used by the program (e.g. for status replies) + +The configuration is dynamically generated from the code. \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp new file mode 100644 index 000000000..8d2b7b39d --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp @@ -0,0 +1,358 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#include "esp-knx-ip.h" + +/** + * Physical address functions + */ + +void ESPKNXIP::physical_address_set(address_t const &addr) +{ + physaddr = addr; +} + +address_t ESPKNXIP::physical_address_get() +{ + return physaddr; +} + +/** + * Configuration functions start here + */ +config_id_t ESPKNXIP::config_register_string(String name, uint8_t len, String _default, enable_condition_t cond) +{ + if (registered_configs >= MAX_CONFIGS) + return -1; + + if (_default.length() >= len) + return -1; + + config_id_t id = registered_configs; + + custom_configs[id].name = name; + custom_configs[id].type = CONFIG_TYPE_STRING; + custom_configs[id].len = sizeof(uint8_t) + len; + custom_configs[id].cond = cond; + if (id == 0) + custom_configs[id].offset = 0; + else + custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; + + __config_set_string(id, _default); + + registered_configs++; + + DEBUG_PRINT("Registered config >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINT(id); + DEBUG_PRINT("/string["); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT("+"); + DEBUG_PRINT(custom_configs[id].len); + DEBUG_PRINTLN("]"); + + return id; +} + +config_id_t ESPKNXIP::config_register_int(String name, int32_t _default, enable_condition_t cond) +{ + if (registered_configs >= MAX_CONFIGS) + return -1; + + config_id_t id = registered_configs; + + custom_configs[id].name = name; + custom_configs[id].type = CONFIG_TYPE_INT; + custom_configs[id].len = sizeof(uint8_t) + sizeof(int32_t); + custom_configs[id].cond = cond; + if (id == 0) + custom_configs[id].offset = 0; + else + custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; + + __config_set_int(id, _default); + + registered_configs++; + + DEBUG_PRINT("Registered config >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINT(id); + DEBUG_PRINT("/int["); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT("+"); + DEBUG_PRINT(custom_configs[id].len); + DEBUG_PRINTLN("]"); + + return id; +} + +config_id_t ESPKNXIP::config_register_bool(String name, bool _default, enable_condition_t cond) +{ + if (registered_configs >= MAX_CONFIGS) + return -1; + + config_id_t id = registered_configs; + + custom_configs[id].name = name; + custom_configs[id].type = CONFIG_TYPE_BOOL; + custom_configs[id].len = sizeof(uint8_t) + sizeof(uint8_t); + custom_configs[id].cond = cond; + if (id == 0) + custom_configs[id].offset = 0; + else + custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; + + __config_set_bool(id, _default); + + registered_configs++; + + DEBUG_PRINT("Registered config >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINT(id); + DEBUG_PRINT("/bool["); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT("+"); + DEBUG_PRINT(custom_configs[id].len); + DEBUG_PRINTLN("]"); + + return id; +} + +config_id_t ESPKNXIP::config_register_options(String name, option_entry_t *options, uint8_t _default, enable_condition_t cond) +{ + if (registered_configs >= MAX_CONFIGS) + return -1; + + if (options == nullptr || options->name == nullptr) + return -1; + + config_id_t id = registered_configs; + + custom_configs[id].name = name; + custom_configs[id].type = CONFIG_TYPE_OPTIONS; + custom_configs[id].len = sizeof(uint8_t) + sizeof(uint8_t); + custom_configs[id].cond = cond; + if (id == 0) + custom_configs[id].offset = 0; + else + custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; + + custom_configs[id].data.options = options; + + __config_set_options(id, _default); + + registered_configs++; + + DEBUG_PRINT("Registered config >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINT(id); + DEBUG_PRINT("/opt["); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT("+"); + DEBUG_PRINT(custom_configs[id].len); + DEBUG_PRINTLN("]"); + + return id; +} + +config_id_t ESPKNXIP::config_register_ga(String name, enable_condition_t cond) +{ + if (registered_configs >= MAX_CONFIGS) + return -1; + + config_id_t id = registered_configs; + + custom_configs[id].name = name; + custom_configs[id].type = CONFIG_TYPE_GA; + custom_configs[id].len = sizeof(uint8_t) + sizeof(address_t); + custom_configs[id].cond = cond; + if (id == 0) + custom_configs[id].offset = 0; + else + custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; + + address_t t; + t.value = 0; + __config_set_ga(id, t); + + registered_configs++; + + DEBUG_PRINT("Registered config >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINT(id); + DEBUG_PRINT("/ga["); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT("+"); + DEBUG_PRINT(custom_configs[id].len); + DEBUG_PRINTLN("]"); + + return id; +} + +void ESPKNXIP::__config_set_flags(config_id_t id, config_flags_t flags) +{ + DEBUG_PRINT("Setting flag @ "); + DEBUG_PRINT(custom_configs[id].offset); + DEBUG_PRINT(" to "); + DEBUG_PRINT(custom_config_data[custom_configs[id].offset], BIN); + DEBUG_PRINT(" | "); + DEBUG_PRINT(flags, BIN); + custom_config_data[custom_configs[id].offset] |= (uint8_t)flags; + DEBUG_PRINT(" = "); + DEBUG_PRINTLN(custom_config_data[custom_configs[id].offset], BIN); +} + +void ESPKNXIP::config_set_string(config_id_t id, String val) +{ + if (id >= registered_configs) + return; + if (custom_configs[id].type != CONFIG_TYPE_STRING) + return; + if (val.length() >= custom_configs[id].len) + return; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_string(id, val); +} + +void ESPKNXIP::__config_set_string(config_id_t id, String &val) +{ + memcpy(&custom_config_data[custom_configs[id].offset + sizeof(uint8_t)], val.c_str(), val.length()+1); +} + +void ESPKNXIP::config_set_int(config_id_t id, int32_t val) +{ + if (id >= registered_configs) + return; + if (custom_configs[id].type != CONFIG_TYPE_INT) + return; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_int(id, val); +} + +void ESPKNXIP::__config_set_int(config_id_t id, int32_t val) +{ + // This does not work for some reason: + // Could be due to pointer alignment + //int32_t *v = (int32_t *)(custom_config_data + custom_configs[id].offset); + //*v = val; + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] = (uint8_t)((val & 0xFF000000) >> 24); + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] = (uint8_t)((val & 0x00FF0000) >> 16); + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 2] = (uint8_t)((val & 0x0000FF00) >> 8); + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 3] = (uint8_t)((val & 0x000000FF) >> 0); +} + +void ESPKNXIP::config_set_bool(config_id_t id, bool val) +{ + if (id >= registered_configs) + return; + if (custom_configs[id].type != CONFIG_TYPE_BOOL) + return; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_bool(id, val); +} + +void ESPKNXIP::__config_set_bool(config_id_t id, bool val) +{ + custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] = val ? 1 : 0; +} + +void ESPKNXIP::config_set_options(config_id_t id, uint8_t val) +{ + if (id >= registered_configs) + return; + if (custom_configs[id].type != CONFIG_TYPE_OPTIONS) + return; + + option_entry_t *cur = custom_configs[id].data.options; + while (cur->name != nullptr) + { + if (cur->value == val) + { + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_options(id, val); + break; + } + cur++; + } +} + +void ESPKNXIP::__config_set_options(config_id_t id, uint8_t val) +{ + custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] = val; +} + +void ESPKNXIP::config_set_ga(config_id_t id, address_t const &val) +{ + if (id >= registered_configs) + return; + if (custom_configs[id].type != CONFIG_TYPE_GA) + return; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_ga(id, val); +} + +void ESPKNXIP::__config_set_ga(config_id_t id, address_t const &val) +{ + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] = val.bytes.high; + custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] = val.bytes.low; +} + +String ESPKNXIP::config_get_string(config_id_t id) +{ + if (id >= registered_configs) + return String(""); + + return String((char *)&custom_config_data[custom_configs[id].offset + sizeof(uint8_t)]); +} + +int32_t ESPKNXIP::config_get_int(config_id_t id) +{ + if (id >= registered_configs) + return 0; + + int32_t v = (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] << 24) + + (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] << 16) + + (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 2] << 8) + + (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 3] << 0); + return v; +} + +bool ESPKNXIP::config_get_bool(config_id_t id) +{ + if (id >= registered_configs) + return false; + + return custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] != 0; +} + +uint8_t ESPKNXIP::config_get_options(config_id_t id) +{ + if (id >= registered_configs) + return false; + + return custom_config_data[custom_configs[id].offset + sizeof(uint8_t)]; +} + +address_t ESPKNXIP::config_get_ga(config_id_t id) +{ + address_t t; + if (id >= registered_configs) + { + t.value = 0; + return t; + } + + t.bytes.high = custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0]; + t.bytes.low = custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1]; + + return t; +} diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp new file mode 100644 index 000000000..9dc2fd563 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp @@ -0,0 +1,87 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#include "esp-knx-ip.h" + +/** + * Conversion functions + */ + +bool ESPKNXIP::data_to_bool(uint8_t *data) +{ + return (data[0] & 0x01) == 1 ? true : false; +} + +int8_t ESPKNXIP::data_to_1byte_int(uint8_t *data) +{ + return (int8_t)data[1]; +} + +uint8_t ESPKNXIP::data_to_1byte_uint(uint8_t *data) +{ + return data[1]; +} + +int16_t ESPKNXIP::data_to_2byte_int(uint8_t *data) +{ + return (int16_t)((data[1] << 8) | data[2]); +} + +uint16_t ESPKNXIP::data_to_2byte_uint(uint8_t *data) +{ + return (uint16_t)((data[1] << 8) | data[2]); +} + +float ESPKNXIP::data_to_2byte_float(uint8_t *data) +{ + //uint8_t sign = (data[1] & 0b10000000) >> 7; + uint8_t expo = (data[1] & 0b01111000) >> 3; + int16_t mant = ((data[1] & 0b10000111) << 8) | data[2]; + return 0.01f * mant * pow(2, expo); +} + +time_of_day_t ESPKNXIP::data_to_3byte_time(uint8_t *data) +{ + time_of_day_t time; + time.weekday = (weekday_t)((data[1] & 0b11100000) >> 5); + time.hours = (data[1] & 0b00011111); + time.minutes = (data[2] & 0b00111111); + time.seconds = (data[3] & 0b00111111); + return time; +} + +date_t ESPKNXIP::data_to_3byte_data(uint8_t *data) +{ + date_t date; + date.day = (data[1] & 0b00011111); + date.month = (data[2] & 0b00001111); + date.year = (data[3] & 0b01111111); + return date; +} + +color_t ESPKNXIP::data_to_3byte_color(uint8_t *data) +{ + color_t color; + color.red = data[1]; + color.green = data[2]; + color.blue = data[3]; + return color; +} + +int32_t ESPKNXIP::data_to_4byte_int(uint8_t *data) +{ + return (int32_t)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) | (data[4] << 0)); +} + +uint32_t ESPKNXIP::data_to_4byte_uint(uint8_t *data) +{ + return (uint32_t)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) | (data[4] << 0)); +} + +float ESPKNXIP::data_to_4byte_float(uint8_t *data) +{ + return (float)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) |data[4]); +} \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp new file mode 100644 index 000000000..1244fc50a --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp @@ -0,0 +1,180 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#include "esp-knx-ip.h" + +/** + * Send functions + */ + +void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t data_len, uint8_t *data) +{ + if (receiver.value == 0) + return; + +#if SEND_CHECKSUM + uint32_t len = 6 + 2 + 8 + data_len + 1; // knx_pkt + cemi_msg + cemi_service + data + checksum +#else + uint32_t len = 6 + 2 + 8 + data_len; // knx_pkt + cemi_msg + cemi_service + data +#endif + DEBUG_PRINT(F("Creating packet with len ")); + DEBUG_PRINTLN(len) + uint8_t buf[len]; + knx_ip_pkt_t *knx_pkt = (knx_ip_pkt_t *)buf; + knx_pkt->header_len = 0x06; + knx_pkt->protocol_version = 0x10; + knx_pkt->service_type = __ntohs(KNX_ST_ROUTING_INDICATION); + knx_pkt->total_len.len = __ntohs(len); + cemi_msg_t *cemi_msg = (cemi_msg_t *)knx_pkt->pkt_data; + cemi_msg->message_code = KNX_MT_L_DATA_IND; + cemi_msg->additional_info_len = 0; + cemi_service_t *cemi_data = &cemi_msg->data.service_information; + cemi_data->control_1.bits.confirm = 0; + cemi_data->control_1.bits.ack = 0; + cemi_data->control_1.bits.priority = B11; + cemi_data->control_1.bits.system_broadcast = 0x01; + cemi_data->control_1.bits.repeat = 0x01; + cemi_data->control_1.bits.reserved = 0; + cemi_data->control_1.bits.frame_type = 0x01; + cemi_data->control_2.bits.extended_frame_format = 0x00; + cemi_data->control_2.bits.hop_count = 0x06; + cemi_data->control_2.bits.dest_addr_type = 0x01; + cemi_data->source = physaddr; + cemi_data->destination = receiver; + //cemi_data->destination.bytes.high = (area << 3) | line; + //cemi_data->destination.bytes.low = member; + cemi_data->data_len = data_len; + cemi_data->pci.apci = (ct & 0x0C) >> 2; + cemi_data->pci.tpci_seq_number = 0x00; // ??? + cemi_data->pci.tpci_comm_type = KNX_COT_UDP; // ??? + memcpy(cemi_data->data, data, data_len); + cemi_data->data[0] = (cemi_data->data[0] & 0x3F) | ((ct & 0x03) << 6); + +#if SEND_CHECKSUM + // Calculate checksum, which is just XOR of all bytes + uint8_t cs = buf[0] ^ buf[1]; + for (uint32_t i = 2; i < len - 1; ++i) + { + cs ^= buf[i]; + } + buf[len - 1] = cs; +#endif + +#ifdef ESP_KNX_DEBUG + DEBUG_PRINT(F("Sending packet:")); + for (int i = 0; i < len; ++i) + { + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINT(buf[i], 16); + } + DEBUG_PRINTLN(F("")); +#endif + + udp.writeTo(buf, len, MULTICAST_IP, MULTICAST_PORT); +} + +void ESPKNXIP::send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit) +{ + uint8_t buf[] = {(uint8_t)(bit & 0b00000001)}; + send(receiver, ct, 1, buf); +} + +void ESPKNXIP::send_2bit(address_t const &receiver, knx_command_type_t ct, uint8_t twobit) +{ + uint8_t buf[] = {(uint8_t)(twobit & 0b00000011)}; + send(receiver, ct, 1, buf); +} + +void ESPKNXIP::send_4bit(address_t const &receiver, knx_command_type_t ct, uint8_t fourbit) +{ + uint8_t buf[] = {(uint8_t)(fourbit & 0b00001111)}; + send(receiver, ct, 1, buf); +} + +void ESPKNXIP::send_1byte_int(address_t const &receiver, knx_command_type_t ct, int8_t val) +{ + uint8_t buf[] = {0x00, (uint8_t)val}; + send(receiver, ct, 2, buf); +} + +void ESPKNXIP::send_1byte_uint(address_t const &receiver, knx_command_type_t ct, uint8_t val) +{ + uint8_t buf[] = {0x00, val}; + send(receiver, ct, 2, buf); +} + +void ESPKNXIP::send_2byte_int(address_t const &receiver, knx_command_type_t ct, int16_t val) +{ + uint8_t buf[] = {0x00, (uint8_t)(val >> 8), (uint8_t)(val & 0x00FF)}; + send(receiver, ct, 3, buf); +} + +void ESPKNXIP::send_2byte_uint(address_t const &receiver, knx_command_type_t ct, uint16_t val) +{ + uint8_t buf[] = {0x00, (uint8_t)(val >> 8), (uint8_t)(val & 0x00FF)}; + send(receiver, ct, 3, buf); +} + +void ESPKNXIP::send_2byte_float(address_t const &receiver, knx_command_type_t ct, float val) +{ + float v = val * 100.0f; + int e = 0; + for (; v < -2048.0f; v /= 2) + ++e; + for (; v > 2047.0f; v /= 2) + ++e; + long m = round(v) & 0x7FF; + short msb = (short) (e << 3 | m >> 8); + if (val < 0.0f) + msb |= 0x80; + uint8_t buf[] = {0x00, (uint8_t)msb, (uint8_t)m}; + send(receiver, ct, 3, buf); +} + +void ESPKNXIP::send_3byte_time(address_t const &receiver, knx_command_type_t ct, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) +{ + weekday <<= 5; + uint8_t buf[] = {0x00, (uint8_t)(((weekday << 5) & 0xE0) | (hours & 0x1F)), (uint8_t)(minutes & 0x3F), (uint8_t)(seconds & 0x3F)}; + send(receiver, ct, 4, buf); +} + +void ESPKNXIP::send_3byte_date(address_t const &receiver, knx_command_type_t ct, uint8_t day, uint8_t month, uint8_t year) +{ + uint8_t buf[] = {0x00, (uint8_t)(day & 0x1F), (uint8_t)(month & 0x0F), year}; + send(receiver, ct, 4, buf); +} + +void ESPKNXIP::send_3byte_color(address_t const &receiver, knx_command_type_t ct, uint8_t red, uint8_t green, uint8_t blue) +{ + uint8_t buf[] = {0x00, red, green, blue}; + send(receiver, ct, 4, buf); +} + +void ESPKNXIP::send_4byte_int(address_t const &receiver, knx_command_type_t ct, int32_t val) +{ + uint8_t buf[] = {0x00, + (uint8_t)((val & 0xFF000000) >> 24), + (uint8_t)((val & 0x00FF0000) >> 16), + (uint8_t)((val & 0x0000FF00) >> 8), + (uint8_t)((val & 0x000000FF) >> 0)}; + send(receiver, ct, 5, buf); +} + +void ESPKNXIP::send_4byte_uint(address_t const &receiver, knx_command_type_t ct, uint32_t val) +{ + uint8_t buf[] = {0x00, + (uint8_t)((val & 0xFF000000) >> 24), + (uint8_t)((val & 0x00FF0000) >> 16), + (uint8_t)((val & 0x0000FF00) >> 8), + (uint8_t)((val & 0x000000FF) >> 0)}; + send(receiver, ct, 5, buf); +} + +void ESPKNXIP::send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val) +{ + uint8_t buf[] = {0x00, ((uint8_t *)&val)[3], ((uint8_t *)&val)[2], ((uint8_t *)&val)[1], ((uint8_t *)&val)[0]}; + send(receiver, ct, 5, buf); +} diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp new file mode 100644 index 000000000..af981b78d --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp @@ -0,0 +1,524 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#include "esp-knx-ip.h" + +void ESPKNXIP::__handle_root() +{ + String m = F(""); +#if USE_BOOTSTRAP + m += F(""); + m += F(""); +#endif + m += F("
"); + m += F("

ESP KNX

"); + + // Feedback + + if (registered_feedbacks > 0) + { + m += F("

Feedback

"); + for (feedback_id_t i = 0; i < registered_feedbacks; ++i) + { + if (feedbacks[i].cond && !feedbacks[i].cond()) + { + continue; + } + m += F(""); + m += F("
"); + m += F("
"); + m += feedbacks[i].name; + m += F("
"); + switch (feedbacks[i].type) + { + case FEEDBACK_TYPE_INT: + m += F(""); + m += String(*(int32_t *)feedbacks[i].data); + m += F(""); + break; + case FEEDBACK_TYPE_FLOAT: + m += F(""); + m += String(*(float *)feedbacks[i].data, feedbacks[i].options.float_options.precision); + m += F(""); + break; + case FEEDBACK_TYPE_BOOL: + m += F(""); + m += (*(bool *)feedbacks[i].data) ? F("True") : F("False"); + m += F(""); + break; + case FEEDBACK_TYPE_ACTION: + m += F("
"); + break; + } + m += F("
"); + m += F(""); + } + } + + if (registered_callbacks > 0) + m += F("

Callbacks

"); + + if (registered_callback_assignments > 0) + { + for (uint8_t i = 0; i < registered_callback_assignments; ++i) + { + if (callbacks[callback_assignments[i].callback_id].cond && !callbacks[callback_assignments[i].callback_id].cond()) + { + continue; + } + address_t &addr = callback_assignments[i].address; + m += F("
"); + m += F("
"); + m += F("
"); + m += addr.ga.area; + m += F("/"); + m += addr.ga.line; + m += F("/"); + m += addr.ga.member; + m += F(""); + m += F(""); + m += callbacks[callback_assignments[i].callback_id].name; + m += F("
"); + m += F("
"); + m += F("
"); + m += F(""); + } + } + + if (registered_callbacks > 0) + { + m += F("
"); + m += F("
"); + m += F(""); + m += F("
/
"); + m += F(""); + m += F("
/
"); + m += F(""); + m += F("
->
"); + m += F(""); + m += F("
"); + m += F("
"); + m += F(""); + } + + m += F("

Configuration

"); + + // Physical address + m += F("
"); + m += F("
"); + m += F("
Physical address
"); + m += F(""); + m += F("
.
"); + m += F(""); + m += F("
.
"); + m += F(""); + m += F("
"); + m += F("
"); + m += F(""); + + if (registered_configs > 0) + { + for (config_id_t i = 0; i < registered_configs; ++i) + { + // Check if this config option has a enable condition and if so check that condition + if (custom_configs[i].cond && !custom_configs[i].cond()) + continue; + + m += F("
"); + m += F("
"); + m += F("
"); + m += custom_configs[i].name; + m += F("
"); + + switch (custom_configs[i].type) + { + case CONFIG_TYPE_STRING: + m += F(""); + break; + case CONFIG_TYPE_INT: + m += F(""); + break; + case CONFIG_TYPE_BOOL: + m += F("
"); + m += F(""); + m += F("
"); + break; + case CONFIG_TYPE_OPTIONS: + { + m += F(""); + break; + } + case CONFIG_TYPE_GA: + address_t a = config_get_ga(i); + m += F(""); + m += F("
/
"); + m += F(""); + m += F("
/
"); + m += F(""); + break; + } + m += F(""); + m += F("
"); + m += F("
"); + m += F(""); + } + } + +#if !(DISABLE_EEPROM_BUTTONS && DISABLE_RESTORE_BUTTON && DISABLE_REBOOT_BUTTON) + // EEPROM save and restore + m += F("
"); + // Save to EEPROM +#if !DISABLE_EEPROM_BUTTONS + m += F("
"); + m += F("
"); + m += F(""); + m += F(""); + m += F(""); + m += F("
"); + // Restore from EEPROM + m += F("
"); + m += F("
"); + m += F(""); + m += F(""); + m += F(""); + m += F("
"); +#endif +#if !DISABLE_RESTORE_BUTTON + // Load Defaults + m += F("
"); + m += F("
"); + m += F(""); + m += F(""); + m += F("
"); +#endif +#if !DISABLE_REBOOT_BUTTON + // Reboot + m += F("
"); + m += F("
"); + m += F(""); + m += F(""); + m += F("
"); +#endif + m += F("
"); // row +#endif + + // End of page + m += F("
"); + server->send(200, F("text/html"), m); +} + +void ESPKNXIP::__handle_register() +{ + DEBUG_PRINTLN(F("Register called")); + if (server->hasArg(F("area")) && server->hasArg(F("line")) && server->hasArg(F("member")) && server->hasArg(F("cb"))) + { + uint8_t area = server->arg(F("area")).toInt(); + uint8_t line = server->arg(F("line")).toInt(); + uint8_t member = server->arg(F("member")).toInt(); + callback_id_t cb = (callback_id_t)server->arg(F("cb")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(area); + DEBUG_PRINT(F("/")); + DEBUG_PRINT(line); + DEBUG_PRINT(F("/")); + DEBUG_PRINT(member); + DEBUG_PRINT(F("/")); + DEBUG_PRINT(cb); + DEBUG_PRINTLN(F("")); + + if (area > 31 || line > 7) + { + DEBUG_PRINTLN(F("Area or Line wrong")); + goto end; + } + + if (cb >= registered_callbacks) + { + DEBUG_PRINTLN(F("Invalid callback id")); + goto end; + } + address_t ga = {.ga={line, area, member}}; + __callback_register_assignment(ga, cb); + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} + +void ESPKNXIP::__handle_delete() +{ + DEBUG_PRINTLN(F("Delete called")); + if (server->hasArg(F("id"))) + { + callback_assignment_id_t id = (callback_assignment_id_t)server->arg(F("id")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(id); + DEBUG_PRINTLN(F("")); + + if (id >= registered_callback_assignments) + { + DEBUG_PRINTLN(F("ID wrong")); + goto end; + } + + __callback_delete_assignment(id); + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} + +void ESPKNXIP::__handle_set() +{ + DEBUG_PRINTLN(F("Set called")); + if (server->hasArg(F("area")) && server->hasArg(F("line")) && server->hasArg(F("member"))) + { + uint8_t area = server->arg(F("area")).toInt(); + uint8_t line = server->arg(F("line")).toInt(); + uint8_t member = server->arg(F("member")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(area); + DEBUG_PRINT(F(".")); + DEBUG_PRINT(line); + DEBUG_PRINT(F(".")); + DEBUG_PRINT(member); + DEBUG_PRINTLN(F("")); + + if (area > 31 || line > 7) + { + DEBUG_PRINTLN(F("Area or Line wrong")); + goto end; + } + + physaddr.bytes.high = (area << 4) | line; + physaddr.bytes.low = member; + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} + +void ESPKNXIP::__handle_config() +{ + DEBUG_PRINTLN(F("Config called")); + if (server->hasArg(F("id"))) + { + config_id_t id = server->arg(F("id")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(id); + DEBUG_PRINTLN(F("")); + + if (id < 0 || id >= registered_configs) + { + DEBUG_PRINTLN(F("ID wrong")); + goto end; + } + + switch (custom_configs[id].type) + { + case CONFIG_TYPE_STRING: + { + String v = server->arg(F("value")); + if (v.length() >= custom_configs[id].len) + goto end; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_string(id, v); + break; + } + case CONFIG_TYPE_INT: + { + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_int(id, server->arg(F("value")).toInt()); + break; + } + case CONFIG_TYPE_BOOL: + { + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_bool(id, server->arg(F("value")).compareTo(F("on")) == 0); + break; + } + case CONFIG_TYPE_OPTIONS: + { + uint8_t val = (uint8_t)server->arg(F("value")).toInt(); + DEBUG_PRINT(F("Value: ")); + DEBUG_PRINTLN(val); + config_set_options(id, val); + break; + } + case CONFIG_TYPE_GA: + { + uint8_t area = server->arg(F("area")).toInt(); + uint8_t line = server->arg(F("line")).toInt(); + uint8_t member = server->arg(F("member")).toInt(); + if (area > 31 || line > 7) + { + DEBUG_PRINTLN(F("Area or Line wrong")); + goto end; + } + address_t tmp; + tmp.bytes.high = (area << 3) | line; + tmp.bytes.low = member; + __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); + __config_set_ga(id, tmp); + break; + } + } + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} + +void ESPKNXIP::__handle_feedback() +{ +DEBUG_PRINTLN(F("Feedback called")); + if (server->hasArg(F("id"))) + { + config_id_t id = server->arg(F("id")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(id); + DEBUG_PRINTLN(F("")); + + if (id < 0 || id >= registered_feedbacks) + { + DEBUG_PRINTLN(F("ID wrong")); + goto end; + } + + switch (feedbacks[id].type) + { + case FEEDBACK_TYPE_ACTION: + { + feedback_action_fptr_t func = (feedback_action_fptr_t)feedbacks[id].data; + void *arg = feedbacks[id].options.action_options.arg; + func(arg); + break; + } + default: + DEBUG_PRINTLN(F("Feedback has no action")); + break; + } + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} + +#if !DISABLE_RESTORE_BUTTONS +void ESPKNXIP::__handle_restore() +{ + DEBUG_PRINTLN(F("Restore called")); + memcpy(custom_config_data, custom_config_default_data, MAX_CONFIG_SPACE); +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} +#endif + +#if !DISABLE_REBOOT_BUTTONS +void ESPKNXIP::__handle_reboot() +{ + DEBUG_PRINTLN(F("Rebooting!")); + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); + delay(1000); + ESP.restart(); + //while(1); +} +#endif + +#if !DISABLE_EEPROM_BUTTONS +void ESPKNXIP::__handle_eeprom() +{ + DEBUG_PRINTLN(F("EEPROM called")); + if (server->hasArg(F("mode"))) + { + uint8_t mode = server->arg(F("mode")).toInt(); + + DEBUG_PRINT(F("Got args: ")); + DEBUG_PRINT(mode); + DEBUG_PRINTLN(F("")); + + if (mode == 1) + { + // save + save_to_eeprom(); + } + else if (mode == 2) + { + // restore + restore_from_eeprom(); + } + } +end: + server->sendHeader(F("Location"),F(__ROOT_PATH)); + server->send(302); +} +#endif diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp new file mode 100644 index 000000000..7a6cd299f --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp @@ -0,0 +1,477 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#include "esp-knx-ip.h" + +ESPKNXIP::ESPKNXIP() : server(nullptr), registered_callback_assignments(0), registered_callbacks(0), registered_configs(0), registered_feedbacks(0) +{ + DEBUG_PRINTLN(); + DEBUG_PRINTLN("ESPKNXIP starting up"); + // Default physical address is 1.1.0 + physaddr.bytes.high = (/*area*/1 << 4) | /*line*/1; + physaddr.bytes.low = /*member*/0; + memset(callback_assignments, 0, MAX_CALLBACK_ASSIGNMENTS * sizeof(callback_assignment_t)); + memset(callbacks, 0, MAX_CALLBACKS * sizeof(callback_fptr_t)); + memset(custom_config_data, 0, MAX_CONFIG_SPACE * sizeof(uint8_t)); + memset(custom_config_default_data, 0, MAX_CONFIG_SPACE * sizeof(uint8_t)); + memset(custom_configs, 0, MAX_CONFIGS * sizeof(config_t)); +} + +void ESPKNXIP::load() +{ + memcpy(custom_config_default_data, custom_config_data, MAX_CONFIG_SPACE); + EEPROM.begin(EEPROM_SIZE); + restore_from_eeprom(); +} + +void ESPKNXIP::start(ESP8266WebServer *srv) +{ + server = srv; + __start(); +} + +void ESPKNXIP::start() +{ + server = new ESP8266WebServer(80); + __start(); +} + +void ESPKNXIP::__start() +{ + if (server != nullptr) + { + server->on(ROOT_PREFIX, [this](){ + __handle_root(); + }); + server->on(__ROOT_PATH, [this](){ + __handle_root(); + }); + server->on(__REGISTER_PATH, [this](){ + __handle_register(); + }); + server->on(__DELETE_PATH, [this](){ + __handle_delete(); + }); + server->on(__PHYS_PATH, [this](){ + __handle_set(); + }); +#if !DISABLE_EEPROM_BUTTONS + server->on(__EEPROM_PATH, [this](){ + __handle_eeprom(); + }); +#endif + server->on(__CONFIG_PATH, [this](){ + __handle_config(); + }); + server->on(__FEEDBACK_PATH, [this](){ + __handle_feedback(); + }); +#if !DISABLE_RESTORE_BUTTON + server->on(__RESTORE_PATH, [this](){ + __handle_restore(); + }); +#endif +#if !DISABLE_REBOOT_BUTTON + server->on(__REBOOT_PATH, [this](){ + __handle_reboot(); + }); +#endif + server->begin(); + } + + udp.listenMulticast(MULTICAST_IP, MULTICAST_PORT); + udp.onPacket([this](AsyncUDPPacket &packet) { __loop_knx(packet); }); +} + +void ESPKNXIP::save_to_eeprom() +{ + uint32_t address = 0; + uint64_t magic = EEPROM_MAGIC; + EEPROM.put(address, magic); + address += sizeof(uint64_t); + EEPROM.put(address++, registered_callback_assignments); + for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) + { + EEPROM.put(address, callback_assignments[i].address); + address += sizeof(address_t); + } + for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) + { + EEPROM.put(address, callback_assignments[i].callback_id); + address += sizeof(callback_id_t); + } + EEPROM.put(address, physaddr); + address += sizeof(address_t); + + EEPROM.put(address, custom_config_data); + address += sizeof(custom_config_data); + + EEPROM.commit(); + DEBUG_PRINT("Wrote to EEPROM: 0x"); + DEBUG_PRINTLN(address, HEX); +} + +void ESPKNXIP::restore_from_eeprom() +{ + uint32_t address = 0; + uint64_t magic = 0; + EEPROM.get(address, magic); + if (magic != EEPROM_MAGIC) + { + DEBUG_PRINTLN("No valid magic in EEPROM, aborting restore."); + DEBUG_PRINT("Expected 0x"); + DEBUG_PRINT((unsigned long)(EEPROM_MAGIC >> 32), HEX); + DEBUG_PRINT(" 0x"); + DEBUG_PRINT((unsigned long)(EEPROM_MAGIC), HEX); + DEBUG_PRINT(" got 0x"); + DEBUG_PRINT((unsigned long)(magic >> 32), HEX); + DEBUG_PRINT(" 0x"); + DEBUG_PRINTLN((unsigned long)magic, HEX); + return; + } + address += sizeof(uint64_t); + EEPROM.get(address++, registered_callback_assignments); + for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) + { + EEPROM.get(address, callback_assignments[i].address); + address += sizeof(address_t); + } + for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) + { + EEPROM.get(address, callback_assignments[i].callback_id); + address += sizeof(callback_id_t); + } + EEPROM.get(address, physaddr); + address += sizeof(address_t); + + //EEPROM.get(address, custom_config_data); + //address += sizeof(custom_config_data); + uint32_t conf_offset = address; + for (uint8_t i = 0; i < registered_configs; ++i) + { + // First byte is flags. + config_flags_t flags = CONFIG_FLAGS_NO_FLAGS; + flags = (config_flags_t)EEPROM.read(address); + DEBUG_PRINT("Flag in EEPROM @ "); + DEBUG_PRINT(address - conf_offset); + DEBUG_PRINT(": "); + DEBUG_PRINTLN(flags, BIN); + custom_config_data[custom_configs[i].offset] = flags; + if (flags & CONFIG_FLAGS_VALUE_SET) + { + DEBUG_PRINTLN("Non-default value"); + for (int j = 0; j < custom_configs[i].len - sizeof(uint8_t); ++j) + { + custom_config_data[custom_configs[i].offset + sizeof(uint8_t) + j] = EEPROM.read(address + sizeof(uint8_t) + j); + } + } + + address += custom_configs[i].len; + } + + DEBUG_PRINT("Restored from EEPROM: 0x"); + DEBUG_PRINTLN(address, HEX); +} + +uint16_t ESPKNXIP::__ntohs(uint16_t n) +{ + return (uint16_t)((((uint8_t*)&n)[0] << 8) | (((uint8_t*)&n)[1])); +} + +callback_assignment_id_t ESPKNXIP::__callback_register_assignment(address_t address, callback_id_t id) +{ + if (registered_callback_assignments >= MAX_CALLBACK_ASSIGNMENTS) + return -1; + + callback_assignment_id_t aid = registered_callback_assignments; + + callback_assignments[aid].address = address; + callback_assignments[aid].callback_id = id; + registered_callback_assignments++; + return aid; +} + +void ESPKNXIP::__callback_delete_assignment(callback_assignment_id_t id) +{ + if (id >= registered_callback_assignments) + return; + + uint32_t dest_offset = 0; + uint32_t src_offset = 0; + uint32_t len = 0; + if (id == 0) + { + // start of array, so delete first entry + src_offset = 1; + // registered_ga_callbacks will be 1 in case of only one entry + // registered_ga_callbacks will be 2 in case of two entries, etc.. + // so only copy anything, if there is it at least more then one element + len = (registered_callback_assignments - 1); + } + else if (id == registered_callback_assignments - 1) + { + // last element, don't do anything, simply decrement counter + } + else + { + // somewhere in the middle + // need to calc offsets + + // skip all prev elements + dest_offset = id; // id is equal to how many element are in front of it + src_offset = dest_offset + 1; // start after the current element + len = (registered_callback_assignments - 1 - id); + } + + if (len > 0) + { + memmove(callback_assignments + dest_offset, callback_assignments + src_offset, len * sizeof(callback_assignment_t)); + } + + registered_callback_assignments--; +} + +callback_id_t ESPKNXIP::callback_register(String name, callback_fptr_t cb, void *arg, enable_condition_t cond) +{ + if (registered_callbacks >= MAX_CALLBACKS) + return -1; + + callback_id_t id = registered_callbacks; + + callbacks[id].name = name; + callbacks[id].fkt = cb; + callbacks[id].cond = cond; + callbacks[id].arg = arg; + registered_callbacks++; + return id; +} + +void ESPKNXIP::callback_assign(callback_id_t id, address_t val) +{ + if (id >= registered_callbacks) + return; + + __callback_register_assignment(val, id); +} + +/** + * Feedback functions start here + */ + +feedback_id_t ESPKNXIP::feedback_register_int(String name, int32_t *value, enable_condition_t cond) +{ + if (registered_feedbacks >= MAX_FEEDBACKS) + return -1; + + feedback_id_t id = registered_feedbacks; + + feedbacks[id].type = FEEDBACK_TYPE_INT; + feedbacks[id].name = name; + feedbacks[id].cond = cond; + feedbacks[id].data = (void *)value; + + registered_feedbacks++; + + return id; +} + +feedback_id_t ESPKNXIP::feedback_register_float(String name, float *value, uint8_t precision, enable_condition_t cond) +{ + if (registered_feedbacks >= MAX_FEEDBACKS) + return -1; + + feedback_id_t id = registered_feedbacks; + + feedbacks[id].type = FEEDBACK_TYPE_FLOAT; + feedbacks[id].name = name; + feedbacks[id].cond = cond; + feedbacks[id].data = (void *)value; + feedbacks[id].options.float_options.precision = precision; + + registered_feedbacks++; + + return id; +} + +feedback_id_t ESPKNXIP::feedback_register_bool(String name, bool *value, enable_condition_t cond) +{ + if (registered_feedbacks >= MAX_FEEDBACKS) + return -1; + + feedback_id_t id = registered_feedbacks; + + feedbacks[id].type = FEEDBACK_TYPE_BOOL; + feedbacks[id].name = name; + feedbacks[id].cond = cond; + feedbacks[id].data = (void *)value; + + registered_feedbacks++; + + return id; +} + +feedback_id_t ESPKNXIP::feedback_register_action(String name, feedback_action_fptr_t value, void *arg, enable_condition_t cond) +{ + if (registered_feedbacks >= MAX_FEEDBACKS) + return -1; + + feedback_id_t id = registered_feedbacks; + + feedbacks[id].type = FEEDBACK_TYPE_ACTION; + feedbacks[id].name = name; + feedbacks[id].cond = cond; + feedbacks[id].data = (void *)value; + feedbacks[id].options.action_options.arg = arg; + + registered_feedbacks++; + + return id; +} + +void ESPKNXIP::loop() +{ + if (server != nullptr) + { + __loop_webserver(); + } +} + +void ESPKNXIP::__loop_webserver() +{ + server->handleClient(); +} + +void ESPKNXIP::__loop_knx(AsyncUDPPacket &packet) +{ + size_t read = packet.length(); + if (!read) + { + return; + } + DEBUG_PRINTLN(F("")); + DEBUG_PRINT(F("LEN: ")); + DEBUG_PRINTLN(read); + + uint8_t *buf = packet.data(); + + DEBUG_PRINT(F("Got packet:")); +#ifdef ESP_KNX_DEBUG + for (size_t i = 0; i < read; ++i) + { + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINT(buf[i], 16); + } +#endif + DEBUG_PRINTLN(F("")); + + knx_ip_pkt_t *knx_pkt = (knx_ip_pkt_t *)buf; + + DEBUG_PRINT(F("ST: 0x")); + DEBUG_PRINTLN(__ntohs(knx_pkt->service_type), 16); + + if (knx_pkt->header_len != 0x06 && knx_pkt->protocol_version != 0x10 && knx_pkt->service_type != KNX_ST_ROUTING_INDICATION) + return; + + cemi_msg_t *cemi_msg = (cemi_msg_t *)knx_pkt->pkt_data; + + DEBUG_PRINT(F("MT: 0x")); + DEBUG_PRINTLN(cemi_msg->message_code, 16); + + if (cemi_msg->message_code != KNX_MT_L_DATA_IND) + return; + + DEBUG_PRINT(F("ADDI: 0x")); + DEBUG_PRINTLN(cemi_msg->additional_info_len, 16); + + cemi_service_t *cemi_data = &cemi_msg->data.service_information; + + if (cemi_msg->additional_info_len > 0) + cemi_data = (cemi_service_t *)(((uint8_t *)cemi_data) + cemi_msg->additional_info_len); + + DEBUG_PRINT(F("C1: 0x")); + DEBUG_PRINTLN(cemi_data->control_1.byte, 16); + + DEBUG_PRINT(F("C2: 0x")); + DEBUG_PRINTLN(cemi_data->control_2.byte, 16); + + DEBUG_PRINT(F("DT: 0x")); + DEBUG_PRINTLN(cemi_data->control_2.bits.dest_addr_type, 16); + + if (cemi_data->control_2.bits.dest_addr_type != 0x01) + return; + + DEBUG_PRINT(F("HC: 0x")); + DEBUG_PRINTLN(cemi_data->control_2.bits.hop_count, 16); + + DEBUG_PRINT(F("EFF: 0x")); + DEBUG_PRINTLN(cemi_data->control_2.bits.extended_frame_format, 16); + + DEBUG_PRINT(F("Source: 0x")); + DEBUG_PRINT(cemi_data->source.bytes.high, 16); + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINTLN(cemi_data->source.bytes.low, 16); + + DEBUG_PRINT(F("Dest: 0x")); + DEBUG_PRINT(cemi_data->destination.bytes.high, 16); + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINTLN(cemi_data->destination.bytes.low, 16); + + knx_command_type_t ct = (knx_command_type_t)(((cemi_data->data[0] & 0xC0) >> 6) | ((cemi_data->pci.apci & 0x03) << 2)); + + DEBUG_PRINT(F("CT: 0x")); + DEBUG_PRINTLN(ct, 16); + +#ifdef ESP_KNX_DEBUG + for (int i = 0; i < cemi_data->data_len; ++i) + { + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINT(cemi_data->data[i], 16); + } +#endif + + DEBUG_PRINTLN(F("==")); + + // Call callbacks + for (int i = 0; i < registered_callback_assignments; ++i) + { + DEBUG_PRINT(F("Testing: 0x")); + DEBUG_PRINT(callback_assignments[i].address.bytes.high, 16); + DEBUG_PRINT(F(" 0x")); + DEBUG_PRINTLN(callback_assignments[i].address.bytes.low, 16); + if (cemi_data->destination.value == callback_assignments[i].address.value) + { + DEBUG_PRINTLN(F("Found match")); + if (callbacks[callback_assignments[i].callback_id].cond && !callbacks[callback_assignments[i].callback_id].cond()) + { + DEBUG_PRINTLN(F("But it's disabled")); +#if ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS + continue; +#else + return; +#endif + } + uint8_t data[cemi_data->data_len]; + memcpy(data, cemi_data->data, cemi_data->data_len); + data[0] = data[0] & 0x3F; + message_t msg = {}; + msg.ct = ct; + msg.received_on = cemi_data->destination; + msg.data_len = cemi_data->data_len; + msg.data = data; + callbacks[callback_assignments[i].callback_id].fkt(msg, callbacks[callback_assignments[i].callback_id].arg); +#if ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS + continue; +#else + return; +#endif + } + } + + return; +} + +// Global "singleton" object +ESPKNXIP knx; diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.h b/lib/esp-knx-ip-async-udp/esp-knx-ip.h new file mode 100644 index 000000000..409bd2c5a --- /dev/null +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.h @@ -0,0 +1,539 @@ +/** + * esp-knx-ip library for KNX/IP communication on an ESP8266 + * Author: Nico Weichbrodt + * License: MIT + */ + +#ifndef ESP_KNX_IP_H +#define ESP_KNX_IP_H + +/** + * CONFIG + * All MAX_ values must not exceed 255 (1 byte, except MAC_CONFIG_SPACE which can go up to 2 bytes, so 0xffff in theory) and must not be negative! + * Config space is restriced by EEPROM_SIZE (default 1024). + * Required EEPROM size is 8 + MAX_GA_CALLBACKS * 3 + 2 + MAX_CONFIG_SPACE which is 552 by default + */ +#define EEPROM_SIZE 1024 // [Default 1024] +#define MAX_CALLBACK_ASSIGNMENTS 20 // [Default 10] Maximum number of group address callbacks that can be stored +#define MAX_CALLBACKS 20 // [Default 10] Maximum number of callbacks that can be stored +#define MAX_CONFIGS 20 // [Default 20] Maximum number of config items that can be stored +#define MAX_CONFIG_SPACE 0x0200 // [Default 0x0200] Maximum number of bytes that can be stored for custom config + +#define MAX_FEEDBACKS 20 // [Default 20] Maximum number of feedbacks that can be shown + +// Callbacks +#define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 // [Default 0] Set to 1 to always test all assigned callbacks. This allows for multiple callbacks being assigned to the same address. If disabled, only the first assigned will be called. + +// Webserver related +#define USE_BOOTSTRAP 1 // [Default 1] Set to 1 to enable use of bootstrap CSS for nicer webconfig. CSS is loaded from bootstrapcdn.com. Set to 0 to disable +#define ROOT_PREFIX "" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx +#define DISABLE_EEPROM_BUTTONS 0 // [Default 0] Set to 1 to disable the EEPROM buttons in the web ui. +#define DISABLE_REBOOT_BUTTON 0 // [Default 0] Set to 1 to disable the reboot button in the web ui. +#define DISABLE_RESTORE_BUTTON 0 // [Default 0] Set to 1 to disable the "restore defaults" button in the web ui. + +// These values normally don't need adjustment +#define MULTICAST_PORT 3671 // [Default 3671] +#define MULTICAST_IP IPAddress(224, 0, 23, 12) // [Default IPAddress(224, 0, 23, 12)] +#define SEND_CHECKSUM 0 + +// Uncomment to enable printing out debug messages. +//#define ESP_KNX_DEBUG +/** + * END CONFIG + */ + +#include "Arduino.h" +#include +#include +#include +#include + +#include "DPT.h" + +#define EEPROM_MAGIC (0xDEADBEEF00000000 + (MAX_CONFIG_SPACE) + (MAX_CALLBACK_ASSIGNMENTS << 16) + (MAX_CALLBACKS << 8)) + +// Define where debug output will be printed. +#ifndef DEBUG_PRINTER +#define DEBUG_PRINTER Serial +#endif + +// Setup debug printing macros. +#ifdef ESP_KNX_DEBUG + #define DEBUG_PRINT(...) { DEBUG_PRINTER.print(__VA_ARGS__); } + #define DEBUG_PRINTLN(...) { DEBUG_PRINTER.println(__VA_ARGS__); } +#else + #define DEBUG_PRINT(...) {} + #define DEBUG_PRINTLN(...) {} +#endif + +#define __ROOT_PATH ROOT_PREFIX"/" +#define __REGISTER_PATH ROOT_PREFIX"/register" +#define __DELETE_PATH ROOT_PREFIX"/delete" +#define __PHYS_PATH ROOT_PREFIX"/phys" +#define __EEPROM_PATH ROOT_PREFIX"/eeprom" +#define __CONFIG_PATH ROOT_PREFIX"/config" +#define __FEEDBACK_PATH ROOT_PREFIX"/feedback" +#define __RESTORE_PATH ROOT_PREFIX"/restore" +#define __REBOOT_PATH ROOT_PREFIX"/reboot" + +/** + * Different service types, we are mainly interested in KNX_ST_ROUTING_INDICATION + */ +typedef enum __knx_service_type +{ + KNX_ST_SEARCH_REQUEST = 0x0201, + KNX_ST_SEARCH_RESPONSE = 0x0202, + KNX_ST_DESCRIPTION_REQUEST = 0x0203, + KNX_ST_DESCRIPTION_RESPONSE = 0x0204, + KNX_ST_CONNECT_REQUEST = 0x0205, + KNX_ST_CONNECT_RESPONSE = 0x0206, + KNX_ST_CONNECTIONSTATE_REQUEST = 0x0207, + KNX_ST_CONNECTIONSTATE_RESPONSE = 0x0208, + KNX_ST_DISCONNECT_REQUEST = 0x0209, + KNX_ST_DISCONNECT_RESPONSE = 0x020A, + + KNX_ST_DEVICE_CONFIGURATION_REQUEST = 0x0310, + KNX_ST_DEVICE_CONFIGURATION_ACK = 0x0311, + + KNX_ST_TUNNELING_REQUEST = 0x0420, + KNX_ST_TUNNELING_ACK = 0x0421, + + KNX_ST_ROUTING_INDICATION = 0x0530, + KNX_ST_ROUTING_LOST_MESSAGE = 0x0531, + KNX_ST_ROUTING_BUSY = 0x0532, + +// KNX_ST_RLOG_START = 0x0600, +// KNX_ST_RLOG_END = 0x06FF, + + KNX_ST_REMOTE_DIAGNOSTIC_REQUEST = 0x0740, + KNX_ST_REMOTE_DIAGNOSTIC_RESPONSE = 0x0741, + KNX_ST_REMOTE_BASIC_CONFIGURATION_REQUEST = 0x0742, + KNX_ST_REMOTE_RESET_REQUEST = 0x0743, + +// KNX_ST_OBJSRV_START = 0x0800, +// KNX_ST_OBJSRV_END = 0x08FF, +} knx_service_type_t; + +/** + * Differnt command types, first three are of main interest + */ +typedef enum __knx_command_type +{ + KNX_CT_READ = 0x00, + KNX_CT_ANSWER = 0x01, + KNX_CT_WRITE = 0x02, + KNX_CT_INDIVIDUAL_ADDR_WRITE = 0x03, + KNX_CT_INDIVIDUAL_ADDR_REQUEST = 0x04, + KNX_CT_INDIVIDUAL_ADDR_RESPONSE = 0x05, + KNX_CT_ADC_READ = 0x06, + KNX_CT_ADC_ANSWER = 0x07, + KNX_CT_MEM_READ = 0x08, + KNX_CT_MEM_ANSWER = 0x09, + KNX_CT_MEM_WRITE = 0x0A, +//KNX_CT_UNKNOWN = 0x0B, + KNX_CT_MASK_VERSION_READ = 0x0C, + KNX_CT_MASK_VERSION_RESPONSE = 0x0D, + KNX_CT_RESTART = 0x0E, + KNX_CT_ESCAPE = 0x0F, +} knx_command_type_t; + +/** + * cEMI message types, mainly KNX_MT_L_DATA_IND is interesting + */ +typedef enum __knx_cemi_msg_type +{ + KNX_MT_L_DATA_REQ = 0x11, + KNX_MT_L_DATA_IND = 0x29, + KNX_MT_L_DATA_CON = 0x2E, +} knx_cemi_msg_type_t; + +/** + * TCPI communication type + */ +typedef enum __knx_communication_type { + KNX_COT_UDP = 0x00, // Unnumbered Data Packet + KNX_COT_NDP = 0x01, // Numbered Data Packet + KNX_COT_UCD = 0x02, // Unnumbered Control Data + KNX_COT_NCD = 0x03, // Numbered Control Data +} knx_communication_type_t; + +/** + * KNX/IP header + */ +typedef struct __knx_ip_pkt +{ + uint8_t header_len; // Should always be 0x06 + uint8_t protocol_version; // Should be version 1.0, transmitted as 0x10 + uint16_t service_type; // See knx_service_type_t + union + { + struct { + uint8_t first_byte; + uint8_t second_byte; + } bytes; + uint16_t len; + } total_len; // header_len + rest of pkt. This is a bit weird as the spec says this: If the total number of bytes transmitted is greater than 252 bytes, the first “Total Length” byte is set to FF (255). Only in this case the second byte includes additional length information + uint8_t pkt_data[]; // This is of type cemi_msg_t +} knx_ip_pkt_t; + +typedef struct __cemi_addi +{ + uint8_t type_id; + uint8_t len; + uint8_t data[]; +} cemi_addi_t; + +typedef union __address +{ + uint16_t value; + struct + { + uint8_t high; + uint8_t low; + } bytes; + struct __attribute__((packed)) + { + uint8_t line:3; + uint8_t area:5; + uint8_t member; + } ga; + struct __attribute__((packed)) + { + uint8_t line:4; + uint8_t area:4; + uint8_t member; + } pa; + uint8_t array[2]; +} address_t; + +typedef struct __cemi_service +{ + union + { + struct + { + // Struct is reversed due to bit order + uint8_t confirm:1; // 0 = no error, 1 = error + uint8_t ack:1; // 0 = no ack, 1 = ack + uint8_t priority:2; // 0 = system, 1 = high, 2 = urgent/alarm, 3 = normal + uint8_t system_broadcast:1; // 0 = system broadcast, 1 = broadcast + uint8_t repeat:1; // 0 = repeat on error, 1 = do not repeat + uint8_t reserved:1; // always zero + uint8_t frame_type:1; // 0 = extended, 1 = standard + } bits; + uint8_t byte; + } control_1; + union + { + struct + { + // Struct is reversed due to bit order + uint8_t extended_frame_format:4; + uint8_t hop_count:3; + uint8_t dest_addr_type:1; // 0 = individual, 1 = group + } bits; + uint8_t byte; + } control_2; + address_t source; + address_t destination; + uint8_t data_len; // length of data, excluding the tpci byte + struct + { + uint8_t apci:2; // If tpci.comm_type == KNX_COT_UCD or KNX_COT_NCD, then this is apparently control data? + uint8_t tpci_seq_number:4; + uint8_t tpci_comm_type:2; // See knx_communication_type_t + } pci; + uint8_t data[]; +} cemi_service_t; + +typedef struct __cemi_msg +{ + uint8_t message_code; + uint8_t additional_info_len; + union + { + cemi_addi_t additional_info[]; + cemi_service_t service_information; + } data; +} cemi_msg_t; + +typedef enum __config_type +{ + CONFIG_TYPE_UNKNOWN, + CONFIG_TYPE_INT, + CONFIG_TYPE_BOOL, + CONFIG_TYPE_STRING, + CONFIG_TYPE_OPTIONS, + CONFIG_TYPE_GA, +} config_type_t; + +typedef enum __feedback_type +{ + FEEDBACK_TYPE_UNKNOWN, + FEEDBACK_TYPE_INT, + FEEDBACK_TYPE_FLOAT, + FEEDBACK_TYPE_BOOL, + FEEDBACK_TYPE_ACTION, +} feedback_type_t; + +typedef enum __config_flags +{ + CONFIG_FLAGS_NO_FLAGS = 0, + CONFIG_FLAGS_VALUE_SET = 1, +} config_flags_t; + +typedef struct __message +{ + knx_command_type_t ct; + address_t received_on; + uint8_t data_len; + uint8_t *data; +} message_t; + +typedef bool (*enable_condition_t)(void); +typedef void (*callback_fptr_t)(message_t const &msg, void *arg); +typedef void (*feedback_action_fptr_t)(void *arg); + +typedef uint8_t callback_id_t; +typedef uint8_t callback_assignment_id_t; +typedef uint8_t config_id_t; +typedef uint8_t feedback_id_t; + +typedef struct __option_entry +{ + char *name; + uint8_t value; +} option_entry_t; + +typedef struct __config +{ + config_type_t type; + String name; + uint8_t offset; + uint8_t len; + enable_condition_t cond; + union { + option_entry_t *options; + } data; +} config_t; + +typedef struct __feedback_float_options +{ + uint8_t precision; +} feedback_float_options_t; + +typedef struct __feedback_action_options +{ + void * arg; +} feedback_action_options_t; + +typedef struct __feedback +{ + feedback_type_t type; + String name; + enable_condition_t cond; + void *data; + union { + feedback_float_options_t float_options; + feedback_action_options_t action_options; + } options; +} feedback_t; + +typedef struct __callback +{ + callback_fptr_t fkt; + enable_condition_t cond; + void *arg; + String name; +} callback_t; + +typedef struct __callback_assignment +{ + address_t address; + callback_id_t callback_id; +} callback_assignment_t; + +class ESPKNXIP { + public: + ESPKNXIP(); + void load(); + void start(); + void start(ESP8266WebServer *srv); + void loop(); + + void save_to_eeprom(); + void restore_from_eeprom(); + + callback_id_t callback_register(String name, callback_fptr_t cb, void *arg = nullptr, enable_condition_t cond = nullptr); + void callback_assign(callback_id_t id, address_t val); + + void physical_address_set(address_t const &addr); + address_t physical_address_get(); + + // Configuration functions + config_id_t config_register_string(String name, uint8_t len, String _default, enable_condition_t cond = nullptr); + config_id_t config_register_int(String name, int32_t _default, enable_condition_t cond = nullptr); + config_id_t config_register_bool(String name, bool _default, enable_condition_t cond = nullptr); + config_id_t config_register_options(String name, option_entry_t *options, uint8_t _default, enable_condition_t cond = nullptr); + config_id_t config_register_ga(String name, enable_condition_t cond = nullptr); + + String config_get_string(config_id_t id); + int32_t config_get_int(config_id_t id); + bool config_get_bool(config_id_t id); + uint8_t config_get_options(config_id_t id); + address_t config_get_ga(config_id_t id); + + void config_set_string(config_id_t id, String val); + void config_set_int(config_id_t id, int32_t val); + void config_set_bool(config_id_t, bool val); + void config_set_options(config_id_t id, uint8_t val); + void config_set_ga(config_id_t id, address_t const &val); + + // Feedback functions + feedback_id_t feedback_register_int(String name, int32_t *value, enable_condition_t cond = nullptr); + feedback_id_t feedback_register_float(String name, float *value, uint8_t precision = 2, enable_condition_t cond = nullptr); + feedback_id_t feedback_register_bool(String name, bool *value, enable_condition_t cond = nullptr); + feedback_id_t feedback_register_action(String name, feedback_action_fptr_t value, void *arg = nullptr, enable_condition_t = nullptr); + + // Send functions + void send(address_t const &receiver, knx_command_type_t ct, uint8_t data_len, uint8_t *data); + + void send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit); + void send_2bit(address_t const &receiver, knx_command_type_t ct, uint8_t twobit); + void send_4bit(address_t const &receiver, knx_command_type_t ct, uint8_t fourbit); + void send_1byte_int(address_t const &receiver, knx_command_type_t ct, int8_t val); + void send_1byte_uint(address_t const &receiver, knx_command_type_t ct, uint8_t val); + void send_2byte_int(address_t const &receiver, knx_command_type_t ct, int16_t val); + void send_2byte_uint(address_t const &receiver, knx_command_type_t ct, uint16_t val); + void send_2byte_float(address_t const &receiver, knx_command_type_t ct, float val); + void send_3byte_time(address_t const &receiver, knx_command_type_t ct, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds); + void send_3byte_time(address_t const &receiver, knx_command_type_t ct, time_of_day_t const &time) { send_3byte_time(receiver, ct, time.weekday, time.hours, time.minutes, time.seconds); } + void send_3byte_date(address_t const &receiver, knx_command_type_t ct, uint8_t day, uint8_t month, uint8_t year); + void send_3byte_date(address_t const &receiver, knx_command_type_t ct, date_t const &date) { send_3byte_date(receiver, ct, date.day, date.month, date.year); } + void send_3byte_color(address_t const &receiver, knx_command_type_t ct, uint8_t red, uint8_t green, uint8_t blue); + void send_3byte_color(address_t const &receiver, knx_command_type_t ct, color_t const &color) { send_3byte_color(receiver, ct, color.red, color.green, color.blue); } + void send_4byte_int(address_t const &receiver, knx_command_type_t ct, int32_t val); + void send_4byte_uint(address_t const &receiver, knx_command_type_t ct, uint32_t val); + void send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val); + + void write_1bit(address_t const &receiver, uint8_t bit) { send_1bit(receiver, KNX_CT_WRITE, bit); } + void write_2bit(address_t const &receiver, uint8_t twobit) { send_2bit(receiver, KNX_CT_WRITE, twobit); } + void write_4bit(address_t const &receiver, uint8_t fourbit) { send_4bit(receiver, KNX_CT_WRITE, fourbit); } + void write_1byte_int(address_t const &receiver, int8_t val) { send_1byte_int(receiver, KNX_CT_WRITE, val); } + void write_1byte_uint(address_t const &receiver, uint8_t val) { send_1byte_uint(receiver, KNX_CT_WRITE, val); } + void write_2byte_int(address_t const &receiver, int16_t val) { send_2byte_int(receiver, KNX_CT_WRITE, val); } + void write_2byte_uint(address_t const &receiver, uint16_t val) { send_2byte_uint(receiver, KNX_CT_WRITE, val); } + void write_2byte_float(address_t const &receiver, float val) { send_2byte_float(receiver, KNX_CT_WRITE, val); } + void write_3byte_time(address_t const &receiver, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) { send_3byte_time(receiver, KNX_CT_WRITE, weekday, hours, minutes, seconds); } + void write_3byte_time(address_t const &receiver, time_of_day_t const &time) { send_3byte_time(receiver, KNX_CT_WRITE, time.weekday, time.hours, time.minutes, time.seconds); } + void write_3byte_date(address_t const &receiver, uint8_t day, uint8_t month, uint8_t year) { send_3byte_date(receiver, KNX_CT_WRITE, day, month, year); } + void write_3byte_date(address_t const &receiver, date_t const &date) { send_3byte_date(receiver, KNX_CT_WRITE, date.day, date.month, date.year); } + void write_3byte_color(address_t const &receiver, uint8_t red, uint8_t green, uint8_t blue) { send_3byte_color(receiver, KNX_CT_WRITE, red, green, blue); } + void write_3byte_color(address_t const &receiver, color_t const &color) { send_3byte_color(receiver, KNX_CT_WRITE, color); } + void write_4byte_int(address_t const &receiver, int32_t val) { send_4byte_int(receiver, KNX_CT_WRITE, val); } + void write_4byte_uint(address_t const &receiver, uint32_t val) { send_4byte_uint(receiver, KNX_CT_WRITE, val); } + void write_4byte_float(address_t const &receiver, float val) { send_4byte_float(receiver, KNX_CT_WRITE, val);} + + void answer_1bit(address_t const &receiver, uint8_t bit) { send_1bit(receiver, KNX_CT_ANSWER, bit); } + void answer_2bit(address_t const &receiver, uint8_t twobit) { send_2bit(receiver, KNX_CT_ANSWER, twobit); } + void answer_4bit(address_t const &receiver, uint8_t fourbit) { send_4bit(receiver, KNX_CT_ANSWER, fourbit); } + void answer_1byte_int(address_t const &receiver, int8_t val) { send_1byte_int(receiver, KNX_CT_ANSWER, val); } + void answer_1byte_uint(address_t const &receiver, uint8_t val) { send_1byte_uint(receiver, KNX_CT_ANSWER, val); } + void answer_2byte_int(address_t const &receiver, int16_t val) { send_2byte_int(receiver, KNX_CT_ANSWER, val); } + void answer_2byte_uint(address_t const &receiver, uint16_t val) { send_2byte_uint(receiver, KNX_CT_ANSWER, val); } + void answer_2byte_float(address_t const &receiver, float val) { send_2byte_float(receiver, KNX_CT_ANSWER, val); } + void answer_3byte_time(address_t const &receiver, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) { send_3byte_time(receiver, KNX_CT_ANSWER, weekday, hours, minutes, seconds); } + void answer_3byte_time(address_t const &receiver, time_of_day_t const &time) { send_3byte_time(receiver, KNX_CT_ANSWER, time.weekday, time.hours, time.minutes, time.seconds); } + void answer_3byte_date(address_t const &receiver, uint8_t day, uint8_t month, uint8_t year) { send_3byte_date(receiver, KNX_CT_ANSWER, day, month, year); } + void answer_3byte_date(address_t const &receiver, date_t const &date) { send_3byte_date(receiver, KNX_CT_ANSWER, date.day, date.month, date.year); } + void answer_3byte_color(address_t const &receiver, uint8_t red, uint8_t green, uint8_t blue) { send_3byte_color(receiver, KNX_CT_ANSWER, red, green, blue); } + void answer_3byte_color(address_t const &receiver, color_t const &color) { send_3byte_color(receiver, KNX_CT_ANSWER, color); } + void answer_4byte_int(address_t const &receiver, int32_t val) { send_4byte_int(receiver, KNX_CT_ANSWER, val); } + void answer_4byte_uint(address_t const &receiver, uint32_t val) { send_4byte_uint(receiver, KNX_CT_ANSWER, val); } + void answer_4byte_float(address_t const &receiver, float val) { send_4byte_float(receiver, KNX_CT_ANSWER, val);} + + bool data_to_bool(uint8_t *data); + int8_t data_to_1byte_int(uint8_t *data); + uint8_t data_to_1byte_uint(uint8_t *data); + int16_t data_to_2byte_int(uint8_t *data); + uint16_t data_to_2byte_uint(uint8_t *data); + float data_to_2byte_float(uint8_t *data); + color_t data_to_3byte_color(uint8_t *data); + time_of_day_t data_to_3byte_time(uint8_t *data); + date_t data_to_3byte_data(uint8_t *data); + int32_t data_to_4byte_int(uint8_t *data); + uint32_t data_to_4byte_uint(uint8_t *data); + float data_to_4byte_float(uint8_t *data); + + static address_t GA_to_address(uint8_t area, uint8_t line, uint8_t member) + { + // Yes, the order is correct, see the struct definition above + address_t tmp = {.ga={line, area, member}}; + return tmp; + } + + static address_t PA_to_address(uint8_t area, uint8_t line, uint8_t member) + { + // Yes, the order is correct, see the struct definition above + address_t tmp = {.pa={line, area, member}}; + return tmp; + } + + private: + void __start(); + void __loop_knx(AsyncUDPPacket &packet); + + // Webserver functions + void __loop_webserver(); + void __handle_root(); + void __handle_register(); + void __handle_delete(); + void __handle_set(); +#if !DISABLE_EEPROM_BUTTONS + void __handle_eeprom(); +#endif + void __handle_config(); + void __handle_feedback(); +#if !DISABLE_RESTORE_BUTTONS + void __handle_restore(); +#endif +#if !DISABLE_REBOOT_BUTTONS + void __handle_reboot(); +#endif + + void __config_set_flags(config_id_t id, config_flags_t flags); + + void __config_set_string(config_id_t id, String &val); + void __config_set_int(config_id_t id, int32_t val); + void __config_set_bool(config_id_t id, bool val); + void __config_set_options(config_id_t id, uint8_t val); + void __config_set_ga(config_id_t id, address_t const &val); + + callback_assignment_id_t __callback_register_assignment(address_t address, callback_id_t id); + void __callback_delete_assignment(callback_assignment_id_t id); + + ESP8266WebServer *server; + address_t physaddr; + AsyncUDP udp; + + callback_assignment_id_t registered_callback_assignments; + callback_assignment_t callback_assignments[MAX_CALLBACK_ASSIGNMENTS]; + + callback_id_t registered_callbacks; + callback_t callbacks[MAX_CALLBACKS]; + + config_id_t registered_configs; + uint8_t custom_config_data[MAX_CONFIG_SPACE]; + uint8_t custom_config_default_data[MAX_CONFIG_SPACE]; + config_t custom_configs[MAX_CONFIGS]; + + feedback_id_t registered_feedbacks; + feedback_t feedbacks[MAX_FEEDBACKS]; + + uint16_t __ntohs(uint16_t); +}; + +// Global "singleton" object +extern ESPKNXIP knx; + +#endif diff --git a/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino b/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino new file mode 100644 index 000000000..02621bbc6 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino @@ -0,0 +1,159 @@ +/* + * This is an example showing a simple environment sensor based on a BME280 attached via I2C. + * This sketch was tested on a WeMos D1 mini + */ + +#include +#include + +// WiFi config here +const char* ssid = "myssid"; +const char* pass = "mypassword"; + +#define LED_PIN D4 +#define UPDATE_INTERVAL 10000 + +unsigned long next_change = 0; + +float last_temp = 0.0; +float last_hum = 0.0; +float last_pres = 0.0; + +config_id_t temp_ga, hum_ga, pres_ga; +config_id_t hostname_id; +config_id_t update_rate_id, send_rate_id; +config_id_t enable_sending_id; +config_id_t enable_reading_id; + +Adafruit_BME280 bme; + +void setup() { + pinMode(LED_PIN, OUTPUT); + Serial.begin(115200); + + hostname_id = knx.config_register_string("Hostname", 20, String("env")); + enable_sending_id = knx.config_register_bool("Send on update", true); + update_rate_id = knx.config_register_int("Update rate (ms)", UPDATE_INTERVAL); + temp_ga = knx.config_register_ga("Temperature", show_periodic_options); + hum_ga = knx.config_register_ga("Humidity", show_periodic_options); + pres_ga = knx.config_register_ga("Pressure", show_periodic_options); + + knx.callback_register("Read Temperature", temp_cb); + knx.callback_register("Read Humidity", hum_cb); + knx.callback_register("Read Pressure", pres_cb); + + knx.feedback_register_float("Temperature (°C)", &last_temp); + knx.feedback_register_float("Humidity (%)", &last_hum); + knx.feedback_register_float("Pressure (hPa)", &last_pres, 0); + + // Load previous config from EEPROM + knx.load(); + + // Init sensor + if (!bme.begin(0x76)) { + Serial.println("Could not find a valid BME280 sensor, check wiring!"); + } + + // Init WiFi + WiFi.hostname(knx.config_get_string(hostname_id)); + WiFi.begin(ssid, pass); + + Serial.println(""); + Serial.print("[Connecting]"); + Serial.print(ssid); + + digitalWrite(LED_PIN, LOW); + while (WiFi.status() != WL_CONNECTED) { + digitalWrite(LED_PIN, HIGH); + delay(250); + Serial.print("."); + digitalWrite(LED_PIN, LOW); + delay(250); + } + digitalWrite(LED_PIN, HIGH); + + // Start knx + knx.start(); + + Serial.println(); + Serial.println("Connected to wifi"); + Serial.println(WiFi.localIP()); +} + +void loop() { + knx.loop(); + + unsigned long now = millis(); + + if (next_change < now) + { + next_change = now + knx.config_get_int(update_rate_id); + + last_temp = bme.readTemperature(); + last_hum = bme.readHumidity(); + last_pres = bme.readPressure()/100.0f; + + Serial.print("T: "); + Serial.print(last_temp); + Serial.print("°C H: "); + Serial.print(last_hum); + Serial.print("% P: "); + Serial.print(last_pres); + Serial.println("hPa"); + + if (knx.config_get_bool(enable_sending_id)) + { + knx.write_2byte_float(knx.config_get_ga(temp_ga), last_temp); + knx.write_2byte_float(knx.config_get_ga(hum_ga), last_hum); + knx.write_2byte_float(knx.config_get_ga(pres_ga), last_pres); + } + } + + delay(50); +} + +bool show_periodic_options() +{ + return knx.config_get_bool(enable_sending_id); +} + +bool enable_reading_callback() +{ + return knx.config_get_bool(enable_reading_id); +} + +void temp_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_temp); + break; + } + } +} + +void hum_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_hum); + break; + } + } +} + +void pres_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_pres); + break; + } + } +} diff --git a/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino b/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino new file mode 100644 index 000000000..fc2400b7b --- /dev/null +++ b/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino @@ -0,0 +1,183 @@ +#include + +// WiFi config here +const char* ssid = "ssid"; +const char* pass = "pass"; + +// Common +#define LED_PIN 13 + +// For Basic and S20 +#define BTN1_PIN 0 +#define CH1_PIN 12 + +// For 4CH +#define BTN2_PIN 9 +#define CH2_PIN 5 +#define BTN3_PIN 10 +#define CH3_PIN 4 +#define BTN4_PIN 14 +#define CH4_PIN 15 + +typedef enum __type_option +{ + SONOFF_TYPE_NONE = 0, + SONOFF_TYPE_BASIC = 1, + SONOFF_TYPE_S20 = 2, + SONOFF_TYPE_4CH = 3, + SONOFF_TYPE_4CH_PRO = 4, +} type_option_t; + +option_entry_t type_options[] = { + {"Sonoff Basic", SONOFF_TYPE_BASIC}, + {"Sonoff S20", SONOFF_TYPE_S20}, + {"Sonoff 4CH", SONOFF_TYPE_4CH}, + {"Sonoff 4CH Pro", SONOFF_TYPE_4CH_PRO}, + {nullptr, 0} +}; + +config_id_t hostname_id; +config_id_t type_id; + +typedef struct __sonoff_channel +{ + int pin; + int btn_pin; + config_id_t status_ga_id; + bool state; + bool last_btn_state; +} sonoff_channel_t; + +sonoff_channel_t channels[] = { + {CH1_PIN, BTN1_PIN, 0, false, false}, + {CH2_PIN, BTN2_PIN, 0, false, false}, + {CH3_PIN, BTN3_PIN, 0, false, false}, + {CH4_PIN, BTN4_PIN, 0, false, false}, +}; + +void setup() +{ + pinMode(LED_PIN, OUTPUT); + pinMode(BTN1_PIN, INPUT_PULLUP); + pinMode(BTN2_PIN, INPUT_PULLUP); + pinMode(BTN3_PIN, INPUT_PULLUP); + pinMode(BTN4_PIN, INPUT_PULLUP); + pinMode(CH1_PIN, OUTPUT); + pinMode(CH2_PIN, OUTPUT); + pinMode(CH3_PIN, OUTPUT); + pinMode(CH4_PIN, OUTPUT); + Serial.begin(115200); + + // Register the config options + hostname_id = knx.config_register_string("Hostname", 20, String("sonoff")); + type_id = knx.config_register_options("Type", type_options, SONOFF_TYPE_BASIC); + + channels[0].status_ga_id = knx.config_register_ga("Channel 1 Status GA"); + channels[1].status_ga_id = knx.config_register_ga("Channel 2 Status GA", is_4ch_or_4ch_pro); + channels[2].status_ga_id = knx.config_register_ga("Channel 3 Status GA", is_4ch_or_4ch_pro); + channels[3].status_ga_id = knx.config_register_ga("Channel 4 Status GA", is_4ch_or_4ch_pro); + + knx.callback_register("Channel 1", channel_cb, &channels[0]); + knx.callback_register("Channel 2", channel_cb, &channels[1], is_4ch_or_4ch_pro); + knx.callback_register("Channel 3", channel_cb, &channels[2], is_4ch_or_4ch_pro); + knx.callback_register("Channel 4", channel_cb, &channels[3], is_4ch_or_4ch_pro); + + knx.feedback_register_bool("Channel 1 is on", &(channels[0].state)); + knx.feedback_register_action("Toogle channel 1", toggle_chan, &channels[0]); + knx.feedback_register_bool("Channel 2 is on", &(channels[1].state), is_4ch_or_4ch_pro); + knx.feedback_register_action("Toogle channel 2", toggle_chan, &channels[1], is_4ch_or_4ch_pro); + knx.feedback_register_bool("Channel 3 is on", &(channels[2].state), is_4ch_or_4ch_pro); + knx.feedback_register_action("Toogle channel 3", toggle_chan, &channels[2], is_4ch_or_4ch_pro); + knx.feedback_register_bool("Channel 4 is on", &(channels[3].state), is_4ch_or_4ch_pro); + knx.feedback_register_action("Toogle channel 4", toggle_chan, &channels[3], is_4ch_or_4ch_pro); + + knx.load(); + + // Init WiFi + WiFi.hostname(knx.config_get_string(hostname_id)); + WiFi.begin(ssid, pass); + + Serial.println(""); + Serial.print("[Connecting]"); + Serial.print(ssid); + + digitalWrite(LED_PIN, LOW); + while (WiFi.status() != WL_CONNECTED) { + digitalWrite(LED_PIN, HIGH); + delay(500); + Serial.print("."); + digitalWrite(LED_PIN, LOW); + } + digitalWrite(LED_PIN, HIGH); + + // Start knx + knx.start(); + + Serial.println(); + Serial.println("Connected to wifi"); + Serial.println(WiFi.localIP()); +} + +void loop() +{ + knx.loop(); + + // Check local buttons + check_button(&channels[0]); + if (is_4ch_or_4ch_pro()) + { + check_button(&channels[1]); + check_button(&channels[2]); + check_button(&channels[3]); + } + + delay(50); +} + +bool is_basic_or_s20() +{ + uint8_t type = knx.config_get_options(type_id); + return type == SONOFF_TYPE_BASIC || type == SONOFF_TYPE_S20; +} + +bool is_4ch_or_4ch_pro() +{ + uint8_t type = knx.config_get_options(type_id); + return type == SONOFF_TYPE_4CH ||type == SONOFF_TYPE_4CH_PRO; +} + +void check_button(sonoff_channel_t *chan) +{ + bool state_now = digitalRead(chan->btn_pin) == HIGH ? true : false; + if (state_now != chan->last_btn_state && state_now == LOW) + { + chan->state = !chan->state; + digitalWrite(chan->pin, chan->state ? HIGH : LOW); + knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); + } + chan->last_btn_state = state_now; +} + +void toggle_chan(void *arg) +{ + sonoff_channel_t *chan = (sonoff_channel_t *)arg; + chan->state = !chan->state; + digitalWrite(chan->pin, chan->state ? HIGH : LOW); + knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); +} + +void channel_cb(message_t const &msg, void *arg) +{ + sonoff_channel_t *chan = (sonoff_channel_t *)arg; + switch (msg.ct) + { + case KNX_CT_WRITE: + chan->state = msg.data[0]; + Serial.println(chan->state ? "Toggle on" : "Toggle off"); + digitalWrite(chan->pin, chan->state ? HIGH : LOW); + knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); + break; + case KNX_CT_READ: + knx.answer_1bit(msg.received_on, chan->state); + } +} diff --git a/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino b/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino new file mode 100644 index 000000000..bea5093f3 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino @@ -0,0 +1,142 @@ +/* + * This is an example showing a simple environment sensor based on a BME280 attached via I2C. + * It shows, how the library can used to statically configure a device without a webserver for config. + * This sketch was tested on a WeMos D1 mini + */ + +#include +#include + +// WiFi config here +const char* ssid = "myssid"; +const char* pass = "mypassword"; + +#define LED_PIN D4 +#define UPDATE_INTERVAL 10000 + +unsigned long next_change = 0; + +float last_temp = 0.0; +float last_hum = 0.0; +float last_pres = 0.0; + +Adafruit_BME280 bme; + +// Group addresses to send to (1/1/1, 1/1/2 and 1/1/3) +address_t temp_ga = knx.GA_to_address(1, 1, 1); +address_t hum_ga = knx.GA_to_address(1, 1, 2); +address_t pres_ga = knx.GA_to_address(1, 1, 3); + +void setup() { + pinMode(LED_PIN, OUTPUT); + Serial.begin(115200); + + callback_id_t temp_cb = knx.callback_register("Read Temperature", temp_cb); + callback_id_t hum_cb =knx.callback_register("Read Humidity", hum_cb); + callback_id_t pres_cb =knx.callback_register("Read Pressure", pres_cb); + + // Assign callbacks to group addresses (2/1/1, 2/1/2, 2/1/3) + knx.callback_assign(temp_cb, knx.GA_to_address(2, 1, 1)); + knx.callback_assign(hum_cb, knx.GA_to_address(2, 1, 2)); + knx.callback_assign(pres_cb, knx.GA_to_address(2, 1, 3)); + + // Set physical address (1.1.1) + knx.physical_address_set(knx.PA_to_address(1, 1, 1)); + + // Do not call knx.load() for static config, it will try to load config from EEPROM which we don't have here + + // Init sensor + if (!bme.begin(0x76)) { + Serial.println("Could not find a valid BME280 sensor, check wiring!"); + } + + // Init WiFi + WiFi.hostname("env"); + WiFi.begin(ssid, pass); + + Serial.println(""); + Serial.print("[Connecting]"); + Serial.print(ssid); + + digitalWrite(LED_PIN, LOW); + while (WiFi.status() != WL_CONNECTED) { + digitalWrite(LED_PIN, HIGH); + delay(250); + Serial.print("."); + digitalWrite(LED_PIN, LOW); + delay(250); + } + digitalWrite(LED_PIN, HIGH); + + // Start knx, disable webserver by passing nullptr + knx.start(nullptr); + + Serial.println(); + Serial.println("Connected to wifi"); + Serial.println(WiFi.localIP()); +} + +void loop() { + knx.loop(); + + unsigned long now = millis(); + + if (next_change < now) + { + next_change = now + UPDATE_INTERVAL; + + last_temp = bme.readTemperature(); + last_hum = bme.readHumidity(); + last_pres = bme.readPressure()/100.0f; + + Serial.print("T: "); + Serial.print(last_temp); + Serial.print("°C H: "); + Serial.print(last_hum); + Serial.print("% P: "); + Serial.print(last_pres); + Serial.println("hPa"); + + knx.write_2byte_float(temp_ga, last_temp); + knx.write_2byte_float(hum_ga, last_hum); + knx.write_2byte_float(pres_ga, last_pres); + } + + delay(50); +} + +void temp_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_temp); + break; + } + } +} + +void hum_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_hum); + break; + } + } +} + +void pres_cb(message_t const &msg, void *arg) +{ + switch (msg.ct) + { + case KNX_CT_READ: + { + knx.answer_2byte_float(msg.received_on, last_pres); + break; + } + } +} diff --git a/lib/esp-knx-ip-async-udp/keywords.txt b/lib/esp-knx-ip-async-udp/keywords.txt new file mode 100644 index 000000000..489634883 --- /dev/null +++ b/lib/esp-knx-ip-async-udp/keywords.txt @@ -0,0 +1,94 @@ +# datatypes +address_t DATA_TYPE +callback_id_t DATA_TYPE +callback_assignment_id_t DATA_TYPE +config_id_t DATA_TYPE +enable_condition_t DATA_TYPE +callback_fptr_t DATA_TYPE +knx_command_type_t DATA_TYPE + +# methods +setup KEYWORD2 +loop KEYWORD2 +GA_to_address KEYWORD2 +PA_to_address KEYWORD2 +callback_register KEYWORD2 +callback_assign KEYWORD2 +config_register_string KEYWORD2 +config_register_int KEYWORD2 +config_register_ga KEYWORD2 +config_register_bool KEYWORD2 +config_get_string KEYWORD2 +config_get_int KEYWORD2 +config_get_ga KEYWORD2 +config_get_bool KEYWORD2 +config_set_string KEYWORD2 +config_set_int KEYWORD2 +config_set_ga KEYWORD2 +config_set_bool KEYWORD2 +feedback_register_int KEYWORD2 +feedback_register_float KEYWORD2 +feedback_register_bool KEYWORD2 +feedback_register_action KEYWORD2 +send_1bit KEYWORD2 +send_2bit KEYWORD2 +send_4bit KEYWORD2 +send_1byte_int KEYWORD2 +send_1byte_uint KEYWORD2 +send_2byte_int KEYWORD2 +send_2byte_uint KEYWORD2 +send_2byte_float KEYWORD2 +send_3byte_time KEYWORD2 +send_3byte_time KEYWORD2 +send_3byte_date KEYWORD2 +send_3byte_date KEYWORD2 +send_3byte_color KEYWORD2 +send_3byte_color KEYWORD2 +send_4byte_int KEYWORD2 +send_4byte_uint KEYWORD2 +send_4byte_float KEYWORD2 +write_1bit KEYWORD2 +write_2bit KEYWORD2 +write_4bit KEYWORD2 +write_1byte_int KEYWORD2 +write_1byte_uint KEYWORD2 +write_2byte_int KEYWORD2 +write_2byte_uint KEYWORD2 +write_2byte_float KEYWORD2 +write_3byte_time KEYWORD2 +write_3byte_time KEYWORD2 +write_3byte_date KEYWORD2 +write_3byte_date KEYWORD2 +write_3byte_color KEYWORD2 +write_3byte_color KEYWORD2 +write_4byte_int KEYWORD2 +write_4byte_uint KEYWORD2 +write_4byte_float KEYWORD2 +answer_1bit KEYWORD2 +answer_2bit KEYWORD2 +answer_4bit KEYWORD2 +answer_1byte_int KEYWORD2 +answer_1byte_uint KEYWORD2 +answer_2byte_int KEYWORD2 +answer_2byte_uint KEYWORD2 +answer_2byte_float KEYWORD2 +answer_3byte_time KEYWORD2 +answer_3byte_time KEYWORD2 +answer_3byte_date KEYWORD2 +answer_3byte_date KEYWORD2 +answer_3byte_color KEYWORD2 +answer_3byte_color KEYWORD2 +answer_4byte_int KEYWORD2 +answer_4byte_uint KEYWORD2 +answer_4byte_float KEYWORD2 + +data_to_1byte_int KEYWORD 2 +data_to_2byte_int KEYWORD 2 +data_to_2byte_float KEYWORD 2 +data_to_4byte_float KEYWORD 2 +data_to_3byte_color KEYWORD 2 +data_to_3byte_time KEYWORD 2 +data_to_3byte_data KEYWORD 2 + +# constants +knx LITERAL1 \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/library.properties b/lib/esp-knx-ip-async-udp/library.properties new file mode 100644 index 000000000..ff2607bdc --- /dev/null +++ b/lib/esp-knx-ip-async-udp/library.properties @@ -0,0 +1,10 @@ +name=ESP KNX IP Library +version=0.4 +author=Nico Weichbrodt +maintainer=Nico Weichbrodt +sentence=ESP8266 library for KNX/IP communication. +paragraph=Build your own IoT devices with KNX/IP connectivity! This library depends on the ESPAsyncUDP library. +category=Communication +url=https://github.com/envy/esp-knx-ip +architectures=esp8266 +includes=esp-knx-ip.h \ No newline at end of file From 4f4b7928b7dcf21f62b7263efa4c22635ead3e0e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:10:31 -0300 Subject: [PATCH 112/435] Update README.md --- lib/ESPAsyncUDP-master/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ESPAsyncUDP-master/README.md b/lib/ESPAsyncUDP-master/README.md index 997a7cc26..6568fa372 100644 --- a/lib/ESPAsyncUDP-master/README.md +++ b/lib/ESPAsyncUDP-master/README.md @@ -1,4 +1,6 @@ # ESPAsyncUDP +_Library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21)_ + Async UDP Library for ESP8266 Arduino [![Build Status](https://travis-ci.org/me-no-dev/ESPAsyncUDP.svg?branch=master)](https://travis-ci.org/me-no-dev/ESPAsyncUDP) [![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) From a4296b0b3fac3426919809409c9746534ca832a2 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:14:51 -0300 Subject: [PATCH 113/435] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 44b1a9e90..1046be791 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,7 @@ So, for example, if 2 devices that are configured with the 1/2/5 for turning on/ This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). -Further development will change the library to the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch -Also, it is needed to change on _esp-knx-ip.h_ file the following: +Further development will change the library to the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change on the _esp-knx-ip.h_ file the following: ``` #define MAX_CALLBACK_ASSIGNMENTS 20 #define MAX_CALLBACKS 20 @@ -30,7 +29,7 @@ Also, it is needed to change on _esp-knx-ip.h_ file the following: ``` The ESP KNX IP library also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) -A copy of both libraries with modifications is available: +Copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP From 93a4e25f8dc198acddad3c37def222c26e2e1c2c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 01:26:39 -0300 Subject: [PATCH 114/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1046be791..526db7387 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Sonoff-Tasmota (KNX MOD) +# Sonoff-Tasmota ( KNX MOD ) This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to integrate [KNX Protocol](https://www.knx.org/knx-en/index.php) to its features. Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) @@ -11,7 +11,7 @@ _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff- The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. -Each device has a physical address (like a MAC) as 1.1.1 and that address is used for configuration purposes. +Each device has a physical address ( like a MAC ) as 1.1.1 and that address is used for configuration purposes. Each device can be configured with group addresses as 1/1/1 and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the 1/2/5 for turning on/off their outputs, and other device send _Turn ON_ command to 1/2/5, both devices will turn on their outputs. From beda4fad5b2248e7c3f7beeba96b7c508266ae6a Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 05:30:04 -0300 Subject: [PATCH 115/435] Update en-GB.h --- sonoff/language/en-GB.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index c4bc2e063..1f2c18183 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -371,7 +371,7 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" From cc74d54b2e9d9c5a1278fbd1d08a7cf83e34265f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 06:08:10 -0300 Subject: [PATCH 116/435] Add files via upload --- .github/Config_Menu.jpg | Bin 0 -> 82130 bytes .github/KNX_menu.jpg | Bin 0 -> 99360 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/Config_Menu.jpg create mode 100644 .github/KNX_menu.jpg diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c95486f46ce557620aaae78e94d19378cef4ce1 GIT binary patch literal 82130 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

" + ""; + + +void HandleKNXConfiguration() +{/* + if (HTTP_USER == webserver_state) { + HandleRoot(); + return; + } + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_CONFIGURE_KNX); + + String page = FPSTR(HTTP_HEAD); + page.replace(F("{v}"), FPSTR(S_CONFIGURE_KNX)); + page += FPSTR(HTTP_HEAD_STYLE); + page.replace(F("340px"), F("530px")); + page += FPSTR(HTTP_FORM_KNX); + page.replace(F("{kna"), String(KNX_physs_addr.pa.area)); + page.replace(F("{knl"), String(KNX_physs_addr.pa.line)); + page.replace(F("{knm"), String(KNX_physs_addr.pa.member)); + if ( Settings.flag.knx_enabled ) { page += F(" checked"); } + + page += FPSTR(HTTP_FORM_KNX2); + for (byte i = 0; i < KNX_MAX_device_param ; i++) + { + if ( device_param[i].show ) + { + page += FPSTR(HTTP_FORM_KNX_OPT); + page.replace(F("{vop}"), String(device_param[i].type)); + page.replace(F("{nop}"), String(device_param_ga[i])); + } + } + page += F(" -> "); + page += FPSTR(HTTP_FORM_KNX_GA); + page += FPSTR(HTTP_FORM_KNX_ADD_BTN); + page.replace(F("{btnval}"), String(1)); + for (byte i = 0; i < Settings.knx_GA_registered ; i++) + { + if ( Settings.knx_GA_param[i] ) + { + page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW); + page.replace(F("{opval}"), String(Settings.knx_GA_param[i])); + page.replace(F("{optex}"), String(device_param_ga[Settings.knx_GA_param[i]-1])); + KNX_addr.value = Settings.knx_GA_addr[i]; + page.replace(F("GAfnum"), String(KNX_addr.ga.area)); + page.replace(F("GAarea"), String(KNX_addr.ga.line)); + page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + } + } + page += FPSTR(HTTP_FORM_KNX3); + page += FPSTR(HTTP_FORM_KNX_GA); + page.replace(F("GAfnum"), F("CBfnum")); + page.replace(F("GAarea"), F("CBarea")); + page.replace(F("GAfdef"), F("CBfdef")); + page += FPSTR(HTTP_FORM_KNX4); + for (byte i = 0; i < KNX_MAX_device_param ; i++) + { + if ( device_param[i].show ) + { + page += FPSTR(HTTP_FORM_KNX_OPT); + page.replace(F("{vop}"), String(device_param[i].type)); + page.replace(F("{nop}"), String(device_param_cb[i])); + } + } + page += F(" "); + page += FPSTR(HTTP_FORM_KNX_ADD_BTN); + page.replace(F("{btnval}"), String(2)); + for (byte i = 0; i < Settings.knx_CB_registered ; i++) + { + if ( Settings.knx_CB_param[i] ) + { + page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW2); + page.replace(F("{opval}"), String(Settings.knx_CB_param[i])); + page.replace(F("{optex}"), String(device_param_cb[Settings.knx_CB_param[i]-1])); + KNX_addr.value = Settings.knx_CB_addr[i]; + page.replace(F("GAfnum"), String(KNX_addr.ga.area)); + page.replace(F("GAarea"), String(KNX_addr.ga.line)); + page.replace(F("GAfdef"), String(KNX_addr.ga.member)); + } + } + page += F("
" D_DOMOTICZ_IDX " {1
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

O? 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 z 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 Date: Thu, 5 Apr 2018 06:39:18 -0300 Subject: [PATCH 117/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 526db7387..c8069ad5e 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff- The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. -Each device has a physical address ( like a MAC ) as 1.1.1 and that address is used for configuration purposes. +Each device has a physical address ( like a MAC ) as 1.1.0 and that address is used for configuration purposes. -Each device can be configured with group addresses as 1/1/1 and that address can be used for sending/receiving commands. -So, for example, if 2 devices that are configured with the 1/2/5 for turning on/off their outputs, and other device send _Turn ON_ command to 1/2/5, both devices will turn on their outputs. +Each device can be configured with group addresses as 2/2/1 and that address can be used for sending/receiving commands. +So, for example, if 2 devices that are configured with the 2/2/1 for turning on/off their outputs, and other device send _Turn ON_ command to 2/2/1, both devices will turn on their outputs. ## Requirements ## From e860d7fab71015b9a13a0f8b44736a3ff4c3c825 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 06:42:13 -0300 Subject: [PATCH 118/435] Add files via upload --- .github/KNX_menu.jpg | Bin 99360 -> 100710 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg index 2484f1cff3cf397ae279cd58bfbdf3a91ed91543..eb8204d1c83b0c5a78162f711f0b5cafa9493827 100644 GIT binary patch literal 100710 zcmeFZcUV(hw=Wt*snVng2vI@lAl-sQML;-*amYR) zHg+Mly$%Qz0%1DAUJ$>_I==B5A5F$-W?47KV-kq zfkVeME^-K4-sL>*C88Ocn9U`7sk~Lxs-G&SbTQdZ*8v zHN0$OY;wia?8ePo);70o?VRpAySTc!d-(YJ`3Il_gTkLiL`Frm)bNJ&lm^JRKY zZeD&t;hUnj6_r)hHMQ^S>f72oI=i|*^n4r`92y=O{WdmEo|&DSU-&fjve?F#@KyU_jv$22$&U9{x9>m__#Gn7l@ zQet*_E4Qqc6;v@C|H1(g%YV~c;=i&PNqiQ8SQ@*1hKN|EgAe`7O)jwzg5bRk$5i4QGftO*`~aF4B_elw`UIfGqPka)t$q3DS~o@m4`+&4HqAIIXJ-Q{B3p%r$L#=G0F z)v$I_WNo=_!VF5l!+)oMFxPYF-p8LM6~Y0kLlMVq%N9OX-S3fP6y@c9z#Al}TJKK4 z9sFej71|x_h=q#_Aun8yKk+_8=zSf);y*^)Y7JH=Z{b+#tR9vEfTXg|xD+19#Ld>w zsv`^ipMURI8~c98-K$G39OEI~KYu_xWKdbbW&<_ez~aRghx8$+HwAcDpJk)~sZz|f z;YJ5Ct<-&MTrY;As^;P!_Ul&kMc>30!Qc#4<;jynE`OBVlzmm!duZCp) zR2s$7xigz@Hjtk+hE65Qb=U}1 z^(g6I4GoJl+-*BUPzJ@CVhtE50EK&y{Y}6p5)|e_I>Imju(`|WJU^A)X|hI=-LZ$v zr|$cBqTU$ZyXXA0;#9_`L*zT2CsWMZc05mr2kX?shl@-1iKRIVvk(I?`?PP@uOZiM zI`$w`n>|PrjA~8*P7qdFMy3R4QE~bfG^tieBm9#_VOQU@^ptG}gCP^?&hd81KeR_^ z+T|0g0WU;qWgj6PG2@7+zIeRE9>mQY9|e;nx}1MJeJ$UMysdAP1ZLQ@puG}}Ql`lizeQFK~s$nol7?LV`IeO0dopQVdF{+2TA5|Ps4EGH;%^f_`y z0FXCfh{HQc`-#)>MDYjB3dqc3qs?a+T9Jb+p*p{eIzLsoBMuP{&%3&ADyu&s>F=%Q z{Ku83J3K!MX3UY68C?$5qn4Wj&l}nkP=r6D962 zgx>=cr(IcKVV!=rW<>m2T6a|E4kjooyw5)1mAe!#P4OEHJ1=%vOYw_tktnx9bJ4jC zn{UyRq>eV$LveL>E*<^J(g{h!V^l8noLe3=Tm%nX03_ z%H%SyEhIAPB&C}%?(Z(IX_vhbUai2e(F|t=I{FewR3G?CTrtKPfCW3h+@Sh# ztS~rf-SH)xO%G>piA$=5XS;nZsgJD1s^y}s4iCS)slfB;3!JBs!~4xt5p|2j`*?Ph zEo2nN#}Ww{z*k-?--Uh0IQmynpS^3=eMdW=Px*P@a{nI0^%+do$5fKvcB}WWf@mD! zX3=}U_xeEwN|K-pBM zBA~YPS3`a=>=i6>4^ke`ibOoAhei0|K@&z%FJ^uH+AS92r!|QV>uU`dPyeVoPN_yv zAc^({2j`zUTK#ZK>y-%(#?o%k9f3#^)pxW7f5et?juwv5|BB(I^Y#f&{H(pWj~M3Xn-1sK`nnq`foQElqGy&)Wi-d&!!&5Z9A>u>z5D z`&9=6QwWs`=><*lRdoofbH^sSS%x)?e+Q-T(vrKFr)ZzZ>mP@qA2uc29oC7Gug1Uusx>!mB9h7Ln^C- zB-m&Usz?zti2<92j^Vqe*pp3ZQ`sfo0p80NhMhJBA{Ci4?st(z>)NfEdL~%yf^Ppy zi7DTRf!NkhP!7yp8i~a%H7mdeK-)6qXob;b)#p!M@hufF$6Ge1SkX`V-@a?@EqYNd zv}J!flZ##ZDWj^`F@JE`0LzrOz_uwouDG%6LKNGB+@O-^^Wdlg7!RS9h!sxSYzvfM z2PcWnpnFowp0X6FM-rJCw#rDplrJABbB4!W=nG$_z19ENCvoM^Vo&BF(EUv3HfuAh zn+-naO|ZTYr9y-OPNT2R^+VOfm=I}JOI_ViCfa&@V)&^8^-S~Ss- z;=Eptv~2g}C7Vhm#N{u&2bI2DdL#GzG$h&4kSfgLqf_@F-9(9yZY)&)?i-Ix@zD@* z#(C;zLNr4>IJ?69En<=G=J{zryS&F!PIJXp7L9)tdOc!+csq3A`9Uw+{^Y#;-VrmK zm7zc^LG!JnwS&swdINj|#tEBFCsHlou~;!R*mNF?lO_vOIXicLysc)u{F_;V)7q9d>>$v5ntgRBADFLs{{pab8^)Uhi(7Sg^vpu zRzK>~9NuLBkqsE``hasJAEFV`h2YtP+=WKV2vZ%4Xvx=^>2~8#aWuAlq+-ctz-+W1 zp*7x?)uUprn11SG-POzUmwrtQ0^L>se%A}z+77EAbrq|Rjnbb0!PI4=uLbYwh&0^O zsm@XfSanL~+@@NLb|_qzfO@ED9{Y2`07&{RpkPLh#+t6R)@y=i{gU)o$Xz z`hC-bgU1X7?={HT5Hy&fdyxBt_#knH5R(22T+?U+L53-HD~^FG{{H>v6ts!DIj|&I z0DPSpfvNj_;FR^f_+mC3LA?BoxIo-XVe*R1#Y92(ShH$q@8=K;!qR?4wl6V!+tilKA4T|Z|#Y@I`E3x+2CfUw0sdu z+w^}QWc}NK>%Zyu!#QBQwrB*#alf0f+iySlmv~MK4EBDPz5m%*?mv1TXC`Z4 z4^p)Ud9nv_>I<(Y;F?dMGvHMG(~VnvKEVO+869M&%NHDN4^zu?Dm8xcg`hmJ)IiRa zG^bg_%9{;*ym;zy3;cv25Hw^f)Yn)2Yh)Hm@7CWa2Ccr|>WVDQoIc2m(?8)yZ8sTW z*mzA#dt1P7Q0bYas*@{+F5MG0aJSe+x`gpSxhykaUPcUB?@B;zh=0c1m zeUuh&OBHgnp)DTbGq`y0imZW4iXXRe;*;LUm+Tr&p|1}9oVsQcRCvFkY->}^Yu*xh zbFg7$M>#}(RemLS_a2&)P64>{7-oQLiA5=3ZWowSTbKS3c}D-keYbq$XU^6K9B#WF zKK((?$1!(+s7Q2!0xHl}{I_lvSJ)mz0_J?4*J#ieFN{ob%arcVxTc%BBU9lT;XNg z-Uqf3Sw1{fVbJmyyKis%7nyyrv9_!xxomF#ynJsw)~?R6x9N4WLlgX`Q&yf1uu1h{ z@la+76QeA?CZM0D`{QOKwYw7sS*#6G%P#q;WsspYdHJ2G=p3IgN5qt3vVR-o(e9-( z$TpVF2H5X9gM+yQLjC6k$AR#|kTFLXwUijX>i4+80;ZQ{_oYFn%JgJ!g4<;2Crhtt z*$W@)G#kV%jc?i*FBd07t9s zAOLc!U05jQ{%{$?^DTqjKBKSJJT$oITj|U9v5JVpfdSo0+yb92I*iH6FMx5QJUw(5 ziEV9V$pE3W5ZHKo2Z?z=X}!rc_O5LbOLoZEgBajrc9`H4tL{OPmJSVGbU5eul3||ggzwIMS%#eSn()XT&cirp<&l!r5gz?Su1b@mF zE5k$Sdw;2KsWpYh0{Tp7oH44+?a=7PE43W$W-s3H`8*u;*QFU9ZB+ngw(ZD~cZXpOFWAyQU$jrP zD?e`x#?_|8n@2e{H`&rUR*NT4?Xg8%-xfy_s z0k){&EN;&i#4HAYaMB?46PHE8at?F9#HE__tj2 z-ZfV^7=#D(M(F`SDAkq4^T9Av zoOfO3C1JQl(@ihd7=#N`o$h{dSPErIdeA?mMzqp zOVDXtI%CljoR>4|TZ%HtzB!Z2Z?Wm^Xu*n_gEOR@K--WAl!FH467ZU~JX;+f0tIcJ zzP@g~e0tKIaYNPC`nvSs_zwvxIp@oNsbov}bGLv4nI0#Mxz0qj^Z^Rp6w5L+iQI?7 zNaX;Liy3A^I+OcW;nl;O^n~68ZkGgWL`q8YCG;OblFZVUEHzG1J?2dMu7;O+#r==^ zUtc(`B_#)svr0k~L&gym-5sl<*w$epSM#w&EWiHaHyGHU=f->^O{XR_Ko{p?Ju-jC z)W7`C8}81WYNu`ojZ)kl#lmve^Eq-}1uDLEP$Q9w@|a7R!>jk3$!)O;#s78E`+rB2 z$M>iI9T&Mg;ZgWag8v;r8A<#DK>hDo_T~RpJoN}G&C(yoa1Hp{$0dj(XncLqI=A{) z9{8fCAIG@5oqXk`U9P5kVGq)oWcGyL1Mw6ljxtc@Go(0j(h9>vTIVTXSQ0ihu3m#8 z;gx$b?@-3|9!_kHO8kIG7of9zK8N^YTfgF^FwRtV7PomR5Z4l-MuUYlUgRg{x1|?^ zzJ(V|$)Pm(!`y7|DD!iD5eTB#tCFVBfjq+H@$l}qmF7Pv8C<`oM#WUN&LFg%w;gFh4*6vOSu zyH{+C^Y#%lSI0pn3$}Y9q#HrKgLsBLq>8bh#fdQ30NBiVDGOTR(}j^TwJPR0^I_H8 zXgJDQ_RqxJmwL)wqEE}7%*!P;w}Tev9^>vX5e1uYqHj{alSCMSC7AQXwD#FH@gPL3 z`dwCARby3CqU*rqedv9a{qR3)B9$6Kk66DzS>vlCn`hJV)2%~L8B|fY_chJIn}lT+ zVlJd$vy(>y(f0sW(?>xeY5Z{D2ulvm< zOm8>4re2je$UeFXYlTG$F@yorEVQK#K?sO;v(^}|DJFRMc-Up;d^B(`Q#G%&B11+Qi6A%IuA?rk!o1^VaH5zbqf45E<6TorTI>6LcInRc}Eh zAEOmtt_2Kd9BlO!-`HZTMyoOq++C$bB5PTZG}TyHL;j&8UCSzk!>0*(#OVwe)e`Xx zB&?|>xCn%pfvkHo`*5{`)yywGWG75e|9&RNz{e>3UUJe}6HFZGgM<*Uo zC~SxG1Iwn&KmFACF|g4M)oXNh!8_AjcdmLHmYET?J@KP(8}Cw#Cw@UMV!Nild96%VIZL?=nD<2fOSBH zaNMLlNLw?|DG*nU;_$fIE8^v0_t>3|liXgp7hvKgk+7azjv&wkKx(!V8kQhcg$8+Bfo1~)Nos&>vCEFp%N5cY2|qH+Bozk37Xt8qrxs2>?ltS4GD= z-?)1>HeVh5X5T47d{`TMIYsN-*p(Gwp$9I$boB{N7O(j#)PsTWn5>a( zC?h+x35BBR>IVQH^C}Ei&Mwk^QolAS)%x}!fzA7Mk2v^FR}=jkmXeYudJ3c{<9m<< zq86nj{lYgwH+;g7#k)02h(}P3QDTfofH=yDy4;n?O^Y`WrYZLpjV*^?$@ud0;X5a! zPFe2$UZqfFu1EPV13aag-!XGw(A!-7bKb|_#R$izdot%B~^_M6qUXf>g+ z>s|D@(7HOQfbLxxFd{+e-`zE3eO9FPbzmzq>!x9$sRqI$`XQUsl^La_jaUBuAE(3j+2X)E-3sh6LrNO)LnY9hadSmqWC%(?p9s$lMZ) zOz^|)9EVB5s0a`iuK7V8-x8f6Qb+5%nL^M6D4;%w-9C#0kdscVXj~VLA-+gtyuKha z{GWU6bT-{TT&zYx$5+F+*M9whnA9wf491oktU;Reor2pC@U46*&+5&nlu z_kZW`|2O-PZ$@Au7S6S}99)8t18Vc!Ss2~bfB@Hm?t^gcB9XheiN_6ZasHyK+W!WP zim=TPt5+Eb#QoTnTzl+dtrfw8Aj%|Q=R5(~J&3d91n3*6RWDbwEG{;KuGBOX~*e<+4cww!Q4 zY=rwSFcila#b<90E1oeaZrH3Qs)e32`)D_2PlK{CPxO%*&&PIPUu$d=g0*KI&y+Rv%C( z;L2AQ7-CO&AJEXS`g#2;162?58_o>pfL$d4F;kkXId;Mq_=MhI7`ZQqK_9MP6ua9Y z^G7uod-&XabB2tgEVKlB07lkKBg;H7IMz;{z)Hm(9<+1dSVF$mD0|Xg-SAn&D)52v zv^1N;g!i}aL5)7RnYlKZ>vkhJO+GhG21-XEQXJg;;lWDU2@_ zM2E4~FwsV&dUWGS^(wc`hEkak(_i`M`CaEXf(?QF&i7oct~0(L+#*qL;eeCGc;W+8 z0=|-fYZR6b-E;<^GiUtFi5x)l!edn_he)G1BzIO#o!df8*7b}mKPFjTN|*Ru<&^uS z>6?2HC4|e!wz918g!hZ;g(lWx{43Z2;&cj8Lc4FgkKPDm&+@KD`d5VXPYH$_4QMl^ zZZ_9T8V!64ewDXo?k@H-<(>YJ!@vRcx$cHu$3eOVXzOi(_US%`;0|I8+3Bd*?+f~9 z1Q6i(wM^$TTYf`j_1TEwxfr>S2ai5XpJQkn01djksbe^HI z{uZ0m)u$I91)jM5@noR6#9i(hc%A`BA+>5^9#4}1r8J5Lt!>$w`YKZx=pjp4a2i#` zE|IIH?4wIn$u4zaC)3TvogU4Q_pUw18GO}pc1S!LwB>0*@W$z%Ik+QDd z!H5~cPKS~XKLoeqlOU6ox6N_@=yG|5;WUjAgyq?URl2evGh6jbzxtRyW%tOzz|)hN zUY~;x(0IWF15JwzWr&Ql)3X7c$J5fTw?{GZ;^B?XWSHobgS+l1)#S)sHHwZD5?T1{ z`p8IJg}KWCC+wdO*+MoZK1=f}y-4>gUBxm|Ox7-XsxCEeVLt&V7LUL#HwI){!?Hkm z&#>e%>a@x3b{HGbaA&A=6{9E?{s!Su@0n-aHRYDm+>k!bE$8lP+HNZPmTTY&HK{_E zg`f|D-JLLZm~|l>jAJ9H0_HFFLth&C$qv+olEu(wai@gHwUTv_?0I$}E= z|L)lte-*=*ybOGHxVF`^gz8CHdNqDpJOEySoL3#qURRIR*Vr{?Jf`X;=qt}c`4}S9 zhoJ2 zjPU*t-fbeEz7Y-9z7tX`vX73eW2isY8QvW3@cJ@kcI~dlm$yLNnaL;Zgs~N(j-rHi z@Jo~JB>4Pe?BZ1iLjNKFO+oO13s)`WExG)TcwDit8xE@P!7i&(fT0S*kW#^Vfe8Exil%3`$R| z8NSJh<>67t0eOS}o~Ccl;sNVrPBwrz>YEQ3<_``hJhnjBGDL(~76FzZ#$EtphQeY= z`fn2BcY^1yjfNQCVi}XdV06n;;>JXgO|?xdYm~UA%MjXwR3v!rK?)|#n%+J+_z$k* z-xXA78M}c5%kQMoUlUave}C>@e*UE(P~z_b=l(kv^*49*7vkilgOg_E=d@VxG61dTEUE{TJs;G@oU3HMcPkeLdyH2r+r+=H9zo($Cf#va9 zon1~0hBmqaW*HBFQB+te8s7@zFTr5tqc$5neXd)Wbo6A~b)wwT^AdQ>j@G68%I{fA z{venr(tMvLB-z_|uW4b!(kcK{o*aD7x*Mb9DoR1Io1kp|(T3D#(IhZoupwg+;*U;a z@pJZT!^axv&Onbqdqa`IVNA$qcVzWz>t*|0{V9&7^-Kcd^rhsW%9*$NCL&1~-`knNM@Tpsy9$Kf)t(|Az7abv4= zRc0vBtuHnm-WF^~hCRjb(v0^YSB9!y!#ZpXWE*MM-dc~G$Q1Ug>v&T`k~a)JS8hD5BIj~XG>i3ZXEp_q6><&OK3qnL-1jsG^uv% zfmHYrbhgr|5xSAM62c7Rfv&O_PSA@bNT_hM+sOmH82-}0L)nQD zq6p~SKt2QqlP0>tCTeD#9`T0TotW*k**>E)Tdthq4-qyME!M;OZaH}VJYl;xVCrg)zH#S`5aCXI&xg9)f~60 zQ#pOKMfdrm+kd?F(jJx^D42?=BE7mbroF1*6Wsg5X>%EuuR!QS0P=8#SYUEkmzQE3La>-Gj z22lO+0e*pW|H{ECW{piU!oe(!XV>Zk`{4sIo#wkP*jDEWx-3n+mB0?Pw>ArW4N=70 z-n}|%J#~yW7X*9C(C~Z!{gnB`4r%hetaZOxO*Y=^pseTH^-oQt)pP2I#eKuoV~F`& zgQX*q>*|q2Zie!Vr}*{ep++4t^Ag=Nz-C=d&G)Bs>QxUtCCyKHuOOUXd6MZUAZE5N znk6>$knwmL+>5}qCFNlYO}GI19e}eKDao9Yuv$}&tg1@97$}ExYU97F!Yf-Wy&A5M zHdtr1*LSmC{d$`(E`9i9dc7cni)w(Kv!D`KJfNQgVmVuI?D*|u49HG|#bH^;o9{3i zLyj_BsWucJs@Qp0hYXZTY72Iq;m7CRv2~~D*N?{BPlgW_raa6$cD%Map>$^AV2IB( zQ&)6bAd3FS8EC{+xp7ow?L6zQy1$uv1vUrJ37dytKjfDO2dL665Uf>N^?V4my}DgsNj1QBJ2jja*H z8~e|n-hw@q52RV* zE`KNJ=6fX}%gUiN($gy9Va8qRWKDU2`%eB_xADAUzWMrVu`|K?96T-Y(}{SWWd}O) z#RzQfJvxBZVpqs|;XVZE11x1Y_aNDNZA3s3+~G5dSn_26%6dxT!A=)|b|Sh2I-X!~ z(gCB8P9mTG@f0jrn7o!~P&y-*IWu8geMaj}H&T$}m!D-cIq+_LIh_m28#s9&!~%dY=Qh^v>$=%o1=$a%1Wep+~U+xM;oUe6;mCJ08jtg**(a?bGGu| zHwnOX*55~@@OwlGV5O_TGdM8!0Mp`8CVp7D$k9gNBA^((YJp51^5k8;1{R!bY?O^|L}wAZMXGZb98EiZ?HsQAfWvD7wrL&7Z3|08~$~0FfSiK^s-r8SvjTvk9z%Gy1Ix|eD?+2pX)@*5yM710G#Un|9-nUcl=@+p5vRCMRj)n6qgs!pt^4^}QPfA_)*n^a11_gIaTru(# zBYmc<*)f02_pMBV_CX3y#xq1#TM^JI{C&l5!(uO=ik2;NPTZ^2W+SUu*qBJQUF+f?|Be7yddd=G@Mfx;ce1?ob1 zw#s;X&}{>FQmxSEBm3*PkDtwM5qSP1KZM}7e8H|S#d~erHh9TqTf1~i{L}U;2B^fN zOMN(d&`D8Xv{m|pAp;SHariVTT!nFQI%AdJgQZHv$5gA@TPE!w)hj#wJe>_*yB`tS zjvvsh?ua^k>nLNBHoVFZ{6T+86Ii*pdxjypE5EW!&VYr6oGYg}u!;(hJFog?LZ!Y- zxM)agYVdW9i62Y1RMs%KfBY0-m*40>g-7nmf+f{S{O5CoPtR_BDB3X1U$=Jc{GIuk ze#O$GVj1Gf-K46fu0nF4KIaS}iV9c_v?;&*Qj%tRB3V31i|eUToNKGF*nEiNHP9`# zx`G`u98ZI0IcpKhh2bt(mXR1V5dX#17lq#+n+K_sEQ_ zebD!!Q|AWQ*7bCB@07=lrc4GiNEzxcC#yC+NMVR1*clj-033f-wFjxjt$+>?Kdm0E zR*JEura7pVbb}Th3WVD^z)c>B+1m#`oZ2RPM&9QM72ICAos{zyP-k(Qf`_&2fY-aX zZZp*C0H+y&D16oIqz6(y#;<{S?iTe~uAlUHU-aFI_s{5%tz$1FvK|~1?pk2V-AyeN z7#xXFZckiU#cEUhwu)oiPZ*5UzHK6&gC?CdVF(J$xJH3ezs6ROB1*wiF+#LnI)e6; zr8IaVb!n5KS0Xpw;MjwdYh%+7G^#cDqxPQU$qT1;yQ|UQafmTmWha(u!)HiOrnLYF zGE>$HaE66(L}a7E(mm_CsyeNQChG<7YHXd9c*Q296g{)0P=AuL?k~K!_qOV__4l0` zmbWz)ZS=la9iFmXx`pS%w#pHwQ_t=}R=mL7TGPnH8z_6oNRO21Bo|M3SOGx`?i9JI zX0?3FA7Lja%fI-@Xe}wfVuphSl&JAy7I*%x;%BOP3yr}JL}a0Zeyy{F1Vop2=*2mc zcC9|Lcc3+kk8a;lp-6XB9x(|P+xXV-e7<<&XuKqc2K?oEU4W^fvUz4>_m^KT_y8Q)5M$5#A%|mcK0CeQ`Qv@ZC{LW=$$)3N z-ho%k7Iwm?TlXNbm;R0$i{Dy?t~w&A6JYrsMkm)p>}*;L239!LUbe(?Zu*jY(5m~j z@qFa1KZTxO+!3--JcF8Rrf|huSv#Uu&-6{O)4fKT4FKZwXFAR=f1;DR+C4I*IF!0( zDpXkgtZQd7N&3x1KFLRdEw+pu)AB^1CWi*tD3PQY0{HDCjiC00Be5*C7nlI*g+0j2 z-Zng-`y16P-786VaA5f(=3#`p4n-p|qwaxT!x?1P zoAp5)YM2%Qqk4ikv~w6loSV3qYLXPfy*9Nz;??+4V1U@5O1Wvm+0JVcrkwkQHaVVf z!N~Un#(CC1gZce)EKvkq1mQeJ$5TKXi964j+}?wj?8+z3Q@U66KW}e)S#N@e_}XaH zE#{MII1^fEV;#5$IgbpdjmA|GIT-h-lV8e<7I$tHgBaCZXR_^5{6esP#KDe()518X zMf3ddV(iGsx$}1YgpJ;48@7UkMAM(#`+XcOclR;&jli4<-zv$tcAVgM_u6z)SmQbO zJOsS(!Mie-dL%xj^KbB}CAc6lg7G6pTnic$xG>^KN);<6Y4R0G(YH?@$(2ktDO z-rSfnLW(5)xm{KMpPSN~vL!inuzy~VpZ~IEPtJni=GY$O18Ew*%isGOrGxod3}{*Y z*Jw(>5*nK*jPq3YSNO-AB#Nb*i}NEwg$h zx6hGHR#Iq{9pl|#FeAXQ!jXf}Ces%E!^cK^&%5mG-lF-}*v_?-k$*WK%^8Pny$G8d^@Hy6yFqt?$_efSFxvZP ze)At3>u;_VgoTdawwR!rus-V4vNHUX=x_g(%KevD{iDR*#7rTJ{ja5~;1TZJf1L6D z%lU4R-{oz8XKVj@HULD_T7R!|P5({zx@!O1oBmDx+h4fgSO2ev2mVh8Y$PJ{f~^DS zo!yGSaMMiMSlmN?+-aQ#n)WZXUmJ|K&HOUGSIgy^dE?;2cNZeBy!fnfWvf^6;nY%L z77Z2WON5|Zua9gtnYEkr`^E*Ts}oj#9hw^d$Td{itMcqpj#8Mp1_WZNv!1p>$TFOT z0}28Z)!76?amkwSH*U@Q2c=t8oeJ9X#+NK4k4$r`RV%)J$Kij{bX)_pum>D|11cxh zR|FldLt^Un*;*$Tnvd(064pGHsk*u5ne};ePxa=}^Fgq9nL~JT07G68JWx&y`|_Ik zPX9uEyu7)tBjP2UQ1xrA5wHGZUC(pki+LjtM15B)4KKu?*qmwzH1ebOb*z(V|yqTeWsPnSys7 zxSJ~Q`bE8`zxpOMwl$&ylV1)Re+W_f&Do7bE`Nt`lXmre%eZ60gHQzWLLcIY#T7 zfX`SEJNtl>0TlZjcT$yl7xeIwBa~|8KyouUL)D3j*rZ7Fe41uvT8On7S2bLmPdlZ- z!Le3oJQ)+aQ0d^gT$)Kb|Apx6k{nEw!oJ*jk%YSbvGv6om%h-QvQS!OyQ4hNG^5V; zZ7C!mwo%r}smP-S=9&`Hg9>^mHpXbn(VOygB_B>1TW3r8f(218m1GCpo%V48%ZzCO z9mt~m-OE9^XwQxJ4?Vx;u+-3%7gJ80Vom@8ZAIF78>s7iR_e-p_#<$pv2q_PSUVpjl6y{o|ZY(k$mQB zm65X##L|in)+YVwkckY;3YBz*G+b`~Nd)BaU0_O=VM+wSB@nwlqZdOuo#cNla@w?3Zi*C>L-~|V>2)}uspN>UTxYZrTY#sevfpE4;Z-I zKJ?b44~%;skmBrYT8ZPAmM_r!3Ni?Q`Ybl8QIwp~&?GkXi%%Wih~igy-owS^dI|L_ zMrG!X*`<#WmMIFgC~Z=Yh2c8Z%Y0^jy_W2=!EY-zX|BQZR;n~u_npXd8s;1@8?As*e1q3_eB5k!5tdefVQwuu~f}5lm z11Z|-lTDaNhfb5ad3Ex|#`5N>(CiwdGBS8%pc@-jE8`pMIe6%GA6}Fhk98A}#yBwX zFlSgqh!pJrvHfvhv<%0vzHJ#gs=XOHK>1N#HCRv;;pw|;QWI>znTq^bt7TWOV);Ro zy}n0+t4_HTRonX#){w$%uSuX+vpkm9VI~4oSqV8reGC#TMYjh|P}S)bwWt`o?pPh% z(-5_bK{1x3%>mdC>l_F1fzN&b;HEc%D;e)3*z9N72;h@rBFa)2Nn8t;# z_{nlcU~IF{Z}%X#%fi`%#95;`MA5XaD>!Y1^ z{Oik*Z|TvsdhE&)QCqGX?DRrl8V??2{XDxGon+gb4-I9U!xE&7JQMur$bgLAp2Y?i ztqJX$Nl(w`)hwOvtk3K^+azGv4YRuxNQkW#kiq=H{IjH40Mt2~PEW&bI#vi{n2+}9 zV2NZH4tn|~=vvqgoL(4^nHp2iwMRx>5c@T=8cclI7`4xN1|)~wfJp*ImRa0<^fq|B zNdKI8OB41E2(A#ugN=H5J*Ys@XD?Ccn)>)Ov9(_P13m036r^U%iAn9J-Sb!98f&_5 zSP+%HCxdo-Sb4@~R`E`a>9t?zAoFLtBgQ|4{1Z0|jVPq1))DNH4SxG@f>yAqd2h4jXU*Hk}p%V;LRwI%RL}Ngva?RN;9f zGlMp?K>#_syV$1&N58^cVB=1<4M5TC=g06`(BSYYYAY{Wh-&W^rT&_?m~A|Zu{rL4 zw4D2Fd+O=vgKW<6&XO?o@fYy>~+=psx^|3D6q+rEV# zmxM;I939%&#jDQj8a4KpBpP({EZ0d~JG@Wp14peU&*;Kx3oe>?2&_a>e*&H-k8JRw zX<5<4!f9tw0%-8B=Vbh}^J|WCLi*%CVAf^lQXK(_`R*OD8Y@YDzxGVKqQpM4E*7nL1 zh?9q6ue{Jt8Mf@w@^VoBQBBw`jeocHV$s-pDS3Al)$=Rlg=QF%9Xt;~CI|!8TlRw( z!yFGuwG7oE@t}z64XX*e9;9ricamAjEjtO>M7jN8@$pjoC0*Na;**SvfIWHg@%4dK z?Q<05)mq~FLBcWgLlwEy6aJBxA4y2_iYm1T-V9S-GogC{@Ae?V42vAF+B-iN9S360 zN|1zVRsj|!SckadP0WDTW!N@2Rz*fS^QQk}dlQ>`R(|l>9^Q$fZ_kpOjptWDa2mC_ zogyI*AJ3l{b)j!#YGF4Y5IqQyXT#Ato-A23zY7pwHYFmoOpnK06F%_ynH-qO=HZh6 zIQhgl2<#r+tO&TarFV?`7tNd(xHhEfJLdPY^dV{{((S>$W6lltUG`si`eZ<;+*IOt z^9c~9q_RF)ld4uJl~mVO-83OI_9l)D#zcfhjkktelVpnZz-s&8;#Q*CDgC(U8PD9v zTh1_LpNeA9pPfEfQ{8l zs6SP5KL7j8pt|55bHsTk0y3+N`C8`&HUefnz(5t|8qC1sriAfiZ(so?3V%kg1zdHTQ z+31UFG`gClP3TzwnGF7& zlzBWwx)_5P+EgwT?qa`|*7h8YGz~Wy*6yO24ve2GSmPV3w-1zhFtVjfTTlqN)L}NT z1(kt$O8d-kQk-d8E&k2=z!;Ti4A?!`cz+TIpeC($-9Xw!48PDL=*;)g4f0VULUPm` z`>aS81D}Qzx3C`)>qe%2&984IVc)80)O$W4e%gI(MH`99MOR+^`fxKrZS>AaPG<1A zYw3%!^~7gfHtZ;KUU-zN+*llr7H%kTPVEBo^3rJcT4o_9`HBQb9k=0+M%n-y<|iZZ+b zI9PQpwHm#XHzkH6`)9woZA+j(kZhAuER(htl5VNaY`1C*{@D><_BA%AIK2nqKkgVb z0q?UHNHaQ7X%n2ZzGkp4fBw9pi5&wxc^H)m)X%m|9S2_WmEfs3h6*6Ao}dpWe}4Y7 zj&`K-j&Ti2FZF)>glQhBtM!NgDeP8k*|`LpE`&JDneXxRRt&?IW@81UIMLKQ{2j$< z@=;|Q4w~KY0oNg+api<#rJlJBx2Ip<(l4$n8_V)nJ?g6|`6AFEe{sFRe6@z<)}0PA z<*>Swthv7OhpzVK0ZH%_C#z4vkhxJEYQW4^R0xcr^i|)JENxVcItb+aKkU7EIMi+b zH?BpLqzENUWvgr@OIc>x>`BNvm`V~8lBJPhijX~oD`F~yEE8r-wi#&j|s=_LYrwl)IH5e zt9LNS9#_8Psd=IZm1VH>!cXl(qwHn6zLNF21KDsH+a`W z){pej);xO(sfEoLByIIT2q>BK8-Tah?Un1?`@4Ajk2i;$?&ln4V(T#jAj`{)jP$Eq zUWmkq`wgJb=6g>L=qp4l$MACsgU=L|$(Zssza9t_JGdxA9e5HhMTOY_1j&wR3_h(6 zyAKVesAvc{LEcl9hr@$4l3zLL^L|v`87HD$6}jVEXj|i{4|y@@PmxBX!Z4&{Tdn8VmSAMDPGF1<-eJ3jV&pIi+&Q=8JHYwiKTX@^M}C~}l5?3|?J|}SMXksv@fbd$O~_d* zvaPTH9j@9SQ%`<%{Ss=9$5HcK_ITJedM+~Bz* zC^g+?Hh&~1?HHF(IkL9G5uw$Q8E-fOqhvtVgRRrT?wm*(Zy+7|OyF62pQ!XQyd9tB z?juU0ZfTuT{^na$G|_)CI=+@xM+?)&H7E)i`{N#Sb=WES9#%3NBzhmn4VcXxDNp4s3#Yvy^w=&OpIyx4f{{ReZzjP-klEmxEj1@xmq1s0m;&g?H zPu#N(GTQA3UDRP&q(4$ttB+_?rhh1cZ*^3qc*kDXRickJf+M_CSA}SV9bh}voFAW^ z^?od^`<5N`#u?$!>VMx~$JlSx!qWcm?K7RP8-M$tV?88u;zgXxnpH5*^R9$y;_@3z z`n#3V$+eZa<`?W3)++#!tehwKGZi8@r}I(Hef@H=cCDU4dPR%XFV9V$=}Qbh)bOA) zMK)BIVhmP`8{4)X%SRFiJ_rdg_&m}`2xBGNp^(j0uFWyCm*JN*2M0b9#mf3S_r5rE zBenmjx`lQ)s<)-8)9L$|dh#S~*!HCD5@;WRYOr}hqJQR{CP)n^gmPt##}am< z498X;E4vZ<2zu9#YM9*>d1ZH2uWvT^Re#^i{tAP{^O7MBk6#&uD&N;?B!AsTX`o5h zC@@bpVMVydI2V}rLVwWD8+DiHo)64x@u)}(T8#l&-ri?P!(Fe^P`w z=jM|$(6Of*AxkobFTTr_AL`7k(F3F5Kz8|`R@N0~V#XF8as=da*3vkK94@Y1Our~^ zkDh&eEo;g=!-5!Uzcbb)bpC{RdILo6T=+_YFx#W?y|W~#%O82l`^V6wVN=s;_hj_F zJw`jUkIxt7gz5>pOXFP*N8YS-Zg7CQRxTwpnzI$;BS#>j>~o%`V|-1W5-7yz#|R7` z+q6kM^`tvgD&=ys_u(3wL}#bk8oBIn+`N~G7cKc%QB0R(NMi_~OEY7p)pz8hBG0${OH>u|hJ*)7`N{nG&1|ph!$T){R-jaUrQHY!=22fXl7S3d&Xx7@nG}|XeEYBdx`1;&_R<_VH8LT3o z=mKgitTos2ST=gY3L(FD?4{_wxnl3cQIgC?XpPL6Y6OOtqoA2PrryovovCuhz4(x} zI|?V?O}{}1_lkO4m@OOYXi%C|cQt=3pPkLxc>=Z2L|u5mRYqT78$x2|$#_D?$wofI z%C|kL{pXBPB39iC62tC$F2nlMW$!+0+b^IK%+o%7MsmrzdU72kwinOEUN1_!ko3cr zILTd%kIX3v&!+Y(5v}BMj&5%CIccW;@XX~;bEYRHZKWY7+B4{({fHVHw=?nZzVri8?dN8+S|;A#6LV@AGH*B9>#yNZ zmKr6u;irqN!Gk&**za^{XJeJY3q(?TX&- zIT%dbT_-?de?61&%FB37WKWhcPb2r)Db#mUa=*oI(c%E6#cYrhl zNN+2LhD77QyD}n9YWdp?_q;iHQ%2$Xv2V|h>=S*NesMAeFwO;G5)C`kfw2v%mp-@= zbCWHqSumE%NO_;Pkxy~=_1<_T$E8SAZ29eC5SmGpc1Dv~bJ@hs?fhDROVIa97Lc{e3Ee*R5#)~H#_-lvvj z2+A2_g$sCi;ouEEK^!}ai`3tk_T ztu02aHP zc5P3uh^Or{f9}bWKlQSz+X3o5>m)^DOt*J?_b?V7K^W$p5uh%S!)~g$@A*FW8nfN* zT`$M{T0Y*_flNKL__`wM+)?;FW%clV#7^H6pAKwM98KVebQ&`hVmS)=vyk0TIn=rV z8`Y^A#?c#t7jFMS+u1s??{KPSXxD+l%4|W_#}6G+z3_xeUg3t6&vHkOpElVg=!{FlO&j~k64(2(2ob>k*1MJ{q!kf z=9#6#C{3{o{`}wL$wv3GPpRJ>U~n|~iWmA8CO?w*&E9jCX1vbLx0@E{9;_`VBn1Vl zwHe7&_Q+bxU5m?0I+Zf`;6>}L9hT}i`sF5*fvOEenwm3DDXM_4`2)l{8ZaRV0c zYOVzLe0h1Aej&6(Ak5TJ6*M?eSDJ$*7N?xq$Z_uoUx$x}qr02Z9CVkQk2ePO#hcE`3&>LOJnn++m)B$vi$feluEIPP4+WxY*Wq6D--htxr|YMkZNV{5+NkX0?2Tc`FudQJ zv-JU(O%QyknoedaaJ#r)))o2}yp%DNRSWN-Zvbj!^KK~KC)vVwlGsn+;DUl#m^)fG zGG>YGR^MgnUmD!+Ds4uCs^>po{Z9a_ZhJDLurW)OIhi)r;bH~|LzFohNU<>F)}`E! z%(n0I^68>`9tzxuP>{W5?mm+ikhFYXZY46H%88tcV?ZOO*_LkUs|jNij;K`~Oc3LR z5a52I!Xi1|Op!6nV^0{~yQoGP>8?i(zs)_TqH(lD`Y$a>v@!II82wT3buOgWh& zZZ(3V9{{7;!gQOXxCq7IA&;{}NImLbrd&m&}2HKjp*lZo)(W=i6|UyqROp6z7~QA>RY7 zgzl+gV#@g*mek~__G<^6!qYYM-5T+Ck6VhVH60!2Tm!A}JlsyM$i_po%=-EBK4Tre zjU>&Uq@`&b~yeI!%Crs|8o_pU*YfKn&p+?milL3tvuO&vJEq?Ow zUn&mD@vyORn0;}g-%+Q(N>TWDb>C6(d&ABqoVp$CC6?~SGZl_P9=l~sylG+2G*pE> zFdk$-XFIoYXGjVv9C2jif#G|^_RI&oPH&EH5n0Rgbr&5Ba*aNH#c$Wk$l1#!Q8#1v zdn!K-dvd`vaqTj173hbO(6$}-=Ir&ZPftsLjZD+}6O6k!);PAp>C$O+t28;g9(qW{kjB~|0XFmryQCO$lpEOuW86t= zG(&;{>+YCw8*B;s923(NQ&8ep&~3?-sz~GQ;rBP?-Th{|&*sS-uj%G5Y3&t`aW6xB z*|m)B3md5zPXGsz*NW2J1gii1v?yK7^)*Da21+h*SxCfzkedEVaW-myZk4s|vCx~| z%GRQqZw?~*lm%GAY{;m0gajp29W;~d__4stjz-P2S)^ zS1Bqvq1jTre(6(l3t+X)EK)QQi~40-Xyu=Si~r9P%B< zpZzx1bT9+El1zVPL;ToQh(R!-Z=rV;eB+qZrU9R|nz0P4|O6q-r%3sQAYT7=~Z_j3@7@ z$lM`R-ne`5YGO8=;D0#>f06(23F2g}%or_J7eJ@B?%sIBfw`C10eGKxJV_QYEv?tH zd}JccSToYG>ZoUa&fNyrw~2!79YWaMiC3w1I}gX<5phm=(l>uvrAtkVOL*}7`wx}_QVXSW-=-E{4bP%>_nFUhzZDGyx5jX+lg9GBO%|8TC#%?ziX zJp1zVX8kc%--NybI;uCcQd|0R5&IKmjM7jm-8lve??;Rx9_osL-X;HSgdl(J*U;8w zcqvH^HJ)UYEx=7uv(Ay@=x~MjL)R8qTiCAB*kc1T!f1|9?rqRVsni1Pg9&j57LQpW(F-TO|jNo?xWw@8jK#2(~{Z(-`;Bvp<8dqaa%%M2S=f6I<( zgo&!UEXp!#s|)1Y1!a^VHTJsivg_2&%ihRL9V0n?CSQf^3F-OCBZ=`wJf;aqk6!{* zhYI5mj-0aqx!i(P@X=N~%+Y=)WBB?DSA(tUiHET%1F+BH&EEZ(QCy2B=6o;Oo3T*G zRqNGNJ(OlpLs3_BG8i|$`(dJZ_*VZ*x$M{p{)xRT(QL-jht&SKn$;u8pQ~D z469VHhtvk;P9L`)MBdx)GUa3}p=d7e^l4Q9l3Dq!r`DR=6_@M)x5INMZdN_=+&liI zRTJwZft(5kxK#|}wj13i7Zu6E0B$%f)S@S>LHknf_&Ql^7AN~?VA@!&+VP^A!I-!b z&-?KQ$Bl81V6N~XK9$%F$!%62BK;Q&^U`ym9%PAsING<6D-KBG)#?v%C^9=JUh zCt&c2XX_FC6M6Jw0gOR5>k#`mT4+pYC&25yWP`JrpB95lv!eJVkHR5uXKhVJ`^IJ< ziZ>P`H-&u=*u3eJz9$>Y@?zf`hlQnr;8`PqhplSE;4Rt>KR+7NAxsUH-uL3zwK&iH zI}f=W3E!)-_s#e|Q4^ath58;(t*h*1v7Kg+v&OzwDW^T<2ZH@;$$H+EU+tV5^ZOfp zyp?>(dac#epVzlfUk;iEY2-aZ5; zAc1|mGYo(^tw|CfCNpydWZ}2AbmjklbLq4*@=sd~^5=c{nJ?Gk-&g+55dGgbOOC)( zquVmb&FMoW8Mz!I#;)7~gwdf2Jf6v$(>-{4but4ui}X7( zgDZbP5oiC!|Gy9d1(B)d5UzaHjw4&J|Gw%U zGr^&ONy^~%VZ=EyAaU_~*0ecXE8l)s$Ax4!S4kNSmR9TO}`0J(-W!?`5-eX0e+c@_bh(g?S3|0f|rgzbxsO!(y*NH@tpQo z)?Kl^^sTy}EyJPNdDzTXK55z$T@i2}0;&Rk7&wISMi*pI&ru=)zSRjVD-nbs7c}rP zY!;#rRJ2Pi^MoYvY148%oZX+gL;eJf@yfi$lVV3=I{d&v0 zZHw&_#%nTTEp)<|dH70NtM|G#CxB^9N_bUY>|uLf8-+gWHfbmu=ka>V`qALv1(~a} z9`ct>!fy^%rdUE-25MyjmHmi{KKB+csXA59G;*Dfnc8%DP=}12;2kvYMK=Jq`u)WJ zdHjxuIji*>YzS*(BVG3d6EQk8F+mCESP1AI1wG$E)u&wo;*o*btpc)lWwJeQp0hpj zDcp{ewtfb@N;oJf9tLlri+zvf_a#JdMp}j8RWQ=8u~-$@o!lf*R5-=ub|Euu1TGM) z_8FL_#NYkWW^M9YKOyC`0j@M@g}@O>{>2C!(UavrH{={mi+yT4*2U5Kyq?V!H4GO47wq2bXbK{6&8bbE6r^j#+Bq0W0(?U#^Iy>l9N#(c{tiEsU29^MDEYXqz*3LD?a9USv;=j3L@w3*%R78l$LrI^1}17W?&g5y@=F8#nYNr` z2?ChUgi+93A$}h8u>;ri4|@P$L)Y(O>Ti{h4q)nUz*+a0*yb2qf7+;X*ekeGf>{6e zR3bGkT0@5r(;C@X3us#LWfmvJQbsNpBUM(P9v4`)Z4{y|Gy)bI#9YESE(Qzc&E0z! z2gx>fdqa31Hm-9(PjB9GDEf>#McYJ~@NM?aj>1Oall%E^I6W(P)Kd`T%Bb#N2*_mu)YauA*tP$NXCR8oqyv|mKH#1_E=s7+HBo|Z91|L2bBU+ zRUY{P^(WlcsyE+*gS1lFV1-c&p!r3{JHlfm(p165meriM|kC zjs-g|8?DG@;!w6DpUBX#vDrdB0dwna2ZbwI{9Uxeju-4J?e-*^8h0-Nz6zwZAZv%dyZ73Awn2! z0`mJ!(c^VlQjFXpwHb$@!uMqx`5SMLDCLnW{z^;j(onBmEdxuc9AQ&dI-rzpj^pJz9tk&X#bu8iY*LbNbma z4Vc}~eKU}Lk|F~Wr92vD`$hJqj|eeQsc-50v6p_S+j9&o$;TB$$6yS50Gd~bCA-jV zM`#V$N35!ySaI?#)jhaKKhq5l&GeQ=*7{g{&`Oj&ni5xX`0FFOf^4L~M6Ji54DZLu zu4tQ;$_k>n&Ty*-ODxK)wf}rZ`bu}|3fW1SfD0A^on*gv782Oj(qe!C0txmUTLl>W zD4Y<3JlD(|A0@`rh!i@26zyU5L!^uU-VmiP=xd|FI|QVhd!H(G*^@F{kUs9(Qe6hJ zseZCs(V>okcnre{7P;0!R~%mmmzH8%t)F9eH)8}j7H*@Sx7gnG2x^55{Z1Edz#Q`A7N?oz$3=JhY4GgKYvS99iV?j%76k$g4U;;3g&i<(e*q)m6fp3sDnB7xl<&5~m z7u1*`+h#4TTez*7iDDO&KGe-8e%W?LN#KZg98`?k4}~$)IFfOJ;Mfx}W~z?nJyZge z%!NZJ#iliS>D%%wozjezh_=Pa7M}#H#tkL$LlsZXD9G)|`gGsERcG35-)TIj%b~c- zy_VndQhK43l?AfH#N_Cj(?Yp>Zo%5Mzcz;j1UsL6}*IJ428K&W=uVe zkI>1>abr@NqaR%J^b{Om(&R6+4$~~3DsjepID}8CsR8V z{qIHU(aDX)S-8pQ{7TvEZv%_?9#Em9Po^agu66&lBg4?caCamFA_NhzFC!8dD`RO< zBt`TY#u$nKm3FYR`wFtV)N77}_pen;=yXrb*2gA#Ex&bT=9g^Q)0DtgHLrtXzOFYx z_NnGDBhtjfIcBP%8bbU-?mVb0*zQB8x>AR3+{$@(Rco7Z>=`$|XzPaWW8FmfKrKy6 zK9xpWQ76~*+zXIbGq(oeex7D+EiDKhR7EdXPWu}h@*4n<5;MtuJzS4;X2Y>`$JXI%xBD9(KS$~1RVA0GP< zCaDhFiZ)K5OTeO+?bJ29Ew^|of3zCZ_bliL^xj)2))VO2RlIMAkfn%$Q_Ao7a z(!twp@3*W^N84|FH68L&>!NTZVw~TY=@<8;o7*HVApR6;82<5X^kM2iLw_1=A6jq& zSAbG@4-r~Onh!F@dkeSRB7VkSvI?2CpFfDA9Y`F1)(dKscloYaf6<^Il6yCG{*B|p ziFfb+#n%O@(qW^53JoL;wz5iE?lko_5wg4ZWeVLhNh}dozPydve5P&Q`joEg**V4G z!e%mZ;rE#7GkpJojgsljKBB-$pU(!3NgZ2$@|fFb(0@l1xoM0>SoyD9#@T;nx`h1Y z6+A&^|7>#p7n*7z-oP%J0g|207_JJ~XLa0m1P}{iv^cV(MsSZRB+`-7*)vrA+#lZB zMu|B-GvcX*hji*?kMnH#bVq2KSM+&7o=u7ue&S>8?LLx?_oS`H^rvL1M`zbGH*yLa z4j#@t>L*WyEl0HQ>_#3*o{iv&nul|R*&)GO>Ow?&Gz9ca9c!vnT!lSsU$@y8Uw_9gvXOO@{cPQmoz~o%pV!<0ZqwQOy%UW5+(?N>u%4|SgmU_-tN{n(_x|fC3&_v zRCKQ%d3R*G%J_TcvTf}GrUOImW=XOuUxy4LN--_w0&KDM7AmG5A>{NOs>qm6e&b$I zRa8BY`$Z#Y12cwKtw#`Ew&j3T<0qZ5*!0|F+;%uQ0nA0K?MQy z%Kw!IbvOq4j4@!D#V=D6zhYifvzThGc6iaTKljV~?tLlm5WU9~O`q6u&~L^Nsg&YrLSX=&JB<{8s}qnabrI1ecby54am(83INX-5Rhgw|?4qfX7CX z)O&smnKn}+3IoRk?fs^uO?8fz*!y^k9On%^EI-M!d4ic30lRKt|9Ru1-gC`~%Rge_ z9x!Fm;fiQVP_HZ9trIpmwVa%w%$=PkeEUJAiH7te1XVzjX)N>zqq8~TE7qL7I&vUb z?;0a5#xIDr%dFt6;K#FG^h^zSyH3phBz>iFs>wju1%sB@bhbzXjB%UREa=AFZq5v< zyFC0oWD95{RF$TpmKvpb-%;Fp{BS$r@F-zD%^BvF?Oy08s#eN{{0`4eDuMnRpI?>7 zLGAkW{3y6;IrVkTT+ym~eJeG%vNx+wt91t8NO3V@ZMqi=nOp4Y{fO+c@K75T36()> zkbkMHk1T{ik3BS<9ae^8wl(ra+z`9#jogl(o~o^M%ebxho9B{b(Of&x1>L(2#nda4 zbbg_z_N?DVtM=*&un>(u;g*9D zlp-4YS7Uy8&;dVru0tLJ;|k)n(EGGTJu#Rl62=depN5{O`E0`)Zkx3!5C8DYbD}co z)Ydoro@E~%Q=GF;t6hAs+LllR5KMw@T8hFu?7vKM5=-?lEaM80w>tE(D&^6Z81 zSt!FIbp3L7(e1=*@R)w(8>u~J#~MW*kELFI_*MLqz61EyXH2~&$8+6jhRheDik7MB zf{(4tE#R~8`o=0Uk6j8bj@4Fkx7)6Z za4rFz#*rLI1u>ze!!4N*;Wr}H5AOJ^ zOo(2Q&2LFcFT?j%A8ixH_~z}ck_%QX5RTM&`g(q%^&UV^uNF_>PI_0*g;)RxN(4zS zq<%NIKWjT9psm1KoY+AOS~FscD*ALDiBNoN#dd7*6x~YD(X8_rgG`R^M7I;Y$fr z3`oA2f1bP9S5k92J0=*~dc!D(ggP{^_iWD9Xva4tP7n6C9`r>#MZ9g{><$_u$HT6{ z;sB=NK*&MV)aXJJj;d(gtAP+lAYFAh_+zTA@5UlHVhpPjZav}sIzkAk zw=lu$6&4(epU-hbBzesbsZece`=Z-xEJND%j+*OlKdO2q9dXyIubg5NA_tDp`r{Z6 zoCNp{CEqyExd*k)n+->lt|VNq0?5~M2;u1r^tD&|{y=pZKA77$kW;F^)8|;Htl@26 z$r~>)w)jG=RIS)F!{LK3G0?1blu8dxe@OfvUTP@7VyoF@ujynrIHjsTb-p8rP(8!Q@1G3 zILXGACCOwBAKbHD1+oW%Q^8zAL?>bDQBVQSO@siZnZUp{h>Ql?+Ht$eL9MyR=iYjP zOve&!!vj5iK%ryh-Kh=XS9t4Ox~qdjoB1;mz1we~yDIs<|KjKO#Ya9#ce+k|2{P)f zAg)`OBFgYj$ z!oqtb+z%&lC*;aA@$H+cknhcpp}r-CrX8u5ea)?>F$@7Ny^O-yivX-}Y}IUzFI#9G z+Od(FkD6+5)@G8D^X)yB%(gzEQm0wzPD9{8Q@oGWUPGL)-ekW&O>lj?{;lQo0_EUg z+l_ClB$cv0vl%KWmCzl9zB>kN*rfG_Auu&+(u2GX&_HO-ADJvRFu4^szCK`3sCx?+b2N2xvD3`-C+S< z4S^9!C%_^+(WdK%IL4)Yx(cIa@{~sIF}Crzs-XMA%csJ+=~~J8PE`GG4)65iEj$k@ z%IxDj-%TsHVp(uM(Zp=J{U+YM`PA!T&)dsE)d6=a@q=m9$*S+G>E08;scl>fBIqS% z7$iKvO2XWPzN$7t4{W^DMPSAuQOZ6(7+(!m$y)Pp#@5bBeOHa~Z-d5Sb|<&_ZKWID zxZ<*`zt@KFrYdO)IltJw=51Tu^C?qAEQq8SWPWo~S0QPVG`tiF)*I)k@{bO+T zi+gGVNB+G~3=f2H*?d)F$dKEZ&d1FvLQ;``?soVc-1EE4w;eDLujF7pBU>9 zI3%eR-}S?781t6~1hECvI0Zd|`OH@bWAg$-)2jZ*4>W#2m^(nEGm*gEngHy}3Lb=868;^Vr}VE-o` zKpoR`1SCpRVQgU`cAVo$PWMlqI>;&(4HOUl$^xJT0TB54FQ)f15FU^$7Nr3W2sWm1r*p~tCl3#1GI;5)?Jh%$1N9w?+~7fjRO16%3@6#}&mWwN{mHZH z0xE9@|JPqZVn`i=*h3@a_7%TEraQ%_jp?auLXoelvVz`eZN0gp`I$-i!GoornDG&$ z-*Ax~WzTKwqf>?UOWU_h5_;A9zHf-gbRG{R?K(BLv$CLVLuo!U-F*&Bqh7oOdHq{7X-V8x>+n%*h@GErGd+1iHtDXhe63m~;vo$1St##{y{I0?hch^cQ7-q07|F;w(CZA-T-h9 z`g_oPu7UYKc|7p0D-JY=?GwAdU5nYBohPa=*Sij9dyfbb>3haDgx-f7Wxrh4U<+O9 z)-V^EEklJ)HJ1;~EbN`lcfaqI?XO;jcx}^o)qTiva^CJy3_i!oz$8}{$yIob8_EbH z7uv$-Q|ILTt-G8gZK@FICz6OkzOpPr4$H6~!gz%i`kzV;R^9*s1H8-~3ZOjkKjj`Y z0WwA(rO5q?*^QsAU|^b6BUlhY!cQIvl+~3!-4nlRh@vF&Z8<#AUZK1yrHC#;T^6=Z z6w^pouzRhj>9Xlv=Qi%(usYjp{Q&1^Puh9Lr(8i|qbFaJ^buxD6HU@|R8=S^?Q+Xr zA3?Js9P~?&?8|3gQZ`4%;xlsfHT<3qtm~36;&?itHiH&a=oK|tlf7@YqXRI-yi?6w z?HhLMCI78w@SX#s=2hwf=$l&aQS+41XMScv<3eFxHHI%e)I5yuf;6dr^t#z$^{;5W zU+U@9bMj{o@xN3HR%JmqauVoBh7;OF3GsDBE8n2~?}LjVK| z?9qP+fPmpLMSCr-82`-+&q(4pM}GhHy_i4V!O7Z*68K24adlj)i>ndcbay; zPtJ1;PVeH4fM~oX*#t-P3|j9NiG32Svt#uDmme5!-Uudv#l6uw!H>bMT2L=X;Fu=BM z_#U>kHD?y+>}ZX2LcX(n+Wc`lX*BSWL@0eoGToo4ikyrU6V5@&N1p1`d64{rt>YN%$`8m^VLapz%u)wIy8FBA1j=IQ`)hv*?BJ=OK9c z`x&B5Qs?anetWwxr%R+hf5@J8913@aQBs>T%RNdFiu50-1)@D-kgG&u#k%YB z#34iRjQrJ)hf>wv4~fPc@^gocWI_)L2I>Bh^-=S=ti zm=!cRl3ST}^5QkE&K)(KvayNsQ#V`l4Aj!S%kDb68=vK@W+qWC4E05&c<-|Pg0DSb ziJZ7qynjH^pF%!`MBJ+&;0|kd&-|J^Vq$4aPq;n`y)ao^RrKZ zF98&5Vt`@|g8S4%eN!(5!t81gw5_{L9Xc=ALHJaj)2y!c0ySaKQyivvbR_gwat{Z5 zfY1lepvp6to!sqId@Omd?m43LA){z4&y$j--<7tTtd#9B1|i)hx9ZnmF3#MVTY;2lC&T0%i@1MJ0Slc&NOsl>#ZMP zk2^4Gm)xPUNISnFl?@l;1Ll?0@1nbO9+d1zK5z-Lvj}?W?00l|eb#ow*G}$^EeuM% zwonXI9xVwa!~K>$$0bXqah8iR9f(FBz29=7 zhI!sso|EOK3Y}DX?^e_f0kK%v2stevc@6g011^c){=fe^OLfmOD2-Wy%!P*~c#P2Z zbnB1lA4}Ey0#2NjIn?cKY}xi={Gg=Y2kDgWy=~|V0RK*|!?2`)t8A9mv#IxsbKtri z$2Wm>d*iw8wQ(1r0TsNSwqf_&Q|^)_39avbD~z3!J~|e4KwhuX>%p0||w6ryzmz$}iZE01+^V>g*{+47cn`K<`=e+>k zifI-4r)R<&wr>5{cZ=(e1EYE$p8FdUr&B8)m6xXYjfcs7639?7=DSH99_OSm)<48yqY_d!c z5yhj%xr4ADqn?Pw-nDTsE*-$%Cdq8sc!!y8pps<@*R1M0SA~0j^5DwA@o*3$_e(BG zW(~GH30reI^D0_#IgEL{SkJfqeoKTp9lB)M<*x_rwvFj5&6?~Tjb}ljsAms$)x_J% zBsyTWLH7@#Z?JK|l@jQW(xu;B)3N-X5qku_lH~G5#24bK!6MRwM>4I(4Z%!FPsfZ( zxiqpce9Qc9jKLKN$JC0IbjLdafn5q$xA0tdCpl}bq81Pu&wchDKh?JHW=bAYlirqb zImT&0VbR3= zxjBvE#2hvSyhjqIGhYcJYsl)t1*`c}V-&S|fQ896ZTvpYOLn zSC+DTaFHJ(MafH=>}q+_b;svhMzopwk67n|x#b@f`HSo@*?9P}-er~k+opTwy|vI6r9+^>KHx4OkV}3^AFU2yxosSfcuYDpLR;U| zkD1oCwRZMpw70ObcCtN3>5$8Bnd%M^DX-!7gE=8mJ@QvlPo+rm8JQg4DfBTXtVj6B z7XFY<2MR}Ponx&9c;RG<8Ell*+_1|=IUPZTdC-VAI~Cpb)2iw2B+MkR z9n%dttL(y`Jlo@dmlq3ckw7v?qhevAn9&m;NgLhS-)zNlQkGkM`kXeT;6LDr^QE`t z*`Fdmzy2Z}z~@}thO`D(6);il*g(i zV|xxnd421mE4(GfSu?%2KW}9vWI3J_b4(Bf^$V?#!)PUTBx9jj%vppj%2ae_;2N<) zY-s0YX7I$I6$jR%-t)|r+~woqGnMl`cJ(R=Fgn~g$>bDe+v9Q|!8OT^T{jeCfu z)DF0*y=?5nCDlBP-l|sZ0_PORmJA={jBjKE^$l~ekWUcCMWHYZ|0J{J(E#fOV^<&dPb|n&0M84_@?;&^OZM^dK12{)T=(KGOsfa3lU{N!!{3m z&l2iV_CxNgd;h_6%r2SPknld^PxA{Kz3UEHni|7#<6C>yz#`@ zRP&`uIszO}a%1O_R=; zCVB$%`-e5;sF=xc(Hv_~rF;)k{qK)#raXX(qP#~DEDA>^T?P9J49)mWXNd>a^|2vq zcAB+HQFB=^TDMiEZGJNiS%h=+K|(?g99kwC5`UP=%P9GEt}rZ0d$N?bBzG59^Vv1G z1H*P5H#?Oqhjkt#AFJGSGhy=muDQ)dr+DU&pd#t+{lNM7#*4fze5UGH-s2ESl-7+# zXCkBd`DJ9)r%}S;1gj^NWs$r@jT*(f@N4mtQhE1^EcBCUYs(8uyHdI25lQhnp?*vq ztZXV0FxPKlyO@8L>Gd+3FYwEq*AVoWF0Yzo&D#XUv`4fKX*4An4SnrPE&W}+OH4>cqd}>xvi{RQ8M)VHL6!#ygPXLXDUx z+D=anq<~#sS6JX~d*3|DUnlceyG_?J|LDoXLjwbYH78|RsYypQ7msc~{3JIlhFp4Y z4n!`nFb70}?%DC1pl6Ar0NYz*4U6`#4&LEjqE0`xku}^l+_(R=(YN0Wk#1fRHqpw9 z`}Y|<2$x#nsA9JKL9uA%_liaOnxi4k1-N7nv-_v@O>0^At5Z~=SJseAy$Xw#$cn1h zUC6>$mF8^cf9OO0QxNGpSWXMS(@c7xU8VRd==lAo34i+HmckM%LtuPI$AC_bJ7&!y z{|nf2v|s+!e^HTfV+%D`*~XGipps?{dwy)#Q1uR&M!hb7XFP5zGPAY7Rn~2*q<_6M ze$y0obIr*jwEjjpz%?6C@WHkwrHmOko3FtX%wKr>yP%#Q5nu0a%t0?$2WJUxSsPM1LUL`q!+Z z4CScp9hQX>s>aX-iS|lXbIRQ)XK2n0cc)qlbfTL6G7fbAHdH{3V3qr~XaDveuZmiG zV2*;wD++`e3NGn@{U(G`&*1sDkypb~VVaV3&o-MY6s2M`iJQ-~8vP*AETm`W?9@GB z*qp5C{SQxGrM(v)eyNJW2Q>-jwkzOui9D~y^oArTu910qWWo{WKRUW!$IW*i8+exd zxWV?_NSUtJ5mEZU`d5wJO@3q1Qynv7n?B|MMZaf`k!!N(O6gFDt7VL#)KBDoMQ@*C zft%Q80W>Q<8<7NEQlVz75?fcl&ZCIt9Tc<0b_J|L7{R>W?MO}puwJhQ7+fiSRwy;+U4p`$eq4&-3Dj69>w{e3ni|duHo&Efm&R` zZG=HOkQ%6OEHu*(%}Tlhg6^3Q8MiiVM{UVDNxK@($TQS^iCZIL((yXU&CT8X7s{1= zFHS18M14Q5Fa7mUQLR6Fxu+$H4d<#LL}w?(U;;?1eDK=VG=bPB6+`8P-TDSCHC3^P z&L90g&B+xadMWD3UYF)MEJWbVWXZ)sHHwKhZ={=7oRf4zN>xsk@0ITm-lxY@jY9-8 z1GA+hVG3sk>T00Da$cn+8;0n1!s`Y#y1N}wLDUhc8gE3g-W-5i0NqdWxWbu|WHVHm z^{3Yv=s`K|4xMzDhIGzv(&L+@g>0gik{M{%Vj*?7KB( z`?s;NYjMXA+1k&0UsEo{zuivWDxdMWZFpH}v|8S!D7&D9aQNc)Q~QOTkGjO09vsg@ z9DVViO=euLP&He~D|W-71%l@z-cH(;bpdYW>{)cY(2$aPfbKH>XQh+;@q^Y;wnnV6Rld$z z;za3-V18qp@F|QHs__^YE_2?iy8^|~jp81hq0G7p>tHJ%1n=3x3xh=x{RS&l_l@Hp zIuH)5Dec(Xb~VU=R4tY*5j};ngM+^%zC+ug-~Yte{-R~K8L*MtwMG5g1TMxP(-Hdr z+XM3NYKylMF z+4)Z7N7_t-%`kK_#`ci+6@4e-Ai^oPRoou7ygKPf5{r29iU2V?(}2yWN0e!P_m~e7b5`F zXj29bbO=LaUHi>;gdBpJI}Gvs&35U(dJgD+Jq5^rr!&wPp*?5DBSdy(=SF-Q1k1h% z35O6WCdRvGt$r={{Ak~E^|;2lyjj)m7pDB?J$4rosHSP+d@5(Ve8$H#vFxv!C-Zc< zUkAPxFV*ir)O!a^r2lQq(~_xf_+6F`ArMM4F2Ze$<(pp^{>%9MKd2V^mqPd->74$T zJ!dXOooySjpwNjAnS?f*F#^LQeXULdvNcOUN+Lk zXRLNCSy|5;XN{iIiD3E6VF5Z87W|v-4q&FiaCb(6`kS}0{)Hyaq=TX%OPGH|Ii;Lm^iCJ?F&X7kc-woWK>kQFYCopp_X zl1`xpp)8}{Z1_-y{w(tr5D}n%vw1@^^kufkil7JRy=HV2NygezYY?lLdb{(QgphLS zyQ%0<@qH-ykOIwRRs6aI2${GCM3r@`sr7(twa z)b|IdfY305E`}%-wQRkM01gCQR6Z?w0&z7Ib%Z6%Fv5idxV1o!c^7f&QOq#8h9W2j zYx+~}D;phh$etKs|0Jg;vMWnIk833j{crZ8ZTuTLl}u%J7P3g2`ithB82)pYwcfi9 z%HrzPTr+Hv6|<^*`bS(gXB(jvgl1eAt{fAsd1P+l)UHE|QD~)466<6?ve6SlLkQh0 zy~^@zI~D)pvugCusI@&6Ywd5ASbHX4 z-F4O1MTAuCq;Ir@by#%LiF7lXPB0Bf_*6VLLc18jfG|^WPPQ??RzMBTL*pJqiX+S- zNkYxgDBD^Yobr$hv+(sx#y8`Oe&}OKmoX`hbd7*96qi zVP2^!Hb1;09m;S66(aX)${St{7PiWo?2QvYd$MrvK~<%kxU51gCl`n!SrC(0)Vk^* zcnd3B{I)83br|#!6Ff|8Osv0ynhrP|Cl6OR*gbmWnn zqZ4~ho8NJ7#<`b!^MJpez*c)Z4-ezk$dckF9Y$K+OTWEv`NTvA$(F+!9-{vGBgLU`a9Vstkvyl|n4PtVm=u1GO&sy=Q8ZyxbOk1K;{ z&XHs|dKt(9bRlSH#cXT0&JH9-Okn5?-R|()r#~2WWQ9W(bn&)iu;k*cpM^eDLz9P16^Dm5t>!THf|9>&Ziaa(X-?CnM@qq|dwRFn@3T~<|+YJx^1xtSj| zgoMIDH2W$SeXP0c8>PL#Q8-ID;cZOl;Xua+Z%We+9yqyK%tyo1D=28-sCX48fV^Os zfp>&*tsJh(wO%+_ss{_0>f%S)>+Ejbj_Ww#{ITTX3A;S{E{l7Ueu2t<53nhY5WITZ z#PJm3GJ5#}>0O;RarIzl5&y8@1;1VSnXp%tmaon~{&igWz*lpN59+h2H|sO7$nYwG zW4Oywm;I!d^9uE@pLg+7x2!4ukX4ttQsnDVNyE);c7ONr={Ho2JaInX*GKi?0Q&X#RoJ zkW4>7G1mg=#s}fLfZz!MmZRX;{&~R~d5oZ*4A)UvmpDDiFe|{##px-|D@pelWg6R5 z&LlAT(_I<8pBEmewz>|ub=dUn;*)aa3ny+>kg-w7qjc*+M>SMa7vb} z%*}6hP%iQD6Qp&Cvn%HAhH?6XS@8}^u_Oesj{f+~=GObuzb(;5kg|-4^2SA(30lO| z{*l7j^*=beb@yH`ICF*WluQq{s1E6d4DOP&|j%a z)_$wg-31_bsyt{&1#lrf^F811oVzAcIwc;r zv{%}yOuCrWz|r@EHBO*dsV{4nxli)^+`XYJi1Y8Nrn+JUpFW%VV^=9;u#rn(rsvxH z7BW8@znE;_ny_3al;|6)$k(Xx_-1bOD>I$DZ#u7?3~Kx%tSkAov)r@~t{E70$Xu2x zd!5n0>M>0#<^U}aEIGVQcwR+Ka@=`@6i7j0X;Q1g>Mo_j%bG1l!Wd$dcC3?`@CP9k zy!iL*49h&@$gkF>5#f7R4&CgL$;NgO=%=fijSeHkzK4!Zmw8|7z0O^Em z@@`;+^rwH>J^W{N(mD=oXbmp`kzj;c6)U#OHfVFV5tMozIS8=(D$xaFuK%(N1&Na< zgPm1`EfMvenXvH~)E71?tOiha=pEYeSO<=%E|cic2F_swj9SY&s!kAgeBu4sZjN7IVoYgs33tQ zB=(J27G7v4iEe!O{7bm8sr}vejdwkq&wChby-Btx^1{8J`OQ{dwbZKuz*Wtly!(rI zx5zpOY0CQ|!-^&DxqA5$=CKAxVr)y>w0<3HE(?3R@;KA=*j`l}9zt3{Q)OtD zBO2EfT1Js_bZlcyQSer1#T-)9YVJ4N&$}XFi8t-P9A$oJTU_6lZ>H+_rM=J9+kW(DKno@){x{(jHf3=Bsjx`-%6U@MwF)J#CaB}-ld<_Pma20e(A&H zvhT6(9LzVUXan0KrmU?t)2U{o29abj5e+M9sf;TRJeE6NaU#KXf;;z=uR^9UadFeK zg(Zn05th+J7_?<1v1&L?i0-Iim(}Q=$*ey;L^w18b$BgXwf~;$k^HHTKLtL!w19HK zHcV5LKD`Tp7wq1p$11eR`8QWp#?9fsLwQ^`Y?q$KIg*n(T#Yr*@;7@X;{+t%dbB^Z zUYCaipEXUroRu-%nG(G$KL7b$L2-6zdz#0w-}?#q zk0QNB$tTmjCfqJvJ;S&|ecA$RxyuJu4=e=%5#Dn+6M)U>f<{E0}F4+3l7)kuUxAzB)Vz?6;Jbpxs zFx;V;b)GVj4fg)Gt8%sS?vFovK0l*%u~d1)^wFE=_l|xO_+hN2H`kUmP@`%TMkpmT zD?~{(>$VaOBREJHy4DFjaQ|8k*xSFm%MtQjDK|yLZ=av>x)@>8iP;zRr@O#sG$0(J zC!lVE@PWyZCX5g~`?a%os!NlZaLC6S4-d9uWDTXhv2m`u$6T-}(iZZaS@dV@?rcZq zDi~N!j}3eyyW$+6p;Z%-)Y}y*FBu}rCFGR-{dIbX9mz5)dSJKRS|Wb!dP?!Bqm01I z2GTYcVq{Y3*1MbxUb-kr6lzW}ZzKdGd4|dpQmefCK}tQK$lKxBjDAosJAp_ zsSd4?{&EVpUwJ)xtZ^a7vMrou`o>TSFKl$?S9!3VM3bhCVE}{--47<{QHEr`quA+w zuWtWq!?3j8I|JVTXeWHS9MsCzZAqgMr8c%hWB!$6zOd+y>Ke4q3L!)9#RG{r3-C|8 z6UoDBg0SNpu*a}rb$fu5lhG^2)z9^x2N_VJ4EIIK4LSjm!ll1!$u9HZ1lLHRv9@~E zmrsdp0fg5ZwV*=(xp;TJ27zx&**9G2yJnebg>SwPofC8U;IHsgA*VYJay`B^>(~~| zZ?eYu!M2SsT16aLzL5T49>uG{K8Xtxeu{zOi(ndh>0{16EDg)C@50s83YR5Z*-r4P z4;wW?ehy56hVkxC6AQprk)NSN56E-A6X{Zm<%U1)(o0@A+4$PyN}c2P^q1;-;^Ip4 z_lzOl<0xzB$)vg>g+=U)9}j3;dQ9L%=rc<-IH_e84I|h(Z3;mL*N;%ot^+%lC-bZR z6|QdA{cN17;cvCRbly4h{8hN~=7MwvYXPn8j~H{K!WfN<@(vA{z*5H1DV!kSM%`XP zA$3k52f>$O4oc2CZFga9`Ft!~%V-d5e?!FB!YSS1T;@xTuc9*jb!Ulk3SW_e1LapZ z4F@)?g>)-oI-8oBM&*{DJ&eAt%Wr)0U|7W7f)|TzB@Lq9U@q#vl?X>jG!F|y>937h2 z0wP5~QH+kooh3gsjeR?H5$rc9*Yf8wY}Td|hxNy06XG@uZqz!e zH#kVv!Wd(mL-50)CbQu8%OA0>k#z3OEJE@a}=mwv>xtOa4^ zZ0FV|m36PuV{g(PecKQZ!s9NG7d&X?1(pU%D0R$FTOAEkNWR_kUtO5Ai_;C2)6TSI z&olL7jkXjMLNw+u<5c#X8mLCvv*w0NMjtdX(T}9!`JDxXJg+|Z%y#^--ik{TsF0h< zGCyEHQlhuYT-KmjWw+wxzkkf1QH7gDS@(YsSHyT_rM@4A?~<#ckW!4BwnB?(;zMqA z2K?c&YM~z%w6Q zx|+p(Wjv|bt{zRpP^TNRCwIST=z6<&Pl}*Q9WPn7o=~vk@#>Vmcy{XOndPrRcGyAFke~x#Pa53NDs%c$(7iXHy#|sD<^SRNgeCxP3+TZ9q}5M zQt2GW*OvK@7o~i`4Kc7|T6~+%$o|xA`wlV3@yc!M;^Hya;ab?{6@BubZ|<23R~upR zE`B3Z4)=YmQ>JLiy}aLIiD9X}gPoM7rMBrUpEFtZ#|Pt0e0^c#g%9ezox6}-CH!<3 z>0FCr5pWCr=e1D@s=0z=ZVC8><;vw+SbbB3jAf%H`*4EYrE7=$GN#(Lln0DcfY$HwdtsR35%s*) zMz6#U*3ca&(8dOl2FIy73M<$?=a-^`bibBsY>C+D-H3(79T83;;qy^ddPv=E%T%*q ztEPGjSL)lTft3#_x4_MQPUFX)VO#&8A=Tdy4wQNSuIVL@4HOIiH(ZpR{)0fU|GChv zzlV#l3z3YXms!UdY9kCiI9d`Ly0I9o|HP=SgUe8S&&u^=Ml2Or{LPY+!VuctzPa?| z-fLya*MI!P&nw5ZyVk!|>{GA2V&J*lk28h>8cPv$h|#1M2s^rRNS={dgxmYadH1q! zzy5XCuvQt1^+K5jh{EqmegFLKyO~``u#=8)#B4;ees}HJGx2V|E^`5VpdhuSGXWRA z#WGf0W$9+J#BkJIR_H1t!->E^+p3$_g3c9=Y-$-v>a}9Mzb?gmOfmK8u=*H)St@14 z*E3?Z#9>a&^4AVvjG)9S?3# zrKqx~Hu;|NRn}S5`?1i;G~O1I=oiPh6w@WWhRzu((wy=}v5NocC$&)_V_%D%rn`Kk z``#Na2i4(ydTH0LmVQ!igi*z{4{l8tWO^OgcFmP;fa577n&x^l=TYw-(WPD&HsgPM zeUvR~3Jzzje&yZ^#etn;l)WHqX^U_7e^%ww%TZkw|MtDgo*L!GX0D(ZZihZu!iC7`1g9Kay~4UY zW-sLvxtFW<@QAk#(1VQ`{rymzxnMIvml4%+;A^PV# zKGwC`2_a83*ky#xJ_z(RodrE|(Dg%UVwAc`qHIlYTCzzX>P$xR=Iz-HAovid$n@H8AV>-Ho3gQ{Ts^X7?p9glHP5wJ5xx}Q^;$u4(t zDQzAGeadfusk>Qv-4m8Eg5yTLZV)4bc@TR6=yt_{v z+_N=A;-eTl2kDz8_YzFh&*@svbuoz%J>^#UU)ueh7JuY*_RNyE z7)N@^&nEc6YG=Z@%FIKag?EvqT8xe|F5#%MD>c}b0N*=RHKnDmFJ7aaEyj1JxK0*R z%FdoDdvkD;XHvY#OQsD+5cFhW&7scO_e1(Ao{GQJM8iyzwK-_%86F23c`h2wq8W{*nTB_)OzBmu|FGDGXil-qJuvWq&b zp@F_m@8pfQDcNq6BDoCxj(kabN@xUhvL0Fv35Gs_M4?VdPhT6adiL* z`PGrlkhcv-iq-v)T|Ffz)qSBOcU)rtho>dpvXbzrZFzP}+Um3m9L+kYKnViXcBxb= zPvDlA1U(Ma=4Ir0 z(!Nm5m-puo=ow^^duzmA zJqycUG|qf<*|&0H(P=|l$FzS}g>j`~q-)d~+I}yY9zQw45aJ^bg2l;pse4z8KBi08 z@|;9PO=zOOCbNPv=60fsvvWDz6pAu&Rkevb_qLJWvy1Qt#w$uLZokwn0hV)|@2NrU zJ6mmqtARM4X{uxuXt?Q^+_gQ3ZR+Kx#{msxsm1N^fOCr$?t;RW{61^xX=i`=J^HmA zd(RowD2bX3tLY7fK1RJ%Gg>}g2&Y!Ky;hrE4S$9d?#*)?fV=4pHjH`Es^laSs?(+e zJInSb((akZhWx0G3b+DXO0ilXtko?nO$Hdbn3Gl;&FI+YN<94Y$fMQ$PX;PPuZHhS z4%E$?--5Y#p8m#OU)Cbh6%||UYyMR8oYF#DQnTM09*^QlT<00mH!*^u(t78G52sQs&LAd;J|k~97bab}?5)D5JB zs6`L?W}3?vyEM*MPIaBe5*M~ltKRgm>b&k}q{}*F3n1p#)TE^co>bo5Moo3PIrt6q zr%4khDN2}T2(PVS_BD;d6Q6D9F+FRRoSdN? b+j^Fm4|K@SLp_Jmr;A?MeIK-@Z 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

TjO&y9!BTW0>p!#*?hHtMg=kh_anY)lTb{K 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 z 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 Date: Thu, 5 Apr 2018 06:44:13 -0300 Subject: [PATCH 119/435] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index c8069ad5e..8095c8d89 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,12 @@ Each device has a physical address ( like a MAC ) as 1.1.0 and that address is u Each device can be configured with group addresses as 2/2/1 and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the 2/2/1 for turning on/off their outputs, and other device send _Turn ON_ command to 2/2/1, both devices will turn on their outputs. +## Next Version Menu ## + + + + + ## Requirements ## This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). From f729eb694fdab1743f14b64ec9f58577393d2eef Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 06:53:42 -0300 Subject: [PATCH 120/435] Add files via upload --- .github/KNX_menu.jpg | Bin 100710 -> 98177 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg index eb8204d1c83b0c5a78162f711f0b5cafa9493827..2da4778f86701c0ff1065c74c99a778282da2004 100644 GIT binary patch literal 98177 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 literal 100710 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 b+j^Fm4|K@SLp_Jmr;A?MeIK-@Z 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

TjO&y9!BTW0>p!#*?hHtMg=kh_anY)lTb{K z;{crB5qJ+^R4-uZD2F0Qmi(ap^8Are-UdXY99;$E2nsb|sV5^r5+I;JM&P>`yT^FJ zLAwp38?gA^H{Sy)x3Huc=3{qu;A|?9V~QiGKm>fn{=xzCu+2ZY) z_m2|Zg9!2;V6Ok`1MNTaSa|mjo*;=ZFC!iy7IxnH#*#S;01*CNvJ_j}gWLWA>J0Dx z?(>KL0qTrD@6HzRX&m`Icf)%B=WRC33bIQ>tw6t6abL9oo}ocG?4Piq8g;5e`23Cd zJ3DT3`7da}ipfvn^8AvGx?Rx*szi&Pn@qai1!d`d);NcIZl*LjaXkP)e_%x?TN{S`W+r4f@quUder7YIp~5~0b=&k9N?d6 zBSVpj&>fqQVXIGZnL+u!ag^cri}ca=qZogI7X0h`AJ%id-48jb?kdfi#o*qi*yp&! zRtvfoY@9fZdmJvLH_Lu{pU6qarHdgK^LgsTi@lMXvch03-tpyvf(}7%kjwX<|LXtD zY&uhKwI)HLt3ic|t%Ghqvjg*q#yjFGY__mC`tG%ZQ%k_amKoYJ2})1oJb?JZp$`B# zzZ1n)N~S+xZzIbg*C0FF*yjZY;xf^7;$qd+F|0?A=q-tyr4%|(-3I|werywz!rBAK zc`}Sag$h3gSkZuV1_cOv0RT!RAe{jWrGRt>s4lqiZ!D2Tc@ZptMe2uEz-0BqgL65* z?l=Fb^?yZoxiY~@)HBSvv%ipipWI2hv*)l=-uaIUek?3QqFd~<`SH{_50WNebY!go ztKs|W-esH%@f0Hsfbk$(Aa|_W6a&3aH8h3BT8dg^?2GYP_Wq>O;<5@g0%~76-L0l3 z7NC3Xd+mAJ{)x=-51F?<^M@z1j>Ij){1Ek5f!t_S_xQ%*2HCn-j`}diSZ#nml5L(s zdz`I2oh#=^T-MTS)0Vr`TV9yUyeF*Gq)e3PGo`ph=nc@aqQScY zffkzby^8w{5kTYPK!OXPBop=}cQC_{^bFudqu;FNj$r6B%-R4AL?V+TY!edwjityE zKZKAZ4Cf-7H$vE{zSe_^;dd3Wyu(2#z4!91$47NS@8T`u@qPHZ zv*)B$U#mT9Fn&zxyOt1s_TplePi%Rm^la}nXB*=t^f9RyWN%zZbyBWzPJWipa(b2C za{lFYPOATStK60_bR`ih@~x!nr8B8%q_`&NE_8>ja#Iq5 z;<`BX+LzQi(|U#~`lTT@3&2^oGTlbd*9mNr)oM8f&|SdtC&Lo34**zjKglJ7n+E26;(USJkPPrsE|DQJzW=Iu)%2<{Q#1AHOvk~ zi>$!D(OZ~b>%k_&FL&Jga&qbZyJtp`#y(b}xPgxBHw*{7hHK=;>%*nJ285(?f8;=J0xXzz8)`uQU)px6coQ9P61Ir+ra4;Lj;cb+x3P6-3>JP=Kiy?{zdTl_ z_vEs-cuj%|zI2>#uh}!*6X?fPX=8gdFhv!g;-dP`u4J2-L@+JR_8KGY9RwW91{hbe z1Olxw2yY3Qip;DtQ*Ma{{%hq=0o+{OujvthWBLbj+M-00zF)f6<|C_eGcag$^xGu! zvliVKPBv|^>?v{~V(HJmu?Qf(u+sqW^VoaDFt#pLmRdzqgZYWn4|p1Q5R>Q6v07B= z=PUwbp!+V7j}5L)DySBFm(VW$iuBry)jnT$@_6>SLPJ7;^rCM%);?&g&9?lx@l?%B zpo}f1q<_fUXUIE1vxtwnaV+|vRF3ci7Pg*>@i4@S zGIf>NSd5r0X+ftQhnFq47sPLrn3)IJ##YU(D}*VbpyB1Cy~yU}cr?=!DYufytY<6|7%Qil6mt zZ8xah1pcE*DmowT&j7&v)LvNPqToz~I!~sv)#Kq;)$`$Z2~LL-M5kWHwMnGDt&odC z6eF5k^$D#_oLq1@YVjMoMlVy^i83%ITH05A$h+fd(VK^bT8zi@fp_28C}H9Rc$&S0 zUDMs=mh)+e^~<3F&^qknu|p)ous4B0Yz?Z{i=wkHEmmY;FyS|&cpk>`?z+13pkVZ# z3;D_m^!13O*VPrtCad$s7Lj^o_QDb7!FhakKBZQRy`*XH$Rf`n7Pjdu>*U@kn;<*{H%Fv5*}o#$U0_m zx8OS0qP+w1CZ2U?_LMn2dU*IU8;iNqAD`C|zLZ--Ko86B~HSeLG9S z*i|B{KP6UA*%l&YZo9P6M_L{Zt4mUD9mknZKpW-wXMHq|kz^};3jt|mSk6U^s!#a< zpPtN{%7^tajSaWG6$DV!{?Kv$qG7soDVMqK;o)zUsIwCk8&Sz1Zh0`QIQDkmot5>N-N zs9mkF14;vf)fe(DXQ4x9PR{Q*lR&bz63BME@nm3Zcb)%~&o4``nYyTRgz4cDr`gf5 zeb5ReUx(~Fs0`;ZN|kjXW*K9PBKx8yW-=mIc~V-_=z-EIx?FFT2o_sb#kmFhVQyn7mMCB!Q5jp zKa=$^fFea6$4OJfNZ7?2#C`I_Rvac0Jd+L2HCe%cK!QVN} zp)$exVnt`gO{)Zq*%)n&Rk-IA526R&?jl za(^@87<`;0v*jdwG-Ui**`VT!>Xk-SD`y`QUH5yu7*?T|ZW%&*DWCm|pR9F?F!d2n zu?uWj0P|Zr!`hCAlo~%F$1z(e9QxL2OExlNSjYZG_803cbYawioXdm=(QPJ5M!eV0 z1CWyK#rKh$GECs0d?%dv-Fk_(DMa{o%)BiE1Xq-*@<9djc?QDn=}H<^YMGwFLwO8@ zt~UxXTkA{>Y_ZZ=7%cMB#E(A$&~Ci2ZNa@sGZde!iBXfmiGhrX$l+@)GNmx*eK{ku zlw7gbMpcYAmx?5Gs|#Zl+oQKMY3A^~z%!M~cv*W4uFULXHiD#;)ke$~8wEL33vdI_ z*3}yB@ipq5RU58j6)p0rg90>TX7ed#Hrw7z#itgxPklmGnStO>b~$p?%QbuI{$duzByuC+edN{0P78O%15(HNt`$+ll?<27b7!R%uh~>T1qMa;^Mvt@5&CQ+z6vu06AD=((@ zTi5WGA*;DPVqchbB`#e*p>Mlx9F^?kyzD~D4*l*~4oRb5r6!WiEl6x3a9ffuQMRIh z3IUJ_G6V>xpNMrgT|TKcX&~=z=p<(F46d46374UN>s~Z#)Ad2w?X>KM<>4(D4oX1P z*(%rZmCJuca90cY0%|W$nDvJZ!K+Ed_4}&#lxtZO2~#Fdj2*sPR$)~2t^?LMUW{sr zgyDu8Acr+X=(as@1MdmQ{<$qK5Q2PCz2{8g+Yu|g@PHeiclb&0XRyLQL zPmZSDnWg929K8Wan6fv3QY8@dmymi0jjIgGP_DO&Bx}|qNF~7n)W}Ax6OEt3eC73) zkjflww|6hjt_@{DyDq0MvF}Vj8g(jP;zUm@O)4FsY=Elm84ThM z+TRi(nRoL0rTqPeP6e+v5j>WLmRpb@pdQPS`0Jtj=pJwAR|bfrsBRaWEu*tPwHV}r zr6c9XRt|D~Om4B<-^j}SW2ICcaZSYR-l2S9Nxvo#_T__%%KwK!CE;FuD z%e3F%HS;<83!g;Xkh7pcQQ;&bZ(wX@p{IbfSsb>K39Fn>jgr5oBck-_d$LaKF(RM_ z9s@E@?K4~ApBc5lzzsXr_x_+PaTWwsowOp6Nqd5_Ck-iCER0YDh zD+DlsHj`WkS+!VvdC%H1``qdI;Qg=M3a1sU>e-&3Ja+tMyP)L92dCPcPDd3<6A%xe zkmQLS!Y3=<_1Y0_$-9u^Nc&(}`kSninF3R*u~~WvV*kVUl?(XWotjKR(RX=;@~f zGE};rs5(T#&t=Xj^N$IH7+6{BNAD5$^}#r0*!DKJ(=#Q-{JYwD3_-qt(eR=#M{nJEW@Jl;sc}ZjBp03|hY0=eWJFKMJ8xI{BlX_7xl0nz~bX7Wae=z;#l*ETk zlSeivG}$l`&Iw}15}eVpATKSliw)dOd&FYLojm6_b94@4kDA9gY544Y=(+pQFZWJ| z1fN3%QsZeislH7BBq*0O(}3N#2p7tjKd-KG`0f+KXRUxa%a1Sk9t$ zptAAseRq{qnK!cX-6uhc$Px=a`1-T#b!-eH6dn zEg*K|CXqv0_uTRLv5wnd!>-M={y8tJ9CLT;Hx>y^6yi%EI0;!k-dj$8M#qY1g?9df z=)bU}v_iI@tl;mAl|LKUioXZr2UW}eZUr>t-~9v&sDB1X#s1k1?%`${0#tK+${Cs= z*+#iCINrt8140*3jr8{vl`N>>;<|T1U`NDSC9pohCE5WLMnGu~a<>!vKwXb8l4?^4 zrEgMEU`d03ljHe(e)h`2|4f(ay@al&e2{S_O+J%+E1O#6GODRpS&l(6 z52R?p+l2YA+q`5E5ZxQQGr;zs(Kb6oreDK&y@oRRML;O>DYO^uSoBNmux3qFgaxzS zL3o0Esbhoa-Qvlfw8s8l`(}SKS=3V{h=v2AvDTwFM!s3!(yf^3(Z#8iN$mUQhcX^? zR0vq_-B!;FVjep^G*tQr8=<`F&|DiU=Uz+k_?%(&1S{9({mdxS*R7Q%$nL6rM(EpW^M0PlvW?r$tJUCjup{v3ji{Fea99~*Ukd~E%1;g+P3BALx9PE(gw@?+za# z8nFo73)k&aatY!v87TCYk?-l&dQsl~xte=a&7DUdvg7Le;i{!_kCs3|N!EC<)xv-$ z@N+l;Mc>_v*px+5EdsEN-KkOlQ7Bp&TzB(%V2{FnZ2i7R|M*~K-v8R}=0#e!K2;D= z+g$=gHTIHuGjYw2DW|(UJhC@Wl@*ul3Q9aVeBo|NUMtH4PjkS&gWK>3kZveXG-Eua zd-E2^8y;_VI&CU&Or$16$2~p06mouFu;$>h*5V7*_}2p)T&*7N_nxTSe6A@Pq0RnI zo$Eq9TcKY}G0+}yREZ+zYqkax))rH*F!IB5{0Zbo%#R-JIT>GAq}PMD5f_AYALTx3 z?u|1^l=mnd740=B8trO^Um?EQ*qO>4@zYOEz`A6CNhJrgMDxVC^KnEAj5Gy?`E*jb{#)1TA{>Q2M!_0)y&x5K>Cc+rZR5qB1t~l&OKf1<_yOIm_O6KV)t_7kbW|MfJ2#1@q9kNojSRJIluRd^J-Q%PbHy-X15q zpvwO|+*d@MPlC7KobcMdiR+V>3eiccMMgAktj%rl4P$2=T;bZ$Hhkhh(u-bKGw4WmBCcvMU)`;5aqTp27g{SeZz_ykI z#$GKI>|!n8b6_4!K+ru)wx%JQ#Epz98ml6pCU;Jw?!bOn)06%Lor(L5WjOoYt3Vo+wxU~y}Zy)H>k(bh|mw);o^iO)5 ze~Fkujy?KM{$?y5i8I6xMx$TeALVZyWA8_EJSvyAmhr?9oD9>`Rc=w)J(@qewYw}| z>ie*INb8fIeD)q{}I<6&{X_V0+QXTU&S5QIW6brYLp04yeUCeFoK650q3yVQE zEaSWgkf-VpylvpM$QC>P5b2t0jg>$?qUH9xoGD)+cBCy>Mb}g>?rBFV8U1?l*LR|< z3&0SqkkVZ^X#SkpjxF~M{l;<^?7F9sc%dV3C+vRp>)sQz6f?@0G4{>C(+PJ->g$3g*US)83yD-iTl&YIa=cwu=0*%d0DCJhTttrW&; zd0w~} zC#989sD6UBkJ$WZWvPcYKouVa;$ z+v{p-=HflrGfEHTMBw|@=A@9J>*Zv*CuNIT3+`o@KABq;E^5u!E6QZwM45!%F`7>) z;C*@fFt-ZoI7xzj&}9PAEQd>4odESbVt!st<2;JP9MO6kIz6I+_*(~g{CP454@g@# zD|+6rVtaO_V#nM4&RKlfA2tRJ4VZ*mVv>Pcxd@ylDh?KBr)go@PpMuG5x5 zoZ-Hl_cibJ{i1sHo;3>39CeSi*69lden)($V{)udPn3NO_(vzf_DIV zMGg*{2Hcj6cyQl9p+%6A=1n#_P4aHRPSp4|QiLTN@(Jxr%uho8ZTpiiUe@P7|7(I# za8kZUthvjUHKXZ-MEW|rbkj8og#;qp^%uq|cbT1JIl6=~^`zg|@t{=Bg|v6cs8au6 zhveza;mzSG*I~Lpp{6oXddlSMvU{8p^91U-txW)`UmUyZrLoq9Jm-W;;a47kfgU?k zQeGRVuXY`ckrXkqOnEsW^Vp;$#Uu1$0UHQMzvI5Gm#Mhh^Wb=XWBf@llgv-DBTLeE5CttG4E zn!y_PkDX)y(GG5h5ZGSkkvZYB71U;r0>9zL1RSv_R6L1NEO5}xc;@)K&C-Vn#KTF{ z*Bac{;}Yc~%=)X`5i1UB;$BS$<%fE*O?Y1Cm1i8%c~yJeH*4U-rgj9y5Qn6Aer6t` zdNrgfk~E5QTtI~*-Q!?kb|=D3q^5T!w7kQ`qwKEyiLV_GzQDKV3A~32(z(gmjR3*e zh|K>OZv3l-?b!&96n(wa0fE=KzvQh*?$ryq$9dks;I54GwRn|Q3mn6wHvhVJUccH< zp>Yu`b)xvi4XYQ6pC)4yt7IK90y^ADr-<;uc_Tx(CZ^&Ttv=u0EsrLopSYUgB%k`6O;UA@HOKYD43KI`OQ)6tgtP&dh? zbM(xpw+WE~>0!YFYIc+n}f~{fqY4fi*$sICfZZqUNN<)Jw%%9+T znNJ&ZE4kcD=*Sh6TDG8n%yBL=Juh7!y}xm$y#rC~|52Q2sB;XU$~ek}jhA5SQoIOk z&HJnkKGXT}_Ay&4OBATmt>>cGcE_CJP;a?$DB6f$-W8`1u_h&TJ9Dsdffmmfw^0ri zModIPAZt*nB$Cc6N03-FC%8l4YNRDJao^sQG-j8^0wEYdhK|D2lGIIlE9uD8!=DJZrnlbk=? zb;#$$bpGR873bZY^R;5(lp-RvcvmrqOsly z)RdX-u$|qqc`FdaD$v`3h%XM56VxD5r&|oDalf6W2BHXmWBo(5@5VJE3{A_rmlEB^^xdKl=^I7Bc=Yu*mT2>ZWmPm} z1Y%-*IYi?CBN<@oGI>clp-f3X9>Tzz%+XOBD$<;kQ0$)PRKAtcm*$kve>-#(alfSH zm74woh;tab%J^`p?;?o)?z}{W(A0;Q-jm!Lxin6}FJ2$H8DBWLQf9qpcRNJ>Yjx+r zN7I+DhiSs#=By+lK`ao2lV=mt{e!oKer(IDqKqs;x%e zR&9CCn~5oBJGvb0Hjz4lImDQhJ!L3RFU&(G)&YKb0h%y%P7YZsO~$mQZJ*N~lpccngzLK8TUb3STIqMmKRU(!_Ag)grPo4vc~9gvH?McE_jb=x14bRM zOTCVZ0>87i76TPQOr%0efF>q}AII@%4g~M`3gv}@N@hTFt=-~++)1}5+XT=t zTY4=7eOtLpjtw9nLg>YH(|(9i)9Y&1TIt>6TD@eSlCQ{_!TMUc{#q`8aIq(!0K@4K zb!r(e*Migx`_z>S{d`(%kI)qeP;rr449v;Wu9@MM;^oz&XY#1=sq)Vc21gRR8ud9r zEc*jc43%g)0LoZ|^vJAl-8v8%7A#6l#5>gX%cv`bxp1J^=S=3x?+xe4mtHO}{$S;G zEY6G1it#l)BD&oqXk;8#PFPy#pR71&ikaN-)w^II*&C%MDVwn2A7AbhRgvt0ZHl`( zHcMS39fRZk6s-p9c0^LO$~xJsIs=5Oh|G|%ofZzN?j1Yd2KX_*=aJpr{F%v?(K+-FUK2D+?T(W zTo%?D*%T2_*|2I!Q@r;s3lV^;@-{Y#8K`-)8%FzNR^mKtx>2l@^oR;w)%$q*^Qa*Io9SttN8?8=`YF=H;X zeMh_#e?`^=q~+Ftw0sIxzeTSC4xX_Sh)|{j#k@O`spU7mwFzN}N-uB@OH3f6HBP|A zsBGT&wB6Kdz!B);8ayZIN;D3=r1fm45g=uGAWeLS&dKx4wxhV7lj&hF3`hMQooKyz+QR0} zcB52|#95r^n3BwdkGf2Jsdba9Kg4!|3 zk@K;-QFkBZ*dN6w@|KcimmHbg@H?3PGAPc$<_S@&nr1=%((@$D-ZLvnI{D^pEyhS4 zFJI_G+bZLCFX@0vPBX_3WmVCK)}QaxH?Drx;o1B+iV+U#}zTXfkZi{R*haITa492M$qFfY|!>(V` zl?xO>+>v@`&t;Fj&&qQC$}bO`yO6bV)KUUw2!WRbwA0nP6yW-~12P!iR?{>XRTTdy zKr3!T6u_O^>2Pw3bDz}dNP`N?S@!_*s#R-vT;;oWwS0sV(~8A$g#y|NCQjMj9cJF# z(MjE_mSb%icl!D&40{8E^skXQ7avZ{FX|DS25~{-4X84|I|MdeGuIm#qtZi4pInpH zh7(lWc8ef7?4UG*(fr`XF{SdV&p@Ygp_&`NOX@PBrk=devjm?saqakk(Sd7yembBf z0KLyIK}a5t(va;d>lAJ$HfxByFD1=qCSBonzNTn(OZ$>;nVTf7F3>2;L(>YbqiC-v2gfzu?ihlUH{R^@Bb!eK&S_1{ zMahMUu`vUu+vz8o@TXroFO{h{srr`PPRYG$Vpa;{T_0$xP&3efG2@sXv8h1m-FQT~ z0Jt8mP+`D-5)%jNSUk+r&Hqdh4g*(pRU=(`1=>CWe5u+m)3!FDj1$0xWGfL1YB|5l zu0O`nAMdqH4a8dS!E3Wy()YXO%ipz>L9sYEiu6ge5^EC$OyZ~Gm( zC0k@LpvpNz2TtRXXxDEnZ%6fzKL!;Q|Lh}@?o|5};{=t=mGu;MZ4084kn{YRD@{@% zS6L(;;=XfMfas*3M8opdZfZUV>vsYZ?m6%yhK0aofxi$Lfh9!^U^lt{`s81;^w$pg zpMN@ph@20)nxT(VPmt=~(@v0upZjKow=b>0sdh47mZOJS(ZMIF!xTO6Q~#tt|L z#y!4+2C?Y))yfJN)TO=hw%7 z?hyLpcQP(Cf|%S;&%}vw+JMX!6w2r@S z`FOIgLs|Df^!)Whsl8f&H0sCg{Nl$Q4LdGTnED$#d!^XHE&|3~wPmVeKr0JINYfMfGV z?IY0a52ZZ+Hyh>u-5v!JRsIl*`j;TuKh<{UHx8XYFFpbx?L$>Lh%a8}LFrI`bfCc> z;ltAw{aYh{Ut45~aO)aAfVhp??zF*|aB9wqQX$=ZYwt%h(E|_cv|B}GCxtHTNH`qv znSoLvJAfQg$${}L*S`GeWvWd3Vg=QSxs**`l%6{)C-df|gXyW4@qW5hMHB<3BNfY4 zdiSbjBQ@&Ift61uL}_-q%JU9y>JW{@+7pP+67^6jo7Z<1tTYmJIRdt}hh)gyW&@)8 zTJRJtgf5~9ivPy4wF?&bjYVNofqC2zL|s3dVmVhdih-Wh3O50ImSG5j#6APkSiY-X zKQu{C&Vkma2q16P_SSANZ+v4pAQ6uEDg^_jf)*eV;9rNa^S5FAZd|`L@UD0t{QV%l zCltgrVb^%&8tKRa1fD#85c`#9B8|Si0*Fpf*Y`uirfLL~03m^TL{_<)Z!9knO}Yfw z7JDL|sWSlm@s%MzHh?*RkU6Oc=EFpgjQSBu5GBhocIt!fMCKt>xNo!E)()x!z#lC_ zY#vAc*id^l9Z3zNLqU06$1-9XLgw~MWQJr>5zp6=bPY8^B4az82ZW`~q4eiEKQ_Q5 zjCJUmObD1?`wi?WCpBChL@6(r(4il;0EO-mvOe>n#vYIkA)N-8#(r!-#pPr$j{#`| zR!g2Xz8OZplqv?g$_<802HgVfG1M$Dth61#SHau$H}bNd+RWSfK)wYRSX59GC;*aG z8vk1V|E%@b{gX8@Z(IB0{5SvM@NiO3x;KM0KJ{;_cnwMCgA$&Deg3a!QhE~ig@kCt za=|YoIj-&Fv>2EyH|mv5a}a9_HDq}geRZ1#I^K;9-+pQ)|KbVRLiAR$F_|Mms_kNe zxNB{=EmNnLmC130d>QfayRi7%DJ=w^xfp8Z`0DS(MHRuFeJ+)wKh1DJaa2>c_Nnx_ zn#HPmsqON6bhbUYu)||4=UP_XYc&(8EY$-}o7h!e*nzX@FJ4RCyqz?vg!-qprCHkV zPG#3$yYfG4SNvAAtGBQAcSTv3 zV}K^YF*=(ZmUiUzwR#mh+L0;mu6`FHPFgh;a(n;2AWLvXbvjZLo1P~jtP($Uk&3s* zY0iF0gDvC57)nj#=0HF~Hol|Ew{<+m;AVXv@vBzg_^8rKT2pBnRjl<9Vt%+DC_5g# zE_02Y2nj-No_ChP-DH>-6kW0fn8mZrtlLj8zIq=twn%ySFa9mI2<9Mmt6#EaS^KAiw`j$YBuAzY8x-A`~5FQz^xSm#) z98x+w?2>-1%zyBnw4$)ZMB?VX@KlZ4n=LiiIw(Y)gMbVPaDP}U?ij%MC@hrZbl>*Y z#U!O_w56@xWlOPR?6G@Byy}b&-tvZ{c=7hIeH_=kjFWxbVUv7cmf{!Z8Vir z$|;G9EF<-GE9cL~|yD-g@5f;NInn7bj-&dO(B&xB-HN`>J8NnyzGPi$QhUESp&gqk$rsrL?P0 z&R>3VY{pBNfc1;rzE}7v0@`$~>uYb;UNMym(&+a1lqp2O37kx!Rh89{);Z3eQ=a&_ zFA=e=eNn?xhOaR0K4S~G>VmbQbIRq}ta1y_ZxP&|V%cS?mAwJkD1eFM3%|Fj?;+Ib zOy+ja*qf98(&)B*Fy+E0Y2P|X3IF42{WsLO<}OH+txG*+t8~_CUv^l58O^kBd(eEM zyIhCG`@8V`xE4>AyNHL-awTK~VrbBo)I5-uV?&LFmH|hDQm!^vQ9LDwUh%H^k+{l@ zvNM*SJO<(@zKnu06f0b~k^~LUCXc1u#Izb0_t8(}Mp_U1+}-s!Up_;7T+Q?99=un` zxhp{$$4#ZAuG$fe4XjoSDpceYE6jt$`p6}lq`~s^xfR-MTXvvUPG&m&bw$=NzM_K( zN;FE-;kyRz>qqWUa#EDz8A=}B(eJviknwf^N9qz_-FWIV^?-f&AuI2c(rjAUcuTZ0 zVdJUd`?c$2%~>m%98AnilWNme==ws~&gpwA>i6Ovu3X$sPQ{yloL{2)&Lf7_m{^2U z;j+upVxTt~HB+g<6CRw+$htPiM+vYRL@%IRhV{orPXdQ`phL)axA%YG=L(bWIy4-T zJr1m)DL&@DZ!9RpZp3V>0V>~m%e)=-bF<+Z3QtGS`VGm@&a|&?hDvje#$h?W%~tK=(WsQcYJp@or3!SL{GXj$)Q#!Pua|xgghDWQ_>MNq4G< zL}SSK$|*mSQnvHv+W6ClDdT#B~%fg$9?gWWEx^WnfD{Nrux1YRGFH9E5sc zGg~V-0nzv}_%N_S8j0?7cHj(~41nT4LIHT<4Kjwg6ZpGU&Oxb>mXHll!2_WJb(YKg zDGk`q+o6hIQ9WH$FHV4XcnA(=y&7kL>GQYI93RkO03;eV=59n2 zFG1ro_zz^Ks`OgvkK+V0w*SU=ltxX?Xe>!;5CjXr1U^MS|HcBO$~G|35b{nxWEqqs zvU(M~Ik>(~{RZC{)-q1z1p)z-r~Ldj1ex22aqyjpi7@&FJCQ|B`fhq}I#&Ou*MyL! zApq0y6cxl#wihD4mn!}B-hZw4|B!tS14kUXi~uKG3#{3-f9i|^_w@l65he&avVz+i zN?`YZI3gx=rc-#gfS&UwXY%KB*JSnK8w(aVOMu?Q`OgX%$Zuo+O+4xRwc-AUY&hs& zg7v@8h0;tSLRS9m=0bl*!rl=|h2dR&ggWw(-1Ef^nn4L$E2mkX_uh+9ym=1u%SNZe zwdU&Q7glmHxQ_KZFW?6W{EFEh5`$f9CzT10<*mUnIHJ4KntERT-6Ul3i1N{h zEwuJdzr@A$yXA%#yy^Z2E@o$0%rX0SA`}TyfmS8CF1DDBIfT{3J7yy% zyUcjJ*v3&{B`IY79nfG(LyCTggl(1CKWsq06YWyuL;=_l5ggIOd@$L|7_Qx2Z6_li zJzo`;1|lWwJ{)9irP~9PXHb?lKZrIyFDwlt(^u*d5WedG=*>XI8_ZxH=_aW$!xI6< zvk*}E?E1A>{7`hYj0s-`&u;*Tz^b!DQhjymmbb+1fb~}A&a4T%4v3wxq$T9T@wF@8 zk((ckGk^{>3Sq^5ef1sRc^h_XebLm2EdqGMD>c{<-SPljkrlBHbd$fv_1Ap;wZHy4 zkN?$jf_Mh73Z{kNTo;thK!u#LtB3pXj)TSLjS1c=W@cWOFa61sPEz9X6FT582n{qNlya20R2ADX?XqEc>CjSCnJ)*;wjBg&l2kk3tQWS{d?Q}MF4 zcCl}#tV08K_JKI3C4{jiNwa~i_CRT0%_nMjmq4jEFR0|W0PIQ@kZ6uf1%96gNX9nA zlp*so{VK(}e9f+?S-&mv&l(1zT9N`;F zDllcoFCx((P;^e@8%u3yFh{oz{eo568XuO#$@~H(`~sTK!#1yh;$3Kf#vng^4awX( z7*r&;ISWQ8O|k>wQg+~_`4yPz4-k}kz+|uuvb7zQT&FSK(7OLVn2bdaMAzkSEX!|T zA-@Hw%(59fQFNf*mvd5I?gsWgKhqSv73bLR1_N=4WCj2QJcymn4Xy{iN!~}%# z4$)Mn!+d~U0d|68@Y>%8^ZV%nG2q`%)+46)cIetpkgyM>X>R=6V173V*qvW9m`4i@ zw>V%_Hc;XTA)h(`UQ3P+<{Ss9`M0tBeG+)7av<2d(;4v@I3?j?f26^WqO<*@eAv$*j$l_e*REVLc z0o?ZxX{Svj=UyE&<$2r`)!)jea&Ea)WBCEyAgk%+D}2zSY{}MFF8BL;f_PJKOMyEN zvL;Ed_O74$UXl47TX>a|$pHZbd1l zZZRuCMh^4RA$Oh4QtGXyw9OM9Fam=MAZSr^8vof$FFwU+aU!h0@a|oFEMaNoHYVgy zi=E}+(Ce%fq7O9C%h#AK%zY%g42L(=K_XuyKJC!e+?m+RkIrcb z48DmuqG@=qpj(4Ft-USw@^Dnfi5<6DKkeSZrBb=II)Q1h4WzhMQ1gpmZ{rA@;i2&NE@AY^g|DESqT6AnDHw~l3bme@MjtN^-wT0h z`@FBEJPELj%Djh(rID1faJx8WD$IDu5bdJgD)lLVx>iKq{GW( z-PiApk3CO$^~qY`?!#xhCtWqv{qhh)E)z#G=3ZgQ{7;{xHCWM;kF~1LWDEwWiLO^}oI1=Ie`BuSJ5RMZBv-&K=t|njS8M7KohVH0 z3BM{+s!$d{|DJiY=t?Bt@>`_|&zQR0exIoK?sUO}9B+H0RoT$-!_nY=-PLB33I|M1#bahoq&$$nEXjYby zlousL2TB{tw+x!N1-MX&vhyLPGa24Q6mJcAm4Jy<0=j4@gk#OJ>`NJp#}A>MKP&P#|!3rQkj!@!s4ek+3VtzfXszNyZP*wR9UXZ z%Jn>SO>Fd1-zN8{<5=O^>O6VW_tAvd5+L4cU@G=2ad2?%^NTZeRlE|STO@N)VUL(& z$OF@zH@6qx>Sa~h$Oh->hy`4ejEee>8gRUp+>(|(i#fC5bEfv-BYhGjdTRQ#v+vS- zc@b@&1II3^a+`~^--kxl9;;zQYp{K3%W*^Z(QRGc+GIcHT6JA4s(+#$`T=(X`AqXj zbzEE;yN!QTlW4AqQCUVHrodi6$)(LN`6TLp+G{c&W>h`%~fLeH!eu zki+Uhcxh<_^@<1?LorQ?vzF;gvVYR#*&VSj)vR&-Zrq9D+otQZ(;h~;tZuI7$LQ-~D zf$9Hg?>eKJ+O~D9SQAh>QUrtmQj}gJs8m70g3_W=q=kS8NDYDtM9LvF=}K=BgLDEp z5PFp&2%#8IT4(`*07=f>=e^@S@5jAA?s)IKamOA0*nejB-dS_+HP_m6&ToFx>;oy; zYa~G=iGw@=duJH(u1jj-99L)dvSw!Uw;;PsgYSFhT1T@QdIy43De!V^6Ct`*HbP|J zYrlqkK3~tNRw?c*YoVrrB{udOQ%`3=zXV;t7PoJpKabo=_j5iSYHn!NIbiV4 zwPLu((koj_J$#*4)ieLRrk{*Fm#McHkf4nkq zTrb)Qe(`=lQIl!N)6NuHG~u0wW{X+klx33ykrPObYz3{;oc>X{xHNrSA~UnP0fAHEHT$m02t!Yj|?;eokDd06q*AAS7)B^fcWtISPgd3B2JQrA6(T({+GS!js}=RF;U+isR|v zCp9>@828(dTZk@kOgJv7k9rZK#}X~o2Q7J&X#b(0*f8x3rp(*isLZ<_A9XgxAvSNm zsbt7*<89q%r;Hv9Jq`H0XR=0XAW2yZo~HU>8T}1f#O&)@$^7s#alTe8 zX*|`a4B=%5G|h0ZV6F#kAQm?fd88GR0YM=qo8W*N0}l+^Q11{*15Bx0!2t-Y$+@JP zF?umTbI&+QeN4YCtl?nI9X_3xDvOuR8D+nLoSSKJ)5t?a@)X;m#pcMfFFsmg{>b+R z1rwbeB6#=U6OO6u&|gJjLqHBYvuNsrrkW=gD1w1zWifU3E9>74#zqX32IgZP=W{y5 zb>$`*s2falt|KTt-f3ybCz%(~er|qkkpwqEG@Mm|(xnM+iL)M?8a2oVSn`*%qxD5w zH^*Xwxo1{mUW50wcxXug??RTx#X{?CfpeTD5Vc;uUpAQk!tAK@!{>?N5|I+)IT&vG z=&IE+2Zg+jFAH0f(9w#J-X0Z@5m)G@a_zR<>)5G*b#E2-(V+RQmb0PV)SS_(hn-v| zvMsSpMDL{wBdLsTIwL4yJ+Ymi{bi}HFueTCEh{Iqh+7|$oMX#H<`cVc;x zAiPQ+b-tdCHhF3&1^w!KMWo{xtKq_^u7tHsAL7$Qopm~geD`cl{G3fT#@M<>`H|g7 zc9|xm30~pTEV!SpGpunlhlZK%vm7A>y_E|Qi(dYaR(|z_@4+}i+U~HBPwMnC7s@+LM5jK`D zut=%b{CrNnjIVKi$}BXiu5gez7?-ZdKDkv{*$=Nz3_Ilfx~NdH)XZ?Jexh`Rxm~;g z7=7i|`;}%*x3~Q%P+%jrjsCF3 z%oiakX_VZf?o}2UheE?1uZbVO_lTodrQ(or@%OrT3!BPoTfj3Tr1vep0oK{yJ&=8+ zuY`6IEEgpR_AyLfAW9g3#-L?7JYG$(F%n@rbApU@=-zqMMlWpd>#g{kvk$l2m%^D{ zg7l3T<_>${AE!tfLT4W=kw^d0HKyIfQDT|MkDHio0g=MFG}Lx`Av8NV>_eEH-rptJ zOE{opO9cqI#hRJw$wMB2+hhI|>5bX~(LWC$`X`)|740C<%O5NFrzoZj7`(;|5D>g- zaP>^LW}3P%>`#&4|IkkLwZDq@71ZA)T7PK6agN1L6PfuORRz6 z?QbADS=BI_m0ugSjS4}j^4nF2`U7{FGukTcjmV*u3F30j4gLYQ0vfRSFAYJ+E_ z0yS0fsHT}=*nBFDvH`IEUJO?6lnMnrq_z@NzcO`XE)T%I*$b{!Z^rD3G1chbrzQ=jYt{X<7fmx|6(y zieAOv4ir_k;h=Jc;M(v;1*z7UGtbI><=Z`beL)_>wa)+52;{F!(n^4u21cGaUYu8h zH~YiNGLO;fZs3P=x(nGVsho+k=I8SE`b0e<3&(|zq49D;W)_`|19SBm<)}3CJ|7gH z##JQQzqrfVXSud&>rSp$;b%q)kO)084nTg3te+`kd*Yj0s%G53@Xjkv@jZRjNVNQr z)Xc?o!7?vde(~n0HsKn2`ravDoh(VjRb!%G<)jhk{!9uJwRV6BAtN_5Z^Ef2sbqEi z6-8s+Hsh+;W+Uk#$}#ygvi8HnCJ=!kCjs%n0By~2CAAk(-^T(nZV!2Hltj7Gqe|H^ z?;5{sG-5d_hBjpd0xqv%0Fb>wpqKrl5@$K5-3t7joT=u@XZXHNU9qz%`c=X&&YFPS zT;4L$$s^_1Pzxz1fC+1ubJ}21yI}Iw^|Bb%wiSA@gKS()^hR1nwaTILYJp0>!Mk4A zb2!=qa_aRlh}m&+J;c5t%*FSNQ~uR;Yb?b%4MH&*lM8LAaBtU;5KQt$~Qc-jd^ zRKg@xZY*-$Fd4g9G32pNHRKZ~3rSp(0@Y!UD_3$*!xGj2{F7|+u3Y5DEIdHe##Rx- z=WN4=E2E0xkjOwE)XARDVb@a(@TpJJj^yf(@rZ!$vfMJ$)dr!%nx@z_thvHmy$%oM z4VP{rk4`#wIBt0yM9+$ai#75}y+7M~3)is_8O)N$z%l}V^>5*KnL}~WYAMZ3&J2}+ zdrB2=7e;CoXDGN9=a8{GHT&--C&HjdhV*2PeLK3ZgM}lzB*1y-yq4sGk{U9cbG@U2 zk6%mQt#oO7k*$X}&V&5|Da^6mebO=6Jm``!-n6dDlC%!gMFO1V8LKG>U&8XyocY}n zUdUD}j=U_UZaG&S;nk(>Y3qGO=EWI>*i!esmzJtF`&uk$sxx)Ru`EyBT8;QL!F#vL z5*JTu4SafAbs_t~*GR-Z(<-T86AvLuM>b*eBba^yZ9>DIq0H*q)5NGM!`w@mV^^~RJsZ*A`iWacfVJU=WgbuC%u zwDHD%BI}djvK-7W#}RzmEAGY$*lqFc?+{safd;T-yv1gED`tc`Y0+U<)H`xq@^yl_ zdW7rD0TvBvsEwfVXBgSupsoujS(#y;W*^-SnqXw&JY%N!lt;H8(L6IYN1d3$ce4B(XnP9pt)`sT46vRvAqKld?Fwc}X{01_2r8qr_l(%nC0QtrimyUG5D(5F^ z?82I`tmAaOwdF0`Q;i;}yXn#CF6UjImxF}PD}`KpE>HeIgic53_UWiwQQTIAag`YV z2$7fEx7yd$58WL)fid_3Qtx;1;%Afqqv>Jq1SpR~r3!ftvNay`!9rjs1Jv`KGdVIK zkoorwsjhiF*|-SfJlBf>Wn5nYGB(?|+tXA+1e2exm7*?f7-;%-EjK#XO-4EkfImnJ zMeAf(-H+F2BGdGByD{S-bbQ?2$IYqT2?2n)Och9ftxc#;Cw^cgxXA|C=aj~2l}N8B zlK8@9gBk@#yTT`J5ggSHzd$>}m%;ny4%cNKpkJyMWPyY$zTDvK<%@{=HBuKT6fv$R zXA|7PTkJ09;|>zK_1$NIX+$UD#zQ1@<>Bg%YLoSASR?AmPs2$Cj!De3A6GWvF z8xC^r*&Hu$%77*df20>sU6A}GlUCpM`>x_yNmU3f2ad;wzzY_ Date: Thu, 5 Apr 2018 07:16:55 -0300 Subject: [PATCH 121/435] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 8095c8d89..de6cae890 100644 --- a/README.md +++ b/README.md @@ -16,16 +16,16 @@ Each device has a physical address ( like a MAC ) as 1.1.0 and that address is u Each device can be configured with group addresses as 2/2/1 and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the 2/2/1 for turning on/off their outputs, and other device send _Turn ON_ command to 2/2/1, both devices will turn on their outputs. +## Requirements ## + +This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). + ## Next Version Menu ## -## Requirements ## - -This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). - Further development will change the library to the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change on the _esp-knx-ip.h_ file the following: ``` #define MAX_CALLBACK_ASSIGNMENTS 20 @@ -33,7 +33,7 @@ Further development will change the library to the KNX Library [envy/esp-knx-ip] #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 //#define ESP_KNX_DEBUG <-- comment this line ``` -The ESP KNX IP library also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +The ESP KNX IP library (async-udp branch) also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) Copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip From 182521a3627c5cdee9614d25a9b3dadc53b9a1f4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 09:37:55 -0300 Subject: [PATCH 122/435] Update settings.h --- sonoff/settings.h | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index ddcd15b2c..cf9ee775a 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -93,7 +93,7 @@ typedef union { uint32_t data; struct { uint32_t time : 11; // bits 0 - 10 = minutes in a day - uint32_t mday : 5; // bits 11 - 15 = 32 days in a month + uint32_t mode : 5; // bits 11 - 15 = timer modes - Scheduler, Sunrise, Sunset uint32_t days : 7; // bits 16 - 22 = week day mask uint32_t device : 4; // bits 23 - 26 = 16 devices uint32_t power : 2; // bits 27 - 28 = 4 power states - Off, On, Toggle, Blink @@ -253,16 +253,18 @@ struct SYSCFG { byte free_66d[3]; // 66D Timer timer[MAX_TIMERS]; // 670 + int latitude; // 6B0 + int longitude; // 6B4 + + uint16_t knx_physsical_addr; // 6B8 (address_t is a uint16_t) + byte knx_GA_registered; // 6BB Number of Group Address to read + byte knx_CB_registered; // 6BC Number of Group Address to write + uint16_t knx_GA_addr[MAX_KNX_GA]; // 6BD (address_t is a uint16_t) x KNX_max_GA + uint16_t knx_CB_addr[MAX_KNX_CB]; // 6D1 (address_t is a uint16_t) x KNX_max_CB + byte knx_GA_param[MAX_KNX_GA]; // 6E5 Type of Input (relay changed, button pressed, sensor read <-teleperiod) + byte knx_CB_param[MAX_KNX_CB]; // 6EF Type of Output (set relay, toggle relay, reply sensor value) - uint16_t knx_physsical_addr; // 6B0 (address_t is a uint16_t) - byte knx_GA_registered; // 6B3 Number of Group Address to read - byte knx_CB_registered; // 6B4 Number of Group Address to write - uint16_t knx_GA_addr[MAX_KNX_GA]; // 6B5 (address_t is a uint16_t) x KNX_max_GA - uint16_t knx_CB_addr[MAX_KNX_CB]; // 6C9 (address_t is a uint16_t) x KNX_max_CB - byte knx_GA_param[MAX_KNX_GA]; // 6DD Type of Input (relay changed, button pressed, sensor read <-teleperiod) - byte knx_CB_param[MAX_KNX_CB]; // 6E7 Type of Output (set relay, toggle relay, reply sensor value) - - // 6F1 - FFF free locations + // 6F9 - FFF free locations } Settings; struct RTCMEM { From 3db812386d5f56ecaca9a0d4696ec391fa404b0f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 09:45:48 -0300 Subject: [PATCH 123/435] Update settings.h --- sonoff/settings.h | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index cf9ee775a..3dd8aa621 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -48,7 +48,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t not_power_linked : 1; // bit 20 (v5.11.1f) uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i) uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f) - uint32_t knx_enabled : 1; // bit 23 KNX + uint32_t spare23 : 1; uint32_t spare24 : 1; uint32_t spare25 : 1; uint32_t spare26 : 1; @@ -255,16 +255,7 @@ struct SYSCFG { Timer timer[MAX_TIMERS]; // 670 int latitude; // 6B0 int longitude; // 6B4 - - uint16_t knx_physsical_addr; // 6B8 (address_t is a uint16_t) - byte knx_GA_registered; // 6BB Number of Group Address to read - byte knx_CB_registered; // 6BC Number of Group Address to write - uint16_t knx_GA_addr[MAX_KNX_GA]; // 6BD (address_t is a uint16_t) x KNX_max_GA - uint16_t knx_CB_addr[MAX_KNX_CB]; // 6D1 (address_t is a uint16_t) x KNX_max_CB - byte knx_GA_param[MAX_KNX_GA]; // 6E5 Type of Input (relay changed, button pressed, sensor read <-teleperiod) - byte knx_CB_param[MAX_KNX_CB]; // 6EF Type of Output (set relay, toggle relay, reply sensor value) - - // 6F9 - FFF free locations + // 6B8 - FFF free locations } Settings; struct RTCMEM { From af8e5d89a8b92862bf6b3ff3abd707da5301f269 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 09:47:13 -0300 Subject: [PATCH 124/435] Update settings.h --- sonoff/settings.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index 3dd8aa621..cf9ee775a 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -48,7 +48,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t not_power_linked : 1; // bit 20 (v5.11.1f) uint32_t no_power_on_check : 1; // bit 21 (v5.11.1i) uint32_t mqtt_serial : 1; // bit 22 (v5.12.0f) - uint32_t spare23 : 1; + uint32_t knx_enabled : 1; // bit 23 KNX uint32_t spare24 : 1; uint32_t spare25 : 1; uint32_t spare26 : 1; @@ -255,7 +255,16 @@ struct SYSCFG { Timer timer[MAX_TIMERS]; // 670 int latitude; // 6B0 int longitude; // 6B4 - // 6B8 - FFF free locations + + uint16_t knx_physsical_addr; // 6B8 (address_t is a uint16_t) + byte knx_GA_registered; // 6BB Number of Group Address to read + byte knx_CB_registered; // 6BC Number of Group Address to write + uint16_t knx_GA_addr[MAX_KNX_GA]; // 6BD (address_t is a uint16_t) x KNX_max_GA + uint16_t knx_CB_addr[MAX_KNX_CB]; // 6D1 (address_t is a uint16_t) x KNX_max_CB + byte knx_GA_param[MAX_KNX_GA]; // 6E5 Type of Input (relay changed, button pressed, sensor read <-teleperiod) + byte knx_CB_param[MAX_KNX_CB]; // 6EF Type of Output (set relay, toggle relay, reply sensor value) + + // 6F9 - FFF free locations } Settings; struct RTCMEM { From db215db5110a0ccb5587850e3be4f11f78a5a64f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 18:26:28 -0300 Subject: [PATCH 125/435] Update user_config.h --- sonoff/user_config.h | 226 ++++++++++++++++++++++++------------------- 1 file changed, 126 insertions(+), 100 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 0f6cd9940..6803d5289 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -1,18 +1,14 @@ /* user_config.h - user specific configuration for Sonoff-Tasmota - Copyright (C) 2018 Theo Arends - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - This program 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 General Public License for more details. - You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -21,35 +17,33 @@ #define _USER_CONFIG_H_ /*********************************************************************************************\ - * ATTENTION: Changes to most PARAMETER defines will only override flash settings if you change - * define CFG_HOLDER. - * Most parameters can be changed online using commands via MQTT, WebConsole or serial + * This file consists of TWO sections. * - * Corresponding MQTT/Serial/Console commands in [brackets] + * SECTION 1: + * The first section contains PARAMETERS overriding flash settings if define CFG_HOLDER is CHANGED. + * All parameters can be persistent changed online using commands via MQTT, WebConsole or Serial. + * Corresponding MQTT/Serial/Console commands are shown in [brackets] + * + * SECTION 2: + * The second section contains Enabled and Disabled FEATURES allowing different program size. + * Changes in this section do NOT need a change of define CFG_HOLDER. + * + * ATTENTION: + * Users are advised to use the user_config_override.h file for most changes. \*********************************************************************************************/ -// -- Localization -------------------------------- -//#define MY_LANGUAGE cs-CZ // Czech in Czech -//#define MY_LANGUAGE de-DE // German in Germany -//#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default -//#define MY_LANGUAGE es-AR // Spanish in Argentina -//#define MY_LANGUAGE fr-FR // French in France -//#define MY_LANGUAGE hu-HU // Hungarian in Hungary -//#define MY_LANGUAGE it-IT // Italian in Italy -//#define MY_LANGUAGE nl-NL // Dutch in the Netherlands -//#define MY_LANGUAGE pl-PL // Polish in Poland -//#define MY_LANGUAGE pt-PT // Portuguese in Portugal -//#define MY_LANGUAGE ru-RU // Russian in Russia -//#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China -//#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan +//#define USE_CONFIG_OVERRIDE // Uncomment to use user_config_override.h file. See README.md + +/*********************************************************************************************\ + * SECTION 1 + * - After initial load any change here only take effect if CFG_HOLDER is changed too +\*********************************************************************************************/ + +// -- Master parameter control -------------------- +#define CFG_HOLDER 0x20161209 // [Reset 1] Change this value to load SECTION1 configuration parameters to flash // -- Project ------------------------------------- -#define PROJECT "sonoff" // PROJECT is used as the default topic delimiter and OTA file name - // As an IDE restriction it needs to be the same as the main .ino file - -#define CFG_HOLDER 0x20161209 // [Reset 1] Change this value to load following default configuration parameters - -//#define USE_CONFIG_OVERRIDE // Uncomment to use your own user_config_override.h file. See README.md +#define PROJECT "sonoff" // PROJECT is used as the default topic delimiter #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) @@ -64,49 +58,28 @@ #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- #define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host #define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port -#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE -#define SERIAL_LOG_LEVEL LOG_LEVEL_NONE // [SerialLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE -#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE +#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] +#define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] +#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.ino.bin" // [OtaUrl] -//#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+4k5 code) - -/*********************************************************************************************\ - * Select ONE of possible MQTT library types below -\*********************************************************************************************/ -// Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library -// Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only -// Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only // -- MQTT ---------------------------------------- #define MQTT_USE 1 // [SetOption3] Select default MQTT use (0 = Off, 1 = On) -// !!! TLS uses a LOT OF MEMORY (20k) so be careful to enable other options at the same time !!! -//#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem) - Disable by // - // Needs Fingerprint, TLS Port, UserId and Password -#ifdef USE_MQTT_TLS - #define MQTT_HOST "" // [MqttHost] - #define MQTT_FINGERPRINT1 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint1] - #define MQTT_FINGERPRINT2 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint2] - #define MQTT_PORT 20123 // [MqttPort] MQTT TLS port - #define MQTT_USER "cloudmqttuser" // [MqttUser] Mandatory user - #define MQTT_PASS "cloudmqttpassword" // [MqttPassword] Mandatory password -#else - #define MQTT_HOST "" // [MqttHost] - #define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT) - #define MQTT_USER "DVES_USER" // [MqttUser] Optional user - #define MQTT_PASS "DVES_PASS" // [MqttPassword] Optional password -#endif +#define MQTT_HOST "" // [MqttHost] +#define MQTT_FINGERPRINT1 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint1] +#define MQTT_FINGERPRINT2 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint2] +#define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT) +#define MQTT_USER "DVES_USER" // [MqttUser] MQTT user +#define MQTT_PASS "DVES_PASS" // [MqttPassword] MQTT password #define MQTT_BUTTON_RETAIN 0 // [ButtonRetain] Button may send retain flag (0 = off, 1 = on) #define MQTT_POWER_RETAIN 0 // [PowerRetain] Power status message may send retain flag (0 = off, 1 = on) @@ -118,7 +91,7 @@ #define MQTT_CMND_HOLD "HOLD" // [StateText4] Command to send when button is kept down for over KEY_HOLD_TIME * 0.1 seconds (needs to be a string like "HOLD") // -- MQTT topics --------------------------------- -//#define MQTT_FULLTOPIC "tasmota/bedroom/%topic%/%prefix%/" // Up to max 80 characers + // Example "tasmota/bedroom/%topic%/%prefix%/" up to 80 characers #define MQTT_FULLTOPIC "%prefix%/%topic%/" // [FullTopic] Subscribe and Publish full topic name - Legacy topic // %prefix% token options @@ -135,63 +108,40 @@ #define TELE_PERIOD 300 // [TelePeriod] Telemetry (0 = disable, 10 - 3600 seconds) // -- MQTT - Domoticz ----------------------------- -#define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem) - Disable by // - #define DOMOTICZ_IN_TOPIC "domoticz/in" // Domoticz Input Topic - #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic - #define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) (Optional) - -// -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support (+14.7k code) +#define DOMOTICZ_UPDATE_TIMER 0 // [DomoticzUpdateTimer] Send relay status (0 = disable, 1 - 3600 seconds) // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) - #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix - #define HOME_ASSISTANT_DISCOVERY_ENABLE 0 // [SetOption19] Home Assistant Discovery (0 = Disable, 1 = Enable) +#define HOME_ASSISTANT_DISCOVERY_ENABLE 0 // [SetOption19] Home Assistant Discovery (0 = Disable, 1 = Enable) // -- HTTP ---------------------------------------- -#define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) - Disable by // - #define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin) - #define WEB_PORT 80 // Web server Port for User and Admin mode - #define WEB_USERNAME "admin" // Web server Admin mode user name - #define WEB_PASSWORD "" // [WebPassword] Web server Admin mode Password for WEB_USERNAME (empty string = Disable) - #define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa - #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) - #define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo (single relay/light) or Hue Bridge emulation (multi relay/light) (EMUL_NONE, EMUL_WEMO or EMUL_HUE) - -// -- mDNS ---------------------------------------- -#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) - Disable by // - #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ - #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) +#define WEB_SERVER 2 // [WebServer] Web server (0 = Off, 1 = Start as User, 2 = Start as Admin) +#define WEB_PASSWORD "" // [WebPassword] Web server Admin mode Password for WEB_USERNAME (empty string = Disable) +#define FRIENDLY_NAME "Sonoff" // [FriendlyName] Friendlyname up to 32 characters used by webpages and Alexa +#define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo (single relay/light) or Hue Bridge emulation (multi relay/light) (EMUL_NONE, EMUL_WEMO or EMUL_HUE) // -- Time - Up to three NTP servers in your region #define NTP_SERVER1 "pool.ntp.org" // [NtpServer1] Select first NTP server by name or IP address (129.250.35.250) #define NTP_SERVER2 "nl.pool.ntp.org" // [NtpServer2] Select second NTP server by name or IP address (5.39.184.5) #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) -#define USE_TIMERS // Add support for up to 16 timers (+2k2 code) - #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) - #define USE_SUNRISE // Add support for Sunrise and sunset tools (+16k) - #define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset - #define LONGITUDE 2.294442 // [Longitude] Your location to be used with sunrise and sunset - -// -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes -#define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes - -// -- Time - Start Standard Time and timezone offset from UTC in minutes -#define TIME_STD North, Last, Sun, Oct, 3, +60 // Northern Hemisphere, Last sunday in october 02:00 +60 minutes +// -- Location ------------------------------------ +#define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset +#define LONGITUDE 2.294442 // [Longitude] Your location to be used with sunrise and sunset // -- Application --------------------------------- -#define APP_TIMEZONE 1 // [Timezone] +1 hour (Amsterdam) (-12 .. 12 = hours from UTC, 99 = use TIME_DST/TIME_STD) -#define APP_LEDSTATE LED_POWER // [LedState] Function of led (LED_OFF, LED_POWER, LED_MQTTSUB, LED_POWER_MQTTSUB, LED_MQTTPUB, LED_POWER_MQTTPUB, LED_MQTT, LED_POWER_MQTT) +#define APP_TIMEZONE 1 // [Timezone] +1 hour (Amsterdam) (-13 .. 14 = hours from UTC, 99 = use TIME_DST/TIME_STD) +#define APP_LEDSTATE LED_POWER // [LedState] Function of led + // (LED_OFF, LED_POWER, LED_MQTTSUB, LED_POWER_MQTTSUB, LED_MQTTPUB, LED_POWER_MQTTPUB, LED_MQTT, LED_POWER_MQTT) #define APP_PULSETIME 0 // [PulseTime] Time in 0.1 Sec to turn off power for relay 1 (0 = disabled) -#define APP_POWERON_STATE 3 // [PowerOnState] Power On Relay state (0 = Off, 1 = On, 2 = Toggle Saved state, 3 = Saved state) +#define APP_POWERON_STATE POWER_ALL_SAVED // [PowerOnState] Power On Relay state + // (POWER_ALL_OFF, POWER_ALL_ON, POWER_ALL_SAVED_TOGGLE, POWER_ALL_SAVED, POWER_ALL_ALWAYS_ON, POWER_ALL_OFF_PULSETIME_ON) #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1 #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000) #define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec) #define KEY_HOLD_TIME 40 // [SetOption32] Number of 0.1 seconds to hold Button or external Pushbutton before sending HOLD message -#define SWITCH_MODE TOGGLE // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV or PUSHBUTTON_TOGGLE (the wall switch state) -#define WS2812_LEDS 30 // [Pixels] Number of WS2812 LEDs to start with +#define SWITCH_MODE TOGGLE // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON, PUSHBUTTON_INV, PUSHBUTTONHOLD, PUSHBUTTONHOLD_INV, PUSHBUTTON_TOGGLE (the wall switch state) +#define WS2812_LEDS 30 // [Pixels] Number of WS2812 LEDs to start with (max is 512) #define TEMP_CONVERSION 0 // [SetOption8] Return temperature in (0 = Celsius or 1 = Fahrenheit) #define TEMP_RESOLUTION 1 // [TempRes] Maximum number of decimals (0 - 3) showing sensor Temperature @@ -199,6 +149,77 @@ #define PRESSURE_RESOLUTION 1 // [PressRes] Maximum number of decimals (0 - 3) showing sensor Pressure #define ENERGY_RESOLUTION 3 // [EnergyRes] Maximum number of decimals (0 - 5) showing energy usage in kWh +/*********************************************************************************************\ + * END OF SECTION 1 + * + * SECTION 2 + * - Enable a feature by removing both // in front of it + * - Disable a feature by preceding it with // +\*********************************************************************************************/ + +//#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+4k5 code) + +// -- Localization -------------------------------- + // If non selected the default en-GB will be used +//#define MY_LANGUAGE cs-CZ // Czech in Czech +//#define MY_LANGUAGE de-DE // German in Germany +//#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default +//#define MY_LANGUAGE es-AR // Spanish in Argentina +//#define MY_LANGUAGE fr-FR // French in France +//#define MY_LANGUAGE hu-HU // Hungarian in Hungary +//#define MY_LANGUAGE it-IT // Italian in Italy +//#define MY_LANGUAGE nl-NL // Dutch in the Netherlands +//#define MY_LANGUAGE pl-PL // Polish in Poland +//#define MY_LANGUAGE pt-PT // Portuguese in Portugal +//#define MY_LANGUAGE ru-RU // Russian in Russia +//#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China +//#define MY_LANGUAGE zh-TW // Chinese (Traditional) in Taiwan + +/*-------------------------------------------------------------------------------------------*\ + * Select ONE of possible three MQTT library types below +\*-------------------------------------------------------------------------------------------*/ + // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library + // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only + // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support +//#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only + +// -- MQTT - Domoticz ----------------------------- +#define USE_DOMOTICZ // Enable Domoticz (+6k code, +0.3k mem) + #define DOMOTICZ_IN_TOPIC "domoticz/in" // Domoticz Input Topic + #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic + +// -- MQTT - Home Assistant Discovery ------------- +#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) + #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix + +// -- MQTT - TLS ---------------------------------- + // !!! TLS uses a LOT OF MEMORY so be careful to enable other options at the same time !!! +//#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem) + +// -- HTTP ---------------------------------------- +#define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) + #define WEB_PORT 80 // Web server Port for User and Admin mode + #define WEB_USERNAME "admin" // Web server Admin mode user name + #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) + +// -- mDNS ---------------------------------------- +#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) + #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ + #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) + +// -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes +#define TIME_DST North, Last, Sun, Mar, 2, +120 // Northern Hemisphere, Last sunday in march at 02:00 +120 minutes + +// -- Time - Start Standard Time and timezone offset from UTC in minutes +#define TIME_STD North, Last, Sun, Oct, 3, +60 // Northern Hemisphere, Last sunday in october 02:00 +60 minutes + +// -- Time ---------------------------------------- +#define USE_TIMERS // Add support for up to 16 timers (+2k2 code) + #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) + #define USE_SUNRISE // Add support for Sunrise and sunset tools (+16k) + // -- Internal Analog input ----------------------- #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices @@ -226,6 +247,12 @@ #define MGS_SENSOR_ADDR 0x04 // Default Mutichannel Gas sensor i2c address #endif // USE_I2C +// -- SPI sensors --------------------------------- +//#define USE_SPI // SPI using default library +#ifdef USE_SPI + +#endif // USE_SPI + // -- Serial sensors ------------------------------ #define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) #define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) @@ -257,7 +284,6 @@ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! * To be used as step 1 during upgrade. * Step 2 is re-compile with option BE_MINIMAL commented out. - * !!! Needed for next release of Arduino/ESP8266 (+22k code, +2k mem) !!! \*********************************************************************************************/ //#define BE_MINIMAL // Minimal version if upgrade memory gets tight (-45k code, -2k mem) From cc003fa900ceb95a0cb2d46942a422816ea2f43e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 18:33:04 -0300 Subject: [PATCH 126/435] Update user_config.h --- sonoff/user_config.h | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 6803d5289..756e21a7c 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -58,15 +58,15 @@ #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- #define SYS_LOG_HOST "" // [LogHost] (Linux) syslog host #define SYS_LOG_PORT 514 // [LogPort] default syslog UDP port -#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] -#define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] -#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] +#define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE +#define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE +#define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.ino.bin" // [OtaUrl] @@ -179,9 +179,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -198,6 +198,9 @@ // !!! TLS uses a LOT OF MEMORY so be careful to enable other options at the same time !!! //#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem) +// -- KNX IP Protocol ----------------------------- +#define USE_KNX // Enable KNX IP Protocol Support (+18k code, +3k3 mem) + // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) #define WEB_PORT 80 // Web server Port for User and Admin mode From cc07531f72e37902adf6f9f3c14612d1aacb25b6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 20:12:56 -0300 Subject: [PATCH 127/435] Update user_config.h --- sonoff/user_config.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 756e21a7c..7d4c2b4f2 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -1,14 +1,18 @@ /* user_config.h - user specific configuration for Sonoff-Tasmota + Copyright (C) 2018 Theo Arends + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License along with this program. If not, see . */ From fc7f10e624500613d7ac98d9f42f1463798ad22c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 21:11:37 -0300 Subject: [PATCH 128/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69cbb1208..09148145f 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ Further development will change the library to the KNX Library [envy/esp-knx-ip] ``` The ESP KNX IP library (async-udp branch) also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) -Copy of both libraries with the modifications needed are available at: +A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP From f0a52ae3db91a552fa40c4fc3455f7102077776b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 5 Apr 2018 21:13:17 -0300 Subject: [PATCH 129/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 09148145f..e579f0846 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff- The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. -Each device has a physical address ( like a MAC ) as 1.1.0 and that address is used for configuration purposes. +Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. -Each device can be configured with group addresses as 2/2/1 and that address can be used for sending/receiving commands. -So, for example, if 2 devices that are configured with the 2/2/1 for turning on/off their outputs, and other device send _Turn ON_ command to 2/2/1, both devices will turn on their outputs. +Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. +So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. ## Requirements ## From d27c772f884d92bd04abee0409534744ff44b25e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 6 Apr 2018 23:02:37 -0300 Subject: [PATCH 130/435] Update esp-knx-ip.h --- lib/esp-knx-ip-async-udp/esp-knx-ip.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.h b/lib/esp-knx-ip-async-udp/esp-knx-ip.h index 409bd2c5a..b4f9ce8d7 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.h +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.h @@ -14,8 +14,8 @@ * Required EEPROM size is 8 + MAX_GA_CALLBACKS * 3 + 2 + MAX_CONFIG_SPACE which is 552 by default */ #define EEPROM_SIZE 1024 // [Default 1024] -#define MAX_CALLBACK_ASSIGNMENTS 20 // [Default 10] Maximum number of group address callbacks that can be stored -#define MAX_CALLBACKS 20 // [Default 10] Maximum number of callbacks that can be stored +#define MAX_CALLBACK_ASSIGNMENTS 10 // [Default 10] Maximum number of group address callbacks that can be stored +#define MAX_CALLBACKS 10 // [Default 10] Maximum number of callbacks that can be stored #define MAX_CONFIGS 20 // [Default 20] Maximum number of config items that can be stored #define MAX_CONFIG_SPACE 0x0200 // [Default 0x0200] Maximum number of bytes that can be stored for custom config From 5c8d0b32d849a14db54d6d2359362eebac56285f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 6 Apr 2018 23:12:04 -0300 Subject: [PATCH 131/435] Update README.md --- README.md | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index e579f0846..9f67c17d7 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -# Sonoff-Tasmota ( KNX MOD ) +# ( Work In Progress ) Sonoff-Tasmota KNX MOD This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to integrate [KNX Protocol](https://www.knx.org/knx-en/index.php) to its features. Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) -Basic KNX IP Functionality is Available. **( Work in progress )** +Basic KNX IP Functionality is Available. _Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff-Tasmota_ @@ -18,19 +18,10 @@ So, for example, if 2 devices that are configured with the **2 / 2 / 1** for tur ## Requirements ## -This MOD requires only the KNX Library [ascillato/ESP-KNX-IP_Lite](https://github.com/ascillato/ESP-KNX-IP_Lite). - -## Next Version Menu ## - - - - - -Further development will change the library to the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change on the _esp-knx-ip.h_ file the following: +This MOD requires the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change on the _esp-knx-ip.h_ file the following: ``` -#define MAX_CALLBACK_ASSIGNMENTS 20 -#define MAX_CALLBACKS 20 #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 + //#define ESP_KNX_DEBUG <-- comment this line ``` The ESP KNX IP library (async-udp branch) also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) @@ -39,10 +30,16 @@ A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP +## Next Version Menu ## + + + + + ## Development Road Map ## **For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu (need improvement) +- [x] Add Web Menu - [x] Add Feature to Receive telegrams and modify Relay Status - [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) - [x] Add Feature to Send telegrams of relay status change From 3d82ca212cce7dbe2773f2d3cc749149842d819f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:37:42 -0300 Subject: [PATCH 132/435] Update sonoff.ino --- sonoff/sonoff.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index e1ac640f2..5d515f4d4 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1137,7 +1137,7 @@ boolean send_button_power(byte key, byte device, byte state) result = true; } #ifdef USE_KNX - knx_send_button_power(key, device, state); + KNX_Send_Button_Power(key, device, state); #endif return result; } @@ -1190,7 +1190,7 @@ void ExecuteCommandPower(byte device, byte state) DomoticzUpdatePowerState(device); #endif // USE_DOMOTICZ #ifdef USE_KNX - KNXUpdatePowerState(device, power); + KNX_Update_Power_State(device, power); #endif // USE_KNX if (device <= MAX_PULSETIMERS) { // pulse_timer[(device -1)] = (power & mask) ? Settings.pulse_timer[(device -1)] : 0; From ea96420856d65bdef3dd844792c4624f64c98da7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:41:15 -0300 Subject: [PATCH 133/435] Update en-GB.h --- sonoff/language/en-GB.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 7ec785e88..63bc463af 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -379,11 +379,17 @@ #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_TO "to" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" From 189a9ae39f559a0e2a6a1670c4a9037fa68f84fc Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:41:59 -0300 Subject: [PATCH 134/435] Update es-AR.h --- sonoff/language/es-AR.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index bf2f0ad16..5d961333a 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -136,8 +136,8 @@ #define D_SUBNET_MASK "Máscara Subred" #define D_SUBSCRIBE_TO "Suscribir a" #define D_SUCCESSFUL "Exitosa" -#define D_SUNRISE "Sunrise" -#define D_SUNSET "Sunset" +#define D_SUNRISE "Salida del Sol" +#define D_SUNSET "Puesta del Sol" #define D_TEMPERATURE "Temperatura" #define D_TO "a" #define D_TOGGLE "Conmutar" @@ -379,11 +379,17 @@ #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Debe ser única en la red KNX )" #define D_KNX_ENABLE "Habilitar KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Datos a Enviar a las Direcciones de Grupo" -#define D_KNX_ADD "Agregar" +#define D_ADD "Agregar" #define D_DELETE "Eliminar" #define D_REPLY "Responder" #define D_KNX_GROUP_ADDRESS_TO_READ "Direcciones de Grupo para Recibir Datos" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Recibido desde" +#define D_KNX_COMMAND_WRITE "Escribir" +#define D_KNX_COMMAND_READ "Leer" +#define D_KNX_COMMAND_OTHER "Otro" +#define D_TO "a" +#define D_SENT_TO "enviada a" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" From bdf3f516260b0ee076afebb0873c2fcd3c5a943b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:44:51 -0300 Subject: [PATCH 135/435] Update es-AR.h --- sonoff/language/es-AR.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 5d961333a..2435907c1 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -388,7 +388,6 @@ #define D_KNX_COMMAND_WRITE "Escribir" #define D_KNX_COMMAND_READ "Leer" #define D_KNX_COMMAND_OTHER "Otro" -#define D_TO "a" #define D_SENT_TO "enviada a" // xdrv_03_energy.ino From 6f524e95aefb2a726a6b1fdec3f2763d23a4c020 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:45:55 -0300 Subject: [PATCH 136/435] Update en-GB.h --- sonoff/language/en-GB.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 63bc463af..08697f533 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -388,7 +388,6 @@ #define D_KNX_COMMAND_WRITE "Write" #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" -#define D_TO "to" #define D_SENT_TO "sent to" // xdrv_03_energy.ino From f9e78c1f3a96a44466d82566f3847fef5e4ab060 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:47:15 -0300 Subject: [PATCH 137/435] Update cs-CZ.h --- sonoff/language/cs-CZ.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 3747497d0..4ed42d50b 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie Dnes" From 4308144f4ad1fd013af9999c5b46905adad02b54 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:49:45 -0300 Subject: [PATCH 138/435] Update es-AR.h --- sonoff/language/es-AR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 2435907c1..4e52136d3 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -77,6 +77,7 @@ #define D_DNS_SERVER "DNS Server" #define D_DONE "Listo" #define D_DST_TIME "DST" +#define D_ECO2 "eCO2" #define D_EMULATION "Emulación" #define D_ENABLED "Habilitado" #define D_ERASE "Borrar" From e29475071585b3b1b5b8e5e7b36aaade0010d827 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:50:05 -0300 Subject: [PATCH 139/435] Update en-GB.h --- sonoff/language/en-GB.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 08697f533..478635111 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -77,6 +77,7 @@ #define D_DNS_SERVER "DNS Server" #define D_DONE "Done" #define D_DST_TIME "DST" +#define D_ECO2 "eCO2" #define D_EMULATION "Emulation" #define D_ENABLED "Enabled" #define D_ERASE "Erase" From b2e5e4931ccff7b6ddf0e2a379eac97764c70cbe Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:51:27 -0300 Subject: [PATCH 140/435] Update de-DE.h --- sonoff/language/de-DE.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index a206f9160..33010e0e3 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" From 88592654d342a4a3ed8211e1c2ea35d00ccadf74 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:51:55 -0300 Subject: [PATCH 141/435] Update fr-FR.h --- sonoff/language/fr-FR.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 0add02d89..89b2711a9 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xsns_03_energy.ino #define D_ENERGY_TODAY "Energie aujourd'hui" From d27f62e5db445286b13562e570feeff0e0b2e390 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:52:21 -0300 Subject: [PATCH 142/435] Update hu-HU.h --- sonoff/language/hu-HU.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 7d23811ba..4c01c884d 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Mai Energia" From 7c3453e3640549fba62adfbb3af779f68e548149 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:53:14 -0300 Subject: [PATCH 143/435] Update it-IT.h --- sonoff/language/it-IT.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 2ada50377..4d4d8e6c7 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Oggi" From 51fd3f41b0d19a261d3f5d13d7c23fd75e7b99d5 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:53:33 -0300 Subject: [PATCH 144/435] Update nl-NL.h --- sonoff/language/nl-NL.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index a498bbe15..09bdf0a53 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Verbruik vandaag" From d89254224f53340a1be55bddac0cec7e902ec65e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:53:53 -0300 Subject: [PATCH 145/435] Update pl-PL.h --- sonoff/language/pl-PL.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 6c1752f60..c7bd1e4cd 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Dzisiaj" From ad30279bb2ec6b9e5dc0351cd61e0d4e136814b6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:54:11 -0300 Subject: [PATCH 146/435] Update pt-PT.h --- sonoff/language/pt-PT.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index f8ae27968..f844016ca 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Consumo energético de hoje" From a5bad8b501bcb9f6ee551dca8b74ad01bbfe86b6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:54:31 -0300 Subject: [PATCH 147/435] Update ru-RU.h --- sonoff/language/ru-RU.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index f49887764..6c771232a 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Энергия Сегодня" From 216bf1e9418fc9542b702df2e64ed73c7fe99a42 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:54:49 -0300 Subject: [PATCH 148/435] Update zh-CN.h --- sonoff/language/zh-CN.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 63abd2894..6a3652ec9 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" From 298333472896ae3166c5557cf3b09aa0b19a02f6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 00:55:17 -0300 Subject: [PATCH 149/435] Update zh-TW.h --- sonoff/language/zh-TW.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index e0b365784..3390f9980 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -374,17 +374,22 @@ // xdrv_10_KNX.ino #define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX parameters" +#define D_KNX_PARAMETERS "KNX Parameters" #define D_KNX_GENERAL_CONFIG "General" #define D_KNX_PHYSICAL_ADDRESS "Physical Address" #define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" #define D_KNX_ENABLE "Enable KNX" #define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_KNX_ADD "Add" +#define D_ADD "Add" #define D_DELETE "Delete" #define D_REPLY "Reply" #define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" #define D_LOG_KNX "KNX: " +#define D_RECEIVED_FROM "Received from" +#define D_KNX_COMMAND_WRITE "Write" +#define D_KNX_COMMAND_READ "Read" +#define D_KNX_COMMAND_OTHER "Other" +#define D_SENT_TO "sent to" // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用電量" From 663994148a4ea9e18985dc92f681a89ca4a76c30 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 01:02:36 -0300 Subject: [PATCH 150/435] Update webserver.ino --- sonoff/webserver.ino | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 92fcc2459..7ed331f33 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -25,10 +25,10 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ -#ifdef USE_KNX -#include // Include KNX IP library +#ifdef USE_KNX +#include // Include KNX IP library #endif // USE_KNX - + #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) @@ -202,9 +202,9 @@ const char HTTP_BTN_MENU_MQTT[] PROGMEM = #endif // USE_DOMOTICZ ""; const char HTTP_BTN_MENU4[] PROGMEM = -#ifdef USE_KNX - "

" -#endif // USE_KNX +#ifdef USE_KNX + "
" +#endif // USE_KNX "
" "
" "
" @@ -360,6 +360,9 @@ void StartWebserver(int type, IPAddress ipweb) WebServer->on("/dm", HandleDomoticzConfiguration); #endif // USE_DOMOTICZ } +#ifdef USE_KNX + WebServer->on("/kn", HandleKNXConfiguration); +#endif // USE_KNX WebServer->on("/lg", HandleLoggingConfiguration); WebServer->on("/co", HandleOtherConfiguration); WebServer->on("/dl", HandleBackupConfiguration); @@ -389,9 +392,9 @@ void StartWebserver(int type, IPAddress ipweb) } #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); -#ifdef USE_KNX - knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library -#endif // USE_KNX +#ifdef USE_KNX + knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library +#endif // USE_KNX } reset_web_log_flag = 0; WebServer->begin(); // Web server start From af96b9726d4dfa5f57de0beb81f856707d9f5296 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 01:03:59 -0300 Subject: [PATCH 151/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 390 ++++++++++++++++++++++++++++++++++------- 1 file changed, 322 insertions(+), 68 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 8289a96ad..186ab8356 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -1,11 +1,7 @@ /* - xdrv_08_KNX.ino - KNX IP Protocol support for Sonoff-Tasmota + xdrv_10_KNX.ino - KNX IP Protocol support for Sonoff-Tasmota - Copyright (C) 2018 Adrian Scillato - - Based on esp-knx-ip library for KNX/IP communication on an ESP8266 - Author: Nico Weichbrodt - Web: https://github.com/envy/esp-knx-ip + Copyright (C) 2018 Adrian Scillato (https://github.com/ascillato) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,13 +20,54 @@ #ifdef USE_KNX -#include // Include KNX IP library +#include // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) + // use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) + // change on esp-knx-ip.h file the following: + // #define MAX_CALLBACK_ASSIGNMENTS 20 + // #define MAX_CALLBACKS 20 + // #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 + // //#define ESP_KNX_DEBUG <-- comment this line + // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) + // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) + +/* Variables in settings.h + +bool Settings.flag.knx_enabled Enable/Disable KNX Protocol +uint16_t Settings.knx_physsical_addr Physical KNX address of this device +byte Settings.knx_GA_registered Number of group address to read +byte Settings.knx_CB_registered Number of group address to write +uint16_t Settings.knx_GA_addr[MAX_KNX_GA] Group address to read +uint16_t Settings.knx_CB_addr[MAX_KNX_CB] Group address to write +byte Settings.knx_GA_param[MAX_KNX_GA] Type of Input (relay changed, button pressed, sensor read) +byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, toggle relay, reply sensor value) + +Constants in sonoff.h + +#define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set +#define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set +*/ + +void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library + // when an action is requested by another KNX Device + +address_t KNX_physs_addr; // Physical KNX address of this device +address_t KNX_addr; // KNX Address converter variable + +#define KNX_Empty 255 +#define KNX_temperature 17 +#define KNX_humidity 18 +#define KNX_MAX_device_param 18 + +//float last_temp; +//float last_hum; + -#define KNX_Empty_ID 255 void relay_cb(message_t const &msg, void *arg); void temp_cb(message_t const &msg, void *arg); +#define KNX_Empty_ID 255 + address_t physaddr; config_id_t enable_knx_id; config_id_t disable_knx_id; @@ -50,17 +87,17 @@ typedef struct __device_parameters device_parameters_t device_param[] = { { D_SENSOR_RELAY " 1",1 , 255, true}, // device_param[0] = Relay 1 { D_SENSOR_RELAY " 2",2 , 255, true}, // device_param[1] = Relay 2 - { D_SENSOR_RELAY " 3",3 , 255, true}, - { D_SENSOR_RELAY " 4",4 , 255, true}, + { D_SENSOR_RELAY " 3",3 , 255, false}, + { D_SENSOR_RELAY " 4",4 , 255, false}, { D_SENSOR_RELAY " 5",5 , 255, false}, { D_SENSOR_RELAY " 6",6 , 255, false}, { D_SENSOR_RELAY " 7",7 , 255, false}, // device_param[6] = Relay 7 { D_SENSOR_RELAY " 8",8 , 255, false}, // device_param[7] = Relay 8 { D_SENSOR_BUTTON " 1",9 , 255, true}, // device_param[8] = Button 1 { D_SENSOR_BUTTON " 2",10 , 255, true}, // device_param[9] = Button 2 - { D_SENSOR_BUTTON " 3",11 , 255, true}, // device_param[10] = Button 3 - { D_SENSOR_BUTTON " 4",12 , 255, true}, // device_param[11] = Button 4 - { D_TEMPERATURE ,13 , 255, true}, // device_param[12] = Temperature + { D_SENSOR_BUTTON " 3",11 , 255, false}, // device_param[10] = Button 3 + { D_SENSOR_BUTTON " 4",12 , 255, false}, // device_param[11] = Button 4 + { D_TEMPERATURE ,13 , 255, false}, // device_param[12] = Temperature {nullptr,0 , 255, false} }; @@ -80,16 +117,16 @@ const char *device_param_cb[] = { D_REPLY " " D_TEMPERATURE, nullptr }; - +/* // Translations config_webUI_t config_webUI = { D_CONFIGURE_KNX, D_KNX_PHYSICAL_ADDRESS, - D_KNX_SET, + "SET", D_KNX_ADD, D_DELETE }; - +*/ bool flag_knx_enabled = true; float last_temp = 25.0; int knx_update_rate = 5; @@ -133,7 +170,7 @@ for (byte j = 0; j < GPIO_SENSOR_END; j++) { // The order of the knx.***_register_*** code, is the order that is going to be shown on the web page. // Translations -knx.config_web_UI(config_webUI); +//knx.config_web_UI(config_webUI); //knx.config_register_Title( D_KNX_PARAMETERS ); @@ -142,7 +179,7 @@ knx.config_web_UI(config_webUI); //knx.config_register_SubTitle( D_KNX_GENERAL_CONFIG ); //Set Physical KNX Address of the device -knx.config_register_pa(); +//knx.config_register_pa(); //knx.physical_address_set(Settings.knx_physs_addr); //knx.physical_address_set(knx.PA_to_address(1, 1, 1)); @@ -150,8 +187,8 @@ knx.config_register_pa(); //knx.config_register_blankspace(); -knx.feedback_register_action("KNX: " D_ON, knx_toggle_flag_enabled, D_STOP, nullptr, knx_status_enabled); -knx.feedback_register_action("KNX: " D_OFF, knx_toggle_flag_enabled, D_START, nullptr, knx_status_disabled); +//knx.feedback_register_action("KNX: " D_ON, knx_toggle_flag_enabled, D_STOP, nullptr, knx_status_enabled); +//knx.feedback_register_action("KNX: " D_OFF, knx_toggle_flag_enabled, D_START, nullptr, knx_status_disabled); //knx.config_register_line(); @@ -173,13 +210,13 @@ for (int i = 0; i < 13; ++i) //knx.config_set_ga(device_param[i].id, knx.GA_to_address(2,2,1)); } -//knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); +knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); //knx.config_set_ga(device_param[12].id, knx.GA_to_address(4,1,1)); //knx.config_register_blankspace(); //update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , Settings.knx_update_rate); -update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , knx_update_rate); +update_rate_id = knx.config_register_int( "UPDATE INTERVAL" , knx_update_rate); //knx.config_register_line(); @@ -196,7 +233,7 @@ for (int i = 0; i < 12; ++i) //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); if (i==0) { - //knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); + knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); } } } @@ -211,42 +248,25 @@ if (device_param[j].show) //knx.config_register_line(); -knx.feedback_register_action("", KNXSaveSettings, D_SAVE); // Save Button +//knx.feedback_register_action("", KNXSaveSettings, D_SAVE); // Save Button -knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Button +//knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Button // END KNX WebPage Configuration -} -void KNXLoop() -{ - knx.loop(); // Process knx events -} +// Start KNX +//knx.start(nullptr); -void KNX_EVERY_SECOND() -{ - if (!flag_knx_enabled) { return; } - - if ( knx.config_get_int(update_rate_id) > 0 ) - { - unsigned long now = millis(); - - if (next_change < now) - { - next_change = now + 1000 * knx.config_get_int(update_rate_id); - - knx.write_2byte_float(knx.config_get_ga(device_param[12].id), last_temp); - - } - } } void relay_cb(message_t const &msg, void *arg) { device_parameters_t *chan = (device_parameters_t *)arg; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " RELAY CB")); + AddLog(LOG_LEVEL_INFO); if (!flag_knx_enabled) { return; } switch (msg.ct) { @@ -267,17 +287,23 @@ void relay_cb(message_t const &msg, void *arg) } } -void KNXUpdatePowerState(byte device, power_t state) +void KNX_Update_Power_State(byte device, power_t state) { + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 1")); + AddLog(LOG_LEVEL_INFO); if (!flag_knx_enabled) { return; } + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 2")); + AddLog(LOG_LEVEL_INFO); if ( device_param[device -1].id != KNX_Empty_ID ) // Group Address configured? 255 = empty { + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 3")); + AddLog(LOG_LEVEL_INFO); bool power = bitRead(state, device -1); knx.write_1bit(knx.config_get_ga(device_param[device -1].id), power); } } -void knx_send_button_power(byte key, byte device, byte state) +void KNX_Send_Button_Power(byte key, byte device, byte state) { // key 0 = button_topic // key 1 = switch_topic @@ -309,36 +335,257 @@ void temp_cb(message_t const &msg, void *arg) } } -void knx_toggle_flag_enabled(void *arg) -{ - flag_knx_enabled = !flag_knx_enabled; - /*if (Settings.flag.knx_enabled) + + + + + + + +byte KNX_GA_Search( byte param, byte sequence = KNX_Empty ) +{/* + for (byte i = 0; i < Settings.knx_GA_registered; ++i) { - knx.pause(); + if ( Settings.knx_GA_param[i] == param ) + { + if ( Settings.knx_GA_addr[i] ) // Relay has group address set? GA=0/0/0 can not be used as KNX address, so it is used here as a: not set value + { + if ( i != sequence ) { return i; } + } + } } - else + return 0;*/ +} + + +void KNX_CB_Action(message_t const &msg, void *arg) +{ +/* + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 1")); + AddLog(LOG_LEVEL_INFO); + + device_parameters_t *chan = (device_parameters_t *)arg; + if (!(Settings.flag.knx_enabled)) { return; } + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 2")); + AddLog(LOG_LEVEL_INFO); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %d " D_TO " %s"), + msg.received_on.ga.area, msg.received_on.ga.line, msg.received_on.ga.member, + (msg.ct == KNX_CT_WRITE) ? D_KNX_COMMAND_WRITE : (msg.ct == KNX_CT_READ) ? D_KNX_COMMAND_READ : D_KNX_COMMAND_OTHER, + msg.data[0], + device_param_cb[chan->type]); + AddLog(LOG_LEVEL_DEBUG); + + switch (msg.ct) { - knx.continue(); + case KNX_CT_WRITE: + if (chan->type < 9) // Set Relays + { + ExecuteCommandPower(chan->type, msg.data[0]); + } + else if (chan->type < 17) // Toggle Relays + { + ExecuteCommandPower((chan->type) -8, 2); + } + break; + case KNX_CT_READ: + if (chan->type < 9) // reply Relays status + { + knx.answer_1bit(msg.received_on, chan->last_state); + } + else if (chan->type = KNX_temperature) // Reply Temperature + { + knx.answer_2byte_float(msg.received_on, last_temp); + } + else if (chan->type = KNX_humidity) // Reply Humidity + { + knx.answer_2byte_float(msg.received_on, last_hum); + } + break; + } + */ +} + + + +void KNX_Sensor(byte sensor_type, float value) +{ + /* + if (sensor_type == KNX_temperature) + { + last_temp = value; + } else if (sensor_type == KNX_humidity) + { + last_hum = value; + } + + if (!(Settings.flag.knx_enabled)) { return; } + + byte i = KNX_GA_Search(sensor_type); + while ( i > 0 ) { + KNX_addr.value = Settings.knx_GA_addr[i]; + knx.write_2byte_float(KNX_addr, value); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), + device_param_ga[i], + KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); + AddLog(LOG_LEVEL_DEBUG); + + i = KNX_GA_Search(sensor_type, i); }*/ } -bool knx_status_enabled() { return flag_knx_enabled; } -bool knx_status_disabled() { return !flag_knx_enabled; } +/*********************************************************************************************\ + * Presentation +\*********************************************************************************************/ -void KNX_Return_button(void *arg) -{ - WebServer->sendHeader(F("Location"),F("/cn")); - WebServer->send(302); +#ifdef USE_WEBSERVER +const char S_CONFIGURE_KNX[] PROGMEM = D_CONFIGURE_KNX; + +const char HTTP_FORM_KNX[] PROGMEM = + "
 " D_KNX_PARAMETERS " 
" + "" + "
" + "" D_KNX_PHYSICAL_ADDRESS " " + " . " + " . " + "" + "

" D_KNX_PHYSICAL_ADDRESS_NOTE "

" + "" D_KNX_ENABLE "

" + + "
" + "" D_KNX_GROUP_ADDRESS_TO_WRITE "
" + + " / " + " / " + " "; + +const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = + "

" + ""; + +const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = + "" + ""; + +const char HTTP_FORM_KNX3[] PROGMEM = + "
{optex} -> GAfnum / GAarea / GAfdef

" + "
" + "" D_KNX_GROUP_ADDRESS_TO_READ "
"; + +const char HTTP_FORM_KNX4[] PROGMEM = + "->
GAfnum / GAarea / GAfdef -> {optex}
"); + page += FPSTR(HTTP_FORM_END); + page += FPSTR(HTTP_BTN_CONF); + ShowPage(page); + */ } -void KNXSaveSettings(void *arg) + +void KNX_Save_Settings() { + // Read all data from the webpage + // Write to settings.knx + // Write to ESP_KNX_IP library /* /////config Settings.knx.physs_addr = physical_address_get(); - Settings.knx.flag_knx_enabled + Settings.flag.knx_enabled k = 0 for j = 0 to max cant items (relay1,2,3,etc) @@ -406,7 +653,17 @@ void KNXSaveSettings(void *arg) ssensor_indices, Settings.domoticz_update_timer); AddLog(LOG_LEVEL_INFO); */ + + //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_SAVE_CONFIGURATION)); + //AddLog(LOG_LEVEL_INFO); } +#endif // USE_WEBSERVER + + + + + + /*********************************************************************************************\ * Interface @@ -422,13 +679,10 @@ boolean Xdrv10(byte function) KNXStart(); break; case FUNC_LOOP: - KNXLoop(); - break; - case FUNC_EVERY_SECOND: - KNX_EVERY_SECOND(); + knx.loop(); // Process knx events break; // case FUNC_COMMAND: -// result = MqttCommand(); +// result = KNXCommand(); // break; // case FUNC_SET_POWER: // break; From 7c55507d5d7ecd7a935d238edd0a8609bbc1125d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 01:08:08 -0300 Subject: [PATCH 152/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9f67c17d7..62824f562 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ A copy of both libraries with the modifications needed are available at: ## Development Road Map ## **For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu +- [x] Add Web Menu ( soon the next version of menu ) - [x] Add Feature to Receive telegrams and modify Relay Status - [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) - [x] Add Feature to Send telegrams of relay status change @@ -47,8 +47,8 @@ A copy of both libraries with the modifications needed are available at: - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status - [ ] Add Feature to read Temperature, Humidity from Tasmota -- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [x] Add Feature to receive command to read temperature, Humidity +- [ ] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) +- [ ] Add Feature to receive command to read temperature, Humidity - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config From 812fb1a2786ca65ee461dd0c3b85010f8169f02e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 01:17:21 -0300 Subject: [PATCH 153/435] Update user_config.h --- sonoff/user_config.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 7d4c2b4f2..138e53bb7 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -1,18 +1,18 @@ /* user_config.h - user specific configuration for Sonoff-Tasmota - + Copyright (C) 2018 Theo Arends - + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program 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 General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -62,7 +62,7 @@ #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -183,9 +183,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only From a4bb1128385d61640f8c2f0c9451fe6e878b3ea2 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 01:21:15 -0300 Subject: [PATCH 154/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 62824f562..4f468318d 100644 --- a/README.md +++ b/README.md @@ -18,13 +18,13 @@ So, for example, if 2 devices that are configured with the **2 / 2 / 1** for tur ## Requirements ## -This MOD requires the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change on the _esp-knx-ip.h_ file the following: +This MOD requires the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change the following parameters in the _esp-knx-ip.h_ file: ``` #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 //#define ESP_KNX_DEBUG <-- comment this line ``` -The ESP KNX IP library (async-udp branch) also requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +The ESP KNX IP library (async-udp branch) requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip From d35ef6ed750785da23dfe27013e3e16b08141657 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 02:18:39 -0300 Subject: [PATCH 155/435] Update README.md --- README.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 4f468318d..70ec1ccaa 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,24 @@ # ( Work In Progress ) Sonoff-Tasmota KNX MOD -This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to integrate [KNX Protocol](https://www.knx.org/knx-en/index.php) to its features. +This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). + Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) -Basic KNX IP Functionality is Available. - -_Sonoff-Tasmota_KNX development branch is kept in sync with the Original Sonoff-Tasmota_ +_Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota_ ## KNX Explanation ## -The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. +The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on 224.0.23.12:3671. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. +## Integration ## + +Several home automation systems have KNX support. For example, [Home Assistant](https://github.com/home-assistant/home-assistant) has a [XKNX Python Library](https://github.com/XKNX/xknx) to connect to KNX devices using a KNX Router. If you don't have a **KNX Router**, you can use a **Software KNX Router** like [KNXd](https://github.com/knxd/knxd) on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF. + ## Requirements ## This MOD requires the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change the following parameters in the _esp-knx-ip.h_ file: From 2096eff8cc9752fc8ba9239609b18c6273845282 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 02:20:19 -0300 Subject: [PATCH 156/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 70ec1ccaa..278f5d03e 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -This MOD requires the KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change the following parameters in the _esp-knx-ip.h_ file: +This MOD requires the ESP8266 KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change the following parameters in the _esp-knx-ip.h_ file: ``` #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 From 0bd40f35081e6f2bed2de9890b19e6d41e9397e0 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 02:22:39 -0300 Subject: [PATCH 157/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 278f5d03e..1e71dd7e2 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ _Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota_ ## KNX Explanation ## -The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on 224.0.23.12:3671. +The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12:3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From 093e7a4b4a2961714911b1a61eb0688ebe819f64 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 02:36:19 -0300 Subject: [PATCH 158/435] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1e71dd7e2..2828c756c 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP -## Next Version Menu ## +## Next Version Menu Screenshots ## @@ -55,6 +55,7 @@ A copy of both libraries with the modifications needed are available at: - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config +- [ ] Add Log Info - [x] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM From 9605d856b852b62dc6d4e3c157513412a8cbd2ae Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 03:15:46 -0300 Subject: [PATCH 159/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2828c756c..0d272f035 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ This MOD requires the ESP8266 KNX Library [envy/esp-knx-ip](https://github.com/e The ESP KNX IP library (async-udp branch) requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed are available at: -* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip -* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP +* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udpp +* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master ## Next Version Menu Screenshots ## From 9af7ed92c7b81b63c888f8df8f743dbd20f4f819 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 03:17:17 -0300 Subject: [PATCH 160/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d272f035..c47e2ee8c 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ This MOD requires the ESP8266 KNX Library [envy/esp-knx-ip](https://github.com/e The ESP KNX IP library (async-udp branch) requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed are available at: -* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udpp +* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master ## Next Version Menu Screenshots ## From 059d02147c03f5a305478ef9db04e91ea63319da Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 21:26:51 -0300 Subject: [PATCH 161/435] Update esp-knx-ip.h --- lib/esp-knx-ip-async-udp/esp-knx-ip.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.h b/lib/esp-knx-ip-async-udp/esp-knx-ip.h index b4f9ce8d7..31b7e5e3b 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.h +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.h @@ -358,7 +358,7 @@ class ESPKNXIP { ESPKNXIP(); void load(); void start(); - void start(ESP8266WebServer *srv); + void start(ESP8266WebServer *srv, bool espknxip_webpage = true); void loop(); void save_to_eeprom(); @@ -481,6 +481,7 @@ class ESPKNXIP { private: void __start(); + void __start_espknxip_webpage(); void __loop_knx(AsyncUDPPacket &packet); // Webserver functions From e71c7e7689d715f3ea018818faa25fa365be580d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 21:27:50 -0300 Subject: [PATCH 162/435] Update esp-knx-ip.cpp --- lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 86 +++++++++++++------------ 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp index 7a6cd299f..e5b4cc03a 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp @@ -27,61 +27,63 @@ void ESPKNXIP::load() restore_from_eeprom(); } -void ESPKNXIP::start(ESP8266WebServer *srv) +void ESPKNXIP::start(ESP8266WebServer *srv, bool espknxip_webpage) { server = srv; + if (espknxip_webpage) { __start_espknxip_webpage(); } __start(); } void ESPKNXIP::start() { server = new ESP8266WebServer(80); + __start_espknxip_webpage(); __start(); } +void ESPKNXIP::__start_espknxip_webpage() +{ + server->on(ROOT_PREFIX, [this](){ + __handle_root(); + }); + server->on(__ROOT_PATH, [this](){ + __handle_root(); + }); + server->on(__REGISTER_PATH, [this](){ + __handle_register(); + }); + server->on(__DELETE_PATH, [this](){ + __handle_delete(); + }); + server->on(__PHYS_PATH, [this](){ + __handle_set(); + }); +#if !DISABLE_EEPROM_BUTTONS + server->on(__EEPROM_PATH, [this](){ + __handle_eeprom(); + }); +#endif + server->on(__CONFIG_PATH, [this](){ + __handle_config(); + }); + server->on(__FEEDBACK_PATH, [this](){ + __handle_feedback(); + }); +#if !DISABLE_RESTORE_BUTTON + server->on(__RESTORE_PATH, [this](){ + __handle_restore(); + }); +#endif +#if !DISABLE_REBOOT_BUTTON + server->on(__REBOOT_PATH, [this](){ + __handle_reboot(); + }); +#endif + server->begin(); +} + void ESPKNXIP::__start() { - if (server != nullptr) - { - server->on(ROOT_PREFIX, [this](){ - __handle_root(); - }); - server->on(__ROOT_PATH, [this](){ - __handle_root(); - }); - server->on(__REGISTER_PATH, [this](){ - __handle_register(); - }); - server->on(__DELETE_PATH, [this](){ - __handle_delete(); - }); - server->on(__PHYS_PATH, [this](){ - __handle_set(); - }); -#if !DISABLE_EEPROM_BUTTONS - server->on(__EEPROM_PATH, [this](){ - __handle_eeprom(); - }); -#endif - server->on(__CONFIG_PATH, [this](){ - __handle_config(); - }); - server->on(__FEEDBACK_PATH, [this](){ - __handle_feedback(); - }); -#if !DISABLE_RESTORE_BUTTON - server->on(__RESTORE_PATH, [this](){ - __handle_restore(); - }); -#endif -#if !DISABLE_REBOOT_BUTTON - server->on(__REBOOT_PATH, [this](){ - __handle_reboot(); - }); -#endif - server->begin(); - } - udp.listenMulticast(MULTICAST_IP, MULTICAST_PORT); udp.onPacket([this](AsyncUDPPacket &packet) { __loop_knx(packet); }); } From 0c239ef59cf1c0bbe2119c070481117c47fd853e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 21:40:30 -0300 Subject: [PATCH 163/435] Update README.md --- README.md | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c47e2ee8c..0a47d40a4 100644 --- a/README.md +++ b/README.md @@ -21,19 +21,15 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -This MOD requires the ESP8266 KNX Library [envy/esp-knx-ip](https://github.com/envy/esp-knx-ip). Please, use the [async-udp](https://github.com/envy/esp-knx-ip/tree/async-udp) branch. Also, it is needed to change the following parameters in the _esp-knx-ip.h_ file: -``` -#define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 +This MOD requires the ESP8266 KNX IP Library [envy/esp-knx-ip async-udp branch](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) -//#define ESP_KNX_DEBUG <-- comment this line -``` The ESP KNX IP library (async-udp branch) requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master -## Next Version Menu Screenshots ## +## Screenshots of the KNX Configuration Menu ## @@ -42,20 +38,20 @@ A copy of both libraries with the modifications needed are available at: ## Development Road Map ## **For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu ( soon the next version of menu ) +- [x] Add Web Menu - [x] Add Feature to Receive telegrams and modify Relay Status - [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) - [x] Add Feature to Send telegrams of relay status change -- [ ] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) +- [x] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status - [ ] Add Feature to read Temperature, Humidity from Tasmota - [ ] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [ ] Add Feature to receive command to read temperature, Humidity +- [x] Add Feature to receive command to read temperature, Humidity - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [ ] Add Feature to Load Config -- [ ] Add Log Info +- [x] Add Log Info - [x] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM From f24e827ace2870b8e0e3a6d378df57cef3373a39 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:17:53 -0300 Subject: [PATCH 164/435] Update webserver.ino --- sonoff/webserver.ino | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 7ed331f33..926e1bb67 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -203,7 +203,7 @@ const char HTTP_BTN_MENU_MQTT[] PROGMEM = ""; const char HTTP_BTN_MENU4[] PROGMEM = #ifdef USE_KNX - "
" + "
" #endif // USE_KNX "
" "
" @@ -393,7 +393,7 @@ void StartWebserver(int type, IPAddress ipweb) #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); #ifdef USE_KNX - knx.start(WebServer); // Start knx. The /knx link is automatically set inside the KNX library + knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. #endif // USE_KNX } reset_web_log_flag = 0; @@ -1123,6 +1123,11 @@ void HandleSaveSettings() break; #endif // USE_TIMERS_WEB #endif // USE_TIMERS +#ifdef USE_KNX + case 8: + KNX_Save_Settings(); + break; +#endif // USE_KNX #ifdef USE_DOMOTICZ case 4: DomoticzSaveSettings(); From 1510ffbedaef2b13de6da6007b3ce8bcc78937ac Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:20:02 -0300 Subject: [PATCH 165/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 570 +++++++++++++++-------------------------- 1 file changed, 210 insertions(+), 360 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 186ab8356..cfe507f16 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -23,14 +23,14 @@ #include // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) // use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) // change on esp-knx-ip.h file the following: - // #define MAX_CALLBACK_ASSIGNMENTS 20 - // #define MAX_CALLBACKS 20 // #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 // //#define ESP_KNX_DEBUG <-- comment this line // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) -/* Variables in settings.h +/* +Variables in settings.h +----------------------- bool Settings.flag.knx_enabled Enable/Disable KNX Protocol uint16_t Settings.knx_physsical_addr Physical KNX address of this device @@ -42,9 +42,14 @@ byte Settings.knx_GA_param[MAX_KNX_GA] Type of Input (relay changed byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, toggle relay, reply sensor value) Constants in sonoff.h +----------------------- -#define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set -#define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set +#define MAX_KNX_GA 10 Max number of KNX Group Addresses to read that can be set +#define MAX_KNX_CB 10 Max number of KNX Group Addresses to write that can be set + If you change MAX_KNX_CB you also have to change on esp-knx-ip.h file the following: + #define MAX_CALLBACK_ASSIGNMENTS 10 + #define MAX_CALLBACKS 10 + Both to MAX_KNX_CB */ void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library @@ -58,51 +63,77 @@ address_t KNX_addr; // KNX Address converter variable #define KNX_humidity 18 #define KNX_MAX_device_param 18 -//float last_temp; -//float last_hum; - - - -void relay_cb(message_t const &msg, void *arg); -void temp_cb(message_t const &msg, void *arg); - -#define KNX_Empty_ID 255 - -address_t physaddr; -config_id_t enable_knx_id; -config_id_t disable_knx_id; -config_id_t ga_conf_id; -config_id_t cb_conf_id; -config_id_t cb_temp_id; -config_id_t update_rate_id; +float last_temp; +float last_hum; typedef struct __device_parameters { - const char *name; - byte type; - config_id_t id; - bool show; + byte type; // PARAMETER_ID. Used as type of GA = relay, button, sensor, etc, (INPUTS) + // used when an action on device triggers a MSG to send on KNX + // Needed because this is the value that the ESP_KNX_IP library will pass as parameter + // to identify the action to perform when a MSG is received + + bool show; // HARDWARE related. to identify if the parameter exists on the device. + + bool last_state; // LAST_STATE of relays + + callback_id_t CB_id; // ACTION_ID. To store the ID value of Registered_CB to the library. + // The ESP_KNX_IP requires to register the callbacks, and then, to assign an address to the registered callback + // So CB_id is needed to store the ID of the callback to then, assign multiple addresses to the same ID (callback) + // It is used as type of CB = set relay, toggle relay, reply sensor, etc, (OUTPUTS) + // used when a MSG receive KNX triggers an action on the device + // - Multiples address to the same callback (i.e. Set Relay 1 Status) are used on scenes for example } device_parameters_t; +// device parameters (information that can be sent) device_parameters_t device_param[] = { - { D_SENSOR_RELAY " 1",1 , 255, true}, // device_param[0] = Relay 1 - { D_SENSOR_RELAY " 2",2 , 255, true}, // device_param[1] = Relay 2 - { D_SENSOR_RELAY " 3",3 , 255, false}, - { D_SENSOR_RELAY " 4",4 , 255, false}, - { D_SENSOR_RELAY " 5",5 , 255, false}, - { D_SENSOR_RELAY " 6",6 , 255, false}, - { D_SENSOR_RELAY " 7",7 , 255, false}, // device_param[6] = Relay 7 - { D_SENSOR_RELAY " 8",8 , 255, false}, // device_param[7] = Relay 8 - { D_SENSOR_BUTTON " 1",9 , 255, true}, // device_param[8] = Button 1 - { D_SENSOR_BUTTON " 2",10 , 255, true}, // device_param[9] = Button 2 - { D_SENSOR_BUTTON " 3",11 , 255, false}, // device_param[10] = Button 3 - { D_SENSOR_BUTTON " 4",12 , 255, false}, // device_param[11] = Button 4 - { D_TEMPERATURE ,13 , 255, false}, // device_param[12] = Temperature - {nullptr,0 , 255, false} + { 1, true, false, KNX_Empty }, // device_param[ 0] = Relay 1 + { 2, true, false, KNX_Empty }, // device_param[ 1] = Relay 2 + { 3, false, false, KNX_Empty }, // device_param[ 2] = Relay 3 + { 4, false, false, KNX_Empty }, // device_param[ 3] = Relay 4 + { 5, false, false, KNX_Empty }, // device_param[ 4] = Relay 5 + { 6, false, false, KNX_Empty }, // device_param[ 5] = Relay 6 + { 7, false, false, KNX_Empty }, // device_param[ 6] = Relay 7 + { 8, false, false, KNX_Empty }, // device_param[ 7] = Relay 8 + { 9, true, false, KNX_Empty }, // device_param[ 8] = Button 1 + { 10, true, false, KNX_Empty }, // device_param[ 9] = Button 2 + { 11, false, false, KNX_Empty }, // device_param[10] = Button 3 + { 12, false, false, KNX_Empty }, // device_param[11] = Button 4 + { 13, false, false, KNX_Empty }, // device_param[12] = Button 5 + { 14, false, false, KNX_Empty }, // device_param[13] = Button 6 + { 15, false, false, KNX_Empty }, // device_param[14] = Button 7 + { 16, false, false, KNX_Empty }, // device_param[15] = Button 8 + { KNX_temperature, true, false, KNX_Empty }, // device_param[16] = Temperature + { KNX_humidity , true, false, KNX_Empty }, // device_param[17] = humidity + { KNX_Empty, false, false, KNX_Empty} }; +// device parameters (information that can be sent) +const char * device_param_ga[] = { + D_SENSOR_RELAY " 1", // Relay 1 + D_SENSOR_RELAY " 2", // Relay 2 + D_SENSOR_RELAY " 3", // Relay 3 + D_SENSOR_RELAY " 4", // Relay 4 + D_SENSOR_RELAY " 5", // Relay 5 + D_SENSOR_RELAY " 6", // Relay 6 + D_SENSOR_RELAY " 7", // Relay 7 + D_SENSOR_RELAY " 8", // Relay 8 + D_SENSOR_BUTTON " 1", // Button 1 + D_SENSOR_BUTTON " 2", // Button 2 + D_SENSOR_BUTTON " 3", // Button 3 + D_SENSOR_BUTTON " 4", // Button 4 + D_SENSOR_BUTTON " 5", // Button 5 + D_SENSOR_BUTTON " 6", // Button 6 + D_SENSOR_BUTTON " 7", // Button 7 + D_SENSOR_BUTTON " 8", // Button 8 + D_TEMPERATURE , // Temperature + D_HUMIDITY , // Humidity + nullptr +}; + +// device actions (posible actions to be performed on the device) const char *device_param_cb[] = { - D_SENSOR_RELAY " 1", + D_SENSOR_RELAY " 1", // Set Relay 1 (1-On or 0-OFF) D_SENSOR_RELAY " 2", D_SENSOR_RELAY " 3", D_SENSOR_RELAY " 4", @@ -110,272 +141,121 @@ const char *device_param_cb[] = { D_SENSOR_RELAY " 6", D_SENSOR_RELAY " 7", D_SENSOR_RELAY " 8", - D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 1", - D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 2", - D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 3", - D_BUTTON_TOGGLE " " D_SENSOR_RELAY " 4", - D_REPLY " " D_TEMPERATURE, + D_SENSOR_RELAY " 1 " D_BUTTON_TOGGLE, // Relay 1 Toggle (1 or 0 will toggle) + D_SENSOR_RELAY " 2 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 3 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 4 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 5 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 6 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 7 " D_BUTTON_TOGGLE, + D_SENSOR_RELAY " 8 " D_BUTTON_TOGGLE, + D_REPLY " " D_TEMPERATURE, // Reply Temperature + D_REPLY " " D_HUMIDITY, // Reply Humidity nullptr }; -/* -// Translations -config_webUI_t config_webUI = { - D_CONFIGURE_KNX, - D_KNX_PHYSICAL_ADDRESS, - "SET", - D_KNX_ADD, - D_DELETE -}; -*/ -bool flag_knx_enabled = true; -float last_temp = 25.0; -int knx_update_rate = 5; -unsigned long next_change = 0; + +#ifndef USE_WEBSERVER + ESP8266WebServer *WebServer; +#endif + + +byte KNX_GA_Search( byte param, byte start = 0 ) +{ + for (byte i = start; i < Settings.knx_GA_registered; ++i) + { + if ( Settings.knx_GA_param[i] == param ) + { + if ( Settings.knx_GA_addr[i] != 0 ) // Relay has group address set? GA=0/0/0 can not be used as KNX address, so it is used here as a: not set value + { + if ( i >= start ) { return i; } + } + } + } + return KNX_Empty; +} + void KNXStart() { -// Check which relays, buttons and sensors where consigured for this device -// for (int i = 0; i < MAX_GPIO_PIN; ++i) -// { -// switch (GPIO(i)) -// { -// case Relay: -// break; -// case Button: -// break; -/* -for (byte j = 0; j < GPIO_SENSOR_END; j++) { - if (!GetUsedInModule(j, cmodule.gp.io)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SCRIPT_MODULE2, j, j, GetTextIndexed(stemp, sizeof(stemp), j, kSensorNames)); - page += mqtt_data; - } -} -*/ +#ifndef USE_WEBSERVER + WebServer = new ESP8266WebServer(80); + knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. +#endif -// -// device_param[i].show = (GPIO[i] == Relay) -// } -// for (int i = 0; i < MAX_BUTTONS; ++i) -// { -// device_param[i+7].show = (GPIO[i] == Button) -// } -// for (int i = 0; i < MAX_SENSOR; ++i) -// { -// device_param[i+7].show = (GPIO[i] == Button) -// } + + + -// KNX WebPage Configuration -// ------------------------- -// The order of the knx.***_register_*** code, is the order that is going to be shown on the web page. + Settings.flag.knx_enabled = true; -// Translations -//knx.config_web_UI(config_webUI); + KNX_physs_addr.pa.area = 1; + KNX_physs_addr.pa.line = 1; + KNX_physs_addr.pa.member = 0; + Settings.knx_physsical_addr = KNX_physs_addr.value; -//knx.config_register_Title( D_KNX_PARAMETERS ); + Settings.knx_GA_registered = 2; -//knx.config_register_line(); + Settings.knx_GA_param[0] = 1; + KNX_addr.ga.area = 2; + KNX_addr.ga.line = 2; + KNX_addr.ga.member = 1; + Settings.knx_GA_addr[0] = KNX_addr.value; -//knx.config_register_SubTitle( D_KNX_GENERAL_CONFIG ); + Settings.knx_GA_param[1] = KNX_temperature; + KNX_addr.ga.area = 4; + KNX_addr.ga.line = 1; + KNX_addr.ga.member = 1; + Settings.knx_GA_addr[1] = KNX_addr.value; -//Set Physical KNX Address of the device -//knx.config_register_pa(); -//knx.physical_address_set(Settings.knx_physs_addr); -//knx.physical_address_set(knx.PA_to_address(1, 1, 1)); + Settings.knx_CB_registered = 1; -//knx.config_register_label( D_KNX_PHYSICAL_ADDRESS_NOTE ); + Settings.knx_CB_param[0] = 1; + KNX_addr.ga.area = 2; + KNX_addr.ga.line = 2; + KNX_addr.ga.member = 1; + Settings.knx_CB_addr[0] = KNX_addr.value; -//knx.config_register_blankspace(); -//knx.feedback_register_action("KNX: " D_ON, knx_toggle_flag_enabled, D_STOP, nullptr, knx_status_enabled); -//knx.feedback_register_action("KNX: " D_OFF, knx_toggle_flag_enabled, D_START, nullptr, knx_status_disabled); -//knx.config_register_line(); -//knx.config_register_SubTitle( D_KNX_GROUP_ADDRESS_TO_WRITE ); -// Register Group Addresses to Send Data to -//for (int i = 0; i < Settings.knx_Registered_GA; ++i) -for (int i = 0; i < 13; ++i) -{ - if (device_param[i].show) + // Set Physical KNX Address of the device + KNX_physs_addr.value = Settings.knx_physsical_addr; + knx.physical_address_set( KNX_physs_addr ); + + // Register Group Addresses to listen to + // Search on the settings if there is a group address set for receive KNX messages for the type: device_param[j].type + // If there is, register the group address on the KNX_IP Library to Receive data for Executing Callbacks + for (byte i = 0; i < Settings.knx_CB_registered; ++i) { - device_param[i].id = knx.config_register_ga(String(device_param[i].name)); - } - - - //////buscar en la config el param para setearlo - //knx.config_set_ga(ga_conf, Settings.knx_GA_addr(i)); - - //knx.config_set_ga(device_param[i].id, knx.GA_to_address(2,2,1)); -} - -knx.config_set_ga(device_param[0].id, knx.GA_to_address(2,2,1)); -//knx.config_set_ga(device_param[12].id, knx.GA_to_address(4,1,1)); - -//knx.config_register_blankspace(); - -//update_rate_id = knx.config_register_int( D_KNX_UPDATE_INTERVAL , Settings.knx_update_rate); -update_rate_id = knx.config_register_int( "UPDATE INTERVAL" , knx_update_rate); - -//knx.config_register_line(); - -//knx.config_register_SubTitle( D_KNX_GROUP_ADDRESS_TO_READ ); - -// Register Group Addresses to Receive data from and execute callbacks -//for (int i = 0; i < Settings.knx_Registered_CB; ++i) -for (int i = 0; i < 12; ++i) -{ - if (device_param[i].show) - { - cb_conf_id = knx.callback_register( String( device_param_cb[i] ), relay_cb, &device_param[i]); - //////buscar en la config el param para setearlo - //knx.callback_assign(ga_conf, Settings.knx_CB_addr(i)); - if (i==0) + byte j = Settings.knx_CB_param[i]; + if ( j > 0 ) { - knx.callback_assign(cb_conf_id, knx.GA_to_address(2,2,1)); + device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter + // to identify which action was requested on the KNX network + // to be performed on this device (set relay, etc.) + // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) + KNX_addr.value = Settings.knx_CB_addr[i]; + knx.callback_assign( device_param[j-1].CB_id, KNX_addr ); } } -} -// Temperature -int j=12; -if (device_param[j].show) -{ - cb_temp_id = knx.callback_register( String( device_param_cb[j] ), temp_cb, &device_param[j]); -} -//knx.callback_assign(cb_temp_id, knx.GA_to_address(4,1,1)); - -//knx.config_register_line(); - -//knx.feedback_register_action("", KNXSaveSettings, D_SAVE); // Save Button - -//knx.feedback_register_action("", KNX_Return_button, D_CONFIGURATION); // Save Button - -// END KNX WebPage Configuration - - -// Start KNX -//knx.start(nullptr); - - -} - - -void relay_cb(message_t const &msg, void *arg) -{ - device_parameters_t *chan = (device_parameters_t *)arg; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " RELAY CB")); - AddLog(LOG_LEVEL_INFO); - if (!flag_knx_enabled) { return; } - switch (msg.ct) - { - case KNX_CT_WRITE: - if (chan->type > 8) - { - ExecuteCommandPower(chan->id, 2); - knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]==0); - } - else - { - ExecuteCommandPower(chan->id, msg.data[0]); - knx.write_1bit(knx.config_get_ga(chan->id), msg.data[0]); - } - break; - //case KNX_CT_READ: - //knx.answer_1bit(msg.received_on, chan->state); - } -} - -void KNX_Update_Power_State(byte device, power_t state) -{ - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 1")); - AddLog(LOG_LEVEL_INFO); - if (!flag_knx_enabled) { return; } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 2")); - AddLog(LOG_LEVEL_INFO); - if ( device_param[device -1].id != KNX_Empty_ID ) // Group Address configured? 255 = empty - { - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 3")); - AddLog(LOG_LEVEL_INFO); - bool power = bitRead(state, device -1); - knx.write_1bit(knx.config_get_ga(device_param[device -1].id), power); - } -} - -void KNX_Send_Button_Power(byte key, byte device, byte state) -{ -// key 0 = button_topic -// key 1 = switch_topic -// state 0 = off -// state 1 = on -// state 2 = toggle -// state 3 = hold -// state 9 = clear retain flag -// if (key) -// { - if (!flag_knx_enabled) { return; } - if (device_param[device+7].id) - { - knx.write_1bit(knx.config_get_ga(device_param[device+7].id), !(state == 0)); - } -// } -} - -void temp_cb(message_t const &msg, void *arg) -{ - if (!flag_knx_enabled) { return; } - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_temp); - break; - } - } -} - - - - - - - - -byte KNX_GA_Search( byte param, byte sequence = KNX_Empty ) -{/* - for (byte i = 0; i < Settings.knx_GA_registered; ++i) - { - if ( Settings.knx_GA_param[i] == param ) - { - if ( Settings.knx_GA_addr[i] ) // Relay has group address set? GA=0/0/0 can not be used as KNX address, so it is used here as a: not set value - { - if ( i != sequence ) { return i; } - } - } - } - return 0;*/ } void KNX_CB_Action(message_t const &msg, void *arg) { -/* - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 1")); - AddLog(LOG_LEVEL_INFO); - device_parameters_t *chan = (device_parameters_t *)arg; - if (!(Settings.flag.knx_enabled)) { return; } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX " 2")); - AddLog(LOG_LEVEL_INFO); + if (!(Settings.flag.knx_enabled)) { return; } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_RECEIVED_FROM " %d.%d.%d " D_COMMAND " %s: %d " D_TO " %s"), msg.received_on.ga.area, msg.received_on.ga.line, msg.received_on.ga.member, (msg.ct == KNX_CT_WRITE) ? D_KNX_COMMAND_WRITE : (msg.ct == KNX_CT_READ) ? D_KNX_COMMAND_READ : D_KNX_COMMAND_OTHER, msg.data[0], - device_param_cb[chan->type]); - AddLog(LOG_LEVEL_DEBUG); + device_param_cb[(chan->type)-1]); + AddLog(LOG_LEVEL_INFO); switch (msg.ct) { @@ -404,14 +284,62 @@ void KNX_CB_Action(message_t const &msg, void *arg) } break; } - */ } +void KNX_Update_Power_State(byte device, power_t state) +{ + if (!(Settings.flag.knx_enabled)) { return; } + + device_param[device -1].last_state = bitRead(state, device -1); // power state (on/off) + + // Search all the registered GA that has that output (variable: device) as parameter + byte i = KNX_GA_Search(device); + while ( i != KNX_Empty ) { + KNX_addr.value = Settings.knx_GA_addr[i]; + knx.write_1bit(KNX_addr, device_param[device -1].last_state); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), + device_param_ga[device -1], device_param[device -1].last_state, + KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); + AddLog(LOG_LEVEL_INFO); + + i = KNX_GA_Search(device, i + 1); + } +} + + +void KNX_Send_Button_Power(byte key, byte device, byte state) +{ +// key 0 = button_topic +// key 1 = switch_topic +// state 0 = off +// state 1 = on +// state 2 = toggle +// state 3 = hold +// state 9 = clear retain flag + if (!(Settings.flag.knx_enabled)) { return; } +// if (key) +// { + +// Search all the registered GA that has that output (variable: device) as parameter + byte i = KNX_GA_Search(device + 7); + while ( i != KNX_Empty ) { + KNX_addr.value = Settings.knx_GA_addr[i]; + knx.write_1bit(KNX_addr, !(state == 0)); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), + device_param_ga[device + 7], !(state == 0), + KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); + AddLog(LOG_LEVEL_INFO); + + i = KNX_GA_Search(device + 7, i + 1); + } +// } +} void KNX_Sensor(byte sensor_type, float value) { - /* if (sensor_type == KNX_temperature) { last_temp = value; @@ -423,17 +351,17 @@ void KNX_Sensor(byte sensor_type, float value) if (!(Settings.flag.knx_enabled)) { return; } byte i = KNX_GA_Search(sensor_type); - while ( i > 0 ) { + while ( i != KNX_Empty ) { KNX_addr.value = Settings.knx_GA_addr[i]; knx.write_2byte_float(KNX_addr, value); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), - device_param_ga[i], + device_param_ga[sensor_type], KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); - AddLog(LOG_LEVEL_DEBUG); + AddLog(LOG_LEVEL_INFO); - i = KNX_GA_Search(sensor_type, i); - }*/ + i = KNX_GA_Search(sensor_type, i+1); + } } @@ -493,7 +421,7 @@ const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = void HandleKNXConfiguration() -{/* +{ if (HTTP_USER == webserver_state) { HandleRoot(); return; @@ -572,7 +500,7 @@ void HandleKNXConfiguration() page += FPSTR(HTTP_FORM_END); page += FPSTR(HTTP_BTN_CONF); ShowPage(page); - */ + } @@ -581,90 +509,10 @@ void KNX_Save_Settings() // Read all data from the webpage // Write to settings.knx // Write to ESP_KNX_IP library - - - /* /////config - Settings.knx.physs_addr = physical_address_get(); - Settings.flag.knx_enabled - - k = 0 - for j = 0 to max cant items (relay1,2,3,etc) - for i = 0 to max cant items por param (cant de addr a relay 1) - address_t = knx.config_get_ga(device_param[j].id, i + 1); - if address_t then - settings.knx.paramGA(k) = j; - settings.knx.addressGA(k) = address_t - k++ - end if - next i - next j - settings.knx.Registered_GA = k - 1 - - settings.knx.update_rate = knx.config_get_int(update_rate_id) - - k = 0 - for j = 0 to max cant items (relay1,2,3,etc) - for i = 0 to max cant items por param (cant de addr a relay 1) - address_t = knx.config_get_cb(device_param[j].id, i + 1); - if address_t then - settings.knx.paramCB(k) = j; - settings.knx.addressCB(k) = address_t - k++ - end if - next i - next j - settings.knx.Registered_CB = k - 1 - - - */ ////// - - - - /* - char stemp[20]; - char ssensor_indices[6 * MAX_DOMOTICZ_SNS_IDX]; - char tmp[100]; - - for (byte i = 0; i < MAX_DOMOTICZ_IDX; i++) { - snprintf_P(stemp, sizeof(stemp), PSTR("r%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.domoticz_relay_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - snprintf_P(stemp, sizeof(stemp), PSTR("k%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.domoticz_key_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - snprintf_P(stemp, sizeof(stemp), PSTR("s%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.domoticz_switch_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - } - ssensor_indices[0] = '\0'; - for (byte i = 0; i < DZ_MAX_SENSORS; i++) { - snprintf_P(stemp, sizeof(stemp), PSTR("l%d"), i +1); - WebGetArg(stemp, tmp, sizeof(tmp)); - Settings.domoticz_sensor_idx[i] = (!strlen(tmp)) ? 0 : atoi(tmp); - snprintf_P(ssensor_indices, sizeof(ssensor_indices), PSTR("%s%s%d"), ssensor_indices, (strlen(ssensor_indices)) ? "," : "", Settings.domoticz_sensor_idx[i]); - } - WebGetArg("ut", tmp, sizeof(tmp)); - Settings.domoticz_update_timer = (!strlen(tmp)) ? DOMOTICZ_UPDATE_TIMER : atoi(tmp); - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DOMOTICZ D_CMND_IDX " %d,%d,%d,%d, " D_CMND_KEYIDX " %d,%d,%d,%d, " D_CMND_SWITCHIDX " %d,%d,%d,%d, " D_CMND_SENSORIDX " %s, " D_CMND_UPDATETIMER " %d"), - Settings.domoticz_relay_idx[0], Settings.domoticz_relay_idx[1], Settings.domoticz_relay_idx[2], Settings.domoticz_relay_idx[3], - Settings.domoticz_key_idx[0], Settings.domoticz_key_idx[1], Settings.domoticz_key_idx[2], Settings.domoticz_key_idx[3], - Settings.domoticz_switch_idx[0], Settings.domoticz_switch_idx[1], Settings.domoticz_switch_idx[2], Settings.domoticz_switch_idx[3], - ssensor_indices, Settings.domoticz_update_timer); - AddLog(LOG_LEVEL_INFO); - */ - - //snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_SAVE_CONFIGURATION)); - //AddLog(LOG_LEVEL_INFO); } #endif // USE_WEBSERVER - - - - - /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -680,6 +528,8 @@ boolean Xdrv10(byte function) break; case FUNC_LOOP: knx.loop(); // Process knx events + // It is not used by actual config of asyncUDP branch of ESP-KNX-IP Library, + // but is left here for compatibility with upcoming features of ESP-KNX-IP Library break; // case FUNC_COMMAND: // result = KNXCommand(); From 12187f8520092e0230d419da9f95bb2e566fcab1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:25:23 -0300 Subject: [PATCH 166/435] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0a47d40a4..5f82b3a27 100644 --- a/README.md +++ b/README.md @@ -21,9 +21,9 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -This MOD requires the ESP8266 KNX IP Library [envy/esp-knx-ip async-udp branch](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) +* ESP8266 KNX IP Library [envy/esp-knx-ip async-udp branch](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) -The ESP KNX IP library (async-udp branch) requires the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +* [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) Library, used by ESP KNX IP library async-udp branch). Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed are available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp @@ -47,10 +47,10 @@ A copy of both libraries with the modifications needed are available at: - [x] Add Feature to receive telegrams to toggle relay status - [ ] Add Feature to read Temperature, Humidity from Tasmota - [ ] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [x] Add Feature to receive command to read temperature, Humidity +- [ ] Add Feature to receive command to read temperature, Humidity - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config -- [ ] Add Feature to Load Config +- [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM From abcf41086bb8602ab298d15dc95829b05cde1d38 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:29:40 -0300 Subject: [PATCH 167/435] Add files via upload --- .github/Config_Menu.jpg | Bin 82130 -> 82725 bytes .github/KNX_menu.jpg | Bin 98177 -> 97581 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg index 1c95486f46ce557620aaae78e94d19378cef4ce1..99f478fb62b4e7f778f80c5acb20e12c76061b10 100644 GIT binary patch literal 82725 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

T2ZJqW7^SPx5wZoX9DD5t%wtp2EH9 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

O? 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 *L8}!_gRyx29N(X}8Z(dMK$rC` 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 AQ2+n{ literal 98177 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 From f21be75f8075cd4ef59a73f535fa404378d6e7d8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:41:52 -0300 Subject: [PATCH 168/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f82b3a27..8f21ab216 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( * [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) Library, used by ESP KNX IP library async-udp branch). Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) -A copy of both libraries with the modifications needed are available at: +A copy of both libraries with the modifications needed is available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master From b98fda123b934d7107cf1201d9118c10ac2179a8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:53:12 -0300 Subject: [PATCH 169/435] Update xsns_04_snfsc.ino --- sonoff/xsns_04_snfsc.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sonoff/xsns_04_snfsc.ino b/sonoff/xsns_04_snfsc.ino index 944dff985..728263aee 100644 --- a/sonoff/xsns_04_snfsc.ino +++ b/sonoff/xsns_04_snfsc.ino @@ -128,6 +128,12 @@ void SonoffScShow(boolean json) DomoticzSensor(DZ_COUNT, sc_value[3]); DomoticzSensor(DZ_AIRQUALITY, 500 + ((100 - sc_value[4]) * 20)); #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "", temperature, TempUnit()); From ca02cafb5cf2bca0f3d07042d9607f5b8ad50b59 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:53:49 -0300 Subject: [PATCH 170/435] Update xsns_06_dht.ino --- sonoff/xsns_06_dht.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sonoff/xsns_06_dht.ino b/sonoff/xsns_06_dht.ino index e23d1989f..7bd7923ae 100644 --- a/sonoff/xsns_06_dht.ino +++ b/sonoff/xsns_06_dht.ino @@ -231,6 +231,12 @@ void DhtShow(boolean json) dsxflg++; } #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, Dht[i].stype, temperature, TempUnit()); From 10f25c9bf1dfe6161c92ddc6aec9bfff8cdf0a54 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:54:26 -0300 Subject: [PATCH 171/435] Update xsns_07_sht1x.ino --- sonoff/xsns_07_sht1x.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sonoff/xsns_07_sht1x.ino b/sonoff/xsns_07_sht1x.ino index 6ff557aff..83644487a 100644 --- a/sonoff/xsns_07_sht1x.ino +++ b/sonoff/xsns_07_sht1x.ino @@ -201,6 +201,12 @@ void ShtShow(boolean json) #ifdef USE_DOMOTICZ DomoticzTempHumSensor(temperature, humidity); #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "SHT1X", temperature, TempUnit()); From f031be681ea1e9503b2473ad94dda08bd92f599c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:55:01 -0300 Subject: [PATCH 172/435] Update xsns_08_htu21.ino --- sonoff/xsns_08_htu21.ino | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sonoff/xsns_08_htu21.ino b/sonoff/xsns_08_htu21.ino index d4d52a6e3..f2b538ac8 100644 --- a/sonoff/xsns_08_htu21.ino +++ b/sonoff/xsns_08_htu21.ino @@ -264,6 +264,12 @@ void HtuShow(boolean json) #ifdef USE_DOMOTICZ DomoticzTempHumSensor(temperature, humidity); #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, htu_types, temperature, TempUnit()); @@ -303,4 +309,3 @@ boolean Xsns08(byte function) #endif // USE_HTU #endif // USE_I2C - From f884115c8d1870ea121635fea795257873f26e7b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:55:32 -0300 Subject: [PATCH 173/435] Update xsns_09_bmp.ino --- sonoff/xsns_09_bmp.ino | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index abfe2e582..96bad1949 100644 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -467,6 +467,12 @@ void BmpShow(boolean json) #ifdef USE_DOMOTICZ DomoticzTempHumPressureSensor(temperature, humidity, pressure); #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, bmp_name, temperature, TempUnit()); From b069abe57afffef2c1cfbc77e417f234db0bd963 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:56:03 -0300 Subject: [PATCH 174/435] Update xsns_14_sht3x.ino --- sonoff/xsns_14_sht3x.ino | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sonoff/xsns_14_sht3x.ino b/sonoff/xsns_14_sht3x.ino index afedf31fc..fa4f40d24 100644 --- a/sonoff/xsns_14_sht3x.ino +++ b/sonoff/xsns_14_sht3x.ino @@ -111,6 +111,12 @@ void Sht3xShow(boolean json) DomoticzTempHumSensor(temperature, humidity); } #endif // USE_DOMOTICZ + +#ifdef USE_KNX + KNX_Sensor(KNX_temperature, t); + KNX_Sensor(KNX_humidity, h); +#endif // USE_KNX + #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, types, temperature, TempUnit()); @@ -151,4 +157,4 @@ boolean Xsns14(byte function) } #endif // USE_SHT3X -#endif // USE_I2C \ No newline at end of file +#endif // USE_I2C From 64c8567efa62af63fc72ceefef27c495e5c64a8f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 22:56:50 -0300 Subject: [PATCH 175/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 8f21ab216..ba5f8a39a 100644 --- a/README.md +++ b/README.md @@ -45,9 +45,9 @@ A copy of both libraries with the modifications needed is available at: - [x] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) - [x] Add Feature to Send telegrams of button pressed - [x] Add Feature to receive telegrams to toggle relay status -- [ ] Add Feature to read Temperature, Humidity from Tasmota -- [ ] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [ ] Add Feature to receive command to read temperature, Humidity +- [x] Add Feature to read Temperature, Humidity from Tasmota +- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) +- [x] Add Feature to receive command to read temperature, Humidity - [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [x] Add Feature to Load Config From f1fa7015dc897576efefe762ab1c3f25ca729dd7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 23:00:40 -0300 Subject: [PATCH 176/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ba5f8a39a..f00f6f13c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ( Work In Progress ) Sonoff-Tasmota KNX MOD +# ( Work In Progress ) Sonoff-Tasmota KNX -This is a MOD for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). +Modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) @@ -70,7 +70,7 @@ Up to now, enabling KNX uses +18k of code and +3k3 of memory. There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. -## Contributors to this MOD ## +## Contributors ## * Adrian Scillato [ascillato](https://github.com/ascillato) * Sisamiwe [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. From e73d42b087155cd04fc45555a64d2c74ea987934 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 23:03:34 -0300 Subject: [PATCH 177/435] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index f00f6f13c..5197af594 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,7 @@ Modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). -Sonoff-Tasmota_KNX can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) - -_Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota_ +Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota and can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) ## KNX Explanation ## From fa85ae7fca3e5948bcdba2a2e467fb516d7b2b18 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 7 Apr 2018 23:05:46 -0300 Subject: [PATCH 178/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5197af594..d37e0d39c 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( * ESP8266 KNX IP Library [envy/esp-knx-ip async-udp branch](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) -* [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) Library, used by ESP KNX IP library async-udp branch). Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +* [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) Library, used by ESP KNX IP library async-udp branch. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) A copy of both libraries with the modifications needed is available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp From ef2624a855d211ff3ae7693d6f7a68b0ea0e07c3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 00:26:26 -0300 Subject: [PATCH 179/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 91 +++++++++++++++++++++--------------------- 1 file changed, 46 insertions(+), 45 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index cfe507f16..1301e1d2d 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -87,24 +87,24 @@ typedef struct __device_parameters // device parameters (information that can be sent) device_parameters_t device_param[] = { - { 1, true, false, KNX_Empty }, // device_param[ 0] = Relay 1 - { 2, true, false, KNX_Empty }, // device_param[ 1] = Relay 2 + { 1, false, false, KNX_Empty }, // device_param[ 0] = Relay 1 + { 2, false, false, KNX_Empty }, // device_param[ 1] = Relay 2 { 3, false, false, KNX_Empty }, // device_param[ 2] = Relay 3 { 4, false, false, KNX_Empty }, // device_param[ 3] = Relay 4 { 5, false, false, KNX_Empty }, // device_param[ 4] = Relay 5 { 6, false, false, KNX_Empty }, // device_param[ 5] = Relay 6 { 7, false, false, KNX_Empty }, // device_param[ 6] = Relay 7 { 8, false, false, KNX_Empty }, // device_param[ 7] = Relay 8 - { 9, true, false, KNX_Empty }, // device_param[ 8] = Button 1 - { 10, true, false, KNX_Empty }, // device_param[ 9] = Button 2 + { 9, false, false, KNX_Empty }, // device_param[ 8] = Button 1 + { 10, false, false, KNX_Empty }, // device_param[ 9] = Button 2 { 11, false, false, KNX_Empty }, // device_param[10] = Button 3 { 12, false, false, KNX_Empty }, // device_param[11] = Button 4 { 13, false, false, KNX_Empty }, // device_param[12] = Button 5 { 14, false, false, KNX_Empty }, // device_param[13] = Button 6 { 15, false, false, KNX_Empty }, // device_param[14] = Button 7 { 16, false, false, KNX_Empty }, // device_param[15] = Button 8 - { KNX_temperature, true, false, KNX_Empty }, // device_param[16] = Temperature - { KNX_humidity , true, false, KNX_Empty }, // device_param[17] = humidity + { KNX_temperature, false, false, KNX_Empty }, // device_param[16] = Temperature + { KNX_humidity , false, false, KNX_Empty }, // device_param[17] = humidity { KNX_Empty, false, false, KNX_Empty} }; @@ -183,42 +183,44 @@ void KNXStart() knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. #endif - - - - - Settings.flag.knx_enabled = true; - - KNX_physs_addr.pa.area = 1; - KNX_physs_addr.pa.line = 1; - KNX_physs_addr.pa.member = 0; - Settings.knx_physsical_addr = KNX_physs_addr.value; - - Settings.knx_GA_registered = 2; - - Settings.knx_GA_param[0] = 1; - KNX_addr.ga.area = 2; - KNX_addr.ga.line = 2; - KNX_addr.ga.member = 1; - Settings.knx_GA_addr[0] = KNX_addr.value; - - Settings.knx_GA_param[1] = KNX_temperature; - KNX_addr.ga.area = 4; - KNX_addr.ga.line = 1; - KNX_addr.ga.member = 1; - Settings.knx_GA_addr[1] = KNX_addr.value; - - Settings.knx_CB_registered = 1; - - Settings.knx_CB_param[0] = 1; - KNX_addr.ga.area = 2; - KNX_addr.ga.line = 2; - KNX_addr.ga.member = 1; - Settings.knx_CB_addr[0] = KNX_addr.value; - - - +// Read Configuration +// Check which relays, buttons and sensors where configured for this device +// and activate options according to the hardware + for (int i = GPIO_REL1; i < GPIO_REL8 + 1; ++i) + { + if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_REL1].show = true; } + } + for (int i = GPIO_REL1_INV; i < GPIO_REL8_INV + 1; ++i) + { + if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_REL1_INV].show = true; } + } + for (int i = GPIO_SWT1; i < GPIO_SWT4 + 1; ++i) + { + if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_SWT1 + 8].show = true; } + } + for (int i = GPIO_KEY1; i < GPIO_KEY4 + 1; ++i) + { + if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_KEY1 + 8].show = true; } + } + if (GetUsedInModule(GPIO_DHT11, my_module.gp.io)) { device_param[KNX_temperature-1].show = true; } + if (GetUsedInModule(GPIO_DHT22, my_module.gp.io)) { device_param[KNX_temperature-1].show = true; } + if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_temperature-1].show = true; } + if (GetUsedInModule(GPIO_DHT11, my_module.gp.io)) { device_param[KNX_humidity-1].show = true; } + if (GetUsedInModule(GPIO_DHT22, my_module.gp.io)) { device_param[KNX_humidity-1].show = true; } + if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_humidity-1].show = true; } + // Delete from KNX settings any configuration that is not anymore related to this device + byte j; + for (int i = 0; i < Settings.knx_GA_registered; ++i) + { + j = Settings.knx_GA_param[i]; + if ( !device_param[j-1].show ) { Settings.knx_GA_param[i] = 0; } + } + for (int i = 0; i < Settings.knx_CB_registered; ++i) + { + j = Settings.knx_CB_param[i]; + if ( !device_param[j-1].show ) { Settings.knx_CB_param[i] = 0; } + } // Set Physical KNX Address of the device KNX_physs_addr.value = Settings.knx_physsical_addr; @@ -229,7 +231,7 @@ void KNXStart() // If there is, register the group address on the KNX_IP Library to Receive data for Executing Callbacks for (byte i = 0; i < Settings.knx_CB_registered; ++i) { - byte j = Settings.knx_CB_param[i]; + j = Settings.knx_CB_param[i]; if ( j > 0 ) { device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter @@ -286,6 +288,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) } } + void KNX_Update_Power_State(byte device, power_t state) { if (!(Settings.flag.knx_enabled)) { return; } @@ -506,9 +509,7 @@ void HandleKNXConfiguration() void KNX_Save_Settings() { - // Read all data from the webpage - // Write to settings.knx - // Write to ESP_KNX_IP library + } #endif // USE_WEBSERVER From e63a7ec0cba0f9b4da66ae3b7eff33d0206c4ae3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 00:27:13 -0300 Subject: [PATCH 180/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d37e0d39c..fa9406abf 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ A copy of both libraries with the modifications needed is available at: - [x] Add Feature to read Temperature, Humidity from Tasmota - [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature, Humidity -- [ ] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc +- [x] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc - [ ] Add Feature to Save Config - [x] Add Feature to Load Config - [x] Add Log Info From 70e7608942b2c5d93aed7463314823f8ff9272cd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 00:34:17 -0300 Subject: [PATCH 181/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fa9406abf..31299599a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ( Work In Progress ) Sonoff-Tasmota KNX -Modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). +Sonoff-Tasmota_KNX is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php) to its features. Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota and can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) @@ -53,7 +53,7 @@ A copy of both libraries with the modifications needed is available at: - [x] Complete all the language files with keys - [ ] Optimize code to reduce Flash and RAM -## Modifications to [Original Tasmota](https://github.com/arendst/Sonoff-Tasmota) ## +## Modifications to Sonoff-Tasmota ## * Adding the file _/sonoff/xdrv_10_KNX.ino_ * Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ From 944a4f2dfdb0ce83e6bf77f1494fa9e926cd5a9d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 00:37:53 -0300 Subject: [PATCH 182/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 31299599a..8b5070038 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Sonoff-Tasmota_KNX is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php) to its features. -Sonoff-Tasmota_KNX is kept updated with the Original Sonoff-Tasmota and can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) +This repository is kept updated with the Original Sonoff-Tasmota and can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) ## KNX Explanation ## From 7e7e64f71d14784f3c49849ae371da6af463078b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 00:41:52 -0300 Subject: [PATCH 183/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8b5070038..351c295a0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ # ( Work In Progress ) Sonoff-Tasmota KNX -Sonoff-Tasmota_KNX is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php) to its features. +[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php) to its features. -This repository is kept updated with the Original Sonoff-Tasmota and can be found [here](https://github.com/ascillato/Sonoff-Tasmota_KNX) +This repository is kept updated with the Original Sonoff-Tasmota. ## KNX Explanation ## From ca7c23741b6161a8d7331c88f658bd35966c764c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 01:09:32 -0300 Subject: [PATCH 184/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 351c295a0..92d4430b1 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,9 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -* ESP8266 KNX IP Library [envy/esp-knx-ip async-udp branch](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) +* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) -* [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) Library, used by ESP KNX IP library async-udp branch. Please, use ESPAsyncUDP library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +* [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library (async-udp branch). A copy of both libraries with the modifications needed is available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp From 3c7ee6c04c01353ae8d0713cd2a4da7b52ec63f6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 01:10:41 -0300 Subject: [PATCH 185/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 92d4430b1..8796673ee 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( * [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) -* [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library (async-udp branch). +* [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library. A copy of both libraries with the modifications needed is available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp From edf045e38b5931cea72818e458078424d58ffb8e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 01:45:08 -0300 Subject: [PATCH 186/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8796673ee..ae6504484 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ A copy of both libraries with the modifications needed is available at: * Add entries to sensor files * Add entries to language files -Up to now, enabling KNX uses +18k of code and +3k3 of memory. +Up to now, enabling KNX uses +22k of code and +3k3 of memory. There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. From 9796241c566a994dbadcceeaeb9c768c0247d568 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 03:15:34 -0300 Subject: [PATCH 187/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ae6504484..f35e9481d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ( Work In Progress ) Sonoff-Tasmota KNX -[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php) to its features. +[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add to its features a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). This repository is kept updated with the Original Sonoff-Tasmota. From ddbaba732330900b4b8f36016dad77088bb7bc42 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 19:24:07 -0300 Subject: [PATCH 188/435] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f35e9481d..8122b574e 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,9 @@ This repository is kept updated with the Original Sonoff-Tasmota. ## KNX Explanation ## -The [KNX](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) IP Protocol is intended for smart home and smart bulding automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12:3671_. +[](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) + +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12:3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From 67cfb9f1d2e1ab8565c071205069bb65b5d0eb06 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:08:56 -0300 Subject: [PATCH 189/435] Update cs-CZ.h --- sonoff/language/cs-CZ.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 4ed42d50b..f31f9df0c 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie Dnes" From 5b679a60c25ed016da2bf28d6bf9384ef34791fd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:09:21 -0300 Subject: [PATCH 190/435] Update de-DE.h --- sonoff/language/de-DE.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 60c90f63d..6c9225d36 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" From d92a53b44ad567ea1f5118fe4caf4aaf8ee3fc79 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:10:44 -0300 Subject: [PATCH 191/435] Update en-GB.h --- sonoff/language/en-GB.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 478635111..69a35e0d5 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" From 777312bf4bb74eb405982455014ff5b4d86500ad Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:11:42 -0300 Subject: [PATCH 192/435] Update es-AR.h --- sonoff/language/es-AR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 4e52136d3..3acd15ecc 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Leer" #define D_KNX_COMMAND_OTHER "Otro" #define D_SENT_TO "enviada a" +#define D_KNX_WARNING "La dirección de grupo ( 0 / 0 / 0 ) está reservada y no puede ser utilizada." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" From 7e1c02cd286b50bf465d8f1717ca8d3dccd64fbe Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:12:13 -0300 Subject: [PATCH 193/435] Update fr-FR.h --- sonoff/language/fr-FR.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 89b2711a9..9c18af2cd 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xsns_03_energy.ino #define D_ENERGY_TODAY "Energie aujourd'hui" From c20e02c75d1dc3cd6848af205fe5006b6f7450ca Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:12:38 -0300 Subject: [PATCH 194/435] Update hu-HU.h --- sonoff/language/hu-HU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 4c01c884d..c03b635c4 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Mai Energia" From 1e9bd4334eef07430712e19f81f53a137cdef610 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:13:03 -0300 Subject: [PATCH 195/435] Update it-IT.h --- sonoff/language/it-IT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 4d4d8e6c7..4c08ee1fa 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Oggi" From 5ee68d71accd2eae4088677829f499318f539e73 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:13:30 -0300 Subject: [PATCH 196/435] Update nl-NL.h --- sonoff/language/nl-NL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 09bdf0a53..50a984792 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Verbruik vandaag" From c103fac0db711942235e8afeb6ced3d3ad1c95ea Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:13:56 -0300 Subject: [PATCH 197/435] Update pl-PL.h --- sonoff/language/pl-PL.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index c7bd1e4cd..d8d30c7f2 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Dzisiaj" From d16c204c59cb0beb490b67c6985704a38400bcc6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:14:25 -0300 Subject: [PATCH 198/435] Update pt-PT.h --- sonoff/language/pt-PT.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index f844016ca..725f6a82c 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Consumo energético de hoje" From f6451b185879498f4fd70cca02189da7be0c8d64 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:14:49 -0300 Subject: [PATCH 199/435] Update ru-RU.h --- sonoff/language/ru-RU.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 6c771232a..34c051105 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "Энергия Сегодня" From 66225606382cd072af98dce4b5c30ffc165c0017 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:15:17 -0300 Subject: [PATCH 200/435] Update zh-CN.h --- sonoff/language/zh-CN.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 6a3652ec9..9fc5c0845 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" From 6cf669ffce354437a7a4e74c6db7afb24ad47ee9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:15:49 -0300 Subject: [PATCH 201/435] Update zh-TW.h --- sonoff/language/zh-TW.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 3390f9980..edb04d96c 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -390,6 +390,7 @@ #define D_KNX_COMMAND_READ "Read" #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" +#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用電量" From 4f9d18eab10785e9aae72e2fc451608b7b71d9d9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:17:08 -0300 Subject: [PATCH 202/435] Update webserver.ino --- sonoff/webserver.ino | 5 ----- 1 file changed, 5 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 926e1bb67..183decd71 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -1123,11 +1123,6 @@ void HandleSaveSettings() break; #endif // USE_TIMERS_WEB #endif // USE_TIMERS -#ifdef USE_KNX - case 8: - KNX_Save_Settings(); - break; -#endif // USE_KNX #ifdef USE_DOMOTICZ case 4: DomoticzSaveSettings(); From c53ce0ab754b47c1197bab53674345eb8153dc36 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:18:13 -0300 Subject: [PATCH 203/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 366 +++++++++++++++++++++++++++++++---------- 1 file changed, 283 insertions(+), 83 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 1301e1d2d..171a511ca 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -22,11 +22,14 @@ #include // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) // use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) - // change on esp-knx-ip.h file the following: - // #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 - // //#define ESP_KNX_DEBUG <-- comment this line + // use the library patched with https://github.com/envy/esp-knx-ip/pull/48 + // and with https://github.com/envy/esp-knx-ip/pull/52 // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) + // + // A copy of both libraries with the modifications needed is available at: + // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp + // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master /* Variables in settings.h @@ -175,6 +178,74 @@ byte KNX_GA_Search( byte param, byte start = 0 ) } +void KNX_ADD_GA( byte GAop, byte GA_FNUM, byte GA_AREA, byte GA_FDEF ) +{ + //Check if all GA were assigned. If yes-> return + //assign a GA to that address + + + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "ADD GA: %d, to %d/%d/%d"), + GAop, GA_FNUM, GA_AREA, GA_FDEF ); + AddLog(LOG_LEVEL_INFO); + +} + + +void KNX_DEL_GA( byte GAnum ) +{ + + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "DEL GA %d"), + GAnum ); + AddLog(LOG_LEVEL_INFO); +} + + +void KNX_ADD_CB( byte CBop, byte CB_FNUM, byte CB_AREA, byte CB_FDEF ) +{ + //Check if all callbacks were assigned. If yes-> return + //check if a CB for CBop was registered on the ESP-KNX-IP Library + //if no, register the CB for CBop + //assign a callback to CB address + + +/* +for (byte i = 0; i < Settings.knx_CB_registered; ++i) +{ + j = Settings.knx_CB_param[i]; + if ( j > 0 ) + { + device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter + // to identify which action was requested on the KNX network + // to be performed on this device (set relay, etc.) + // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) + KNX_addr.value = Settings.knx_CB_addr[i]; + knx.callback_assign( device_param[j-1].CB_id, KNX_addr ); + } +} +*/ + + + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "ADD CB: %d/%d/%d to %d"), + CBop, CB_FNUM, CB_AREA, CB_FDEF ); + AddLog(LOG_LEVEL_INFO); + +} + + +void KNX_DEL_CB( byte CBnum ) +{ + //delete assigment + //check if there is no other assigment to that callback. If there is not. delete that callback register + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "DEL CB %d"), + CBnum ); + AddLog(LOG_LEVEL_INFO); + +} + void KNXStart() { @@ -183,9 +254,13 @@ void KNXStart() knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. #endif -// Read Configuration -// Check which relays, buttons and sensors where configured for this device -// and activate options according to the hardware + // Set Physical KNX Address of the device + KNX_physs_addr.value = Settings.knx_physsical_addr; + knx.physical_address_set( KNX_physs_addr ); + + // Read Configuration + // Check which relays, buttons and sensors where configured for this device + // and activate options according to the hardware for (int i = GPIO_REL1; i < GPIO_REL8 + 1; ++i) { if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_REL1].show = true; } @@ -222,10 +297,6 @@ void KNXStart() if ( !device_param[j-1].show ) { Settings.knx_CB_param[i] = 0; } } - // Set Physical KNX Address of the device - KNX_physs_addr.value = Settings.knx_physsical_addr; - knx.physical_address_set( KNX_physs_addr ); - // Register Group Addresses to listen to // Search on the settings if there is a group address set for receive KNX messages for the type: device_param[j].type // If there is, register the group address on the KNX_IP Library to Receive data for Executing Callbacks @@ -376,8 +447,7 @@ void KNX_Sensor(byte sensor_type, float value) const char S_CONFIGURE_KNX[] PROGMEM = D_CONFIGURE_KNX; const char HTTP_FORM_KNX[] PROGMEM = - "

 " D_KNX_PARAMETERS " 
" - "" + "
 " D_KNX_PARAMETERS " " "
" "" D_KNX_PHYSICAL_ADDRESS " " " . " @@ -398,21 +468,21 @@ const char HTTP_FORM_KNX_OPT[] PROGMEM = ""; const char HTTP_FORM_KNX_GA[] PROGMEM = - " / " - " / " - " "; + " / " + " / " + " "; const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = - "

" + "

" ""; const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = "" - ""; + ""; const char HTTP_FORM_KNX3[] PROGMEM = "
{optex} -> GAfnum / GAarea / GAfdef

" - "
" + "
" "" D_KNX_GROUP_ADDRESS_TO_READ "
"; const char HTTP_FORM_KNX4[] PROGMEM = @@ -420,97 +490,227 @@ const char HTTP_FORM_KNX4[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = "
GAfnum / GAarea / GAfdef -> {optex}
"); + page += F("
"); + page += FPSTR(HTTP_BTN_CONF); + + page.replace( F(""), + F("function GAwarning()" + "{" + "var GA_FNUM = document.getElementById('GA_FNUM');" + "var GA_AREA = document.getElementById('GA_AREA');" + "var GA_FDEF = document.getElementById('GA_FDEF');" + "if ( GA_FNUM != null && GA_FNUM.value == '0' && GA_AREA.value == '0' && GA_FDEF.value == '0' ) {" + "alert('" D_KNX_WARNING "');" + "}" + "}" + "function CBwarning()" + "{" + "var CB_FNUM = document.getElementById('CB_FNUM');" + "var CB_AREA = document.getElementById('CB_AREA');" + "var CB_FDEF = document.getElementById('CB_FDEF');" + "if ( CB_FNUM != null && CB_FNUM.value == '0' && CB_AREA.value == '0' && CB_FDEF.value == '0' ) {" + "alert('" D_KNX_WARNING "');" + "}" + "}" + "") ); + ShowPage(page); } - page += F(""); - page += FPSTR(HTTP_FORM_END); - page += FPSTR(HTTP_BTN_CONF); - ShowPage(page); } void KNX_Save_Settings() { + String stmp; + address_t KNX_physs_addr; + Settings.flag.knx_enabled = WebServer->hasArg("b1"); + + stmp = WebServer->arg("area"); + KNX_physs_addr.pa.area = stmp.toInt(); + stmp = WebServer->arg("line"); + KNX_physs_addr.pa.line = stmp.toInt(); + stmp = WebServer->arg("member"); + KNX_physs_addr.pa.member = stmp.toInt(); + + Settings.knx_physsical_addr = KNX_physs_addr.value; + // Set Physical KNX Address of the device + knx.physical_address_set( KNX_physs_addr ); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "KNX_ENABLED: %d "), + Settings.flag.knx_enabled); + AddLog(LOG_LEVEL_INFO); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "KNX_PHYSADDR: %d.%d.%d "), + KNX_physs_addr.pa.area, KNX_physs_addr.pa.line, KNX_physs_addr.pa.member ); + AddLog(LOG_LEVEL_INFO); } + #endif // USE_WEBSERVER @@ -529,7 +729,7 @@ boolean Xdrv10(byte function) break; case FUNC_LOOP: knx.loop(); // Process knx events - // It is not used by actual config of asyncUDP branch of ESP-KNX-IP Library, + // It is not used by the actual config of asyncUDP branch of ESP-KNX-IP Library, // but is left here for compatibility with upcoming features of ESP-KNX-IP Library break; // case FUNC_COMMAND: From 2e454ec59527c3979e85c3d5b36b6fe1be37e37e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 20:19:28 -0300 Subject: [PATCH 204/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8122b574e..26a4acd5d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ( Work In Progress ) Sonoff-Tasmota KNX -[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add to its features a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). +[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). This repository is kept updated with the Original Sonoff-Tasmota. From a2fdcc48e04b24bbbbc61b9ef1f8623d8dd6bffb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 21:42:47 -0300 Subject: [PATCH 205/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 26a4acd5d..696105a66 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository is kept updated with the Original Sonoff-Tasmota. [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12:3671_. +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From 2740093fe8d3a4c5ecabf6d5d93a5a878a3f6c1c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 21:43:14 -0300 Subject: [PATCH 206/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 696105a66..ff6d4ef59 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository is kept updated with the Original Sonoff-Tasmota. [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224 . 0 . 23 . 12 : 3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From 88388e9e6ef18cad67dfd8055df7b6beaac8b362 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 21:43:41 -0300 Subject: [PATCH 207/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ff6d4ef59..696105a66 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository is kept updated with the Original Sonoff-Tasmota. [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224 . 0 . 23 . 12 : 3671_. +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From c39615dbc86b29cee259985197229496ceb3a051 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 22:00:35 -0300 Subject: [PATCH 208/435] Update esp-knx-ip.h --- lib/esp-knx-ip-async-udp/esp-knx-ip.h | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.h b/lib/esp-knx-ip-async-udp/esp-knx-ip.h index 31b7e5e3b..9d9f81db5 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.h +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.h @@ -26,10 +26,10 @@ // Webserver related #define USE_BOOTSTRAP 1 // [Default 1] Set to 1 to enable use of bootstrap CSS for nicer webconfig. CSS is loaded from bootstrapcdn.com. Set to 0 to disable -#define ROOT_PREFIX "" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx -#define DISABLE_EEPROM_BUTTONS 0 // [Default 0] Set to 1 to disable the EEPROM buttons in the web ui. -#define DISABLE_REBOOT_BUTTON 0 // [Default 0] Set to 1 to disable the reboot button in the web ui. -#define DISABLE_RESTORE_BUTTON 0 // [Default 0] Set to 1 to disable the "restore defaults" button in the web ui. +#define ROOT_PREFIX "/knx" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx +#define DISABLE_EEPROM_BUTTONS 1 // [Default 0] Set to 1 to disable the EEPROM buttons in the web ui. +#define DISABLE_REBOOT_BUTTON 1 // [Default 0] Set to 1 to disable the reboot button in the web ui. +#define DISABLE_RESTORE_BUTTON 1 // [Default 0] Set to 1 to disable the "restore defaults" button in the web ui. // These values normally don't need adjustment #define MULTICAST_PORT 3671 // [Default 3671] @@ -367,6 +367,9 @@ class ESPKNXIP { callback_id_t callback_register(String name, callback_fptr_t cb, void *arg = nullptr, enable_condition_t cond = nullptr); void callback_assign(callback_id_t id, address_t val); + void callback_delete_register(callback_id_t id); + void callback_delete_assignment(callback_assignment_id_t id); + void physical_address_set(address_t const &addr); address_t physical_address_get(); From 9c09fe7235a496bba3f66204a5cb311b04b1dd79 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 8 Apr 2018 22:02:03 -0300 Subject: [PATCH 209/435] Update esp-knx-ip.cpp --- lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 64 ++++++++++++++++++++++++- 1 file changed, 63 insertions(+), 1 deletion(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp index e5b4cc03a..7fa575c57 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp @@ -147,7 +147,7 @@ void ESPKNXIP::restore_from_eeprom() address += sizeof(callback_id_t); } EEPROM.get(address, physaddr); - address += sizeof(address_t); + address += sizeof(address_t); //EEPROM.get(address, custom_config_data); //address += sizeof(custom_config_data); @@ -193,9 +193,65 @@ callback_assignment_id_t ESPKNXIP::__callback_register_assignment(address_t addr callback_assignments[aid].address = address; callback_assignments[aid].callback_id = id; registered_callback_assignments++; + + DEBUG_PRINT("Assigned callback id >"); + DEBUG_PRINT(id); + DEBUG_PRINT("/ga["); + DEBUG_PRINT(address.ga.area); + DEBUG_PRINT("/"); + DEBUG_PRINT(address.ga.line); + DEBUG_PRINT("/"); + DEBUG_PRINT(address.ga.member); + DEBUG_PRINTLN("]"); + return aid; } +void ESPKNXIP::callback_delete_register(callback_id_t id) +{ + /*if (id >= registered_callback_assignments) + return; + + uint32_t dest_offset = 0; + uint32_t src_offset = 0; + uint32_t len = 0; + if (id == 0) + { + // start of array, so delete first entry + src_offset = 1; + // registered_ga_callbacks will be 1 in case of only one entry + // registered_ga_callbacks will be 2 in case of two entries, etc.. + // so only copy anything, if there is it at least more then one element + len = (registered_callback_assignments - 1); + } + else if (id == registered_callback_assignments - 1) + { + // last element, don't do anything, simply decrement counter + } + else + { + // somewhere in the middle + // need to calc offsets + + // skip all prev elements + dest_offset = id; // id is equal to how many element are in front of it + src_offset = dest_offset + 1; // start after the current element + len = (registered_callback_assignments - 1 - id); + } + + if (len > 0) + { + memmove(callback_assignments + dest_offset, callback_assignments + src_offset, len * sizeof(callback_assignment_t)); + } + + registered_callback_assignments--;*/ +} + +void ESPKNXIP::callback_delete_assignment(callback_assignment_id_t id) +{ + __callback_delete_assignment(id); +} + void ESPKNXIP::__callback_delete_assignment(callback_assignment_id_t id) { if (id >= registered_callback_assignments) @@ -248,6 +304,12 @@ callback_id_t ESPKNXIP::callback_register(String name, callback_fptr_t cb, void callbacks[id].cond = cond; callbacks[id].arg = arg; registered_callbacks++; + + DEBUG_PRINT("Registered callback >"); + DEBUG_PRINT(name); + DEBUG_PRINT("< @ "); + DEBUG_PRINTLN(id); + return id; } From ebc6388ca47ff98e6e021feed63166262d6fb2f9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 00:08:13 -0300 Subject: [PATCH 210/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 244 +++++++++++++++++++++++++++++++---------- 1 file changed, 189 insertions(+), 55 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 171a511ca..2033d5b0a 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -49,7 +49,7 @@ Constants in sonoff.h #define MAX_KNX_GA 10 Max number of KNX Group Addresses to read that can be set #define MAX_KNX_CB 10 Max number of KNX Group Addresses to write that can be set - If you change MAX_KNX_CB you also have to change on esp-knx-ip.h file the following: + If you change MAX_KNX_CB you also have to change on the esp-knx-ip.h file the following: #define MAX_CALLBACK_ASSIGNMENTS 10 #define MAX_CALLBACKS 10 Both to MAX_KNX_CB @@ -178,74 +178,182 @@ byte KNX_GA_Search( byte param, byte start = 0 ) } +byte KNX_CB_Search( byte param, byte start = 0 ) +{ + for (byte i = start; i < Settings.knx_CB_registered; ++i) + { + if ( Settings.knx_CB_param[i] == param ) + { + if ( Settings.knx_CB_addr[i] != 0 ) + { + if ( i >= start ) { return i; } + } + } + } + return KNX_Empty; +} + + void KNX_ADD_GA( byte GAop, byte GA_FNUM, byte GA_AREA, byte GA_FDEF ) { - //Check if all GA were assigned. If yes-> return - //assign a GA to that address + // Check if all GA were assigned. If yes-> return + if ( Settings.knx_GA_registered >= MAX_KNX_GA ) { return; } + if ( GA_FNUM == 0 && GA_AREA == 0 && GA_FDEF == 0 ) { return; } + // Assign a GA to that address + Settings.knx_GA_param[Settings.knx_GA_registered] = GAop; + KNX_addr.ga.area = GA_FNUM; + KNX_addr.ga.line = GA_AREA; + KNX_addr.ga.member = GA_FDEF; + Settings.knx_GA_addr[Settings.knx_GA_registered] = KNX_addr.value; + Settings.knx_GA_registered++; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "ADD GA: %d, to %d/%d/%d"), - GAop, GA_FNUM, GA_AREA, GA_FDEF ); - AddLog(LOG_LEVEL_INFO); - + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ADD " GA #%d: %s " D_TO " %d/%d/%d"), + Settings.knx_GA_registered, + device_param_ga[GAop-1], + GA_FNUM, GA_AREA, GA_FDEF ); + AddLog(LOG_LEVEL_DEBUG); } void KNX_DEL_GA( byte GAnum ) { + byte dest_offset = 0; + byte src_offset = 0; + byte len = 0; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "DEL GA %d"), + // Delete GA + Settings.knx_GA_param[GAnum-1] = 0; + + if (GAnum == 1) + { + // start of array, so delete first entry + src_offset = 1; + // Settings.knx_GA_registered will be 1 in case of only one entry + // Settings.knx_GA_registered will be 2 in case of two entries, etc.. + // so only copy anything, if there is it at least more then one element + len = (Settings.knx_GA_registered - 1); + } + else if (GAnum == Settings.knx_GA_registered) + { + // last element, don't do anything, simply decrement counter + } + else + { + // somewhere in the middle + // need to calc offsets + + // skip all prev elements + dest_offset = GAnum -1 ; // GAnum -1 is equal to how many element are in front of it + src_offset = dest_offset + 1; // start after the current element + len = (Settings.knx_GA_registered - GAnum); + } + + if (len > 0) + { + memmove(Settings.knx_GA_param + dest_offset, Settings.knx_GA_param + src_offset, len * sizeof(byte)); + memmove(Settings.knx_GA_addr + dest_offset, Settings.knx_GA_addr + src_offset, len * sizeof(uint16_t)); + } + + Settings.knx_GA_registered--; + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_DELETE " GA #%d"), GAnum ); - AddLog(LOG_LEVEL_INFO); + AddLog(LOG_LEVEL_DEBUG); } void KNX_ADD_CB( byte CBop, byte CB_FNUM, byte CB_AREA, byte CB_FDEF ) { - //Check if all callbacks were assigned. If yes-> return - //check if a CB for CBop was registered on the ESP-KNX-IP Library - //if no, register the CB for CBop - //assign a callback to CB address + // Check if all callbacks were assigned. If yes-> return + if ( Settings.knx_CB_registered >= MAX_KNX_CB ) { return; } + if ( CB_FNUM == 0 && CB_AREA == 0 && CB_FDEF == 0 ) { return; } - -/* -for (byte i = 0; i < Settings.knx_CB_registered; ++i) -{ - j = Settings.knx_CB_param[i]; - if ( j > 0 ) + // Check if a CB for CBop was registered on the ESP-KNX-IP Library + if ( device_param[CBop-1].CB_id == KNX_Empty ) { - device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter - // to identify which action was requested on the KNX network - // to be performed on this device (set relay, etc.) - // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) - KNX_addr.value = Settings.knx_CB_addr[i]; - knx.callback_assign( device_param[j-1].CB_id, KNX_addr ); + // if no, register the CB for CBop + device_param[CBop-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[CBop-1]); + // KNX IP Library requires a parameter + // to identify which action was requested on the KNX network + // to be performed on this device (set relay, etc.) + // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) } -} -*/ + // Assign a callback to CB address + Settings.knx_CB_param[Settings.knx_CB_registered] = CBop; + KNX_addr.ga.area = CB_FNUM; + KNX_addr.ga.line = CB_AREA; + KNX_addr.ga.member = CB_FDEF; + Settings.knx_CB_addr[Settings.knx_CB_registered] = KNX_addr.value; + knx.callback_assign( device_param[CBop-1].CB_id, KNX_addr ); + Settings.knx_CB_registered++; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "ADD CB: %d/%d/%d to %d"), - CBop, CB_FNUM, CB_AREA, CB_FDEF ); - AddLog(LOG_LEVEL_INFO); - + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ADD " CB #%d: %d/%d/%d " D_TO " %s"), + Settings.knx_CB_registered, + CB_FNUM, CB_AREA, CB_FDEF, + device_param_cb[CBop-1] ); + AddLog(LOG_LEVEL_DEBUG); } void KNX_DEL_CB( byte CBnum ) { - //delete assigment - //check if there is no other assigment to that callback. If there is not. delete that callback register + byte oldparam = Settings.knx_CB_param[CBnum-1]; + byte dest_offset = 0; + byte src_offset = 0; + byte len = 0; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "DEL CB %d"), - CBnum ); - AddLog(LOG_LEVEL_INFO); + // Delete assigment + knx.callback_delete_assignment(CBnum-1); + Settings.knx_CB_param[CBnum-1] = 0; + if (CBnum == 1) + { + // start of array, so delete first entry + src_offset = 1; + // Settings.knx_CB_registered will be 1 in case of only one entry + // Settings.knx_CB_registered will be 2 in case of two entries, etc.. + // so only copy anything, if there is it at least more then one element + len = (Settings.knx_CB_registered - 1); + } + else if (CBnum == Settings.knx_CB_registered) + { + // last element, don't do anything, simply decrement counter + } + else + { + // somewhere in the middle + // need to calc offsets + + // skip all prev elements + dest_offset = CBnum -1 ; // GAnum -1 is equal to how many element are in front of it + src_offset = dest_offset + 1; // start after the current element + len = (Settings.knx_CB_registered - CBnum); + } + + if (len > 0) + { + memmove(Settings.knx_CB_param + dest_offset, Settings.knx_CB_param + src_offset, len * sizeof(byte)); + memmove(Settings.knx_CB_addr + dest_offset, Settings.knx_CB_addr + src_offset, len * sizeof(uint16_t)); + } + + Settings.knx_CB_registered--; + + // Check if there is no other assigment to that callback. If there is not. delete that callback register + if ( KNX_CB_Search( oldparam ) == KNX_Empty ) { + knx.callback_delete_register( device_param[oldparam].CB_id ); + device_param[oldparam].CB_id = KNX_Empty; + } + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_DELETE " CB #%d"), CBnum ); + AddLog(LOG_LEVEL_DEBUG); } + void KNXStart() { @@ -254,6 +362,10 @@ void KNXStart() knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. #endif + // Check for incompatible config + if (Settings.knx_GA_registered > MAX_KNX_GA) { Settings.knx_GA_registered = MAX_KNX_GA; } + if (Settings.knx_CB_registered > MAX_KNX_CB) { Settings.knx_CB_registered = MAX_KNX_CB; } + // Set Physical KNX Address of the device KNX_physs_addr.value = Settings.knx_physsical_addr; knx.physical_address_set( KNX_physs_addr ); @@ -537,7 +649,7 @@ void HandleKNXConfiguration() stmp = WebServer->arg("CB_FDEF"); byte CB_FDEF = stmp.toInt(); - KNX_ADD_CB( CB_FNUM, CB_AREA, CB_FDEF, CBop ); + KNX_ADD_CB( CBop, CB_FNUM, CB_AREA, CB_FDEF ); } } @@ -599,12 +711,12 @@ void HandleKNXConfiguration() page.replace(F("btndis"), F("disabled")); } page.replace(F("fncbtnadd"), F("GAwarning")); - for (byte i = 0; i < Settings.knx_GA_registered ; i++) + for (byte i = 0; i < Settings.knx_GA_registered ; ++i) { if ( Settings.knx_GA_param[i] ) { page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW); - page.replace(F("{opval}"), String(Settings.knx_GA_param[i])); + page.replace(F("{opval}"), String(i+1)); page.replace(F("{optex}"), String(device_param_ga[Settings.knx_GA_param[i]-1])); KNX_addr.value = Settings.knx_GA_addr[i]; page.replace(F("GAfnum"), String(KNX_addr.ga.area)); @@ -641,12 +753,12 @@ void HandleKNXConfiguration() page.replace(F("btndis"), F("disabled")); } page.replace(F("fncbtnadd"), F("CBwarning")); - for (byte i = 0; i < Settings.knx_CB_registered ; i++) + for (byte i = 0; i < Settings.knx_CB_registered ; ++i) { if ( Settings.knx_CB_param[i] ) { page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW2); - page.replace(F("{opval}"), String(Settings.knx_CB_param[i])); + page.replace(F("{opval}"), String(i+1)); page.replace(F("{optex}"), String(device_param_cb[Settings.knx_CB_param[i]-1])); KNX_addr.value = Settings.knx_CB_addr[i]; page.replace(F("GAfnum"), String(KNX_addr.ga.area)); @@ -687,28 +799,50 @@ void HandleKNXConfiguration() void KNX_Save_Settings() { String stmp; - address_t KNX_physs_addr; + address_t KNX_addr; + byte i; Settings.flag.knx_enabled = WebServer->hasArg("b1"); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ENABLED ": %d "), + Settings.flag.knx_enabled); + AddLog(LOG_LEVEL_DEBUG); stmp = WebServer->arg("area"); - KNX_physs_addr.pa.area = stmp.toInt(); + KNX_addr.pa.area = stmp.toInt(); stmp = WebServer->arg("line"); - KNX_physs_addr.pa.line = stmp.toInt(); + KNX_addr.pa.line = stmp.toInt(); stmp = WebServer->arg("member"); - KNX_physs_addr.pa.member = stmp.toInt(); + KNX_addr.pa.member = stmp.toInt(); + Settings.knx_physsical_addr = KNX_addr.value; + knx.physical_address_set( KNX_addr ); // Set Physical KNX Address of the device + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_KNX_PHYSICAL_ADDRESS ": %d.%d.%d "), + KNX_addr.pa.area, KNX_addr.pa.line, KNX_addr.pa.member ); + AddLog(LOG_LEVEL_DEBUG); - Settings.knx_physsical_addr = KNX_physs_addr.value; - // Set Physical KNX Address of the device - knx.physical_address_set( KNX_physs_addr ); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA: %d"), + Settings.knx_GA_registered ); + AddLog(LOG_LEVEL_DEBUG); + for (i = 0; i < Settings.knx_GA_registered ; ++i) + { + KNX_addr.value = Settings.knx_GA_addr[i]; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA #%d: %s " D_TO " %d/%d/%d"), + i+1, device_param_ga[Settings.knx_GA_param[i]-1], + KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member ); + AddLog(LOG_LEVEL_DEBUG); + } - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "KNX_ENABLED: %d "), - Settings.flag.knx_enabled); - AddLog(LOG_LEVEL_INFO); - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "KNX_PHYSADDR: %d.%d.%d "), - KNX_physs_addr.pa.area, KNX_physs_addr.pa.line, KNX_physs_addr.pa.member ); - AddLog(LOG_LEVEL_INFO); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB: %d"), + Settings.knx_CB_registered ); + AddLog(LOG_LEVEL_DEBUG); + for (i = 0; i < Settings.knx_CB_registered ; ++i) + { + KNX_addr.value = Settings.knx_CB_addr[i]; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB #%d: %d/%d/%d " D_TO " %s"), + i+1, + KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member, + device_param_cb[Settings.knx_CB_param[i]-1] ); + AddLog(LOG_LEVEL_DEBUG); + } } #endif // USE_WEBSERVER From 77421ba80f06ba6e7432e2b998710d0c67d39a20 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 00:09:32 -0300 Subject: [PATCH 211/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 696105a66..0e66a4395 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# ( Work In Progress ) Sonoff-Tasmota KNX +# Sonoff-Tasmota KNX [Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48) and [PR#52](https://github.com/envy/esp-knx-ip/pull/52) +* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48), [PR#52](https://github.com/envy/esp-knx-ip/pull/52) * [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library. @@ -49,7 +49,7 @@ A copy of both libraries with the modifications needed is available at: - [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature, Humidity - [x] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc -- [ ] Add Feature to Save Config +- [x] Add Feature to Save Config - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys From 8e648e0b4bccd7b463ae9914e6453b27aa417f01 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 00:24:04 -0300 Subject: [PATCH 212/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0e66a4395..45c5a0d42 100644 --- a/README.md +++ b/README.md @@ -66,7 +66,7 @@ A copy of both libraries with the modifications needed is available at: * Add entries to sensor files * Add entries to language files -Up to now, enabling KNX uses +22k of code and +3k3 of memory. +Up to now, enabling KNX uses +23k of code and +3k3 of memory. There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. From 4ae23d4a67a7260a54e4d6fad50badb568e384e7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 00:24:53 -0300 Subject: [PATCH 213/435] Update user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 138e53bb7..65e60ae37 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -203,7 +203,7 @@ //#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem) // -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support (+18k code, +3k3 mem) +#define USE_KNX // Enable KNX IP Protocol Support (+23k code, +3k3 mem) // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) From 1c4f63fcb59fc30c4a7a8cbd4f285378854c09b6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 01:16:42 -0300 Subject: [PATCH 214/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 2033d5b0a..82c84485a 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -22,8 +22,11 @@ #include // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) // use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) - // use the library patched with https://github.com/envy/esp-knx-ip/pull/48 - // and with https://github.com/envy/esp-knx-ip/pull/52 + // use the library patched with + // https://github.com/envy/esp-knx-ip/pull/48 + // https://github.com/envy/esp-knx-ip/pull/52 + // https://github.com/envy/esp-knx-ip/pull/54 + // https://github.com/envy/esp-knx-ip/pull/55 // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) // @@ -345,8 +348,8 @@ void KNX_DEL_CB( byte CBnum ) // Check if there is no other assigment to that callback. If there is not. delete that callback register if ( KNX_CB_Search( oldparam ) == KNX_Empty ) { - knx.callback_delete_register( device_param[oldparam].CB_id ); - device_param[oldparam].CB_id = KNX_Empty; + knx.callback_delete_register( device_param[oldparam-1].CB_id ); + device_param[oldparam-1].CB_id = KNX_Empty; } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_DELETE " CB #%d"), CBnum ); From 99a0b58189f82a2a1c6f60a298182efcc8a6f6e4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 01:19:05 -0300 Subject: [PATCH 215/435] Update esp-knx-ip.cpp --- lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 80 ++++++++++++------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp index 7fa575c57..8bdca1edb 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp @@ -207,46 +207,6 @@ callback_assignment_id_t ESPKNXIP::__callback_register_assignment(address_t addr return aid; } -void ESPKNXIP::callback_delete_register(callback_id_t id) -{ - /*if (id >= registered_callback_assignments) - return; - - uint32_t dest_offset = 0; - uint32_t src_offset = 0; - uint32_t len = 0; - if (id == 0) - { - // start of array, so delete first entry - src_offset = 1; - // registered_ga_callbacks will be 1 in case of only one entry - // registered_ga_callbacks will be 2 in case of two entries, etc.. - // so only copy anything, if there is it at least more then one element - len = (registered_callback_assignments - 1); - } - else if (id == registered_callback_assignments - 1) - { - // last element, don't do anything, simply decrement counter - } - else - { - // somewhere in the middle - // need to calc offsets - - // skip all prev elements - dest_offset = id; // id is equal to how many element are in front of it - src_offset = dest_offset + 1; // start after the current element - len = (registered_callback_assignments - 1 - id); - } - - if (len > 0) - { - memmove(callback_assignments + dest_offset, callback_assignments + src_offset, len * sizeof(callback_assignment_t)); - } - - registered_callback_assignments--;*/ -} - void ESPKNXIP::callback_delete_assignment(callback_assignment_id_t id) { __callback_delete_assignment(id); @@ -313,6 +273,46 @@ callback_id_t ESPKNXIP::callback_register(String name, callback_fptr_t cb, void return id; } +void ESPKNXIP::callback_delete_register(callback_id_t id) +{ + if (id >= registered_callbacks) + return; + + uint32_t dest_offset = 0; + uint32_t src_offset = 0; + uint32_t len = 0; + if (id == 0) + { + // start of array, so delete first entry + src_offset = 1; + // registered_ga_callbacks will be 1 in case of only one entry + // registered_ga_callbacks will be 2 in case of two entries, etc.. + // so only copy anything, if there is it at least more then one element + len = (registered_callbacks - 1); + } + else if (id == registered_callbacks - 1) + { + // last element, don't do anything, simply decrement counter + } + else + { + // somewhere in the middle + // need to calc offsets + + // skip all prev elements + dest_offset = id; // id is equal to how many element are in front of it + src_offset = dest_offset + 1; // start after the current element + len = (registered_callbacks - 1 - id); + } + + if (len > 0) + { + memmove(callbacks + dest_offset, callbacks + src_offset, len * sizeof(callback_t)); + } + + registered_callbacks--; +} + void ESPKNXIP::callback_assign(callback_id_t id, address_t val) { if (id >= registered_callbacks) From bfc6727c22d811720b97bf6ead89abd001411a45 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 01:20:48 -0300 Subject: [PATCH 216/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45c5a0d42..e85a8606b 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48), [PR#52](https://github.com/envy/esp-knx-ip/pull/52) +* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48), [PR#52](https://github.com/envy/esp-knx-ip/pull/52), [PR#54](https://github.com/envy/esp-knx-ip/pull/54) and [PR#55](https://github.com/envy/esp-knx-ip/pull/55) * [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library. From 05490cb35577eeb84ab96968ed0e33ff71487f39 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 01:21:29 -0300 Subject: [PATCH 217/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e85a8606b..5effc7d4f 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Several home automation systems have KNX support. For example, [Home Assistant]( ## Requirements ## -* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR#48](https://github.com/envy/esp-knx-ip/pull/48), [PR#52](https://github.com/envy/esp-knx-ip/pull/52), [PR#54](https://github.com/envy/esp-knx-ip/pull/54) and [PR#55](https://github.com/envy/esp-knx-ip/pull/55) +* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) with the modifications requested on [PR #48](https://github.com/envy/esp-knx-ip/pull/48), [PR #52](https://github.com/envy/esp-knx-ip/pull/52), [PR #54](https://github.com/envy/esp-knx-ip/pull/54) and [PR #55](https://github.com/envy/esp-knx-ip/pull/55) * [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP) with the modifications requested on [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21). This Library is used by ESP KNX IP Library. From 1a165a29cb841044e20e0e3e270230e913934b5b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 01:58:51 -0300 Subject: [PATCH 218/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5effc7d4f..e4f16c761 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository is kept updated with the Original Sonoff-Tasmota. [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentraliced system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. From 68924af19060cad2da59a0ef49c41dcbe3d38caf Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 02:07:42 -0300 Subject: [PATCH 219/435] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e4f16c761..cc5773969 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ This repository is kept updated with the Original Sonoff-Tasmota. [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buldings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buildings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_. -Each device has a physical address ( like a MAC ) as **1 . 1 . 0** and that address is used for configuration purposes. +Each device has a physical address (like a MAC) as **1 . 1 . 0** and that address is used for configuration purposes. Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. @@ -48,7 +48,7 @@ A copy of both libraries with the modifications needed is available at: - [x] Add Feature to read Temperature, Humidity from Tasmota - [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) - [x] Add Feature to receive command to read temperature, Humidity -- [x] Add Feature to recognize Tasmota config to show the same amount of relays, buttons, etc +- [x] Add Feature to recognize Tasmota config to show the same number of relays, buttons, etc. - [x] Add Feature to Save Config - [x] Add Feature to Load Config - [x] Add Log Info From e8e7948eb392807732021a0178108fb959eab168 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 02:50:58 -0300 Subject: [PATCH 220/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 82c84485a..a3cf0397a 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -26,7 +26,7 @@ // https://github.com/envy/esp-knx-ip/pull/48 // https://github.com/envy/esp-knx-ip/pull/52 // https://github.com/envy/esp-knx-ip/pull/54 - // https://github.com/envy/esp-knx-ip/pull/55 + // https://github.com/envy/esp-knx-ip/pull/55 // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) // @@ -401,15 +401,31 @@ void KNXStart() // Delete from KNX settings any configuration that is not anymore related to this device byte j; - for (int i = 0; i < Settings.knx_GA_registered; ++i) + for (int i = 0; i < KNX_MAX_device_param; ++i) { - j = Settings.knx_GA_param[i]; - if ( !device_param[j-1].show ) { Settings.knx_GA_param[i] = 0; } - } - for (int i = 0; i < Settings.knx_CB_registered; ++i) - { - j = Settings.knx_CB_param[i]; - if ( !device_param[j-1].show ) { Settings.knx_CB_param[i] = 0; } + if ( !device_param[i].show ) { // device has this parameter ? + j = KNX_GA_Search(i+1); // if not, search for all registered group address to this parameter and delete them + while ( j != KNX_Empty ) { + KNX_DEL_GA(j); + j = KNX_GA_Search(i+1, j + 1); + } + if ( (i < 8) || (i > 15) ) // check relays and sensors (i from 8 to 16 are toggle relays parameters) + { + j = KNX_CB_Search(i+1); // if not, search for all registered group address to this parameter and delete them + while ( j != KNX_Empty ) { + KNX_DEL_CB(j); + j = KNX_CB_Search(i+1, j + 1); + } + if (i < 8) // when checking if relays are available, also change for toggle relays parameters + { + j = KNX_CB_Search(i+8); // if not, search for all registered group address to this parameter and delete them + while ( j != KNX_Empty ) { + KNX_DEL_CB(j); + j = KNX_CB_Search(i+8, j + 1); + } + } + } + } } // Register Group Addresses to listen to @@ -511,17 +527,17 @@ void KNX_Send_Button_Power(byte key, byte device, byte state) // { // Search all the registered GA that has that output (variable: device) as parameter - byte i = KNX_GA_Search(device + 7); + byte i = KNX_GA_Search(device + 8); while ( i != KNX_Empty ) { KNX_addr.value = Settings.knx_GA_addr[i]; knx.write_1bit(KNX_addr, !(state == 0)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), - device_param_ga[device + 7], !(state == 0), + device_param_ga[device + 8], !(state == 0), KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); AddLog(LOG_LEVEL_INFO); - i = KNX_GA_Search(device + 7, i + 1); + i = KNX_GA_Search(device + 8, i + 1); } // } } From 37629b521b39d8b7202d492a392e7becb3e85438 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 03:09:54 -0300 Subject: [PATCH 221/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 50 +++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index a3cf0397a..a14d948fd 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -357,6 +357,24 @@ void KNX_DEL_CB( byte CBnum ) } +bool KNX_CONFIG_NOT_MATCH() +{ + for (int i = 0; i < KNX_MAX_device_param; ++i) + { + if ( !device_param[i].show ) { // device has this parameter ? + // if not, search for all registered group address to this parameter for deletion + if ( KNX_GA_Search(i+1) != KNX_Empty ) { return true; } + if ( (i < 8) || (i > 15) ) // check relays and sensors (i from 8 to 16 are toggle relays parameters) + { + if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; } + if ( KNX_CB_Search(i+8) != KNX_Empty ) { return true; } + + } + } + } +} + + void KNXStart() { @@ -399,38 +417,16 @@ void KNXStart() if (GetUsedInModule(GPIO_DHT22, my_module.gp.io)) { device_param[KNX_humidity-1].show = true; } if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_humidity-1].show = true; } - // Delete from KNX settings any configuration that is not anymore related to this device - byte j; - for (int i = 0; i < KNX_MAX_device_param; ++i) - { - if ( !device_param[i].show ) { // device has this parameter ? - j = KNX_GA_Search(i+1); // if not, search for all registered group address to this parameter and delete them - while ( j != KNX_Empty ) { - KNX_DEL_GA(j); - j = KNX_GA_Search(i+1, j + 1); - } - if ( (i < 8) || (i > 15) ) // check relays and sensors (i from 8 to 16 are toggle relays parameters) - { - j = KNX_CB_Search(i+1); // if not, search for all registered group address to this parameter and delete them - while ( j != KNX_Empty ) { - KNX_DEL_CB(j); - j = KNX_CB_Search(i+1, j + 1); - } - if (i < 8) // when checking if relays are available, also change for toggle relays parameters - { - j = KNX_CB_Search(i+8); // if not, search for all registered group address to this parameter and delete them - while ( j != KNX_Empty ) { - KNX_DEL_CB(j); - j = KNX_CB_Search(i+8, j + 1); - } - } - } - } + // Delete from KNX settings all configuration is not anymore related to this device + if (KNX_CONFIG_NOT_MATCH()) { + Settings.knx_GA_registered = 0; + Settings.knx_CB_registered = 0; } // Register Group Addresses to listen to // Search on the settings if there is a group address set for receive KNX messages for the type: device_param[j].type // If there is, register the group address on the KNX_IP Library to Receive data for Executing Callbacks + byte j; for (byte i = 0; i < Settings.knx_CB_registered; ++i) { j = Settings.knx_CB_param[i]; From 6af6291ac65759f9a42666ceac3f921d9b4f3d1c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 03:59:40 -0300 Subject: [PATCH 222/435] Update xdrv_10_KNX.ino --- sonoff/xdrv_10_KNX.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index a14d948fd..1f1002965 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -372,6 +372,7 @@ bool KNX_CONFIG_NOT_MATCH() } } } + return false; } @@ -421,6 +422,8 @@ void KNXStart() if (KNX_CONFIG_NOT_MATCH()) { Settings.knx_GA_registered = 0; Settings.knx_CB_registered = 0; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_DELETE " " D_KNX_PARAMETERS )); + AddLog(LOG_LEVEL_DEBUG); } // Register Group Addresses to listen to From 6bfc50a0af0fc67ca9fa961bc49906a0f2c9bede Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 04:30:09 -0300 Subject: [PATCH 223/435] Add files via upload --- .github/1.jpg | Bin 0 -> 68619 bytes .github/2.jpg | Bin 0 -> 78315 bytes .github/3.jpg | Bin 0 -> 85993 bytes .github/4.jpg | Bin 0 -> 80450 bytes .github/5.jpg | Bin 0 -> 73161 bytes .github/6.jpg | Bin 0 -> 68331 bytes .github/7.jpg | Bin 0 -> 93256 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/1.jpg create mode 100644 .github/2.jpg create mode 100644 .github/3.jpg create mode 100644 .github/4.jpg create mode 100644 .github/5.jpg create mode 100644 .github/6.jpg create mode 100644 .github/7.jpg diff --git a/.github/1.jpg b/.github/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..757a10a96e69f3636fffd4faca69ebac735aec6f GIT binary patch literal 68619 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 R0(u9e{viLWT&Uf_{|%m~h93X` literal 0 HcmV?d00001 diff --git a/.github/2.jpg b/.github/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ea4b4b47135953a2501d3b7b8c39ee526497608 GIT binary patch literal 78315 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 c6+M73KqVrn>g#<$!G8XSJM~3%ng4YMXqv%Tc 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 rCT{VCE#iK?GaI$ZSY;@vTdsQlowep#YtCmr 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 SYM@t(#rGYUkAnI&@;?ACOi3gF literal 0 HcmV?d00001 diff --git a/.github/4.jpg b/.github/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d81e3854c3d408c40fb000b8f4a2e3942e81ebb3 GIT binary patch literal 80450 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%0DLtB?ER!5`1lNl4>#-n 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 aByvN^vSRJaU*f6#RX*Fl_;>JcgZ~Tq04H_; literal 0 HcmV?d00001 diff --git a/.github/5.jpg b/.github/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..59526d46bd41483aa83ba328370f896e024c1f35 GIT binary patch literal 73161 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 d-Pti*SvCLw literal 0 HcmV?d00001 diff --git a/.github/6.jpg b/.github/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b52221b9e4cdfdd0d8d55a5e4ed1ceeca4551d78 GIT binary patch literal 68331 zcmeFYc~leI+b$SHMMOnFL_vtkCnZd{`AVg*n zLu8ChiOd2bGe{UhKtzT>!Vn5F&~@(pzT17yuUD_%{nonO{l~3juS#~+uJyiEyY_yb z=Y99~kL^jwK{I1hV+bD~ALJhRfozXLE<<+k@%{DvkBxs9|6kkgojdt=3G5aS_^a#@ z6cXICXYU>XfxY|p?iJbxZUTY_g!k_|@YnCZF7j9NzgmIceR~A<{B_3v+_wD%BC=

RR^XDZzN(B*y_NZLXw^y&2$O!XX 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�ht` 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 literal 0 HcmV?d00001 From ecca4b98f56932539c573fe886b898e00e2846e1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 04:37:07 -0300 Subject: [PATCH 224/435] Update README.md --- README.md | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cc5773969..b6c52a09f 100644 --- a/README.md +++ b/README.md @@ -29,12 +29,43 @@ A copy of both libraries with the modifications needed is available at: * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp * https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master -## Screenshots of the KNX Configuration Menu ## +## Usage Examples ## + +There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on _Configure Module Menu_. + +To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select Configure KNX. - +**1) Setting Several Sonoff to be controlled as one by a Home Automation System:** + +We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. +In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. + + + + +**2) Setting 2 Sonoff to be linked as stair lights:** + +We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. + + + + +**3) Setting a button as initiator of a scene:** + +Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. + + + + +**4) Setting a Temperature sensor:** + +We can configure to send the value of temperature or humidity every teleperiod. This teleperiod can be configured. See Sonoff Tasmota [wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Commands). It is recommended also to set the reply temperature address. + + + ## Development Road Map ## **For Sonoff-Tasmota_KNX:** From 5c3626fa3ea2d4659606c5e22286677cb67da64a Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 04:40:27 -0300 Subject: [PATCH 225/435] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index b6c52a09f..b3a638300 100644 --- a/README.md +++ b/README.md @@ -43,21 +43,30 @@ To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select C We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. +DEVICE 1 + +DEVICE 2 **2) Setting 2 Sonoff to be linked as stair lights:** We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. +DEVICE 1 + +DEVICE 2 **3) Setting a button as initiator of a scene:** Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. +DEVICE 1 + +DEVICE 2 **4) Setting a Temperature sensor:** From e0c1432c3e766a0faf3f53c7b7c2ab6a5dc99365 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 04:40:50 -0300 Subject: [PATCH 226/435] Add files via upload --- .github/3.jpg | Bin 85993 -> 82436 bytes .github/5.jpg | Bin 73161 -> 69690 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/3.jpg b/.github/3.jpg index b7496431e1f6be66af63db109525836709bebd66..396c0e0ad370995ec75560d4ce7426bfbfb0b58a 100644 GIT binary patch literal 82436 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 literal 85993 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 SYM@t(#rGYUkAnI&@;?ACOi3gF diff --git a/.github/5.jpg b/.github/5.jpg index 59526d46bd41483aa83ba328370f896e024c1f35..503e613e5dc8433a647e0e8f33011fccfbab9688 100644 GIT binary patch literal 69690 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⁡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 literal 73161 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 d-Pti*SvCLw From 46e2d4e0934174c320e3ce829fb8fe18a949c268 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 04:41:45 -0300 Subject: [PATCH 227/435] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index b3a638300..260cac98a 100644 --- a/README.md +++ b/README.md @@ -44,9 +44,11 @@ We can set one of the group address to be the same in all the devices so as to t In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. DEVICE 1 + DEVICE 2 + **2) Setting 2 Sonoff to be linked as stair lights:** @@ -54,9 +56,11 @@ DEVICE 2 We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. DEVICE 1 + DEVICE 2 + **3) Setting a button as initiator of a scene:** @@ -64,9 +68,11 @@ DEVICE 2 Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. DEVICE 1 + DEVICE 2 + **4) Setting a Temperature sensor:** From ea1f0d046e336d1ff331c05583fb9b8e5eab2ca4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 05:14:18 -0300 Subject: [PATCH 228/435] Selected MQTT_TASMOTAMQTT for better performance --- sonoff/user_config.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 65e60ae37..cc598fd8d 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -54,15 +54,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -183,9 +183,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -195,7 +195,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- From caa0c6618f8b3744747d1c551f31bdccac96ec62 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 06:02:34 -0300 Subject: [PATCH 229/435] . --- .github/donate.jpg | Bin 0 -> 19598 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/donate.jpg diff --git a/.github/donate.jpg b/.github/donate.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee9712c6a17fd3cff0f6939c14edd8315bcf0dc1 GIT binary patch literal 19598 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 literal 0 HcmV?d00001 From 76711b1edefb6fb4d902e9119ff83e8ae269cdfb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 06:03:21 -0300 Subject: [PATCH 230/435] Update README.md --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 260cac98a..69d41fa20 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,10 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re ----------------------------------------------------------------------------------------------------------------------------------- +[](paypal.me/ascillato) + +----------------------------------------------------------------------------------------------------------------------------------- + ## Sonoff-Tasmota Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_, with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **serial**, **HTTP**, **KNX** and **MQTT**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO. From 69a350c6d08ae057cc435658422d18c3c2079ca7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 06:04:27 -0300 Subject: [PATCH 231/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 69d41fa20..28fbd986f 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re ----------------------------------------------------------------------------------------------------------------------------------- -[](paypal.me/ascillato) +[](paypal.me/ascillato) ----------------------------------------------------------------------------------------------------------------------------------- From 059837eb13fbdb5cc87b488380995acb081f2475 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 06:05:21 -0300 Subject: [PATCH 232/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28fbd986f..ca86c8d87 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re ----------------------------------------------------------------------------------------------------------------------------------- -[](paypal.me/ascillato) +[](https://www.paypal.me/ascillato) ----------------------------------------------------------------------------------------------------------------------------------- From 7445b20a9597f7a4056927067b9352b69c425faf Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 22:38:49 -0300 Subject: [PATCH 233/435] Update to new API version of ESP-KNX-IP --- sonoff/webserver.ino | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 183decd71..99965c900 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -25,10 +25,6 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ -#ifdef USE_KNX -#include // Include KNX IP library -#endif // USE_KNX - #define STR_HELPER(x) #x #define STR(x) STR_HELPER(x) @@ -393,7 +389,7 @@ void StartWebserver(int type, IPAddress ipweb) #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); #ifdef USE_KNX - knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. + KNXStart(); #endif // USE_KNX } reset_web_log_flag = 0; From 2ce8faec6211d14c0a7a872a94a63f84d808561f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 22:40:18 -0300 Subject: [PATCH 234/435] Update to new API version of ESP-KNX-IP --- sonoff/xdrv_10_KNX.ino | 41 +++++++++++++++-------------------------- 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/sonoff/xdrv_10_KNX.ino b/sonoff/xdrv_10_KNX.ino index 1f1002965..cc0d1d22a 100644 --- a/sonoff/xdrv_10_KNX.ino +++ b/sonoff/xdrv_10_KNX.ino @@ -20,17 +20,10 @@ #ifdef USE_KNX -#include // Include ESP KNX IP library (https://github.com/envy/esp-knx-ip) - // use the async-udp branch (https://github.com/envy/esp-knx-ip/tree/async-udp) - // use the library patched with - // https://github.com/envy/esp-knx-ip/pull/48 - // https://github.com/envy/esp-knx-ip/pull/52 - // https://github.com/envy/esp-knx-ip/pull/54 - // https://github.com/envy/esp-knx-ip/pull/55 - // The ESP KNX IP library calls ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) - // use ESPAsyncUDP library patched with the PR #21 (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) +#include // Include ESP KNX IP library (async-udp branch) (https://github.com/envy/esp-knx-ip/tree/async-udp) + // The ESP KNX IP library requires also ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) // - // A copy of both libraries with the modifications needed is available at: + // A copy of both libraries is available also at: // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp // https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master @@ -160,10 +153,6 @@ const char *device_param_cb[] = { nullptr }; -#ifndef USE_WEBSERVER - ESP8266WebServer *WebServer; -#endif - byte KNX_GA_Search( byte param, byte start = 0 ) { @@ -311,7 +300,7 @@ void KNX_DEL_CB( byte CBnum ) byte len = 0; // Delete assigment - knx.callback_delete_assignment(CBnum-1); + knx.callback_unassign(CBnum-1); Settings.knx_CB_param[CBnum-1] = 0; if (CBnum == 1) @@ -348,7 +337,7 @@ void KNX_DEL_CB( byte CBnum ) // Check if there is no other assigment to that callback. If there is not. delete that callback register if ( KNX_CB_Search( oldparam ) == KNX_Empty ) { - knx.callback_delete_register( device_param[oldparam-1].CB_id ); + knx.callback_deregister( device_param[oldparam-1].CB_id ); device_param[oldparam-1].CB_id = KNX_Empty; } @@ -368,7 +357,6 @@ bool KNX_CONFIG_NOT_MATCH() { if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; } if ( KNX_CB_Search(i+8) != KNX_Empty ) { return true; } - } } } @@ -378,12 +366,14 @@ bool KNX_CONFIG_NOT_MATCH() void KNXStart() { + knx.start(nullptr); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_START)); + AddLog(LOG_LEVEL_DEBUG); +} -#ifndef USE_WEBSERVER - WebServer = new ESP8266WebServer(80); - knx.start(WebServer, false); // Start knx and pass the webserver object to be used by UDP. False is for not showing the library webpage. -#endif +void KNX_INIT() +{ // Check for incompatible config if (Settings.knx_GA_registered > MAX_KNX_GA) { Settings.knx_GA_registered = MAX_KNX_GA; } if (Settings.knx_CB_registered > MAX_KNX_CB) { Settings.knx_CB_registered = MAX_KNX_CB; } @@ -436,14 +426,13 @@ void KNXStart() if ( j > 0 ) { device_param[j-1].CB_id = knx.callback_register("", KNX_CB_Action, &device_param[j-1]); // KNX IP Library requires a parameter - // to identify which action was requested on the KNX network - // to be performed on this device (set relay, etc.) - // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) + // to identify which action was requested on the KNX network + // to be performed on this device (set relay, etc.) + // Is going to be used device_param[j].type that stores the type number (1: relay 1, etc) KNX_addr.value = Settings.knx_CB_addr[i]; knx.callback_assign( device_param[j-1].CB_id, KNX_addr ); } } - } @@ -877,7 +866,7 @@ boolean Xdrv10(byte function) boolean result = false; switch (function) { case FUNC_INIT: - KNXStart(); + KNX_INIT(); break; case FUNC_LOOP: knx.loop(); // Process knx events From 83d6049fe54dbe6603a150b17edae69fa2cd0e6b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 9 Apr 2018 22:42:51 -0300 Subject: [PATCH 235/435] Update to new API version of ESP-KNX-IP --- .../esp-knx-ip-webserver.cpp | 22 +- lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 413 +++++++++++------- lib/esp-knx-ip-async-udp/esp-knx-ip.h | 90 ++-- lib/esp-knx-ip-async-udp/keywords.txt | 16 +- 4 files changed, 356 insertions(+), 185 deletions(-) diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp index af981b78d..bdbc013fd 100644 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp +++ b/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp @@ -41,7 +41,9 @@ void ESPKNXIP::__handle_root() break; case FEEDBACK_TYPE_FLOAT: m += F(""); + m += feedbacks[i].options.float_options.prefix; m += String(*(float *)feedbacks[i].data, feedbacks[i].options.float_options.precision); + m += feedbacks[i].options.float_options.suffix; m += F(""); break; case FEEDBACK_TYPE_BOOL: @@ -52,7 +54,9 @@ void ESPKNXIP::__handle_root() case FEEDBACK_TYPE_ACTION: m += F("
"); + m += F("' />
"); break; } m += F(""); @@ -67,6 +71,12 @@ void ESPKNXIP::__handle_root() { for (uint8_t i = 0; i < registered_callback_assignments; ++i) { + // Skip empty slots + if ((callback_assignments[i].slot_flags & SLOT_FLAGS_USED) == 0) + { + continue; + } + // Skip disabled callbacks if (callbacks[callback_assignments[i].callback_id].cond && !callbacks[callback_assignments[i].callback_id].cond()) { continue; @@ -105,6 +115,12 @@ void ESPKNXIP::__handle_root() m += F(" . " - " . " - "" - "

" D_KNX_PHYSICAL_ADDRESS_NOTE "

" - "" D_KNX_ENABLE "

" - - "
" - "" D_KNX_GROUP_ADDRESS_TO_WRITE "
" - - " / " - " / " - " "; - -const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = - "

" - ""; - -const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = - "" - ""; - -const char HTTP_FORM_KNX3[] PROGMEM = - "
{optex} -> GAfnum / GAarea / GAfdef

" - "
" - "" D_KNX_GROUP_ADDRESS_TO_READ "
"; - -const char HTTP_FORM_KNX4[] PROGMEM = - "-> -> "); - page += FPSTR(HTTP_FORM_KNX_GA); - page.replace(F("GAfnum"), F("GA_FNUM")); - page.replace(F("GAarea"), F("GA_AREA")); - page.replace(F("GAfdef"), F("GA_FDEF")); - page.replace(F("GAfnum"), F("GA_FNUM")); - page.replace(F("GAarea"), F("GA_AREA")); - page.replace(F("GAfdef"), F("GA_FDEF")); - page += FPSTR(HTTP_FORM_KNX_ADD_BTN); - page.replace(F("{btnval}"), String(1)); - if (Settings.knx_GA_registered < MAX_KNX_GA) { - page.replace(F("btndis"), F(" ")); - } - else - { - page.replace(F("btndis"), F("disabled")); - } - page.replace(F("fncbtnadd"), F("GAwarning")); - for (byte i = 0; i < Settings.knx_GA_registered ; ++i) - { - if ( Settings.knx_GA_param[i] ) - { - page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW); - page.replace(F("{opval}"), String(i+1)); - page.replace(F("{optex}"), String(device_param_ga[Settings.knx_GA_param[i]-1])); - KNX_addr.value = Settings.knx_GA_addr[i]; - page.replace(F("GAfnum"), String(KNX_addr.ga.area)); - page.replace(F("GAarea"), String(KNX_addr.ga.line)); - page.replace(F("GAfdef"), String(KNX_addr.ga.member)); - } - } - page += FPSTR(HTTP_FORM_KNX3); - page += FPSTR(HTTP_FORM_KNX_GA); - page.replace(F("GAfnum"), F("CB_FNUM")); - page.replace(F("GAarea"), F("CB_AREA")); - page.replace(F("GAfdef"), F("CB_FDEF")); - page.replace(F("GAfnum"), F("CB_FNUM")); - page.replace(F("GAarea"), F("CB_AREA")); - page.replace(F("GAfdef"), F("CB_FDEF")); - page += FPSTR(HTTP_FORM_KNX4); - for (byte i = 0; i < KNX_MAX_device_param ; i++) - { - if ( device_param[i].show ) - { - page += FPSTR(HTTP_FORM_KNX_OPT); - page.replace(F("{vop}"), String(device_param[i].type)); - page.replace(F("{nop}"), String(device_param_cb[i])); - } - } - page += F(" "); - page += FPSTR(HTTP_FORM_KNX_ADD_BTN); - page.replace(F("{btnval}"), String(2)); - if (Settings.knx_CB_registered < MAX_KNX_CB) { - page.replace(F("btndis"), F(" ")); - } - else - { - page.replace(F("btndis"), F("disabled")); - } - page.replace(F("fncbtnadd"), F("CBwarning")); - for (byte i = 0; i < Settings.knx_CB_registered ; ++i) - { - if ( Settings.knx_CB_param[i] ) - { - page += FPSTR(HTTP_FORM_KNX_ADD_TABLE_ROW2); - page.replace(F("{opval}"), String(i+1)); - page.replace(F("{optex}"), String(device_param_cb[Settings.knx_CB_param[i]-1])); - KNX_addr.value = Settings.knx_CB_addr[i]; - page.replace(F("GAfnum"), String(KNX_addr.ga.area)); - page.replace(F("GAarea"), String(KNX_addr.ga.line)); - page.replace(F("GAfdef"), String(KNX_addr.ga.member)); - } - } - page += F("
"); - page += F("
"); - page += FPSTR(HTTP_BTN_CONF); - - page.replace( F(""), - F("function GAwarning()" - "{" - "var GA_FNUM = document.getElementById('GA_FNUM');" - "var GA_AREA = document.getElementById('GA_AREA');" - "var GA_FDEF = document.getElementById('GA_FDEF');" - "if ( GA_FNUM != null && GA_FNUM.value == '0' && GA_AREA.value == '0' && GA_FDEF.value == '0' ) {" - "alert('" D_KNX_WARNING "');" - "}" - "}" - "function CBwarning()" - "{" - "var CB_FNUM = document.getElementById('CB_FNUM');" - "var CB_AREA = document.getElementById('CB_AREA');" - "var CB_FDEF = document.getElementById('CB_FDEF');" - "if ( CB_FNUM != null && CB_FNUM.value == '0' && CB_AREA.value == '0' && CB_FDEF.value == '0' ) {" - "alert('" D_KNX_WARNING "');" - "}" - "}" - "") ); - ShowPage(page); - } - -} - - -void KNX_Save_Settings() -{ - String stmp; - address_t KNX_addr; - byte i; - - Settings.flag.knx_enabled = WebServer->hasArg("b1"); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ENABLED ": %d "), - Settings.flag.knx_enabled); - AddLog(LOG_LEVEL_DEBUG); - - stmp = WebServer->arg("area"); - KNX_addr.pa.area = stmp.toInt(); - stmp = WebServer->arg("line"); - KNX_addr.pa.line = stmp.toInt(); - stmp = WebServer->arg("member"); - KNX_addr.pa.member = stmp.toInt(); - Settings.knx_physsical_addr = KNX_addr.value; - knx.physical_address_set( KNX_addr ); // Set Physical KNX Address of the device - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_KNX_PHYSICAL_ADDRESS ": %d.%d.%d "), - KNX_addr.pa.area, KNX_addr.pa.line, KNX_addr.pa.member ); - AddLog(LOG_LEVEL_DEBUG); - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA: %d"), - Settings.knx_GA_registered ); - AddLog(LOG_LEVEL_DEBUG); - for (i = 0; i < Settings.knx_GA_registered ; ++i) - { - KNX_addr.value = Settings.knx_GA_addr[i]; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA #%d: %s " D_TO " %d/%d/%d"), - i+1, device_param_ga[Settings.knx_GA_param[i]-1], - KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member ); - AddLog(LOG_LEVEL_DEBUG); - } - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB: %d"), - Settings.knx_CB_registered ); - AddLog(LOG_LEVEL_DEBUG); - for (i = 0; i < Settings.knx_CB_registered ; ++i) - { - KNX_addr.value = Settings.knx_CB_addr[i]; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB #%d: %d/%d/%d " D_TO " %s"), - i+1, - KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member, - device_param_cb[Settings.knx_CB_param[i]-1] ); - AddLog(LOG_LEVEL_DEBUG); - } -} - -#endif // USE_WEBSERVER - - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_11 - -boolean Xdrv11(byte function) -{ - boolean result = false; - switch (function) { - case FUNC_INIT: - KNX_INIT(); - break; - case FUNC_LOOP: - knx.loop(); // Process knx events - // It is not used by the actual config of asyncUDP branch of ESP-KNX-IP Library, - // but is left here for compatibility with upcoming features of ESP-KNX-IP Library - break; -// case FUNC_COMMAND: -// result = KNXCommand(); -// break; -// case FUNC_SET_POWER: -// break; - } - return result; -} - -#endif // USE_KNX From 7e5d2f94156c3c06251edeb1afd1a831470c036c Mon Sep 17 00:00:00 2001 From: ascillato Date: Wed, 18 Apr 2018 22:46:41 -0300 Subject: [PATCH 290/435] Update Update --- lib/ESPAsyncUDP-master/README.md | 12 - .../AsyncUDPClient/AsyncUDPClient.ino | 51 -- .../AsyncUDPMulticastServer.ino | 52 -- .../AsyncUDPServer/AsyncUDPServer.ino | 50 -- lib/ESPAsyncUDP-master/keywords.txt | 33 - lib/ESPAsyncUDP-master/library.json | 17 - lib/ESPAsyncUDP-master/library.properties | 9 - lib/ESPAsyncUDP-master/src/AsyncUDP.cpp | 425 ----------- lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h | 130 ---- lib/ESPAsyncUDP-master/travis/common.sh | 23 - lib/esp-knx-ip-async-udp/DPT.h | 72 -- lib/esp-knx-ip-async-udp/LICENSE | 21 - lib/esp-knx-ip-async-udp/README.md | 107 --- .../esp-knx-ip-config.cpp | 358 ---------- .../esp-knx-ip-conversion.cpp | 87 --- lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp | 180 ----- .../esp-knx-ip-webserver.cpp | 540 -------------- lib/esp-knx-ip-async-udp/esp-knx-ip.cpp | 658 ------------------ lib/esp-knx-ip-async-udp/esp-knx-ip.h | 571 --------------- .../environment-sensor/environment-sensor.ino | 159 ----- .../examples/sonoff/sonoff.ino | 183 ----- .../examples/static-config/static-config.ino | 142 ---- lib/esp-knx-ip-async-udp/keywords.txt | 104 --- lib/esp-knx-ip-async-udp/library.properties | 10 - 24 files changed, 3994 deletions(-) delete mode 100644 lib/ESPAsyncUDP-master/README.md delete mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino delete mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino delete mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino delete mode 100644 lib/ESPAsyncUDP-master/keywords.txt delete mode 100644 lib/ESPAsyncUDP-master/library.json delete mode 100644 lib/ESPAsyncUDP-master/library.properties delete mode 100644 lib/ESPAsyncUDP-master/src/AsyncUDP.cpp delete mode 100644 lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h delete mode 100644 lib/ESPAsyncUDP-master/travis/common.sh delete mode 100644 lib/esp-knx-ip-async-udp/DPT.h delete mode 100644 lib/esp-knx-ip-async-udp/LICENSE delete mode 100644 lib/esp-knx-ip-async-udp/README.md delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip.cpp delete mode 100644 lib/esp-knx-ip-async-udp/esp-knx-ip.h delete mode 100644 lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino delete mode 100644 lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino delete mode 100644 lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino delete mode 100644 lib/esp-knx-ip-async-udp/keywords.txt delete mode 100644 lib/esp-knx-ip-async-udp/library.properties diff --git a/lib/ESPAsyncUDP-master/README.md b/lib/ESPAsyncUDP-master/README.md deleted file mode 100644 index 6568fa372..000000000 --- a/lib/ESPAsyncUDP-master/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# ESPAsyncUDP -_Library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21)_ - -Async UDP Library for ESP8266 Arduino [![Build Status](https://travis-ci.org/me-no-dev/ESPAsyncUDP.svg?branch=master)](https://travis-ci.org/me-no-dev/ESPAsyncUDP) - -[![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -This is a fully asynchronous UDP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP8266 MCUs. - -The library is easy to use and includes support for Unicast, Broadcast and Multicast environments - -Latest GIT version of ESP8266 Arduino might be required for this library to work diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino deleted file mode 100644 index cf528fe12..000000000 --- a/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.connect(IPAddress(192,168,1,100), 1234)) { - Serial.println("UDP connected"); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - //Send unicast - udp.print("Hello Server!"); - } -} - -void loop() -{ - delay(1000); - //Send broadcast on port 1234 - udp.broadcastTo("Anyone here?", 1234); -} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino deleted file mode 100644 index bb3e69c9b..000000000 --- a/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.listenMulticast(IPAddress(239,1,2,3), 1234)) { - Serial.print("UDP Listening on IP: "); - Serial.println(WiFi.localIP()); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - //Send multicast - udp.print("Hello!"); - } -} - -void loop() -{ - delay(1000); - //Send multicast - udp.print("Anyone here?"); -} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino deleted file mode 100644 index fc12a7fc3..000000000 --- a/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.listen(1234)) { - Serial.print("UDP Listening on IP: "); - Serial.println(WiFi.localIP()); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - } -} - -void loop() -{ - delay(1000); - //Send broadcast - udp.broadcast("Anyone here?"); -} diff --git a/lib/ESPAsyncUDP-master/keywords.txt b/lib/ESPAsyncUDP-master/keywords.txt deleted file mode 100644 index 67c0b97a7..000000000 --- a/lib/ESPAsyncUDP-master/keywords.txt +++ /dev/null @@ -1,33 +0,0 @@ -####################################### -# Syntax Coloring Map For Ultrasound -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -AsyncUDP KEYWORD1 -AsyncUDPPacket KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -connect KEYWORD2 -connected KEYWORD2 -listen KEYWORD2 -listenMulticast KEYWORD2 -close KEYWORD2 -write KEYWORD2 -broadcast KEYWORD2 -onPacket KEYWORD2 -data KEYWORD2 -length KEYWORD2 -localIP KEYWORD2 -localPort KEYWORD2 -remoteIP KEYWORD2 -remotePort KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/lib/ESPAsyncUDP-master/library.json b/lib/ESPAsyncUDP-master/library.json deleted file mode 100644 index fe300b6e6..000000000 --- a/lib/ESPAsyncUDP-master/library.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name":"ESPAsyncUDP", - "description":"Asynchronous UDP Library for ESP8266", - "keywords":"async,udp,server,client,multicast,broadcast", - "authors": - { - "name": "Hristo Gochkov", - "maintainer": true - }, - "repository": - { - "type": "git", - "url": "https://github.com/me-no-dev/ESPAsyncUDP.git" - }, - "frameworks": "arduino", - "platforms":"espressif" -} diff --git a/lib/ESPAsyncUDP-master/library.properties b/lib/ESPAsyncUDP-master/library.properties deleted file mode 100644 index 1aa6ef1ad..000000000 --- a/lib/ESPAsyncUDP-master/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=ESP Async UDP -version=1.0.0 -author=Me-No-Dev -maintainer=Me-No-Dev -sentence=Async UDP Library for ESP8266 -paragraph=Async UDP Library for ESP8266 -category=Other -url=https://github.com/me-no-dev/ESPAsyncUDP -architectures=* diff --git a/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp b/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp deleted file mode 100644 index 6d2423819..000000000 --- a/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp +++ /dev/null @@ -1,425 +0,0 @@ -#include "Arduino.h" -#include "ESPAsyncUDP.h" - -extern "C" { -#include "user_interface.h" -#include "lwip/opt.h" -#include "lwip/inet.h" -#include "lwip/udp.h" -#include "lwip/igmp.h" -} - -AsyncUDPMessage::AsyncUDPMessage(size_t size) -{ - _index = 0; - if(size > 1460) { - size = 1460; - } - _size = size; - _buffer = (uint8_t *)malloc(size); -} - -AsyncUDPMessage::~AsyncUDPMessage() -{ - if(_buffer) { - free(_buffer); - } -} - -size_t AsyncUDPMessage::write(const uint8_t *data, size_t len) -{ - if(_buffer == NULL) { - return 0; - } - size_t s = space(); - if(len > s) { - len = s; - } - memcpy(_buffer + _index, data, len); - _index += len; - return len; -} - -size_t AsyncUDPMessage::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDPMessage::space() -{ - if(_buffer == NULL) { - return 0; - } - return _size - _index; -} - -uint8_t * AsyncUDPMessage::data() -{ - return _buffer; -} - -size_t AsyncUDPMessage::length() -{ - return _index; -} - -void AsyncUDPMessage::flush() -{ - _index = 0; -} - - -AsyncUDPPacket::AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len) -{ - _udp = udp; - _localIp = localIp; - _localPort = localPort; - _remoteIp = remoteIp; - _remotePort = remotePort; - _data = data; - _len = len; -} - -AsyncUDPPacket::~AsyncUDPPacket() -{ - -} - -uint8_t * AsyncUDPPacket::data() -{ - return _data; -} - -size_t AsyncUDPPacket::length() -{ - return _len; -} - -IPAddress AsyncUDPPacket::localIP() -{ - return IPAddress(_localIp->addr); -} - -uint16_t AsyncUDPPacket::localPort() -{ - return _localPort; -} - -IPAddress AsyncUDPPacket::remoteIP() -{ - return IPAddress(_remoteIp->addr); -} - -uint16_t AsyncUDPPacket::remotePort() -{ - return _remotePort; -} - -bool AsyncUDPPacket::isBroadcast() -{ - return _localIp->addr == 0xFFFFFFFF || _localIp->addr == (uint32_t)(0); -} - -bool AsyncUDPPacket::isMulticast() -{ - return ip_addr_ismulticast(_localIp); -} - -size_t AsyncUDPPacket::write(const uint8_t *data, size_t len) -{ - return _udp->writeTo(data, len, _remoteIp, _remotePort); -} - -size_t AsyncUDPPacket::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDPPacket::send(AsyncUDPMessage &message) -{ - return write(message.data(), message.length()); -} - - - -AsyncUDP::AsyncUDP() -{ - _pcb = NULL; - _connected = false; - _handler = NULL; -} - -AsyncUDP::~AsyncUDP() -{ - close(); -} - -AsyncUDP::operator bool() -{ - return _connected; -} - -bool AsyncUDP::connected() -{ - return _connected; -} - -void AsyncUDP::onPacket(AuPacketHandlerFunctionWithArg cb, void * arg) -{ - onPacket(std::bind(cb, arg, std::placeholders::_1)); -} - -void AsyncUDP::onPacket(AuPacketHandlerFunction cb) -{ - _handler = cb; -} - -void AsyncUDP::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) -{ - (void)upcb; // its unused, avoid warning - while(pb != NULL) { - if(_handler) { - uint8_t * data = (uint8_t*)((pb)->payload); - size_t len = pb->len; - - ip_hdr* iphdr = reinterpret_cast(data - UDP_HLEN - IP_HLEN); - ip_addr_t daddr; - daddr.addr = iphdr->dest.addr; - - udp_hdr* udphdr = reinterpret_cast(((uint8_t*)((pb)->payload)) - UDP_HLEN); - uint16_t dport = ntohs(udphdr->dest); - - AsyncUDPPacket packet(this, &daddr, dport, addr, port, data, len); - _handler(packet); - } - - pbuf * this_pb = pb; - pb = pb->next; - this_pb->next = NULL; - pbuf_free(this_pb); - } -} - -#if LWIP_VERSION_MAJOR == 1 -void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port) -#else -void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) -#endif -{ - reinterpret_cast(arg)->_recv(upcb, p, (ip_addr_t *)addr, port); -} - -bool AsyncUDP::listen(ip_addr_t *addr, uint16_t port) -{ - close(); - _pcb = udp_new(); - if(_pcb == NULL) { - return false; - } - err_t err = udp_bind(_pcb, addr, port); - if(err != ERR_OK) { - close(); - return false; - } - udp_recv(_pcb, &_s_recv, (void *) this); - _connected = true; - return true; -} - -bool AsyncUDP::listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl) -{ - close(); - if(!ip_addr_ismulticast(addr)) { - return false; - } - ip_addr_t multicast_if_addr; - struct ip_info ifIpInfo; - int mode = wifi_get_opmode(); - if(mode & STATION_MODE) { - wifi_get_ip_info(STATION_IF, &ifIpInfo); - multicast_if_addr.addr = ifIpInfo.ip.addr; - } else if (mode & SOFTAP_MODE) { - wifi_get_ip_info(SOFTAP_IF, &ifIpInfo); - multicast_if_addr.addr = ifIpInfo.ip.addr; - } else { - return false; - } - if (igmp_joingroup(&multicast_if_addr, addr)!= ERR_OK) { - return false; - } - if(!listen(IPADDR_ANY, port)) { - return false; - } -#if LWIP_VERSION_MAJOR == 1 - udp_set_multicast_netif_addr(_pcb, multicast_if_addr); -#else - udp_set_multicast_netif_addr(_pcb, &multicast_if_addr); -#endif - udp_set_multicast_ttl(_pcb, ttl); - ip_addr_copy(_pcb->remote_ip, *addr); - _pcb->remote_port = port; - return true; -} - -bool AsyncUDP::connect(ip_addr_t *addr, uint16_t port) -{ - close(); - _pcb = udp_new(); - if(_pcb == NULL) { - return false; - } - err_t err = udp_connect(_pcb, addr, port); - if(err != ERR_OK) { - close(); - return false; - } - udp_recv(_pcb, &_s_recv, (void *) this); - _connected = true; - return true; -} - -void AsyncUDP::close() -{ - if(_pcb != NULL) { - if(_connected) { - udp_disconnect(_pcb); - } - udp_remove(_pcb); - _connected = false; - _pcb = NULL; - } -} - -size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port) -{ - if(!_pcb && !connect(addr, port)) { - return 0; - } - if(len > 1460) { - len = 1460; - } - pbuf* pbt = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); - if(pbt != NULL) { - uint8_t* dst = reinterpret_cast(pbt->payload); - memcpy(dst, data, len); - err_t err = udp_sendto(_pcb, pbt, addr, port); - pbuf_free(pbt); - if(err < ERR_OK) { - return 0; - } - return len; - } - return 0; -} - -bool AsyncUDP::listen(const IPAddress addr, uint16_t port) -{ - ip_addr_t laddr; - laddr.addr = addr; - return listen(&laddr, port); -} - -bool AsyncUDP::listen(uint16_t port) -{ - return listen(IPAddress((uint32_t)INADDR_ANY), port); -} - -bool AsyncUDP::listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl) -{ - ip_addr_t laddr; - laddr.addr = addr; - return listenMulticast(&laddr, port, ttl); -} - -bool AsyncUDP::connect(const IPAddress addr, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = addr; - return connect(&daddr, port); -} - -size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = addr; - return writeTo(data, len, &daddr, port); -} - -size_t AsyncUDP::write(const uint8_t *data, size_t len) -{ - if(_pcb) - { - return writeTo(data, len, &(_pcb->remote_ip), _pcb->remote_port); - } -} - -size_t AsyncUDP::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDP::broadcastTo(uint8_t *data, size_t len, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = 0xFFFFFFFF; - return writeTo(data, len, &daddr, port); -} - -size_t AsyncUDP::broadcastTo(const char * data, uint16_t port) -{ - return broadcastTo((uint8_t *)data, strlen(data), port); -} - -size_t AsyncUDP::broadcast(uint8_t *data, size_t len) -{ - if(_pcb->local_port != 0) { - return broadcastTo(data, len, _pcb->local_port); - } - return 0; -} - -size_t AsyncUDP::broadcast(const char * data) -{ - return broadcast((uint8_t *)data, strlen(data)); -} - - -size_t AsyncUDP::sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port) -{ - if(!message) { - return 0; - } - return writeTo(message.data(), message.length(), addr, port); -} - -size_t AsyncUDP::sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port) -{ - if(!message) { - return 0; - } - return writeTo(message.data(), message.length(), addr, port); -} - -size_t AsyncUDP::send(AsyncUDPMessage &message) -{ - if((!message) || (!_pcb)) { - return 0; - } - return writeTo(message.data(), message.length(), &(_pcb->remote_ip), _pcb->remote_port); -} - -size_t AsyncUDP::broadcastTo(AsyncUDPMessage &message, uint16_t port) -{ - if(!message) { - return 0; - } - return broadcastTo(message.data(), message.length(), port); -} - -size_t AsyncUDP::broadcast(AsyncUDPMessage &message) -{ - if(!message) { - return 0; - } - return broadcast(message.data(), message.length()); -} diff --git a/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h b/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h deleted file mode 100644 index 8e5a70b21..000000000 --- a/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef ESPASYNCUDP_H -#define ESPASYNCUDP_H - -#include "IPAddress.h" -#include "Print.h" -#include -#include "lwip/init.h" - -class AsyncUDP; -class AsyncUDPPacket; -class AsyncUDPMessage; -struct udp_pcb; -struct pbuf; -#if LWIP_VERSION_MAJOR == 1 -struct ip_addr; -typedef struct ip_addr ip_addr_t; -#else -struct ip4_addr; -typedef struct ip4_addr ip_addr_t; -#endif - -class AsyncUDPMessage : public Print -{ -protected: - uint8_t *_buffer; - size_t _index; - size_t _size; -public: - AsyncUDPMessage(size_t size=1460); - virtual ~AsyncUDPMessage(); - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); - size_t space(); - uint8_t * data(); - size_t length(); - void flush(); - operator bool() - { - return _buffer != NULL; - } -}; - -class AsyncUDPPacket : public Print -{ -protected: - AsyncUDP *_udp; - ip_addr_t *_localIp; - uint16_t _localPort; - ip_addr_t *_remoteIp; - uint16_t _remotePort; - uint8_t *_data; - size_t _len; -public: - AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len); - virtual ~AsyncUDPPacket(); - - uint8_t * data(); - size_t length(); - bool isBroadcast(); - bool isMulticast(); - - IPAddress localIP(); - uint16_t localPort(); - IPAddress remoteIP(); - uint16_t remotePort(); - - size_t send(AsyncUDPMessage &message); - - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); -}; - -typedef std::function AuPacketHandlerFunction; -typedef std::function AuPacketHandlerFunctionWithArg; - -class AsyncUDP : public Print -{ -protected: - udp_pcb *_pcb; - bool _connected; - AuPacketHandlerFunction _handler; - - void _recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port); -#if LWIP_VERSION_MAJOR == 1 - static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port); -#else - static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); -#endif - -public: - AsyncUDP(); - virtual ~AsyncUDP(); - - void onPacket(AuPacketHandlerFunctionWithArg cb, void * arg=NULL); - void onPacket(AuPacketHandlerFunction cb); - - bool listen(ip_addr_t *addr, uint16_t port); - bool listen(const IPAddress addr, uint16_t port); - bool listen(uint16_t port); - - bool listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl=1); - bool listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl=1); - - bool connect(ip_addr_t *addr, uint16_t port); - bool connect(const IPAddress addr, uint16_t port); - - void close(); - - size_t writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port); - size_t writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port); - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); - - size_t broadcastTo(uint8_t *data, size_t len, uint16_t port); - size_t broadcastTo(const char * data, uint16_t port); - size_t broadcast(uint8_t *data, size_t len); - size_t broadcast(const char * data); - - size_t sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port); - size_t sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port); - size_t send(AsyncUDPMessage &message); - - size_t broadcastTo(AsyncUDPMessage &message, uint16_t port); - size_t broadcast(AsyncUDPMessage &message); - - bool connected(); - operator bool(); -}; - -#endif diff --git a/lib/ESPAsyncUDP-master/travis/common.sh b/lib/ESPAsyncUDP-master/travis/common.sh deleted file mode 100644 index 57bede343..000000000 --- a/lib/ESPAsyncUDP-master/travis/common.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -function build_sketches() -{ - local arduino=$1 - local srcpath=$2 - local platform=$3 - local sketches=$(find $srcpath -name *.ino) - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - if [[ -f "$sketchdir/.$platform.skip" ]]; then - echo -e "\n\n ------------ Skipping $sketch ------------ \n\n"; - continue - fi - echo -e "\n\n ------------ Building $sketch ------------ \n\n"; - $arduino --verify $sketch; - local result=$? - if [ $result -ne 0 ]; then - echo "Build failed ($1)" - return $result - fi - done -} diff --git a/lib/esp-knx-ip-async-udp/DPT.h b/lib/esp-knx-ip-async-udp/DPT.h deleted file mode 100644 index 72e0c7f54..000000000 --- a/lib/esp-knx-ip-async-udp/DPT.h +++ /dev/null @@ -1,72 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -typedef enum __dpt_1_001 -{ - DPT_1_001_OFF = 0x00, - DPT_1_001_ON = 0x01, -} dpt_1_001_t; - -typedef enum __dpt_2_001 -{ - DPT_2_001_NO_OFF = 0b00, - DPT_2_001_NO_ON = 0b01, - DPT_2_001_YES_OFF = 0b10, - DPT_2_001_YES_ON = 0b11, -} dpt_2_001_t; - -typedef enum __dpt_3_007 -{ - DPT_3_007_DECREASE_STOP = 0x00, - DPT_3_007_DECREASE_100 = 0x01, - DPT_3_007_DECREASE_50 = 0x02, - DPT_3_007_DECREASE_25 = 0x03, - DPT_3_007_DECREASE_12 = 0x04, - DPT_3_007_DECREASE_6 = 0x05, - DPT_3_007_DECREASE_3 = 0x06, - DPT_3_007_DECREASE_1 = 0x07, - DPT_3_007_INCREASE_STOP = 0x08, - DPT_3_007_INCREASE_100 = 0x09, - DPT_3_007_INCREASE_50 = 0x0A, - DPT_3_007_INCREASE_25 = 0x0B, - DPT_3_007_INCREASE_12 = 0x0C, - DPT_3_007_INCREASE_6 = 0x0D, - DPT_3_007_INCREASE_3 = 0x0E, - DPT_3_007_INCREASE_1 = 0x0F, -} dpt_3_007_t; - -typedef enum __weekday -{ - DPT_10_001_WEEKDAY_MONDAY = 1, - DPT_10_001_WEEKDAY_TUESDAY = 2, - DPT_10_001_WEEKDAY_WEDNESDAY = 3, - DPT_10_001_WEEKDAY_THURSDAY = 4, - DPT_10_001_WEEKDAY_FRIDAY = 5, - DPT_10_001_WEEKDAY_SATURDAY = 6, - DPT_10_001_WEEKDAY_SUNDAY = 8, -} weekday_t; - -typedef struct __time_of_day -{ - weekday_t weekday; - uint8_t hours; - uint8_t minutes; - uint8_t seconds; -} time_of_day_t; - -typedef struct __date -{ - uint8_t day; - uint8_t month; - uint8_t year; -} date_t; - -typedef struct __color -{ - uint8_t red; - uint8_t green; - uint8_t blue; -} color_t; \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/LICENSE b/lib/esp-knx-ip-async-udp/LICENSE deleted file mode 100644 index 80f432a97..000000000 --- a/lib/esp-knx-ip-async-udp/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2018 Nico Weichbrodt - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/README.md b/lib/esp-knx-ip-async-udp/README.md deleted file mode 100644 index b18b50d6b..000000000 --- a/lib/esp-knx-ip-async-udp/README.md +++ /dev/null @@ -1,107 +0,0 @@ -# ESP-KNX-IP # - -This is a library for the ESP8266 to enable KNXnet/IP communication. It uses UDP multicast on 224.0.23.12:3671. -It is intended to be used with the Arduino platform for the ESP8266. - -## Prerequisities / Dependencies ## - -* You need version 2.4.0 of the esp8266 board libraries. - * I only tested with lwip v1.4. v2 might work, you need to test yourself. -* You need the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. -* You need a KNXnet/IP **router**. A gateway will **not** work. Alternatively use [knxd](https://github.com/knxd/knxd). - -## Caveats ## - -Receiving packets should work immediately. - -Sending sometimes only works after a substantial amount of time (max 5 minutes in my experiments). In my case, this was fixed by disabling IGMP snooping on the switch(es). - -## How to use ## - -The library is under development. API may change multiple times in the future. - -API documentation is available [here](https://github.com/envy/esp-knx-ip/wiki/API) - -A simple example: - -```c++ -#include - -const char* ssid = "my-ssid"; // your network SSID (name) -const char* pass = "my-pw"; // your network password - -config_id_t my_GA; -config_id_t param_id; - -int8_t some_var = 0; - -void setup() -{ - // Register a callback that is called when a configurable group address is receiving a telegram - knx.register_callback("Set/Get callback", my_callback); - knx.register_callback("Write callback", my_other_callback); - - int default_val = 21; - param_id = knx.config_register_int("My Parameter", default_val); - - // Register a configurable group address for sending out answers - my_GA = knx.config_register_ga("Answer GA"); - - knx.load(); // Try to load a config from EEPROM - - WiFi.begin(ssid, pass); - while (WiFi.status() != WL_CONNECTED) { - delay(500); - } - - knx.start(); // Start everything. Must be called after WiFi connection has been established -} - -void loop() -{ - knx.loop(); -} - - -void my_callback(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_WRITE: - // Save received data - some_var = knx.data_to_1byte_int(msg.data); - break; - case KNX_CT_READ: - // Answer with saved data - knx.answer1ByteInt(msg.received_on, some_var); - break; - } -} - -void my_other_callback(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_WRITE: - // Write an answer somewhere else - int value = knx.config_get_int(param_id); - address_t ga = knx.config_get_ga(my_GA); - knx.answer1ByteInt(ga, (int8_t)value); - break; - } -} - -``` - -## How to configure (buildtime) ## - -Open the `esp-knx-ip.h` and take a look at the config options at the top inside the block marked `CONFIG` - -## How to configure (runtime) ## - -Simply visit the IP of your ESP with a webbrowser. You can configure the following: -* KNX physical address -* Which group address should trigger which callback -* Which group address are to be used by the program (e.g. for status replies) - -The configuration is dynamically generated from the code. \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp deleted file mode 100644 index 8d2b7b39d..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip-config.cpp +++ /dev/null @@ -1,358 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#include "esp-knx-ip.h" - -/** - * Physical address functions - */ - -void ESPKNXIP::physical_address_set(address_t const &addr) -{ - physaddr = addr; -} - -address_t ESPKNXIP::physical_address_get() -{ - return physaddr; -} - -/** - * Configuration functions start here - */ -config_id_t ESPKNXIP::config_register_string(String name, uint8_t len, String _default, enable_condition_t cond) -{ - if (registered_configs >= MAX_CONFIGS) - return -1; - - if (_default.length() >= len) - return -1; - - config_id_t id = registered_configs; - - custom_configs[id].name = name; - custom_configs[id].type = CONFIG_TYPE_STRING; - custom_configs[id].len = sizeof(uint8_t) + len; - custom_configs[id].cond = cond; - if (id == 0) - custom_configs[id].offset = 0; - else - custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; - - __config_set_string(id, _default); - - registered_configs++; - - DEBUG_PRINT("Registered config >"); - DEBUG_PRINT(name); - DEBUG_PRINT("< @ "); - DEBUG_PRINT(id); - DEBUG_PRINT("/string["); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT("+"); - DEBUG_PRINT(custom_configs[id].len); - DEBUG_PRINTLN("]"); - - return id; -} - -config_id_t ESPKNXIP::config_register_int(String name, int32_t _default, enable_condition_t cond) -{ - if (registered_configs >= MAX_CONFIGS) - return -1; - - config_id_t id = registered_configs; - - custom_configs[id].name = name; - custom_configs[id].type = CONFIG_TYPE_INT; - custom_configs[id].len = sizeof(uint8_t) + sizeof(int32_t); - custom_configs[id].cond = cond; - if (id == 0) - custom_configs[id].offset = 0; - else - custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; - - __config_set_int(id, _default); - - registered_configs++; - - DEBUG_PRINT("Registered config >"); - DEBUG_PRINT(name); - DEBUG_PRINT("< @ "); - DEBUG_PRINT(id); - DEBUG_PRINT("/int["); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT("+"); - DEBUG_PRINT(custom_configs[id].len); - DEBUG_PRINTLN("]"); - - return id; -} - -config_id_t ESPKNXIP::config_register_bool(String name, bool _default, enable_condition_t cond) -{ - if (registered_configs >= MAX_CONFIGS) - return -1; - - config_id_t id = registered_configs; - - custom_configs[id].name = name; - custom_configs[id].type = CONFIG_TYPE_BOOL; - custom_configs[id].len = sizeof(uint8_t) + sizeof(uint8_t); - custom_configs[id].cond = cond; - if (id == 0) - custom_configs[id].offset = 0; - else - custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; - - __config_set_bool(id, _default); - - registered_configs++; - - DEBUG_PRINT("Registered config >"); - DEBUG_PRINT(name); - DEBUG_PRINT("< @ "); - DEBUG_PRINT(id); - DEBUG_PRINT("/bool["); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT("+"); - DEBUG_PRINT(custom_configs[id].len); - DEBUG_PRINTLN("]"); - - return id; -} - -config_id_t ESPKNXIP::config_register_options(String name, option_entry_t *options, uint8_t _default, enable_condition_t cond) -{ - if (registered_configs >= MAX_CONFIGS) - return -1; - - if (options == nullptr || options->name == nullptr) - return -1; - - config_id_t id = registered_configs; - - custom_configs[id].name = name; - custom_configs[id].type = CONFIG_TYPE_OPTIONS; - custom_configs[id].len = sizeof(uint8_t) + sizeof(uint8_t); - custom_configs[id].cond = cond; - if (id == 0) - custom_configs[id].offset = 0; - else - custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; - - custom_configs[id].data.options = options; - - __config_set_options(id, _default); - - registered_configs++; - - DEBUG_PRINT("Registered config >"); - DEBUG_PRINT(name); - DEBUG_PRINT("< @ "); - DEBUG_PRINT(id); - DEBUG_PRINT("/opt["); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT("+"); - DEBUG_PRINT(custom_configs[id].len); - DEBUG_PRINTLN("]"); - - return id; -} - -config_id_t ESPKNXIP::config_register_ga(String name, enable_condition_t cond) -{ - if (registered_configs >= MAX_CONFIGS) - return -1; - - config_id_t id = registered_configs; - - custom_configs[id].name = name; - custom_configs[id].type = CONFIG_TYPE_GA; - custom_configs[id].len = sizeof(uint8_t) + sizeof(address_t); - custom_configs[id].cond = cond; - if (id == 0) - custom_configs[id].offset = 0; - else - custom_configs[id].offset = custom_configs[id - 1].offset + custom_configs[id - 1].len; - - address_t t; - t.value = 0; - __config_set_ga(id, t); - - registered_configs++; - - DEBUG_PRINT("Registered config >"); - DEBUG_PRINT(name); - DEBUG_PRINT("< @ "); - DEBUG_PRINT(id); - DEBUG_PRINT("/ga["); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT("+"); - DEBUG_PRINT(custom_configs[id].len); - DEBUG_PRINTLN("]"); - - return id; -} - -void ESPKNXIP::__config_set_flags(config_id_t id, config_flags_t flags) -{ - DEBUG_PRINT("Setting flag @ "); - DEBUG_PRINT(custom_configs[id].offset); - DEBUG_PRINT(" to "); - DEBUG_PRINT(custom_config_data[custom_configs[id].offset], BIN); - DEBUG_PRINT(" | "); - DEBUG_PRINT(flags, BIN); - custom_config_data[custom_configs[id].offset] |= (uint8_t)flags; - DEBUG_PRINT(" = "); - DEBUG_PRINTLN(custom_config_data[custom_configs[id].offset], BIN); -} - -void ESPKNXIP::config_set_string(config_id_t id, String val) -{ - if (id >= registered_configs) - return; - if (custom_configs[id].type != CONFIG_TYPE_STRING) - return; - if (val.length() >= custom_configs[id].len) - return; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_string(id, val); -} - -void ESPKNXIP::__config_set_string(config_id_t id, String &val) -{ - memcpy(&custom_config_data[custom_configs[id].offset + sizeof(uint8_t)], val.c_str(), val.length()+1); -} - -void ESPKNXIP::config_set_int(config_id_t id, int32_t val) -{ - if (id >= registered_configs) - return; - if (custom_configs[id].type != CONFIG_TYPE_INT) - return; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_int(id, val); -} - -void ESPKNXIP::__config_set_int(config_id_t id, int32_t val) -{ - // This does not work for some reason: - // Could be due to pointer alignment - //int32_t *v = (int32_t *)(custom_config_data + custom_configs[id].offset); - //*v = val; - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] = (uint8_t)((val & 0xFF000000) >> 24); - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] = (uint8_t)((val & 0x00FF0000) >> 16); - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 2] = (uint8_t)((val & 0x0000FF00) >> 8); - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 3] = (uint8_t)((val & 0x000000FF) >> 0); -} - -void ESPKNXIP::config_set_bool(config_id_t id, bool val) -{ - if (id >= registered_configs) - return; - if (custom_configs[id].type != CONFIG_TYPE_BOOL) - return; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_bool(id, val); -} - -void ESPKNXIP::__config_set_bool(config_id_t id, bool val) -{ - custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] = val ? 1 : 0; -} - -void ESPKNXIP::config_set_options(config_id_t id, uint8_t val) -{ - if (id >= registered_configs) - return; - if (custom_configs[id].type != CONFIG_TYPE_OPTIONS) - return; - - option_entry_t *cur = custom_configs[id].data.options; - while (cur->name != nullptr) - { - if (cur->value == val) - { - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_options(id, val); - break; - } - cur++; - } -} - -void ESPKNXIP::__config_set_options(config_id_t id, uint8_t val) -{ - custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] = val; -} - -void ESPKNXIP::config_set_ga(config_id_t id, address_t const &val) -{ - if (id >= registered_configs) - return; - if (custom_configs[id].type != CONFIG_TYPE_GA) - return; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_ga(id, val); -} - -void ESPKNXIP::__config_set_ga(config_id_t id, address_t const &val) -{ - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] = val.bytes.high; - custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] = val.bytes.low; -} - -String ESPKNXIP::config_get_string(config_id_t id) -{ - if (id >= registered_configs) - return String(""); - - return String((char *)&custom_config_data[custom_configs[id].offset + sizeof(uint8_t)]); -} - -int32_t ESPKNXIP::config_get_int(config_id_t id) -{ - if (id >= registered_configs) - return 0; - - int32_t v = (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0] << 24) + - (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1] << 16) + - (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 2] << 8) + - (custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 3] << 0); - return v; -} - -bool ESPKNXIP::config_get_bool(config_id_t id) -{ - if (id >= registered_configs) - return false; - - return custom_config_data[custom_configs[id].offset + sizeof(uint8_t)] != 0; -} - -uint8_t ESPKNXIP::config_get_options(config_id_t id) -{ - if (id >= registered_configs) - return false; - - return custom_config_data[custom_configs[id].offset + sizeof(uint8_t)]; -} - -address_t ESPKNXIP::config_get_ga(config_id_t id) -{ - address_t t; - if (id >= registered_configs) - { - t.value = 0; - return t; - } - - t.bytes.high = custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 0]; - t.bytes.low = custom_config_data[custom_configs[id].offset + sizeof(uint8_t) + 1]; - - return t; -} diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp deleted file mode 100644 index 9dc2fd563..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip-conversion.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#include "esp-knx-ip.h" - -/** - * Conversion functions - */ - -bool ESPKNXIP::data_to_bool(uint8_t *data) -{ - return (data[0] & 0x01) == 1 ? true : false; -} - -int8_t ESPKNXIP::data_to_1byte_int(uint8_t *data) -{ - return (int8_t)data[1]; -} - -uint8_t ESPKNXIP::data_to_1byte_uint(uint8_t *data) -{ - return data[1]; -} - -int16_t ESPKNXIP::data_to_2byte_int(uint8_t *data) -{ - return (int16_t)((data[1] << 8) | data[2]); -} - -uint16_t ESPKNXIP::data_to_2byte_uint(uint8_t *data) -{ - return (uint16_t)((data[1] << 8) | data[2]); -} - -float ESPKNXIP::data_to_2byte_float(uint8_t *data) -{ - //uint8_t sign = (data[1] & 0b10000000) >> 7; - uint8_t expo = (data[1] & 0b01111000) >> 3; - int16_t mant = ((data[1] & 0b10000111) << 8) | data[2]; - return 0.01f * mant * pow(2, expo); -} - -time_of_day_t ESPKNXIP::data_to_3byte_time(uint8_t *data) -{ - time_of_day_t time; - time.weekday = (weekday_t)((data[1] & 0b11100000) >> 5); - time.hours = (data[1] & 0b00011111); - time.minutes = (data[2] & 0b00111111); - time.seconds = (data[3] & 0b00111111); - return time; -} - -date_t ESPKNXIP::data_to_3byte_data(uint8_t *data) -{ - date_t date; - date.day = (data[1] & 0b00011111); - date.month = (data[2] & 0b00001111); - date.year = (data[3] & 0b01111111); - return date; -} - -color_t ESPKNXIP::data_to_3byte_color(uint8_t *data) -{ - color_t color; - color.red = data[1]; - color.green = data[2]; - color.blue = data[3]; - return color; -} - -int32_t ESPKNXIP::data_to_4byte_int(uint8_t *data) -{ - return (int32_t)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) | (data[4] << 0)); -} - -uint32_t ESPKNXIP::data_to_4byte_uint(uint8_t *data) -{ - return (uint32_t)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) | (data[4] << 0)); -} - -float ESPKNXIP::data_to_4byte_float(uint8_t *data) -{ - return (float)((data[1] << 24) | (data[2] << 16) | (data[3] << 8) |data[4]); -} \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp deleted file mode 100644 index 1244fc50a..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip-send.cpp +++ /dev/null @@ -1,180 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#include "esp-knx-ip.h" - -/** - * Send functions - */ - -void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t data_len, uint8_t *data) -{ - if (receiver.value == 0) - return; - -#if SEND_CHECKSUM - uint32_t len = 6 + 2 + 8 + data_len + 1; // knx_pkt + cemi_msg + cemi_service + data + checksum -#else - uint32_t len = 6 + 2 + 8 + data_len; // knx_pkt + cemi_msg + cemi_service + data -#endif - DEBUG_PRINT(F("Creating packet with len ")); - DEBUG_PRINTLN(len) - uint8_t buf[len]; - knx_ip_pkt_t *knx_pkt = (knx_ip_pkt_t *)buf; - knx_pkt->header_len = 0x06; - knx_pkt->protocol_version = 0x10; - knx_pkt->service_type = __ntohs(KNX_ST_ROUTING_INDICATION); - knx_pkt->total_len.len = __ntohs(len); - cemi_msg_t *cemi_msg = (cemi_msg_t *)knx_pkt->pkt_data; - cemi_msg->message_code = KNX_MT_L_DATA_IND; - cemi_msg->additional_info_len = 0; - cemi_service_t *cemi_data = &cemi_msg->data.service_information; - cemi_data->control_1.bits.confirm = 0; - cemi_data->control_1.bits.ack = 0; - cemi_data->control_1.bits.priority = B11; - cemi_data->control_1.bits.system_broadcast = 0x01; - cemi_data->control_1.bits.repeat = 0x01; - cemi_data->control_1.bits.reserved = 0; - cemi_data->control_1.bits.frame_type = 0x01; - cemi_data->control_2.bits.extended_frame_format = 0x00; - cemi_data->control_2.bits.hop_count = 0x06; - cemi_data->control_2.bits.dest_addr_type = 0x01; - cemi_data->source = physaddr; - cemi_data->destination = receiver; - //cemi_data->destination.bytes.high = (area << 3) | line; - //cemi_data->destination.bytes.low = member; - cemi_data->data_len = data_len; - cemi_data->pci.apci = (ct & 0x0C) >> 2; - cemi_data->pci.tpci_seq_number = 0x00; // ??? - cemi_data->pci.tpci_comm_type = KNX_COT_UDP; // ??? - memcpy(cemi_data->data, data, data_len); - cemi_data->data[0] = (cemi_data->data[0] & 0x3F) | ((ct & 0x03) << 6); - -#if SEND_CHECKSUM - // Calculate checksum, which is just XOR of all bytes - uint8_t cs = buf[0] ^ buf[1]; - for (uint32_t i = 2; i < len - 1; ++i) - { - cs ^= buf[i]; - } - buf[len - 1] = cs; -#endif - -#ifdef ESP_KNX_DEBUG - DEBUG_PRINT(F("Sending packet:")); - for (int i = 0; i < len; ++i) - { - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINT(buf[i], 16); - } - DEBUG_PRINTLN(F("")); -#endif - - udp.writeTo(buf, len, MULTICAST_IP, MULTICAST_PORT); -} - -void ESPKNXIP::send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit) -{ - uint8_t buf[] = {(uint8_t)(bit & 0b00000001)}; - send(receiver, ct, 1, buf); -} - -void ESPKNXIP::send_2bit(address_t const &receiver, knx_command_type_t ct, uint8_t twobit) -{ - uint8_t buf[] = {(uint8_t)(twobit & 0b00000011)}; - send(receiver, ct, 1, buf); -} - -void ESPKNXIP::send_4bit(address_t const &receiver, knx_command_type_t ct, uint8_t fourbit) -{ - uint8_t buf[] = {(uint8_t)(fourbit & 0b00001111)}; - send(receiver, ct, 1, buf); -} - -void ESPKNXIP::send_1byte_int(address_t const &receiver, knx_command_type_t ct, int8_t val) -{ - uint8_t buf[] = {0x00, (uint8_t)val}; - send(receiver, ct, 2, buf); -} - -void ESPKNXIP::send_1byte_uint(address_t const &receiver, knx_command_type_t ct, uint8_t val) -{ - uint8_t buf[] = {0x00, val}; - send(receiver, ct, 2, buf); -} - -void ESPKNXIP::send_2byte_int(address_t const &receiver, knx_command_type_t ct, int16_t val) -{ - uint8_t buf[] = {0x00, (uint8_t)(val >> 8), (uint8_t)(val & 0x00FF)}; - send(receiver, ct, 3, buf); -} - -void ESPKNXIP::send_2byte_uint(address_t const &receiver, knx_command_type_t ct, uint16_t val) -{ - uint8_t buf[] = {0x00, (uint8_t)(val >> 8), (uint8_t)(val & 0x00FF)}; - send(receiver, ct, 3, buf); -} - -void ESPKNXIP::send_2byte_float(address_t const &receiver, knx_command_type_t ct, float val) -{ - float v = val * 100.0f; - int e = 0; - for (; v < -2048.0f; v /= 2) - ++e; - for (; v > 2047.0f; v /= 2) - ++e; - long m = round(v) & 0x7FF; - short msb = (short) (e << 3 | m >> 8); - if (val < 0.0f) - msb |= 0x80; - uint8_t buf[] = {0x00, (uint8_t)msb, (uint8_t)m}; - send(receiver, ct, 3, buf); -} - -void ESPKNXIP::send_3byte_time(address_t const &receiver, knx_command_type_t ct, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) -{ - weekday <<= 5; - uint8_t buf[] = {0x00, (uint8_t)(((weekday << 5) & 0xE0) | (hours & 0x1F)), (uint8_t)(minutes & 0x3F), (uint8_t)(seconds & 0x3F)}; - send(receiver, ct, 4, buf); -} - -void ESPKNXIP::send_3byte_date(address_t const &receiver, knx_command_type_t ct, uint8_t day, uint8_t month, uint8_t year) -{ - uint8_t buf[] = {0x00, (uint8_t)(day & 0x1F), (uint8_t)(month & 0x0F), year}; - send(receiver, ct, 4, buf); -} - -void ESPKNXIP::send_3byte_color(address_t const &receiver, knx_command_type_t ct, uint8_t red, uint8_t green, uint8_t blue) -{ - uint8_t buf[] = {0x00, red, green, blue}; - send(receiver, ct, 4, buf); -} - -void ESPKNXIP::send_4byte_int(address_t const &receiver, knx_command_type_t ct, int32_t val) -{ - uint8_t buf[] = {0x00, - (uint8_t)((val & 0xFF000000) >> 24), - (uint8_t)((val & 0x00FF0000) >> 16), - (uint8_t)((val & 0x0000FF00) >> 8), - (uint8_t)((val & 0x000000FF) >> 0)}; - send(receiver, ct, 5, buf); -} - -void ESPKNXIP::send_4byte_uint(address_t const &receiver, knx_command_type_t ct, uint32_t val) -{ - uint8_t buf[] = {0x00, - (uint8_t)((val & 0xFF000000) >> 24), - (uint8_t)((val & 0x00FF0000) >> 16), - (uint8_t)((val & 0x0000FF00) >> 8), - (uint8_t)((val & 0x000000FF) >> 0)}; - send(receiver, ct, 5, buf); -} - -void ESPKNXIP::send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val) -{ - uint8_t buf[] = {0x00, ((uint8_t *)&val)[3], ((uint8_t *)&val)[2], ((uint8_t *)&val)[1], ((uint8_t *)&val)[0]}; - send(receiver, ct, 5, buf); -} diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp deleted file mode 100644 index bdbc013fd..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip-webserver.cpp +++ /dev/null @@ -1,540 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#include "esp-knx-ip.h" - -void ESPKNXIP::__handle_root() -{ - String m = F(""); -#if USE_BOOTSTRAP - m += F(""); - m += F(""); -#endif - m += F("
"); - m += F("

ESP KNX

"); - - // Feedback - - if (registered_feedbacks > 0) - { - m += F("

Feedback

"); - for (feedback_id_t i = 0; i < registered_feedbacks; ++i) - { - if (feedbacks[i].cond && !feedbacks[i].cond()) - { - continue; - } - m += F("
"); - m += F("
"); - m += F("
"); - m += feedbacks[i].name; - m += F("
"); - switch (feedbacks[i].type) - { - case FEEDBACK_TYPE_INT: - m += F(""); - m += String(*(int32_t *)feedbacks[i].data); - m += F(""); - break; - case FEEDBACK_TYPE_FLOAT: - m += F(""); - m += feedbacks[i].options.float_options.prefix; - m += String(*(float *)feedbacks[i].data, feedbacks[i].options.float_options.precision); - m += feedbacks[i].options.float_options.suffix; - m += F(""); - break; - case FEEDBACK_TYPE_BOOL: - m += F(""); - m += (*(bool *)feedbacks[i].data) ? F("True") : F("False"); - m += F(""); - break; - case FEEDBACK_TYPE_ACTION: - m += F("
"); - break; - } - m += F("
"); - m += F("
"); - } - } - - if (registered_callbacks > 0) - m += F("

Callbacks

"); - - if (registered_callback_assignments > 0) - { - for (uint8_t i = 0; i < registered_callback_assignments; ++i) - { - // Skip empty slots - if ((callback_assignments[i].slot_flags & SLOT_FLAGS_USED) == 0) - { - continue; - } - // Skip disabled callbacks - if (callbacks[callback_assignments[i].callback_id].cond && !callbacks[callback_assignments[i].callback_id].cond()) - { - continue; - } - address_t &addr = callback_assignments[i].address; - m += F("
"); - m += F("
"); - m += F("
"); - m += addr.ga.area; - m += F("/"); - m += addr.ga.line; - m += F("/"); - m += addr.ga.member; - m += F(""); - m += F(""); - m += callbacks[callback_assignments[i].callback_id].name; - m += F("
"); - m += F("
"); - m += F("
"); - m += F("
"); - } - } - - if (registered_callbacks > 0) - { - m += F("
"); - m += F("
"); - m += F(""); - m += F("
/
"); - m += F(""); - m += F("
/
"); - m += F(""); - m += F("
->
"); - m += F(""); - m += F("
"); - m += F("
"); - m += F("
"); - } - - m += F("

Configuration

"); - - // Physical address - m += F("
"); - m += F("
"); - m += F("
Physical address
"); - m += F(""); - m += F("
.
"); - m += F(""); - m += F("
.
"); - m += F(""); - m += F("
"); - m += F("
"); - m += F("
"); - - if (registered_configs > 0) - { - for (config_id_t i = 0; i < registered_configs; ++i) - { - // Check if this config option has a enable condition and if so check that condition - if (custom_configs[i].cond && !custom_configs[i].cond()) - continue; - - m += F("
"); - m += F("
"); - m += F("
"); - m += custom_configs[i].name; - m += F("
"); - - switch (custom_configs[i].type) - { - case CONFIG_TYPE_STRING: - m += F(""); - break; - case CONFIG_TYPE_INT: - m += F(""); - break; - case CONFIG_TYPE_BOOL: - m += F("
"); - m += F(""); - m += F("
"); - break; - case CONFIG_TYPE_OPTIONS: - { - m += F(""); - break; - } - case CONFIG_TYPE_GA: - address_t a = config_get_ga(i); - m += F(""); - m += F("
/
"); - m += F(""); - m += F("
/
"); - m += F(""); - break; - } - m += F(""); - m += F("
"); - m += F("
"); - m += F("
"); - } - } - -#if !(DISABLE_EEPROM_BUTTONS && DISABLE_RESTORE_BUTTON && DISABLE_REBOOT_BUTTON) - // EEPROM save and restore - m += F("
"); - // Save to EEPROM -#if !DISABLE_EEPROM_BUTTONS - m += F("
"); - m += F("
"); - m += F(""); - m += F(""); - m += F("
"); - m += F("
"); - // Restore from EEPROM - m += F("
"); - m += F("
"); - m += F(""); - m += F(""); - m += F("
"); - m += F("
"); -#endif -#if !DISABLE_RESTORE_BUTTON - // Load Defaults - m += F("
"); - m += F("
"); - m += F(""); - m += F("
"); - m += F("
"); -#endif -#if !DISABLE_REBOOT_BUTTON - // Reboot - m += F("
"); - m += F("
"); - m += F(""); - m += F("
"); - m += F("
"); -#endif - m += F("
"); // row -#endif - - // End of page - m += F("
"); - server->send(200, F("text/html"), m); -} - -void ESPKNXIP::__handle_register() -{ - DEBUG_PRINTLN(F("Register called")); - if (server->hasArg(F("area")) && server->hasArg(F("line")) && server->hasArg(F("member")) && server->hasArg(F("cb"))) - { - uint8_t area = server->arg(F("area")).toInt(); - uint8_t line = server->arg(F("line")).toInt(); - uint8_t member = server->arg(F("member")).toInt(); - callback_id_t cb = (callback_id_t)server->arg(F("cb")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(area); - DEBUG_PRINT(F("/")); - DEBUG_PRINT(line); - DEBUG_PRINT(F("/")); - DEBUG_PRINT(member); - DEBUG_PRINT(F("/")); - DEBUG_PRINT(cb); - DEBUG_PRINTLN(F("")); - - if (area > 31 || line > 7) - { - DEBUG_PRINTLN(F("Area or Line wrong")); - goto end; - } - - if (!__callback_is_id_valid(cb)) - { - DEBUG_PRINTLN(F("Invalid callback id")); - goto end; - } - address_t ga = {.ga={line, area, member}}; - __callback_register_assignment(ga, cb); - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} - -void ESPKNXIP::__handle_delete() -{ - DEBUG_PRINTLN(F("Delete called")); - if (server->hasArg(F("id"))) - { - callback_assignment_id_t id = (callback_assignment_id_t)server->arg(F("id")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(id); - DEBUG_PRINTLN(F("")); - - if (id >= registered_callback_assignments || (callback_assignments[id].slot_flags & SLOT_FLAGS_USED) == 0) - { - DEBUG_PRINTLN(F("ID wrong")); - goto end; - } - - __callback_delete_assignment(id); - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} - -void ESPKNXIP::__handle_set() -{ - DEBUG_PRINTLN(F("Set called")); - if (server->hasArg(F("area")) && server->hasArg(F("line")) && server->hasArg(F("member"))) - { - uint8_t area = server->arg(F("area")).toInt(); - uint8_t line = server->arg(F("line")).toInt(); - uint8_t member = server->arg(F("member")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(area); - DEBUG_PRINT(F(".")); - DEBUG_PRINT(line); - DEBUG_PRINT(F(".")); - DEBUG_PRINT(member); - DEBUG_PRINTLN(F("")); - - if (area > 31 || line > 7) - { - DEBUG_PRINTLN(F("Area or Line wrong")); - goto end; - } - - physaddr.bytes.high = (area << 4) | line; - physaddr.bytes.low = member; - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} - -void ESPKNXIP::__handle_config() -{ - DEBUG_PRINTLN(F("Config called")); - if (server->hasArg(F("id"))) - { - config_id_t id = server->arg(F("id")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(id); - DEBUG_PRINTLN(F("")); - - if (id < 0 || id >= registered_configs) - { - DEBUG_PRINTLN(F("ID wrong")); - goto end; - } - - switch (custom_configs[id].type) - { - case CONFIG_TYPE_STRING: - { - String v = server->arg(F("value")); - if (v.length() >= custom_configs[id].len) - goto end; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_string(id, v); - break; - } - case CONFIG_TYPE_INT: - { - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_int(id, server->arg(F("value")).toInt()); - break; - } - case CONFIG_TYPE_BOOL: - { - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_bool(id, server->arg(F("value")).compareTo(F("on")) == 0); - break; - } - case CONFIG_TYPE_OPTIONS: - { - uint8_t val = (uint8_t)server->arg(F("value")).toInt(); - DEBUG_PRINT(F("Value: ")); - DEBUG_PRINTLN(val); - config_set_options(id, val); - break; - } - case CONFIG_TYPE_GA: - { - uint8_t area = server->arg(F("area")).toInt(); - uint8_t line = server->arg(F("line")).toInt(); - uint8_t member = server->arg(F("member")).toInt(); - if (area > 31 || line > 7) - { - DEBUG_PRINTLN(F("Area or Line wrong")); - goto end; - } - address_t tmp; - tmp.bytes.high = (area << 3) | line; - tmp.bytes.low = member; - __config_set_flags(id, CONFIG_FLAGS_VALUE_SET); - __config_set_ga(id, tmp); - break; - } - } - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} - -void ESPKNXIP::__handle_feedback() -{ -DEBUG_PRINTLN(F("Feedback called")); - if (server->hasArg(F("id"))) - { - config_id_t id = server->arg(F("id")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(id); - DEBUG_PRINTLN(F("")); - - if (id < 0 || id >= registered_feedbacks) - { - DEBUG_PRINTLN(F("ID wrong")); - goto end; - } - - switch (feedbacks[id].type) - { - case FEEDBACK_TYPE_ACTION: - { - feedback_action_fptr_t func = (feedback_action_fptr_t)feedbacks[id].data; - void *arg = feedbacks[id].options.action_options.arg; - func(arg); - break; - } - default: - DEBUG_PRINTLN(F("Feedback has no action")); - break; - } - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} - -#if !DISABLE_RESTORE_BUTTONS -void ESPKNXIP::__handle_restore() -{ - DEBUG_PRINTLN(F("Restore called")); - memcpy(custom_config_data, custom_config_default_data, MAX_CONFIG_SPACE); -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} -#endif - -#if !DISABLE_REBOOT_BUTTONS -void ESPKNXIP::__handle_reboot() -{ - DEBUG_PRINTLN(F("Rebooting!")); - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); - delay(1000); - ESP.restart(); - //while(1); -} -#endif - -#if !DISABLE_EEPROM_BUTTONS -void ESPKNXIP::__handle_eeprom() -{ - DEBUG_PRINTLN(F("EEPROM called")); - if (server->hasArg(F("mode"))) - { - uint8_t mode = server->arg(F("mode")).toInt(); - - DEBUG_PRINT(F("Got args: ")); - DEBUG_PRINT(mode); - DEBUG_PRINTLN(F("")); - - if (mode == 1) - { - // save - save_to_eeprom(); - } - else if (mode == 2) - { - // restore - restore_from_eeprom(); - } - } -end: - server->sendHeader(F("Location"),F(__ROOT_PATH)); - server->send(302); -} -#endif diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp b/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp deleted file mode 100644 index 35b9c5014..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.cpp +++ /dev/null @@ -1,658 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#include "esp-knx-ip.h" - -char const *string_defaults[] = -{ - "Do this", - "True", - "False", - "" -}; - -ESPKNXIP::ESPKNXIP() : server(nullptr), - registered_callback_assignments(0), - free_callback_assignment_slots(0), - registered_callbacks(0), - free_callback_slots(0), - registered_configs(0), - registered_feedbacks(0) -{ - DEBUG_PRINTLN(); - DEBUG_PRINTLN("ESPKNXIP starting up"); - // Default physical address is 1.1.0 - physaddr.bytes.high = (/*area*/1 << 4) | /*line*/1; - physaddr.bytes.low = /*member*/0; - memset(callback_assignments, 0, MAX_CALLBACK_ASSIGNMENTS * sizeof(callback_assignment_t)); - memset(callbacks, 0, MAX_CALLBACKS * sizeof(callback_fptr_t)); - memset(custom_config_data, 0, MAX_CONFIG_SPACE * sizeof(uint8_t)); - memset(custom_config_default_data, 0, MAX_CONFIG_SPACE * sizeof(uint8_t)); - memset(custom_configs, 0, MAX_CONFIGS * sizeof(config_t)); -} - -void ESPKNXIP::load() -{ - memcpy(custom_config_default_data, custom_config_data, MAX_CONFIG_SPACE); - EEPROM.begin(EEPROM_SIZE); - restore_from_eeprom(); -} - -void ESPKNXIP::start(ESP8266WebServer *srv) -{ - server = srv; - __start(); -} - -void ESPKNXIP::start() -{ - server = new ESP8266WebServer(80); - __start(); -} - -void ESPKNXIP::__start() -{ - if (server != nullptr) - { - server->on(ROOT_PREFIX, [this](){ - __handle_root(); - }); - server->on(__ROOT_PATH, [this](){ - __handle_root(); - }); - server->on(__REGISTER_PATH, [this](){ - __handle_register(); - }); - server->on(__DELETE_PATH, [this](){ - __handle_delete(); - }); - server->on(__PHYS_PATH, [this](){ - __handle_set(); - }); -#if !DISABLE_EEPROM_BUTTONS - server->on(__EEPROM_PATH, [this](){ - __handle_eeprom(); - }); -#endif - server->on(__CONFIG_PATH, [this](){ - __handle_config(); - }); - server->on(__FEEDBACK_PATH, [this](){ - __handle_feedback(); - }); -#if !DISABLE_RESTORE_BUTTON - server->on(__RESTORE_PATH, [this](){ - __handle_restore(); - }); -#endif -#if !DISABLE_REBOOT_BUTTON - server->on(__REBOOT_PATH, [this](){ - __handle_reboot(); - }); -#endif - server->begin(); - } - - udp.listenMulticast(MULTICAST_IP, MULTICAST_PORT); - udp.onPacket([this](AsyncUDPPacket &packet) { - DEBUG_PRINTLN("got packet"); - __loop_knx(packet); }); -} - -void ESPKNXIP::save_to_eeprom() -{ - uint32_t address = 0; - uint64_t magic = EEPROM_MAGIC; - EEPROM.put(address, magic); - address += sizeof(uint64_t); - EEPROM.put(address++, registered_callback_assignments); - for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) - { - EEPROM.put(address, callback_assignments[i].address); - address += sizeof(address_t); - } - for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) - { - EEPROM.put(address, callback_assignments[i].callback_id); - address += sizeof(callback_id_t); - } - EEPROM.put(address, physaddr); - address += sizeof(address_t); - - EEPROM.put(address, custom_config_data); - address += sizeof(custom_config_data); - - EEPROM.commit(); - DEBUG_PRINT("Wrote to EEPROM: 0x"); - DEBUG_PRINTLN(address, HEX); -} - -void ESPKNXIP::restore_from_eeprom() -{ - uint32_t address = 0; - uint64_t magic = 0; - EEPROM.get(address, magic); - if (magic != EEPROM_MAGIC) - { - DEBUG_PRINTLN("No valid magic in EEPROM, aborting restore."); - DEBUG_PRINT("Expected 0x"); - DEBUG_PRINT((unsigned long)(EEPROM_MAGIC >> 32), HEX); - DEBUG_PRINT(" 0x"); - DEBUG_PRINT((unsigned long)(EEPROM_MAGIC), HEX); - DEBUG_PRINT(" got 0x"); - DEBUG_PRINT((unsigned long)(magic >> 32), HEX); - DEBUG_PRINT(" 0x"); - DEBUG_PRINTLN((unsigned long)magic, HEX); - return; - } - address += sizeof(uint64_t); - EEPROM.get(address++, registered_callback_assignments); - for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) - { - EEPROM.get(address, callback_assignments[i].address); - if (callback_assignments[i].address.value != 0) - { - // if address is not 0/0/0 then mark slot as used - callback_assignments[i].slot_flags |= SLOT_FLAGS_USED; - DEBUG_PRINTLN("used slot"); - } - else - { - // if address is 0/0/0, then we found a free slot, yay! - // however, only count those slots, if we have not reached registered_callback_assignments yet - if (i < registered_callback_assignments) - { - DEBUG_PRINTLN("free slot before reaching registered_callback_assignments"); - free_callback_assignment_slots++; - } - else - { - DEBUG_PRINTLN("free slot"); - } - } - address += sizeof(address_t); - } - for (uint8_t i = 0; i < MAX_CALLBACK_ASSIGNMENTS; ++i) - { - EEPROM.get(address, callback_assignments[i].callback_id); - address += sizeof(callback_id_t); - } - EEPROM.get(address, physaddr); - address += sizeof(address_t); - - //EEPROM.get(address, custom_config_data); - //address += sizeof(custom_config_data); - uint32_t conf_offset = address; - for (uint8_t i = 0; i < registered_configs; ++i) - { - // First byte is flags. - config_flags_t flags = CONFIG_FLAGS_NO_FLAGS; - flags = (config_flags_t)EEPROM.read(address); - DEBUG_PRINT("Flag in EEPROM @ "); - DEBUG_PRINT(address - conf_offset); - DEBUG_PRINT(": "); - DEBUG_PRINTLN(flags, BIN); - custom_config_data[custom_configs[i].offset] = flags; - if (flags & CONFIG_FLAGS_VALUE_SET) - { - DEBUG_PRINTLN("Non-default value"); - for (int j = 0; j < custom_configs[i].len - sizeof(uint8_t); ++j) - { - custom_config_data[custom_configs[i].offset + sizeof(uint8_t) + j] = EEPROM.read(address + sizeof(uint8_t) + j); - } - } - - address += custom_configs[i].len; - } - - DEBUG_PRINT("Restored from EEPROM: 0x"); - DEBUG_PRINTLN(address, HEX); -} - -uint16_t ESPKNXIP::__ntohs(uint16_t n) -{ - return (uint16_t)((((uint8_t*)&n)[0] << 8) | (((uint8_t*)&n)[1])); -} - -callback_assignment_id_t ESPKNXIP::__callback_register_assignment(address_t address, callback_id_t id) -{ - if (registered_callback_assignments >= MAX_CALLBACK_ASSIGNMENTS) - return -1; - - if (free_callback_assignment_slots == 0) - { - callback_assignment_id_t aid = registered_callback_assignments; - - callback_assignments[aid].slot_flags |= SLOT_FLAGS_USED; - callback_assignments[aid].address = address; - callback_assignments[aid].callback_id = id; - registered_callback_assignments++; - return aid; - } - else - { - // find the free slot - for (callback_assignment_id_t aid = 0; aid < registered_callback_assignments; ++aid) - { - if (callback_assignments[aid].slot_flags & SLOT_FLAGS_USED) - { - // found a used slot - continue; - } - // and now an empty one - callback_assignments[aid].slot_flags |= SLOT_FLAGS_USED; - callback_assignments[aid].address = address; - callback_assignments[aid].callback_id = id; - - free_callback_assignment_slots--; - return id; - } - } -} - -void ESPKNXIP::__callback_delete_assignment(callback_assignment_id_t id) -{ - // TODO this can be optimized if we are deleting the last element - // as then we can decrement registered_callback_assignments - - // clear slot and mark it as empty - callback_assignments[id].slot_flags = SLOT_FLAGS_EMPTY; - callback_assignments[id].address.value = 0; - callback_assignments[id].callback_id = 0; - - if (id == registered_callback_assignments - 1) - { - DEBUG_PRINTLN("last cba deleted"); - // If this is the last callback, we can delete it by decrementing registered_callbacks. - registered_callback_assignments--; - - // However, if the assignment before this slot are also empty, we can decrement even further - // First check if this was also the first element - if (id == 0) - { - DEBUG_PRINTLN("really last cba"); - // If this was the last, then we are done. - return; - } - - id--; - while(true) - { - DEBUG_PRINT("checking "); - DEBUG_PRINTLN((int32_t)id); - if ((callback_assignments[id].slot_flags & SLOT_FLAGS_USED) == 0) - { - DEBUG_PRINTLN("merged free slot"); - // Slot before is empty - free_callback_assignment_slots--; - registered_callback_assignments--; - } - else - { - DEBUG_PRINTLN("aborted on used slot"); - // Slot is used, abort - return; - } - id--; - if (id == CALLBACK_ASSIGNMENT_ID_MAX) - { - DEBUG_PRINTLN("abort on wrap"); - // Wrap around, abort - return; - } - } - } - else - { - DEBUG_PRINTLN("free slot created"); - // there is now one more free slot - free_callback_assignment_slots++; - } -} - -bool ESPKNXIP::__callback_is_id_valid(callback_id_t id) -{ - if (id < registered_callbacks) - return true; - - if (callbacks[id].slot_flags & SLOT_FLAGS_USED) - return true; - - return false; -} - -callback_id_t ESPKNXIP::callback_register(String name, callback_fptr_t cb, void *arg, enable_condition_t cond) -{ - if (registered_callbacks >= MAX_CALLBACKS) - return -1; - - if (free_callback_slots == 0) - { - callback_id_t id = registered_callbacks; - - callbacks[id].slot_flags |= SLOT_FLAGS_USED; - callbacks[id].name = name; - callbacks[id].fkt = cb; - callbacks[id].cond = cond; - callbacks[id].arg = arg; - registered_callbacks++; - return id; - } - else - { - // find the free slot - for (callback_id_t id = 0; id < registered_callbacks; ++id) - { - if (callbacks[id].slot_flags & SLOT_FLAGS_USED) - { - // found a used slot - continue; - } - // and now an empty one - callbacks[id].slot_flags |= SLOT_FLAGS_USED; - callbacks[id].name = name; - callbacks[id].fkt = cb; - callbacks[id].cond = cond; - callbacks[id].arg = arg; - - free_callback_slots--; - return id; - } - } -} - -void ESPKNXIP::callback_deregister(callback_id_t id) -{ - if (!__callback_is_id_valid(id)) - return; - - // clear slot and mark it as empty - callbacks[id].slot_flags = SLOT_FLAGS_EMPTY; - callbacks[id].fkt = nullptr; - callbacks[id].cond = nullptr; - callbacks[id].arg = nullptr; - - if (id == registered_callbacks - 1) - { - // If this is the last callback, we can delete it by decrementing registered_callbacks. - registered_callbacks--; - - // However, if the callbacks before this slot are also empty, we can decrement even further - // First check if this was also the first element - if (id == 0) - { - // If this was the last, then we are done. - return; - } - - id--; - while(true) - { - if ((callbacks[id].slot_flags & SLOT_FLAGS_USED) == 0) - { - // Slot is empty - free_callback_slots--; - registered_callbacks--; - } - else - { - // Slot is used, abort - return; - } - id--; - if (id == CALLBACK_ASSIGNMENT_ID_MAX) - { - // Wrap around, abort - return; - } - } - } - else - { - // there is now one more free slot - free_callback_slots++; - } -} - -callback_assignment_id_t ESPKNXIP::callback_assign(callback_id_t id, address_t val) -{ - if (!__callback_is_id_valid(id)) - return -1; - - return __callback_register_assignment(val, id); -} - -void ESPKNXIP::callback_unassign(callback_assignment_id_t id) -{ - if (!__callback_is_id_valid(id)) - return; - - __callback_delete_assignment(id); -} - -/** - * Feedback functions start here - */ - -feedback_id_t ESPKNXIP::feedback_register_int(String name, int32_t *value, enable_condition_t cond) -{ - if (registered_feedbacks >= MAX_FEEDBACKS) - return -1; - - feedback_id_t id = registered_feedbacks; - - feedbacks[id].type = FEEDBACK_TYPE_INT; - feedbacks[id].name = name; - feedbacks[id].cond = cond; - feedbacks[id].data = (void *)value; - - registered_feedbacks++; - - return id; -} - -feedback_id_t ESPKNXIP::feedback_register_float(String name, float *value, uint8_t precision, char const *prefix, char const *suffix, enable_condition_t cond) -{ - if (registered_feedbacks >= MAX_FEEDBACKS) - return -1; - - feedback_id_t id = registered_feedbacks; - - feedbacks[id].type = FEEDBACK_TYPE_FLOAT; - feedbacks[id].name = name; - feedbacks[id].cond = cond; - feedbacks[id].data = (void *)value; - feedbacks[id].options.float_options.precision = precision; - feedbacks[id].options.float_options.prefix = prefix ? strdup(prefix) : STRING_DEFAULT_EMPTY; - feedbacks[id].options.float_options.suffix = suffix ? strdup(suffix) : STRING_DEFAULT_EMPTY; - - registered_feedbacks++; - - return id; -} - -feedback_id_t ESPKNXIP::feedback_register_bool(String name, bool *value, char const *true_text, char const *false_text, enable_condition_t cond) -{ - if (registered_feedbacks >= MAX_FEEDBACKS) - return -1; - - feedback_id_t id = registered_feedbacks; - - feedbacks[id].type = FEEDBACK_TYPE_BOOL; - feedbacks[id].name = name; - feedbacks[id].cond = cond; - feedbacks[id].data = (void *)value; - feedbacks[id].options.bool_options.true_text = true_text ? strdup(true_text) : STRING_DEFAULT_TRUE; - feedbacks[id].options.bool_options.false_text = false_text ? strdup(false_text) : STRING_DEFAULT_FALSE; - - registered_feedbacks++; - - return id; -} - -feedback_id_t ESPKNXIP::feedback_register_action(String name, feedback_action_fptr_t value, const char *btn_text, void *arg, enable_condition_t cond) -{ - if (registered_feedbacks >= MAX_FEEDBACKS) - return -1; - - feedback_id_t id = registered_feedbacks; - - feedbacks[id].type = FEEDBACK_TYPE_ACTION; - feedbacks[id].name = name; - feedbacks[id].cond = cond; - feedbacks[id].data = (void *)value; - feedbacks[id].options.action_options.arg = arg; - feedbacks[id].options.action_options.btn_text = btn_text ? strdup(btn_text) : STRING_DEFAULT_DO_THIS; - - registered_feedbacks++; - - return id; -} - -void ESPKNXIP::loop() -{ - if (server != nullptr) - { - __loop_webserver(); - } -} - -void ESPKNXIP::__loop_webserver() -{ - server->handleClient(); -} - -void ESPKNXIP::__loop_knx(AsyncUDPPacket &packet) -{ - size_t read = packet.length(); - if (!read) - { - return; - } - DEBUG_PRINTLN(F("")); - DEBUG_PRINT(F("LEN: ")); - DEBUG_PRINTLN(read); - - uint8_t *buf = packet.data(); - - DEBUG_PRINT(F("Got packet:")); -#ifdef ESP_KNX_DEBUG - for (size_t i = 0; i < read; ++i) - { - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINT(buf[i], 16); - } -#endif - DEBUG_PRINTLN(F("")); - - knx_ip_pkt_t *knx_pkt = (knx_ip_pkt_t *)buf; - - DEBUG_PRINT(F("ST: 0x")); - DEBUG_PRINTLN(__ntohs(knx_pkt->service_type), 16); - - if (knx_pkt->header_len != 0x06 && knx_pkt->protocol_version != 0x10 && knx_pkt->service_type != KNX_ST_ROUTING_INDICATION) - return; - - cemi_msg_t *cemi_msg = (cemi_msg_t *)knx_pkt->pkt_data; - - DEBUG_PRINT(F("MT: 0x")); - DEBUG_PRINTLN(cemi_msg->message_code, 16); - - if (cemi_msg->message_code != KNX_MT_L_DATA_IND) - return; - - DEBUG_PRINT(F("ADDI: 0x")); - DEBUG_PRINTLN(cemi_msg->additional_info_len, 16); - - cemi_service_t *cemi_data = &cemi_msg->data.service_information; - - if (cemi_msg->additional_info_len > 0) - cemi_data = (cemi_service_t *)(((uint8_t *)cemi_data) + cemi_msg->additional_info_len); - - DEBUG_PRINT(F("C1: 0x")); - DEBUG_PRINTLN(cemi_data->control_1.byte, 16); - - DEBUG_PRINT(F("C2: 0x")); - DEBUG_PRINTLN(cemi_data->control_2.byte, 16); - - DEBUG_PRINT(F("DT: 0x")); - DEBUG_PRINTLN(cemi_data->control_2.bits.dest_addr_type, 16); - - if (cemi_data->control_2.bits.dest_addr_type != 0x01) - return; - - DEBUG_PRINT(F("HC: 0x")); - DEBUG_PRINTLN(cemi_data->control_2.bits.hop_count, 16); - - DEBUG_PRINT(F("EFF: 0x")); - DEBUG_PRINTLN(cemi_data->control_2.bits.extended_frame_format, 16); - - DEBUG_PRINT(F("Source: 0x")); - DEBUG_PRINT(cemi_data->source.bytes.high, 16); - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINTLN(cemi_data->source.bytes.low, 16); - - DEBUG_PRINT(F("Dest: 0x")); - DEBUG_PRINT(cemi_data->destination.bytes.high, 16); - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINTLN(cemi_data->destination.bytes.low, 16); - - knx_command_type_t ct = (knx_command_type_t)(((cemi_data->data[0] & 0xC0) >> 6) | ((cemi_data->pci.apci & 0x03) << 2)); - - DEBUG_PRINT(F("CT: 0x")); - DEBUG_PRINTLN(ct, 16); - -#ifdef ESP_KNX_DEBUG - for (int i = 0; i < cemi_data->data_len; ++i) - { - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINT(cemi_data->data[i], 16); - } -#endif - - DEBUG_PRINTLN(F("==")); - - // Call callbacks - for (int i = 0; i < registered_callback_assignments; ++i) - { - DEBUG_PRINT(F("Testing: 0x")); - DEBUG_PRINT(callback_assignments[i].address.bytes.high, 16); - DEBUG_PRINT(F(" 0x")); - DEBUG_PRINTLN(callback_assignments[i].address.bytes.low, 16); - if (cemi_data->destination.value == callback_assignments[i].address.value) - { - DEBUG_PRINTLN(F("Found match")); - if (callbacks[callback_assignments[i].callback_id].cond && !callbacks[callback_assignments[i].callback_id].cond()) - { - DEBUG_PRINTLN(F("But it's disabled")); -#if ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS - continue; -#else - return; -#endif - } - uint8_t data[cemi_data->data_len]; - memcpy(data, cemi_data->data, cemi_data->data_len); - data[0] = data[0] & 0x3F; - message_t msg = {}; - msg.ct = ct; - msg.received_on = cemi_data->destination; - msg.data_len = cemi_data->data_len; - msg.data = data; - callbacks[callback_assignments[i].callback_id].fkt(msg, callbacks[callback_assignments[i].callback_id].arg); -#if ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS - continue; -#else - return; -#endif - } - } - - return; -} - -// Global "singleton" object -ESPKNXIP knx; diff --git a/lib/esp-knx-ip-async-udp/esp-knx-ip.h b/lib/esp-knx-ip-async-udp/esp-knx-ip.h deleted file mode 100644 index 86e02c5e8..000000000 --- a/lib/esp-knx-ip-async-udp/esp-knx-ip.h +++ /dev/null @@ -1,571 +0,0 @@ -/** - * esp-knx-ip library for KNX/IP communication on an ESP8266 - * Author: Nico Weichbrodt - * License: MIT - */ - -#ifndef ESP_KNX_IP_H -#define ESP_KNX_IP_H - -/** - * CONFIG - * All MAX_ values must not exceed 255 (1 byte, except MAC_CONFIG_SPACE which can go up to 2 bytes, so 0xffff in theory) and must not be negative! - * Config space is restriced by EEPROM_SIZE (default 1024). - * Required EEPROM size is 8 + MAX_GA_CALLBACKS * 3 + 2 + MAX_CONFIG_SPACE which is 552 by default - */ -#define EEPROM_SIZE 1024 // [Default 1024] -#define MAX_CALLBACK_ASSIGNMENTS 10 // [Default 10] Maximum number of group address callbacks that can be stored -#define MAX_CALLBACKS 10 // [Default 10] Maximum number of callbacks that can be stored -#define MAX_CONFIGS 20 // [Default 20] Maximum number of config items that can be stored -#define MAX_CONFIG_SPACE 0x0200 // [Default 0x0200] Maximum number of bytes that can be stored for custom config - -#define MAX_FEEDBACKS 20 // [Default 20] Maximum number of feedbacks that can be shown - -// Callbacks -#define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 // [Default 0] Set to 1 to always test all assigned callbacks. This allows for multiple callbacks being assigned to the same address. If disabled, only the first assigned will be called. - -// Webserver related -#define USE_BOOTSTRAP 1 // [Default 1] Set to 1 to enable use of bootstrap CSS for nicer webconfig. CSS is loaded from bootstrapcdn.com. Set to 0 to disable -#define ROOT_PREFIX "" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx -#define DISABLE_EEPROM_BUTTONS 1 // [Default 0] Set to 1 to disable the EEPROM buttons in the web ui. -#define DISABLE_REBOOT_BUTTON 1 // [Default 0] Set to 1 to disable the reboot button in the web ui. -#define DISABLE_RESTORE_BUTTON 1 // [Default 0] Set to 1 to disable the "restore defaults" button in the web ui. - -// These values normally don't need adjustment -#define MULTICAST_PORT 3671 // [Default 3671] -#define MULTICAST_IP IPAddress(224, 0, 23, 12) // [Default IPAddress(224, 0, 23, 12)] -#define SEND_CHECKSUM 0 - -// Uncomment to enable printing out debug messages. -//#define ESP_KNX_DEBUG -/** - * END CONFIG - */ - -#include "Arduino.h" -#include -#include -#include -#include - -#include "DPT.h" - -#define EEPROM_MAGIC (0xDEADBEEF00000000 + (MAX_CONFIG_SPACE) + (MAX_CALLBACK_ASSIGNMENTS << 16) + (MAX_CALLBACKS << 8)) - -// Define where debug output will be printed. -#ifndef DEBUG_PRINTER -#define DEBUG_PRINTER Serial -#endif - -// Setup debug printing macros. -#ifdef ESP_KNX_DEBUG - #define DEBUG_PRINT(...) { DEBUG_PRINTER.print(__VA_ARGS__); } - #define DEBUG_PRINTLN(...) { DEBUG_PRINTER.println(__VA_ARGS__); } -#else - #define DEBUG_PRINT(...) {} - #define DEBUG_PRINTLN(...) {} -#endif - -#define __ROOT_PATH ROOT_PREFIX"/" -#define __REGISTER_PATH ROOT_PREFIX"/register" -#define __DELETE_PATH ROOT_PREFIX"/delete" -#define __PHYS_PATH ROOT_PREFIX"/phys" -#define __EEPROM_PATH ROOT_PREFIX"/eeprom" -#define __CONFIG_PATH ROOT_PREFIX"/config" -#define __FEEDBACK_PATH ROOT_PREFIX"/feedback" -#define __RESTORE_PATH ROOT_PREFIX"/restore" -#define __REBOOT_PATH ROOT_PREFIX"/reboot" - -/** - * Different service types, we are mainly interested in KNX_ST_ROUTING_INDICATION - */ -typedef enum __knx_service_type -{ - KNX_ST_SEARCH_REQUEST = 0x0201, - KNX_ST_SEARCH_RESPONSE = 0x0202, - KNX_ST_DESCRIPTION_REQUEST = 0x0203, - KNX_ST_DESCRIPTION_RESPONSE = 0x0204, - KNX_ST_CONNECT_REQUEST = 0x0205, - KNX_ST_CONNECT_RESPONSE = 0x0206, - KNX_ST_CONNECTIONSTATE_REQUEST = 0x0207, - KNX_ST_CONNECTIONSTATE_RESPONSE = 0x0208, - KNX_ST_DISCONNECT_REQUEST = 0x0209, - KNX_ST_DISCONNECT_RESPONSE = 0x020A, - - KNX_ST_DEVICE_CONFIGURATION_REQUEST = 0x0310, - KNX_ST_DEVICE_CONFIGURATION_ACK = 0x0311, - - KNX_ST_TUNNELING_REQUEST = 0x0420, - KNX_ST_TUNNELING_ACK = 0x0421, - - KNX_ST_ROUTING_INDICATION = 0x0530, - KNX_ST_ROUTING_LOST_MESSAGE = 0x0531, - KNX_ST_ROUTING_BUSY = 0x0532, - -// KNX_ST_RLOG_START = 0x0600, -// KNX_ST_RLOG_END = 0x06FF, - - KNX_ST_REMOTE_DIAGNOSTIC_REQUEST = 0x0740, - KNX_ST_REMOTE_DIAGNOSTIC_RESPONSE = 0x0741, - KNX_ST_REMOTE_BASIC_CONFIGURATION_REQUEST = 0x0742, - KNX_ST_REMOTE_RESET_REQUEST = 0x0743, - -// KNX_ST_OBJSRV_START = 0x0800, -// KNX_ST_OBJSRV_END = 0x08FF, -} knx_service_type_t; - -/** - * Differnt command types, first three are of main interest - */ -typedef enum __knx_command_type -{ - KNX_CT_READ = 0x00, - KNX_CT_ANSWER = 0x01, - KNX_CT_WRITE = 0x02, - KNX_CT_INDIVIDUAL_ADDR_WRITE = 0x03, - KNX_CT_INDIVIDUAL_ADDR_REQUEST = 0x04, - KNX_CT_INDIVIDUAL_ADDR_RESPONSE = 0x05, - KNX_CT_ADC_READ = 0x06, - KNX_CT_ADC_ANSWER = 0x07, - KNX_CT_MEM_READ = 0x08, - KNX_CT_MEM_ANSWER = 0x09, - KNX_CT_MEM_WRITE = 0x0A, -//KNX_CT_UNKNOWN = 0x0B, - KNX_CT_MASK_VERSION_READ = 0x0C, - KNX_CT_MASK_VERSION_RESPONSE = 0x0D, - KNX_CT_RESTART = 0x0E, - KNX_CT_ESCAPE = 0x0F, -} knx_command_type_t; - -/** - * cEMI message types, mainly KNX_MT_L_DATA_IND is interesting - */ -typedef enum __knx_cemi_msg_type -{ - KNX_MT_L_DATA_REQ = 0x11, - KNX_MT_L_DATA_IND = 0x29, - KNX_MT_L_DATA_CON = 0x2E, -} knx_cemi_msg_type_t; - -/** - * TCPI communication type - */ -typedef enum __knx_communication_type { - KNX_COT_UDP = 0x00, // Unnumbered Data Packet - KNX_COT_NDP = 0x01, // Numbered Data Packet - KNX_COT_UCD = 0x02, // Unnumbered Control Data - KNX_COT_NCD = 0x03, // Numbered Control Data -} knx_communication_type_t; - -/** - * KNX/IP header - */ -typedef struct __knx_ip_pkt -{ - uint8_t header_len; // Should always be 0x06 - uint8_t protocol_version; // Should be version 1.0, transmitted as 0x10 - uint16_t service_type; // See knx_service_type_t - union - { - struct { - uint8_t first_byte; - uint8_t second_byte; - } bytes; - uint16_t len; - } total_len; // header_len + rest of pkt. This is a bit weird as the spec says this: If the total number of bytes transmitted is greater than 252 bytes, the first “Total Length” byte is set to FF (255). Only in this case the second byte includes additional length information - uint8_t pkt_data[]; // This is of type cemi_msg_t -} knx_ip_pkt_t; - -typedef struct __cemi_addi -{ - uint8_t type_id; - uint8_t len; - uint8_t data[]; -} cemi_addi_t; - -typedef union __address -{ - uint16_t value; - struct - { - uint8_t high; - uint8_t low; - } bytes; - struct __attribute__((packed)) - { - uint8_t line:3; - uint8_t area:5; - uint8_t member; - } ga; - struct __attribute__((packed)) - { - uint8_t line:4; - uint8_t area:4; - uint8_t member; - } pa; - uint8_t array[2]; -} address_t; - -typedef struct __cemi_service -{ - union - { - struct - { - // Struct is reversed due to bit order - uint8_t confirm:1; // 0 = no error, 1 = error - uint8_t ack:1; // 0 = no ack, 1 = ack - uint8_t priority:2; // 0 = system, 1 = high, 2 = urgent/alarm, 3 = normal - uint8_t system_broadcast:1; // 0 = system broadcast, 1 = broadcast - uint8_t repeat:1; // 0 = repeat on error, 1 = do not repeat - uint8_t reserved:1; // always zero - uint8_t frame_type:1; // 0 = extended, 1 = standard - } bits; - uint8_t byte; - } control_1; - union - { - struct - { - // Struct is reversed due to bit order - uint8_t extended_frame_format:4; - uint8_t hop_count:3; - uint8_t dest_addr_type:1; // 0 = individual, 1 = group - } bits; - uint8_t byte; - } control_2; - address_t source; - address_t destination; - uint8_t data_len; // length of data, excluding the tpci byte - struct - { - uint8_t apci:2; // If tpci.comm_type == KNX_COT_UCD or KNX_COT_NCD, then this is apparently control data? - uint8_t tpci_seq_number:4; - uint8_t tpci_comm_type:2; // See knx_communication_type_t - } pci; - uint8_t data[]; -} cemi_service_t; - -typedef struct __cemi_msg -{ - uint8_t message_code; - uint8_t additional_info_len; - union - { - cemi_addi_t additional_info[]; - cemi_service_t service_information; - } data; -} cemi_msg_t; - -typedef enum __config_type -{ - CONFIG_TYPE_UNKNOWN, - CONFIG_TYPE_INT, - CONFIG_TYPE_BOOL, - CONFIG_TYPE_STRING, - CONFIG_TYPE_OPTIONS, - CONFIG_TYPE_GA, -} config_type_t; - -typedef enum __feedback_type -{ - FEEDBACK_TYPE_UNKNOWN, - FEEDBACK_TYPE_INT, - FEEDBACK_TYPE_FLOAT, - FEEDBACK_TYPE_BOOL, - FEEDBACK_TYPE_ACTION, -} feedback_type_t; - -typedef enum __config_flags -{ - CONFIG_FLAGS_NO_FLAGS = 0, - CONFIG_FLAGS_VALUE_SET = 1, -} config_flags_t; - -typedef enum __slot_flags -{ - SLOT_FLAGS_EMPTY = 0, // Empty slots have no flags - SLOT_FLAGS_USED = 1, -} slot_flags_t; - -typedef struct __message -{ - knx_command_type_t ct; - address_t received_on; - uint8_t data_len; - uint8_t *data; -} message_t; - -typedef bool (*enable_condition_t)(void); -typedef void (*callback_fptr_t)(message_t const &msg, void *arg); -typedef void (*feedback_action_fptr_t)(void *arg); - -typedef uint8_t callback_id_t; -#define CALLBACK_ID_MAX UINT8_MAX -typedef uint8_t callback_assignment_id_t; -#define CALLBACK_ASSIGNMENT_ID_MAX UINT8_MAX -typedef uint8_t config_id_t; -typedef uint8_t feedback_id_t; - -typedef struct __option_entry -{ - char const *name; - uint8_t value; -} option_entry_t; - -typedef struct __config -{ - config_type_t type; - String name; - uint8_t offset; - uint8_t len; - enable_condition_t cond; - union { - option_entry_t *options; - } data; -} config_t; - -extern char const *string_defaults[]; -#define STRING_DEFAULT_DO_THIS (string_defaults[0]) -#define STRING_DEFAULT_TRUE (string_defaults[1]) -#define STRING_DEFAULT_FALSE (string_defaults[2]) -#define STRING_DEFAULT_EMPTY (string_defaults[3]) - -typedef struct __feedback_float_options -{ - uint8_t precision; - char const *prefix; - char const *suffix; -} feedback_float_options_t; - -typedef struct __feedback_bool_options -{ - char const *true_text; - char const *false_text; -} feedback_bool_options_t; - -typedef struct __feedback_action_options -{ - void *arg; - char const *btn_text; -} feedback_action_options_t; - -typedef struct __feedback -{ - feedback_type_t type; - String name; - enable_condition_t cond; - void *data; - union { - feedback_bool_options_t bool_options; - feedback_float_options_t float_options; - feedback_action_options_t action_options; - } options; -} feedback_t; - -typedef struct __callback -{ - uint8_t slot_flags; - callback_fptr_t fkt; - enable_condition_t cond; - void *arg; - String name; -} callback_t; - -typedef struct __callback_assignment -{ - uint8_t slot_flags; - address_t address; - callback_id_t callback_id; -} callback_assignment_t; - -class ESPKNXIP { - public: - ESPKNXIP(); - void load(); - void start(); - void start(ESP8266WebServer *srv); - void loop(); - - void save_to_eeprom(); - void restore_from_eeprom(); - - callback_id_t callback_register(String name, callback_fptr_t cb, void *arg = nullptr, enable_condition_t cond = nullptr); - callback_assignment_id_t callback_assign(callback_id_t id, address_t val); - void callback_deregister(callback_id_t id); - void callback_unassign(callback_assignment_id_t id); - - void physical_address_set(address_t const &addr); - address_t physical_address_get(); - - // Configuration functions - config_id_t config_register_string(String name, uint8_t len, String _default, enable_condition_t cond = nullptr); - config_id_t config_register_int(String name, int32_t _default, enable_condition_t cond = nullptr); - config_id_t config_register_bool(String name, bool _default, enable_condition_t cond = nullptr); - config_id_t config_register_options(String name, option_entry_t *options, uint8_t _default, enable_condition_t cond = nullptr); - config_id_t config_register_ga(String name, enable_condition_t cond = nullptr); - - String config_get_string(config_id_t id); - int32_t config_get_int(config_id_t id); - bool config_get_bool(config_id_t id); - uint8_t config_get_options(config_id_t id); - address_t config_get_ga(config_id_t id); - - void config_set_string(config_id_t id, String val); - void config_set_int(config_id_t id, int32_t val); - void config_set_bool(config_id_t, bool val); - void config_set_options(config_id_t id, uint8_t val); - void config_set_ga(config_id_t id, address_t const &val); - - // Feedback functions - feedback_id_t feedback_register_int(String name, int32_t *value, enable_condition_t cond = nullptr); - feedback_id_t feedback_register_float(String name, float *value, uint8_t precision = 2, char const *prefix = nullptr, char const *suffix = nullptr, enable_condition_t cond = nullptr); - feedback_id_t feedback_register_bool(String name, bool *value, char const *true_text = nullptr, char const *false_text = nullptr, enable_condition_t cond = nullptr); - feedback_id_t feedback_register_action(String name, feedback_action_fptr_t value, char const *btn_text = nullptr, void *arg = nullptr, enable_condition_t = nullptr); - - // Send functions - void send(address_t const &receiver, knx_command_type_t ct, uint8_t data_len, uint8_t *data); - - void send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit); - void send_2bit(address_t const &receiver, knx_command_type_t ct, uint8_t twobit); - void send_4bit(address_t const &receiver, knx_command_type_t ct, uint8_t fourbit); - void send_1byte_int(address_t const &receiver, knx_command_type_t ct, int8_t val); - void send_1byte_uint(address_t const &receiver, knx_command_type_t ct, uint8_t val); - void send_2byte_int(address_t const &receiver, knx_command_type_t ct, int16_t val); - void send_2byte_uint(address_t const &receiver, knx_command_type_t ct, uint16_t val); - void send_2byte_float(address_t const &receiver, knx_command_type_t ct, float val); - void send_3byte_time(address_t const &receiver, knx_command_type_t ct, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds); - void send_3byte_time(address_t const &receiver, knx_command_type_t ct, time_of_day_t const &time) { send_3byte_time(receiver, ct, time.weekday, time.hours, time.minutes, time.seconds); } - void send_3byte_date(address_t const &receiver, knx_command_type_t ct, uint8_t day, uint8_t month, uint8_t year); - void send_3byte_date(address_t const &receiver, knx_command_type_t ct, date_t const &date) { send_3byte_date(receiver, ct, date.day, date.month, date.year); } - void send_3byte_color(address_t const &receiver, knx_command_type_t ct, uint8_t red, uint8_t green, uint8_t blue); - void send_3byte_color(address_t const &receiver, knx_command_type_t ct, color_t const &color) { send_3byte_color(receiver, ct, color.red, color.green, color.blue); } - void send_4byte_int(address_t const &receiver, knx_command_type_t ct, int32_t val); - void send_4byte_uint(address_t const &receiver, knx_command_type_t ct, uint32_t val); - void send_4byte_float(address_t const &receiver, knx_command_type_t ct, float val); - - void write_1bit(address_t const &receiver, uint8_t bit) { send_1bit(receiver, KNX_CT_WRITE, bit); } - void write_2bit(address_t const &receiver, uint8_t twobit) { send_2bit(receiver, KNX_CT_WRITE, twobit); } - void write_4bit(address_t const &receiver, uint8_t fourbit) { send_4bit(receiver, KNX_CT_WRITE, fourbit); } - void write_1byte_int(address_t const &receiver, int8_t val) { send_1byte_int(receiver, KNX_CT_WRITE, val); } - void write_1byte_uint(address_t const &receiver, uint8_t val) { send_1byte_uint(receiver, KNX_CT_WRITE, val); } - void write_2byte_int(address_t const &receiver, int16_t val) { send_2byte_int(receiver, KNX_CT_WRITE, val); } - void write_2byte_uint(address_t const &receiver, uint16_t val) { send_2byte_uint(receiver, KNX_CT_WRITE, val); } - void write_2byte_float(address_t const &receiver, float val) { send_2byte_float(receiver, KNX_CT_WRITE, val); } - void write_3byte_time(address_t const &receiver, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) { send_3byte_time(receiver, KNX_CT_WRITE, weekday, hours, minutes, seconds); } - void write_3byte_time(address_t const &receiver, time_of_day_t const &time) { send_3byte_time(receiver, KNX_CT_WRITE, time.weekday, time.hours, time.minutes, time.seconds); } - void write_3byte_date(address_t const &receiver, uint8_t day, uint8_t month, uint8_t year) { send_3byte_date(receiver, KNX_CT_WRITE, day, month, year); } - void write_3byte_date(address_t const &receiver, date_t const &date) { send_3byte_date(receiver, KNX_CT_WRITE, date.day, date.month, date.year); } - void write_3byte_color(address_t const &receiver, uint8_t red, uint8_t green, uint8_t blue) { send_3byte_color(receiver, KNX_CT_WRITE, red, green, blue); } - void write_3byte_color(address_t const &receiver, color_t const &color) { send_3byte_color(receiver, KNX_CT_WRITE, color); } - void write_4byte_int(address_t const &receiver, int32_t val) { send_4byte_int(receiver, KNX_CT_WRITE, val); } - void write_4byte_uint(address_t const &receiver, uint32_t val) { send_4byte_uint(receiver, KNX_CT_WRITE, val); } - void write_4byte_float(address_t const &receiver, float val) { send_4byte_float(receiver, KNX_CT_WRITE, val);} - - void answer_1bit(address_t const &receiver, uint8_t bit) { send_1bit(receiver, KNX_CT_ANSWER, bit); } - void answer_2bit(address_t const &receiver, uint8_t twobit) { send_2bit(receiver, KNX_CT_ANSWER, twobit); } - void answer_4bit(address_t const &receiver, uint8_t fourbit) { send_4bit(receiver, KNX_CT_ANSWER, fourbit); } - void answer_1byte_int(address_t const &receiver, int8_t val) { send_1byte_int(receiver, KNX_CT_ANSWER, val); } - void answer_1byte_uint(address_t const &receiver, uint8_t val) { send_1byte_uint(receiver, KNX_CT_ANSWER, val); } - void answer_2byte_int(address_t const &receiver, int16_t val) { send_2byte_int(receiver, KNX_CT_ANSWER, val); } - void answer_2byte_uint(address_t const &receiver, uint16_t val) { send_2byte_uint(receiver, KNX_CT_ANSWER, val); } - void answer_2byte_float(address_t const &receiver, float val) { send_2byte_float(receiver, KNX_CT_ANSWER, val); } - void answer_3byte_time(address_t const &receiver, uint8_t weekday, uint8_t hours, uint8_t minutes, uint8_t seconds) { send_3byte_time(receiver, KNX_CT_ANSWER, weekday, hours, minutes, seconds); } - void answer_3byte_time(address_t const &receiver, time_of_day_t const &time) { send_3byte_time(receiver, KNX_CT_ANSWER, time.weekday, time.hours, time.minutes, time.seconds); } - void answer_3byte_date(address_t const &receiver, uint8_t day, uint8_t month, uint8_t year) { send_3byte_date(receiver, KNX_CT_ANSWER, day, month, year); } - void answer_3byte_date(address_t const &receiver, date_t const &date) { send_3byte_date(receiver, KNX_CT_ANSWER, date.day, date.month, date.year); } - void answer_3byte_color(address_t const &receiver, uint8_t red, uint8_t green, uint8_t blue) { send_3byte_color(receiver, KNX_CT_ANSWER, red, green, blue); } - void answer_3byte_color(address_t const &receiver, color_t const &color) { send_3byte_color(receiver, KNX_CT_ANSWER, color); } - void answer_4byte_int(address_t const &receiver, int32_t val) { send_4byte_int(receiver, KNX_CT_ANSWER, val); } - void answer_4byte_uint(address_t const &receiver, uint32_t val) { send_4byte_uint(receiver, KNX_CT_ANSWER, val); } - void answer_4byte_float(address_t const &receiver, float val) { send_4byte_float(receiver, KNX_CT_ANSWER, val);} - - bool data_to_bool(uint8_t *data); - int8_t data_to_1byte_int(uint8_t *data); - uint8_t data_to_1byte_uint(uint8_t *data); - int16_t data_to_2byte_int(uint8_t *data); - uint16_t data_to_2byte_uint(uint8_t *data); - float data_to_2byte_float(uint8_t *data); - color_t data_to_3byte_color(uint8_t *data); - time_of_day_t data_to_3byte_time(uint8_t *data); - date_t data_to_3byte_data(uint8_t *data); - int32_t data_to_4byte_int(uint8_t *data); - uint32_t data_to_4byte_uint(uint8_t *data); - float data_to_4byte_float(uint8_t *data); - - static address_t GA_to_address(uint8_t area, uint8_t line, uint8_t member) - { - // Yes, the order is correct, see the struct definition above - address_t tmp = {.ga={line, area, member}}; - return tmp; - } - - static address_t PA_to_address(uint8_t area, uint8_t line, uint8_t member) - { - // Yes, the order is correct, see the struct definition above - address_t tmp = {.pa={line, area, member}}; - return tmp; - } - - private: - void __start(); - void __loop_knx(AsyncUDPPacket &packet); - - // Webserver functions - void __loop_webserver(); - void __handle_root(); - void __handle_register(); - void __handle_delete(); - void __handle_set(); -#if !DISABLE_EEPROM_BUTTONS - void __handle_eeprom(); -#endif - void __handle_config(); - void __handle_feedback(); -#if !DISABLE_RESTORE_BUTTONS - void __handle_restore(); -#endif -#if !DISABLE_REBOOT_BUTTONS - void __handle_reboot(); -#endif - - void __config_set_flags(config_id_t id, config_flags_t flags); - - void __config_set_string(config_id_t id, String &val); - void __config_set_int(config_id_t id, int32_t val); - void __config_set_bool(config_id_t id, bool val); - void __config_set_options(config_id_t id, uint8_t val); - void __config_set_ga(config_id_t id, address_t const &val); - - bool __callback_is_id_valid(callback_id_t id); - - callback_assignment_id_t __callback_register_assignment(address_t address, callback_id_t id); - void __callback_delete_assignment(callback_assignment_id_t id); - - ESP8266WebServer *server; - address_t physaddr; - AsyncUDP udp; - - callback_assignment_id_t registered_callback_assignments; - callback_assignment_id_t free_callback_assignment_slots; - callback_assignment_t callback_assignments[MAX_CALLBACK_ASSIGNMENTS]; - - callback_id_t registered_callbacks; - callback_id_t free_callback_slots; - callback_t callbacks[MAX_CALLBACKS]; - - config_id_t registered_configs; - uint8_t custom_config_data[MAX_CONFIG_SPACE]; - uint8_t custom_config_default_data[MAX_CONFIG_SPACE]; - config_t custom_configs[MAX_CONFIGS]; - - feedback_id_t registered_feedbacks; - feedback_t feedbacks[MAX_FEEDBACKS]; - - uint16_t __ntohs(uint16_t); -}; - -// Global "singleton" object -extern ESPKNXIP knx; - -#endif diff --git a/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino b/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino deleted file mode 100644 index 02621bbc6..000000000 --- a/lib/esp-knx-ip-async-udp/examples/environment-sensor/environment-sensor.ino +++ /dev/null @@ -1,159 +0,0 @@ -/* - * This is an example showing a simple environment sensor based on a BME280 attached via I2C. - * This sketch was tested on a WeMos D1 mini - */ - -#include -#include - -// WiFi config here -const char* ssid = "myssid"; -const char* pass = "mypassword"; - -#define LED_PIN D4 -#define UPDATE_INTERVAL 10000 - -unsigned long next_change = 0; - -float last_temp = 0.0; -float last_hum = 0.0; -float last_pres = 0.0; - -config_id_t temp_ga, hum_ga, pres_ga; -config_id_t hostname_id; -config_id_t update_rate_id, send_rate_id; -config_id_t enable_sending_id; -config_id_t enable_reading_id; - -Adafruit_BME280 bme; - -void setup() { - pinMode(LED_PIN, OUTPUT); - Serial.begin(115200); - - hostname_id = knx.config_register_string("Hostname", 20, String("env")); - enable_sending_id = knx.config_register_bool("Send on update", true); - update_rate_id = knx.config_register_int("Update rate (ms)", UPDATE_INTERVAL); - temp_ga = knx.config_register_ga("Temperature", show_periodic_options); - hum_ga = knx.config_register_ga("Humidity", show_periodic_options); - pres_ga = knx.config_register_ga("Pressure", show_periodic_options); - - knx.callback_register("Read Temperature", temp_cb); - knx.callback_register("Read Humidity", hum_cb); - knx.callback_register("Read Pressure", pres_cb); - - knx.feedback_register_float("Temperature (°C)", &last_temp); - knx.feedback_register_float("Humidity (%)", &last_hum); - knx.feedback_register_float("Pressure (hPa)", &last_pres, 0); - - // Load previous config from EEPROM - knx.load(); - - // Init sensor - if (!bme.begin(0x76)) { - Serial.println("Could not find a valid BME280 sensor, check wiring!"); - } - - // Init WiFi - WiFi.hostname(knx.config_get_string(hostname_id)); - WiFi.begin(ssid, pass); - - Serial.println(""); - Serial.print("[Connecting]"); - Serial.print(ssid); - - digitalWrite(LED_PIN, LOW); - while (WiFi.status() != WL_CONNECTED) { - digitalWrite(LED_PIN, HIGH); - delay(250); - Serial.print("."); - digitalWrite(LED_PIN, LOW); - delay(250); - } - digitalWrite(LED_PIN, HIGH); - - // Start knx - knx.start(); - - Serial.println(); - Serial.println("Connected to wifi"); - Serial.println(WiFi.localIP()); -} - -void loop() { - knx.loop(); - - unsigned long now = millis(); - - if (next_change < now) - { - next_change = now + knx.config_get_int(update_rate_id); - - last_temp = bme.readTemperature(); - last_hum = bme.readHumidity(); - last_pres = bme.readPressure()/100.0f; - - Serial.print("T: "); - Serial.print(last_temp); - Serial.print("°C H: "); - Serial.print(last_hum); - Serial.print("% P: "); - Serial.print(last_pres); - Serial.println("hPa"); - - if (knx.config_get_bool(enable_sending_id)) - { - knx.write_2byte_float(knx.config_get_ga(temp_ga), last_temp); - knx.write_2byte_float(knx.config_get_ga(hum_ga), last_hum); - knx.write_2byte_float(knx.config_get_ga(pres_ga), last_pres); - } - } - - delay(50); -} - -bool show_periodic_options() -{ - return knx.config_get_bool(enable_sending_id); -} - -bool enable_reading_callback() -{ - return knx.config_get_bool(enable_reading_id); -} - -void temp_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_temp); - break; - } - } -} - -void hum_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_hum); - break; - } - } -} - -void pres_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_pres); - break; - } - } -} diff --git a/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino b/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino deleted file mode 100644 index fc2400b7b..000000000 --- a/lib/esp-knx-ip-async-udp/examples/sonoff/sonoff.ino +++ /dev/null @@ -1,183 +0,0 @@ -#include - -// WiFi config here -const char* ssid = "ssid"; -const char* pass = "pass"; - -// Common -#define LED_PIN 13 - -// For Basic and S20 -#define BTN1_PIN 0 -#define CH1_PIN 12 - -// For 4CH -#define BTN2_PIN 9 -#define CH2_PIN 5 -#define BTN3_PIN 10 -#define CH3_PIN 4 -#define BTN4_PIN 14 -#define CH4_PIN 15 - -typedef enum __type_option -{ - SONOFF_TYPE_NONE = 0, - SONOFF_TYPE_BASIC = 1, - SONOFF_TYPE_S20 = 2, - SONOFF_TYPE_4CH = 3, - SONOFF_TYPE_4CH_PRO = 4, -} type_option_t; - -option_entry_t type_options[] = { - {"Sonoff Basic", SONOFF_TYPE_BASIC}, - {"Sonoff S20", SONOFF_TYPE_S20}, - {"Sonoff 4CH", SONOFF_TYPE_4CH}, - {"Sonoff 4CH Pro", SONOFF_TYPE_4CH_PRO}, - {nullptr, 0} -}; - -config_id_t hostname_id; -config_id_t type_id; - -typedef struct __sonoff_channel -{ - int pin; - int btn_pin; - config_id_t status_ga_id; - bool state; - bool last_btn_state; -} sonoff_channel_t; - -sonoff_channel_t channels[] = { - {CH1_PIN, BTN1_PIN, 0, false, false}, - {CH2_PIN, BTN2_PIN, 0, false, false}, - {CH3_PIN, BTN3_PIN, 0, false, false}, - {CH4_PIN, BTN4_PIN, 0, false, false}, -}; - -void setup() -{ - pinMode(LED_PIN, OUTPUT); - pinMode(BTN1_PIN, INPUT_PULLUP); - pinMode(BTN2_PIN, INPUT_PULLUP); - pinMode(BTN3_PIN, INPUT_PULLUP); - pinMode(BTN4_PIN, INPUT_PULLUP); - pinMode(CH1_PIN, OUTPUT); - pinMode(CH2_PIN, OUTPUT); - pinMode(CH3_PIN, OUTPUT); - pinMode(CH4_PIN, OUTPUT); - Serial.begin(115200); - - // Register the config options - hostname_id = knx.config_register_string("Hostname", 20, String("sonoff")); - type_id = knx.config_register_options("Type", type_options, SONOFF_TYPE_BASIC); - - channels[0].status_ga_id = knx.config_register_ga("Channel 1 Status GA"); - channels[1].status_ga_id = knx.config_register_ga("Channel 2 Status GA", is_4ch_or_4ch_pro); - channels[2].status_ga_id = knx.config_register_ga("Channel 3 Status GA", is_4ch_or_4ch_pro); - channels[3].status_ga_id = knx.config_register_ga("Channel 4 Status GA", is_4ch_or_4ch_pro); - - knx.callback_register("Channel 1", channel_cb, &channels[0]); - knx.callback_register("Channel 2", channel_cb, &channels[1], is_4ch_or_4ch_pro); - knx.callback_register("Channel 3", channel_cb, &channels[2], is_4ch_or_4ch_pro); - knx.callback_register("Channel 4", channel_cb, &channels[3], is_4ch_or_4ch_pro); - - knx.feedback_register_bool("Channel 1 is on", &(channels[0].state)); - knx.feedback_register_action("Toogle channel 1", toggle_chan, &channels[0]); - knx.feedback_register_bool("Channel 2 is on", &(channels[1].state), is_4ch_or_4ch_pro); - knx.feedback_register_action("Toogle channel 2", toggle_chan, &channels[1], is_4ch_or_4ch_pro); - knx.feedback_register_bool("Channel 3 is on", &(channels[2].state), is_4ch_or_4ch_pro); - knx.feedback_register_action("Toogle channel 3", toggle_chan, &channels[2], is_4ch_or_4ch_pro); - knx.feedback_register_bool("Channel 4 is on", &(channels[3].state), is_4ch_or_4ch_pro); - knx.feedback_register_action("Toogle channel 4", toggle_chan, &channels[3], is_4ch_or_4ch_pro); - - knx.load(); - - // Init WiFi - WiFi.hostname(knx.config_get_string(hostname_id)); - WiFi.begin(ssid, pass); - - Serial.println(""); - Serial.print("[Connecting]"); - Serial.print(ssid); - - digitalWrite(LED_PIN, LOW); - while (WiFi.status() != WL_CONNECTED) { - digitalWrite(LED_PIN, HIGH); - delay(500); - Serial.print("."); - digitalWrite(LED_PIN, LOW); - } - digitalWrite(LED_PIN, HIGH); - - // Start knx - knx.start(); - - Serial.println(); - Serial.println("Connected to wifi"); - Serial.println(WiFi.localIP()); -} - -void loop() -{ - knx.loop(); - - // Check local buttons - check_button(&channels[0]); - if (is_4ch_or_4ch_pro()) - { - check_button(&channels[1]); - check_button(&channels[2]); - check_button(&channels[3]); - } - - delay(50); -} - -bool is_basic_or_s20() -{ - uint8_t type = knx.config_get_options(type_id); - return type == SONOFF_TYPE_BASIC || type == SONOFF_TYPE_S20; -} - -bool is_4ch_or_4ch_pro() -{ - uint8_t type = knx.config_get_options(type_id); - return type == SONOFF_TYPE_4CH ||type == SONOFF_TYPE_4CH_PRO; -} - -void check_button(sonoff_channel_t *chan) -{ - bool state_now = digitalRead(chan->btn_pin) == HIGH ? true : false; - if (state_now != chan->last_btn_state && state_now == LOW) - { - chan->state = !chan->state; - digitalWrite(chan->pin, chan->state ? HIGH : LOW); - knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); - } - chan->last_btn_state = state_now; -} - -void toggle_chan(void *arg) -{ - sonoff_channel_t *chan = (sonoff_channel_t *)arg; - chan->state = !chan->state; - digitalWrite(chan->pin, chan->state ? HIGH : LOW); - knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); -} - -void channel_cb(message_t const &msg, void *arg) -{ - sonoff_channel_t *chan = (sonoff_channel_t *)arg; - switch (msg.ct) - { - case KNX_CT_WRITE: - chan->state = msg.data[0]; - Serial.println(chan->state ? "Toggle on" : "Toggle off"); - digitalWrite(chan->pin, chan->state ? HIGH : LOW); - knx.write_1bit(knx.config_get_ga(chan->status_ga_id), chan->state); - break; - case KNX_CT_READ: - knx.answer_1bit(msg.received_on, chan->state); - } -} diff --git a/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino b/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino deleted file mode 100644 index bea5093f3..000000000 --- a/lib/esp-knx-ip-async-udp/examples/static-config/static-config.ino +++ /dev/null @@ -1,142 +0,0 @@ -/* - * This is an example showing a simple environment sensor based on a BME280 attached via I2C. - * It shows, how the library can used to statically configure a device without a webserver for config. - * This sketch was tested on a WeMos D1 mini - */ - -#include -#include - -// WiFi config here -const char* ssid = "myssid"; -const char* pass = "mypassword"; - -#define LED_PIN D4 -#define UPDATE_INTERVAL 10000 - -unsigned long next_change = 0; - -float last_temp = 0.0; -float last_hum = 0.0; -float last_pres = 0.0; - -Adafruit_BME280 bme; - -// Group addresses to send to (1/1/1, 1/1/2 and 1/1/3) -address_t temp_ga = knx.GA_to_address(1, 1, 1); -address_t hum_ga = knx.GA_to_address(1, 1, 2); -address_t pres_ga = knx.GA_to_address(1, 1, 3); - -void setup() { - pinMode(LED_PIN, OUTPUT); - Serial.begin(115200); - - callback_id_t temp_cb = knx.callback_register("Read Temperature", temp_cb); - callback_id_t hum_cb =knx.callback_register("Read Humidity", hum_cb); - callback_id_t pres_cb =knx.callback_register("Read Pressure", pres_cb); - - // Assign callbacks to group addresses (2/1/1, 2/1/2, 2/1/3) - knx.callback_assign(temp_cb, knx.GA_to_address(2, 1, 1)); - knx.callback_assign(hum_cb, knx.GA_to_address(2, 1, 2)); - knx.callback_assign(pres_cb, knx.GA_to_address(2, 1, 3)); - - // Set physical address (1.1.1) - knx.physical_address_set(knx.PA_to_address(1, 1, 1)); - - // Do not call knx.load() for static config, it will try to load config from EEPROM which we don't have here - - // Init sensor - if (!bme.begin(0x76)) { - Serial.println("Could not find a valid BME280 sensor, check wiring!"); - } - - // Init WiFi - WiFi.hostname("env"); - WiFi.begin(ssid, pass); - - Serial.println(""); - Serial.print("[Connecting]"); - Serial.print(ssid); - - digitalWrite(LED_PIN, LOW); - while (WiFi.status() != WL_CONNECTED) { - digitalWrite(LED_PIN, HIGH); - delay(250); - Serial.print("."); - digitalWrite(LED_PIN, LOW); - delay(250); - } - digitalWrite(LED_PIN, HIGH); - - // Start knx, disable webserver by passing nullptr - knx.start(nullptr); - - Serial.println(); - Serial.println("Connected to wifi"); - Serial.println(WiFi.localIP()); -} - -void loop() { - knx.loop(); - - unsigned long now = millis(); - - if (next_change < now) - { - next_change = now + UPDATE_INTERVAL; - - last_temp = bme.readTemperature(); - last_hum = bme.readHumidity(); - last_pres = bme.readPressure()/100.0f; - - Serial.print("T: "); - Serial.print(last_temp); - Serial.print("°C H: "); - Serial.print(last_hum); - Serial.print("% P: "); - Serial.print(last_pres); - Serial.println("hPa"); - - knx.write_2byte_float(temp_ga, last_temp); - knx.write_2byte_float(hum_ga, last_hum); - knx.write_2byte_float(pres_ga, last_pres); - } - - delay(50); -} - -void temp_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_temp); - break; - } - } -} - -void hum_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_hum); - break; - } - } -} - -void pres_cb(message_t const &msg, void *arg) -{ - switch (msg.ct) - { - case KNX_CT_READ: - { - knx.answer_2byte_float(msg.received_on, last_pres); - break; - } - } -} diff --git a/lib/esp-knx-ip-async-udp/keywords.txt b/lib/esp-knx-ip-async-udp/keywords.txt deleted file mode 100644 index bc4989bd4..000000000 --- a/lib/esp-knx-ip-async-udp/keywords.txt +++ /dev/null @@ -1,104 +0,0 @@ -# datatypes -address_t DATA_TYPE -message_t DATA_TYPE -callback_id_t DATA_TYPE -callback_assignment_id_t DATA_TYPE -option_entry_t DATA_TYPE -config_id_t DATA_TYPE -enable_condition_t DATA_TYPE -callback_fptr_t DATA_TYPE -feedback_action_fptr_t DATA_TYPE -knx_command_type_t DATA_TYPE - -# methods -setup KEYWORD2 -loop KEYWORD2 -GA_to_address KEYWORD2 -PA_to_address KEYWORD2 -callback_register KEYWORD2 -callback_assign KEYWORD2 -callback_deregister KEYWORD2 -callback_unassign KEYWORD2 -physical_address_set KEYWORD2 -physical_address_get KEYWORD2 -config_register_string KEYWORD2 -config_register_int KEYWORD2 -config_register_bool KEYWORD2 -config_register_options KEYWORD2 -config_register_ga KEYWORD2 -config_get_string KEYWORD2 -config_get_int KEYWORD2 -config_get_bool KEYWORD2 -config_get_options KEYWORD2 -config_get_ga KEYWORD2 -config_set_string KEYWORD2 -config_set_int KEYWORD2 -config_set_bool KEYWORD2 -config_set_options KEYWORD2 -config_set_ga KEYWORD2 -feedback_register_int KEYWORD2 -feedback_register_float KEYWORD2 -feedback_register_bool KEYWORD2 -feedback_register_action KEYWORD2 -send_1bit KEYWORD2 -send_2bit KEYWORD2 -send_4bit KEYWORD2 -send_1byte_int KEYWORD2 -send_1byte_uint KEYWORD2 -send_2byte_int KEYWORD2 -send_2byte_uint KEYWORD2 -send_2byte_float KEYWORD2 -send_3byte_time KEYWORD2 -send_3byte_time KEYWORD2 -send_3byte_date KEYWORD2 -send_3byte_date KEYWORD2 -send_3byte_color KEYWORD2 -send_3byte_color KEYWORD2 -send_4byte_int KEYWORD2 -send_4byte_uint KEYWORD2 -send_4byte_float KEYWORD2 -write_1bit KEYWORD2 -write_2bit KEYWORD2 -write_4bit KEYWORD2 -write_1byte_int KEYWORD2 -write_1byte_uint KEYWORD2 -write_2byte_int KEYWORD2 -write_2byte_uint KEYWORD2 -write_2byte_float KEYWORD2 -write_3byte_time KEYWORD2 -write_3byte_time KEYWORD2 -write_3byte_date KEYWORD2 -write_3byte_date KEYWORD2 -write_3byte_color KEYWORD2 -write_3byte_color KEYWORD2 -write_4byte_int KEYWORD2 -write_4byte_uint KEYWORD2 -write_4byte_float KEYWORD2 -answer_1bit KEYWORD2 -answer_2bit KEYWORD2 -answer_4bit KEYWORD2 -answer_1byte_int KEYWORD2 -answer_1byte_uint KEYWORD2 -answer_2byte_int KEYWORD2 -answer_2byte_uint KEYWORD2 -answer_2byte_float KEYWORD2 -answer_3byte_time KEYWORD2 -answer_3byte_time KEYWORD2 -answer_3byte_date KEYWORD2 -answer_3byte_date KEYWORD2 -answer_3byte_color KEYWORD2 -answer_3byte_color KEYWORD2 -answer_4byte_int KEYWORD2 -answer_4byte_uint KEYWORD2 -answer_4byte_float KEYWORD2 - -data_to_1byte_int KEYWORD 2 -data_to_2byte_int KEYWORD 2 -data_to_2byte_float KEYWORD 2 -data_to_4byte_float KEYWORD 2 -data_to_3byte_color KEYWORD 2 -data_to_3byte_time KEYWORD 2 -data_to_3byte_data KEYWORD 2 - -# constants -knx LITERAL1 \ No newline at end of file diff --git a/lib/esp-knx-ip-async-udp/library.properties b/lib/esp-knx-ip-async-udp/library.properties deleted file mode 100644 index ff2607bdc..000000000 --- a/lib/esp-knx-ip-async-udp/library.properties +++ /dev/null @@ -1,10 +0,0 @@ -name=ESP KNX IP Library -version=0.4 -author=Nico Weichbrodt -maintainer=Nico Weichbrodt -sentence=ESP8266 library for KNX/IP communication. -paragraph=Build your own IoT devices with KNX/IP connectivity! This library depends on the ESPAsyncUDP library. -category=Communication -url=https://github.com/envy/esp-knx-ip -architectures=esp8266 -includes=esp-knx-ip.h \ No newline at end of file From 8f689677a54076ede29e616b088e8ecdbfebfbdd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 18 Apr 2018 23:00:30 -0300 Subject: [PATCH 291/435] Update sonoff.h --- sonoff/sonoff.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 1695d1b68..04e3ab550 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -51,8 +51,6 @@ typedef unsigned long power_t; // Power (Relay) type #define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set #define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set #define MAX_RULE_SIZE 512 // Max number of characters in rules -#define MAX_KNX_GA 10 // Max number of KNX Group Addresses to read that can be set -#define MAX_KNX_CB 10 // Max number of KNX Group Addresses to write that can be set #define MODULE SONOFF_BASIC // [Module] Select default model From 8fde17564ee89d0538811968efffd2aec864f5b9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 00:55:46 -0300 Subject: [PATCH 292/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42fbc0dfc..c66413966 100644 --- a/README.md +++ b/README.md @@ -109,7 +109,7 @@ We can configure to send the value of temperature or humidity every teleperiod. ## Modifications to Sonoff-Tasmota ## -* Adding the file _/sonoff/xdrv_10_KNX.ino_ +* Adding the file _/sonoff/xdrv_11_KNX.ino_ * Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ * Add entries to the file _/sonoff/webserver.ino_ * Add entries to the file _/sonoff/sonoff.ino_ From bce8dfe98305c83462efb7d02be5f9ae87461620 Mon Sep 17 00:00:00 2001 From: ascillato Date: Thu, 19 Apr 2018 14:14:53 -0300 Subject: [PATCH 293/435] Update KNX Library Update KNX Library --- lib/ESPAsyncUDP-0.21/README.md | 12 - .../AsyncUDPClient/AsyncUDPClient.ino | 51 --- .../AsyncUDPMulticastServer.ino | 52 --- .../AsyncUDPServer/AsyncUDPServer.ino | 50 --- lib/ESPAsyncUDP-0.21/keywords.txt | 33 -- lib/ESPAsyncUDP-0.21/library.json | 17 - lib/ESPAsyncUDP-0.21/library.properties | 9 - lib/ESPAsyncUDP-0.21/src/AsyncUDP.cpp | 425 ------------------ lib/ESPAsyncUDP-0.21/src/ESPAsyncUDP.h | 130 ------ lib/ESPAsyncUDP-0.21/travis/common.sh | 23 - .../DPT.h | 0 .../LICENSE | 0 .../README.md | 15 +- .../esp-knx-ip-config.cpp | 0 .../esp-knx-ip-conversion.cpp | 0 .../esp-knx-ip-send.cpp | 4 +- .../esp-knx-ip-webserver.cpp | 0 .../esp-knx-ip.cpp | 17 +- .../esp-knx-ip.h | 6 +- .../environment-sensor/environment-sensor.ino | 0 .../examples/sonoff/sonoff.ino | 0 .../examples/static-config/static-config.ino | 0 .../keywords.txt | 0 .../library.properties | 6 +- 24 files changed, 19 insertions(+), 831 deletions(-) delete mode 100644 lib/ESPAsyncUDP-0.21/README.md delete mode 100644 lib/ESPAsyncUDP-0.21/examples/AsyncUDPClient/AsyncUDPClient.ino delete mode 100644 lib/ESPAsyncUDP-0.21/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino delete mode 100644 lib/ESPAsyncUDP-0.21/examples/AsyncUDPServer/AsyncUDPServer.ino delete mode 100644 lib/ESPAsyncUDP-0.21/keywords.txt delete mode 100644 lib/ESPAsyncUDP-0.21/library.json delete mode 100644 lib/ESPAsyncUDP-0.21/library.properties delete mode 100644 lib/ESPAsyncUDP-0.21/src/AsyncUDP.cpp delete mode 100644 lib/ESPAsyncUDP-0.21/src/ESPAsyncUDP.h delete mode 100644 lib/ESPAsyncUDP-0.21/travis/common.sh rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/DPT.h (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/LICENSE (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/README.md (77%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip-config.cpp (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip-conversion.cpp (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip-send.cpp (98%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip-webserver.cpp (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip.cpp (98%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/esp-knx-ip.h (99%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/examples/environment-sensor/environment-sensor.ino (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/examples/sonoff/sonoff.ino (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/examples/static-config/static-config.ino (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/keywords.txt (100%) rename lib/{esp-knx-ip-async-udp-0.4.0.15 => esp-knx-ip-0.5.0}/library.properties (60%) diff --git a/lib/ESPAsyncUDP-0.21/README.md b/lib/ESPAsyncUDP-0.21/README.md deleted file mode 100644 index 6568fa372..000000000 --- a/lib/ESPAsyncUDP-0.21/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# ESPAsyncUDP -_Library patched with the [PR #21](https://github.com/me-no-dev/ESPAsyncUDP/pull/21)_ - -Async UDP Library for ESP8266 Arduino [![Build Status](https://travis-ci.org/me-no-dev/ESPAsyncUDP.svg?branch=master)](https://travis-ci.org/me-no-dev/ESPAsyncUDP) - -[![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) - -This is a fully asynchronous UDP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP8266 MCUs. - -The library is easy to use and includes support for Unicast, Broadcast and Multicast environments - -Latest GIT version of ESP8266 Arduino might be required for this library to work diff --git a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPClient/AsyncUDPClient.ino b/lib/ESPAsyncUDP-0.21/examples/AsyncUDPClient/AsyncUDPClient.ino deleted file mode 100644 index cf528fe12..000000000 --- a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPClient/AsyncUDPClient.ino +++ /dev/null @@ -1,51 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.connect(IPAddress(192,168,1,100), 1234)) { - Serial.println("UDP connected"); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - //Send unicast - udp.print("Hello Server!"); - } -} - -void loop() -{ - delay(1000); - //Send broadcast on port 1234 - udp.broadcastTo("Anyone here?", 1234); -} diff --git a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino b/lib/ESPAsyncUDP-0.21/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino deleted file mode 100644 index bb3e69c9b..000000000 --- a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino +++ /dev/null @@ -1,52 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.listenMulticast(IPAddress(239,1,2,3), 1234)) { - Serial.print("UDP Listening on IP: "); - Serial.println(WiFi.localIP()); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - //Send multicast - udp.print("Hello!"); - } -} - -void loop() -{ - delay(1000); - //Send multicast - udp.print("Anyone here?"); -} diff --git a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPServer/AsyncUDPServer.ino b/lib/ESPAsyncUDP-0.21/examples/AsyncUDPServer/AsyncUDPServer.ino deleted file mode 100644 index fc12a7fc3..000000000 --- a/lib/ESPAsyncUDP-0.21/examples/AsyncUDPServer/AsyncUDPServer.ino +++ /dev/null @@ -1,50 +0,0 @@ -#include -#include "ESPAsyncUDP.h" - -const char * ssid = "***********"; -const char * password = "***********"; - -AsyncUDP udp; - -void setup() -{ - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.println("WiFi Failed"); - while(1) { - delay(1000); - } - } - if(udp.listen(1234)) { - Serial.print("UDP Listening on IP: "); - Serial.println(WiFi.localIP()); - udp.onPacket([](AsyncUDPPacket packet) { - Serial.print("UDP Packet Type: "); - Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); - Serial.print(", From: "); - Serial.print(packet.remoteIP()); - Serial.print(":"); - Serial.print(packet.remotePort()); - Serial.print(", To: "); - Serial.print(packet.localIP()); - Serial.print(":"); - Serial.print(packet.localPort()); - Serial.print(", Length: "); - Serial.print(packet.length()); - Serial.print(", Data: "); - Serial.write(packet.data(), packet.length()); - Serial.println(); - //reply to the client - packet.printf("Got %u bytes of data", packet.length()); - }); - } -} - -void loop() -{ - delay(1000); - //Send broadcast - udp.broadcast("Anyone here?"); -} diff --git a/lib/ESPAsyncUDP-0.21/keywords.txt b/lib/ESPAsyncUDP-0.21/keywords.txt deleted file mode 100644 index 67c0b97a7..000000000 --- a/lib/ESPAsyncUDP-0.21/keywords.txt +++ /dev/null @@ -1,33 +0,0 @@ -####################################### -# Syntax Coloring Map For Ultrasound -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -AsyncUDP KEYWORD1 -AsyncUDPPacket KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -connect KEYWORD2 -connected KEYWORD2 -listen KEYWORD2 -listenMulticast KEYWORD2 -close KEYWORD2 -write KEYWORD2 -broadcast KEYWORD2 -onPacket KEYWORD2 -data KEYWORD2 -length KEYWORD2 -localIP KEYWORD2 -localPort KEYWORD2 -remoteIP KEYWORD2 -remotePort KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### diff --git a/lib/ESPAsyncUDP-0.21/library.json b/lib/ESPAsyncUDP-0.21/library.json deleted file mode 100644 index fe300b6e6..000000000 --- a/lib/ESPAsyncUDP-0.21/library.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name":"ESPAsyncUDP", - "description":"Asynchronous UDP Library for ESP8266", - "keywords":"async,udp,server,client,multicast,broadcast", - "authors": - { - "name": "Hristo Gochkov", - "maintainer": true - }, - "repository": - { - "type": "git", - "url": "https://github.com/me-no-dev/ESPAsyncUDP.git" - }, - "frameworks": "arduino", - "platforms":"espressif" -} diff --git a/lib/ESPAsyncUDP-0.21/library.properties b/lib/ESPAsyncUDP-0.21/library.properties deleted file mode 100644 index 1aa6ef1ad..000000000 --- a/lib/ESPAsyncUDP-0.21/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=ESP Async UDP -version=1.0.0 -author=Me-No-Dev -maintainer=Me-No-Dev -sentence=Async UDP Library for ESP8266 -paragraph=Async UDP Library for ESP8266 -category=Other -url=https://github.com/me-no-dev/ESPAsyncUDP -architectures=* diff --git a/lib/ESPAsyncUDP-0.21/src/AsyncUDP.cpp b/lib/ESPAsyncUDP-0.21/src/AsyncUDP.cpp deleted file mode 100644 index 6d2423819..000000000 --- a/lib/ESPAsyncUDP-0.21/src/AsyncUDP.cpp +++ /dev/null @@ -1,425 +0,0 @@ -#include "Arduino.h" -#include "ESPAsyncUDP.h" - -extern "C" { -#include "user_interface.h" -#include "lwip/opt.h" -#include "lwip/inet.h" -#include "lwip/udp.h" -#include "lwip/igmp.h" -} - -AsyncUDPMessage::AsyncUDPMessage(size_t size) -{ - _index = 0; - if(size > 1460) { - size = 1460; - } - _size = size; - _buffer = (uint8_t *)malloc(size); -} - -AsyncUDPMessage::~AsyncUDPMessage() -{ - if(_buffer) { - free(_buffer); - } -} - -size_t AsyncUDPMessage::write(const uint8_t *data, size_t len) -{ - if(_buffer == NULL) { - return 0; - } - size_t s = space(); - if(len > s) { - len = s; - } - memcpy(_buffer + _index, data, len); - _index += len; - return len; -} - -size_t AsyncUDPMessage::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDPMessage::space() -{ - if(_buffer == NULL) { - return 0; - } - return _size - _index; -} - -uint8_t * AsyncUDPMessage::data() -{ - return _buffer; -} - -size_t AsyncUDPMessage::length() -{ - return _index; -} - -void AsyncUDPMessage::flush() -{ - _index = 0; -} - - -AsyncUDPPacket::AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len) -{ - _udp = udp; - _localIp = localIp; - _localPort = localPort; - _remoteIp = remoteIp; - _remotePort = remotePort; - _data = data; - _len = len; -} - -AsyncUDPPacket::~AsyncUDPPacket() -{ - -} - -uint8_t * AsyncUDPPacket::data() -{ - return _data; -} - -size_t AsyncUDPPacket::length() -{ - return _len; -} - -IPAddress AsyncUDPPacket::localIP() -{ - return IPAddress(_localIp->addr); -} - -uint16_t AsyncUDPPacket::localPort() -{ - return _localPort; -} - -IPAddress AsyncUDPPacket::remoteIP() -{ - return IPAddress(_remoteIp->addr); -} - -uint16_t AsyncUDPPacket::remotePort() -{ - return _remotePort; -} - -bool AsyncUDPPacket::isBroadcast() -{ - return _localIp->addr == 0xFFFFFFFF || _localIp->addr == (uint32_t)(0); -} - -bool AsyncUDPPacket::isMulticast() -{ - return ip_addr_ismulticast(_localIp); -} - -size_t AsyncUDPPacket::write(const uint8_t *data, size_t len) -{ - return _udp->writeTo(data, len, _remoteIp, _remotePort); -} - -size_t AsyncUDPPacket::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDPPacket::send(AsyncUDPMessage &message) -{ - return write(message.data(), message.length()); -} - - - -AsyncUDP::AsyncUDP() -{ - _pcb = NULL; - _connected = false; - _handler = NULL; -} - -AsyncUDP::~AsyncUDP() -{ - close(); -} - -AsyncUDP::operator bool() -{ - return _connected; -} - -bool AsyncUDP::connected() -{ - return _connected; -} - -void AsyncUDP::onPacket(AuPacketHandlerFunctionWithArg cb, void * arg) -{ - onPacket(std::bind(cb, arg, std::placeholders::_1)); -} - -void AsyncUDP::onPacket(AuPacketHandlerFunction cb) -{ - _handler = cb; -} - -void AsyncUDP::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) -{ - (void)upcb; // its unused, avoid warning - while(pb != NULL) { - if(_handler) { - uint8_t * data = (uint8_t*)((pb)->payload); - size_t len = pb->len; - - ip_hdr* iphdr = reinterpret_cast(data - UDP_HLEN - IP_HLEN); - ip_addr_t daddr; - daddr.addr = iphdr->dest.addr; - - udp_hdr* udphdr = reinterpret_cast(((uint8_t*)((pb)->payload)) - UDP_HLEN); - uint16_t dport = ntohs(udphdr->dest); - - AsyncUDPPacket packet(this, &daddr, dport, addr, port, data, len); - _handler(packet); - } - - pbuf * this_pb = pb; - pb = pb->next; - this_pb->next = NULL; - pbuf_free(this_pb); - } -} - -#if LWIP_VERSION_MAJOR == 1 -void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port) -#else -void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) -#endif -{ - reinterpret_cast(arg)->_recv(upcb, p, (ip_addr_t *)addr, port); -} - -bool AsyncUDP::listen(ip_addr_t *addr, uint16_t port) -{ - close(); - _pcb = udp_new(); - if(_pcb == NULL) { - return false; - } - err_t err = udp_bind(_pcb, addr, port); - if(err != ERR_OK) { - close(); - return false; - } - udp_recv(_pcb, &_s_recv, (void *) this); - _connected = true; - return true; -} - -bool AsyncUDP::listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl) -{ - close(); - if(!ip_addr_ismulticast(addr)) { - return false; - } - ip_addr_t multicast_if_addr; - struct ip_info ifIpInfo; - int mode = wifi_get_opmode(); - if(mode & STATION_MODE) { - wifi_get_ip_info(STATION_IF, &ifIpInfo); - multicast_if_addr.addr = ifIpInfo.ip.addr; - } else if (mode & SOFTAP_MODE) { - wifi_get_ip_info(SOFTAP_IF, &ifIpInfo); - multicast_if_addr.addr = ifIpInfo.ip.addr; - } else { - return false; - } - if (igmp_joingroup(&multicast_if_addr, addr)!= ERR_OK) { - return false; - } - if(!listen(IPADDR_ANY, port)) { - return false; - } -#if LWIP_VERSION_MAJOR == 1 - udp_set_multicast_netif_addr(_pcb, multicast_if_addr); -#else - udp_set_multicast_netif_addr(_pcb, &multicast_if_addr); -#endif - udp_set_multicast_ttl(_pcb, ttl); - ip_addr_copy(_pcb->remote_ip, *addr); - _pcb->remote_port = port; - return true; -} - -bool AsyncUDP::connect(ip_addr_t *addr, uint16_t port) -{ - close(); - _pcb = udp_new(); - if(_pcb == NULL) { - return false; - } - err_t err = udp_connect(_pcb, addr, port); - if(err != ERR_OK) { - close(); - return false; - } - udp_recv(_pcb, &_s_recv, (void *) this); - _connected = true; - return true; -} - -void AsyncUDP::close() -{ - if(_pcb != NULL) { - if(_connected) { - udp_disconnect(_pcb); - } - udp_remove(_pcb); - _connected = false; - _pcb = NULL; - } -} - -size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port) -{ - if(!_pcb && !connect(addr, port)) { - return 0; - } - if(len > 1460) { - len = 1460; - } - pbuf* pbt = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); - if(pbt != NULL) { - uint8_t* dst = reinterpret_cast(pbt->payload); - memcpy(dst, data, len); - err_t err = udp_sendto(_pcb, pbt, addr, port); - pbuf_free(pbt); - if(err < ERR_OK) { - return 0; - } - return len; - } - return 0; -} - -bool AsyncUDP::listen(const IPAddress addr, uint16_t port) -{ - ip_addr_t laddr; - laddr.addr = addr; - return listen(&laddr, port); -} - -bool AsyncUDP::listen(uint16_t port) -{ - return listen(IPAddress((uint32_t)INADDR_ANY), port); -} - -bool AsyncUDP::listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl) -{ - ip_addr_t laddr; - laddr.addr = addr; - return listenMulticast(&laddr, port, ttl); -} - -bool AsyncUDP::connect(const IPAddress addr, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = addr; - return connect(&daddr, port); -} - -size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = addr; - return writeTo(data, len, &daddr, port); -} - -size_t AsyncUDP::write(const uint8_t *data, size_t len) -{ - if(_pcb) - { - return writeTo(data, len, &(_pcb->remote_ip), _pcb->remote_port); - } -} - -size_t AsyncUDP::write(uint8_t data) -{ - return write(&data, 1); -} - -size_t AsyncUDP::broadcastTo(uint8_t *data, size_t len, uint16_t port) -{ - ip_addr_t daddr; - daddr.addr = 0xFFFFFFFF; - return writeTo(data, len, &daddr, port); -} - -size_t AsyncUDP::broadcastTo(const char * data, uint16_t port) -{ - return broadcastTo((uint8_t *)data, strlen(data), port); -} - -size_t AsyncUDP::broadcast(uint8_t *data, size_t len) -{ - if(_pcb->local_port != 0) { - return broadcastTo(data, len, _pcb->local_port); - } - return 0; -} - -size_t AsyncUDP::broadcast(const char * data) -{ - return broadcast((uint8_t *)data, strlen(data)); -} - - -size_t AsyncUDP::sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port) -{ - if(!message) { - return 0; - } - return writeTo(message.data(), message.length(), addr, port); -} - -size_t AsyncUDP::sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port) -{ - if(!message) { - return 0; - } - return writeTo(message.data(), message.length(), addr, port); -} - -size_t AsyncUDP::send(AsyncUDPMessage &message) -{ - if((!message) || (!_pcb)) { - return 0; - } - return writeTo(message.data(), message.length(), &(_pcb->remote_ip), _pcb->remote_port); -} - -size_t AsyncUDP::broadcastTo(AsyncUDPMessage &message, uint16_t port) -{ - if(!message) { - return 0; - } - return broadcastTo(message.data(), message.length(), port); -} - -size_t AsyncUDP::broadcast(AsyncUDPMessage &message) -{ - if(!message) { - return 0; - } - return broadcast(message.data(), message.length()); -} diff --git a/lib/ESPAsyncUDP-0.21/src/ESPAsyncUDP.h b/lib/ESPAsyncUDP-0.21/src/ESPAsyncUDP.h deleted file mode 100644 index 8e5a70b21..000000000 --- a/lib/ESPAsyncUDP-0.21/src/ESPAsyncUDP.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef ESPASYNCUDP_H -#define ESPASYNCUDP_H - -#include "IPAddress.h" -#include "Print.h" -#include -#include "lwip/init.h" - -class AsyncUDP; -class AsyncUDPPacket; -class AsyncUDPMessage; -struct udp_pcb; -struct pbuf; -#if LWIP_VERSION_MAJOR == 1 -struct ip_addr; -typedef struct ip_addr ip_addr_t; -#else -struct ip4_addr; -typedef struct ip4_addr ip_addr_t; -#endif - -class AsyncUDPMessage : public Print -{ -protected: - uint8_t *_buffer; - size_t _index; - size_t _size; -public: - AsyncUDPMessage(size_t size=1460); - virtual ~AsyncUDPMessage(); - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); - size_t space(); - uint8_t * data(); - size_t length(); - void flush(); - operator bool() - { - return _buffer != NULL; - } -}; - -class AsyncUDPPacket : public Print -{ -protected: - AsyncUDP *_udp; - ip_addr_t *_localIp; - uint16_t _localPort; - ip_addr_t *_remoteIp; - uint16_t _remotePort; - uint8_t *_data; - size_t _len; -public: - AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len); - virtual ~AsyncUDPPacket(); - - uint8_t * data(); - size_t length(); - bool isBroadcast(); - bool isMulticast(); - - IPAddress localIP(); - uint16_t localPort(); - IPAddress remoteIP(); - uint16_t remotePort(); - - size_t send(AsyncUDPMessage &message); - - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); -}; - -typedef std::function AuPacketHandlerFunction; -typedef std::function AuPacketHandlerFunctionWithArg; - -class AsyncUDP : public Print -{ -protected: - udp_pcb *_pcb; - bool _connected; - AuPacketHandlerFunction _handler; - - void _recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port); -#if LWIP_VERSION_MAJOR == 1 - static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port); -#else - static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); -#endif - -public: - AsyncUDP(); - virtual ~AsyncUDP(); - - void onPacket(AuPacketHandlerFunctionWithArg cb, void * arg=NULL); - void onPacket(AuPacketHandlerFunction cb); - - bool listen(ip_addr_t *addr, uint16_t port); - bool listen(const IPAddress addr, uint16_t port); - bool listen(uint16_t port); - - bool listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl=1); - bool listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl=1); - - bool connect(ip_addr_t *addr, uint16_t port); - bool connect(const IPAddress addr, uint16_t port); - - void close(); - - size_t writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port); - size_t writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port); - size_t write(const uint8_t *data, size_t len); - size_t write(uint8_t data); - - size_t broadcastTo(uint8_t *data, size_t len, uint16_t port); - size_t broadcastTo(const char * data, uint16_t port); - size_t broadcast(uint8_t *data, size_t len); - size_t broadcast(const char * data); - - size_t sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port); - size_t sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port); - size_t send(AsyncUDPMessage &message); - - size_t broadcastTo(AsyncUDPMessage &message, uint16_t port); - size_t broadcast(AsyncUDPMessage &message); - - bool connected(); - operator bool(); -}; - -#endif diff --git a/lib/ESPAsyncUDP-0.21/travis/common.sh b/lib/ESPAsyncUDP-0.21/travis/common.sh deleted file mode 100644 index 57bede343..000000000 --- a/lib/ESPAsyncUDP-0.21/travis/common.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/bash - -function build_sketches() -{ - local arduino=$1 - local srcpath=$2 - local platform=$3 - local sketches=$(find $srcpath -name *.ino) - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - if [[ -f "$sketchdir/.$platform.skip" ]]; then - echo -e "\n\n ------------ Skipping $sketch ------------ \n\n"; - continue - fi - echo -e "\n\n ------------ Building $sketch ------------ \n\n"; - $arduino --verify $sketch; - local result=$? - if [ $result -ne 0 ]; then - echo "Build failed ($1)" - return $result - fi - done -} diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/DPT.h b/lib/esp-knx-ip-0.5.0/DPT.h similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/DPT.h rename to lib/esp-knx-ip-0.5.0/DPT.h diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/LICENSE b/lib/esp-knx-ip-0.5.0/LICENSE similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/LICENSE rename to lib/esp-knx-ip-0.5.0/LICENSE diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/README.md b/lib/esp-knx-ip-0.5.0/README.md similarity index 77% rename from lib/esp-knx-ip-async-udp-0.4.0.15/README.md rename to lib/esp-knx-ip-0.5.0/README.md index b18b50d6b..a93c09192 100644 --- a/lib/esp-knx-ip-async-udp-0.4.0.15/README.md +++ b/lib/esp-knx-ip-0.5.0/README.md @@ -3,19 +3,6 @@ This is a library for the ESP8266 to enable KNXnet/IP communication. It uses UDP multicast on 224.0.23.12:3671. It is intended to be used with the Arduino platform for the ESP8266. -## Prerequisities / Dependencies ## - -* You need version 2.4.0 of the esp8266 board libraries. - * I only tested with lwip v1.4. v2 might work, you need to test yourself. -* You need the [ESPAsyncUDP](https://github.com/me-no-dev/ESPAsyncUDP) library. -* You need a KNXnet/IP **router**. A gateway will **not** work. Alternatively use [knxd](https://github.com/knxd/knxd). - -## Caveats ## - -Receiving packets should work immediately. - -Sending sometimes only works after a substantial amount of time (max 5 minutes in my experiments). In my case, this was fixed by disabling IGMP snooping on the switch(es). - ## How to use ## The library is under development. API may change multiple times in the future. @@ -104,4 +91,4 @@ Simply visit the IP of your ESP with a webbrowser. You can configure the followi * Which group address should trigger which callback * Which group address are to be used by the program (e.g. for status replies) -The configuration is dynamically generated from the code. \ No newline at end of file +The configuration is dynamically generated from the code. diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-config.cpp b/lib/esp-knx-ip-0.5.0/esp-knx-ip-config.cpp similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-config.cpp rename to lib/esp-knx-ip-0.5.0/esp-knx-ip-config.cpp diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-conversion.cpp b/lib/esp-knx-ip-0.5.0/esp-knx-ip-conversion.cpp similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-conversion.cpp rename to lib/esp-knx-ip-0.5.0/esp-knx-ip-conversion.cpp diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-send.cpp b/lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp similarity index 98% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-send.cpp rename to lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp index 1244fc50a..72459f922 100644 --- a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-send.cpp +++ b/lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp @@ -73,7 +73,9 @@ void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t da DEBUG_PRINTLN(F("")); #endif - udp.writeTo(buf, len, MULTICAST_IP, MULTICAST_PORT); + udp.beginPacketMulticast(MULTICAST_IP, MULTICAST_PORT, WiFi.localIP()); + udp.write(buf, len); + udp.endPacket(); } void ESPKNXIP::send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit) diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-webserver.cpp b/lib/esp-knx-ip-0.5.0/esp-knx-ip-webserver.cpp similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip-webserver.cpp rename to lib/esp-knx-ip-0.5.0/esp-knx-ip-webserver.cpp diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.cpp b/lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp similarity index 98% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.cpp rename to lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp index 35b9c5014..b572333b9 100644 --- a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.cpp +++ b/lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp @@ -96,10 +96,7 @@ void ESPKNXIP::__start() server->begin(); } - udp.listenMulticast(MULTICAST_IP, MULTICAST_PORT); - udp.onPacket([this](AsyncUDPPacket &packet) { - DEBUG_PRINTLN("got packet"); - __loop_knx(packet); }); + udp.beginMulticast(WiFi.localIP(), MULTICAST_IP, MULTICAST_PORT); } void ESPKNXIP::save_to_eeprom() @@ -514,6 +511,7 @@ feedback_id_t ESPKNXIP::feedback_register_action(String name, feedback_action_fp void ESPKNXIP::loop() { + __loop_knx(); if (server != nullptr) { __loop_webserver(); @@ -525,9 +523,9 @@ void ESPKNXIP::__loop_webserver() server->handleClient(); } -void ESPKNXIP::__loop_knx(AsyncUDPPacket &packet) +void ESPKNXIP::__loop_knx() { - size_t read = packet.length(); + int read = udp.parsePacket(); if (!read) { return; @@ -536,11 +534,14 @@ void ESPKNXIP::__loop_knx(AsyncUDPPacket &packet) DEBUG_PRINT(F("LEN: ")); DEBUG_PRINTLN(read); - uint8_t *buf = packet.data(); + uint8_t buf[read]; + + udp.read(buf, read); + udp.flush(); DEBUG_PRINT(F("Got packet:")); #ifdef ESP_KNX_DEBUG - for (size_t i = 0; i < read; ++i) + for (int i = 0; i < read; ++i) { DEBUG_PRINT(F(" 0x")); DEBUG_PRINT(buf[i], 16); diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.h b/lib/esp-knx-ip-0.5.0/esp-knx-ip.h similarity index 99% rename from lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.h rename to lib/esp-knx-ip-0.5.0/esp-knx-ip.h index 86e02c5e8..538264b3e 100644 --- a/lib/esp-knx-ip-async-udp-0.4.0.15/esp-knx-ip.h +++ b/lib/esp-knx-ip-0.5.0/esp-knx-ip.h @@ -45,7 +45,7 @@ #include "Arduino.h" #include #include -#include +#include #include #include "DPT.h" @@ -509,7 +509,7 @@ class ESPKNXIP { private: void __start(); - void __loop_knx(AsyncUDPPacket &packet); + void __loop_knx(); // Webserver functions void __loop_webserver(); @@ -544,7 +544,7 @@ class ESPKNXIP { ESP8266WebServer *server; address_t physaddr; - AsyncUDP udp; + WiFiUDP udp; callback_assignment_id_t registered_callback_assignments; callback_assignment_id_t free_callback_assignment_slots; diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/examples/environment-sensor/environment-sensor.ino b/lib/esp-knx-ip-0.5.0/examples/environment-sensor/environment-sensor.ino similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/examples/environment-sensor/environment-sensor.ino rename to lib/esp-knx-ip-0.5.0/examples/environment-sensor/environment-sensor.ino diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/examples/sonoff/sonoff.ino b/lib/esp-knx-ip-0.5.0/examples/sonoff/sonoff.ino similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/examples/sonoff/sonoff.ino rename to lib/esp-knx-ip-0.5.0/examples/sonoff/sonoff.ino diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/examples/static-config/static-config.ino b/lib/esp-knx-ip-0.5.0/examples/static-config/static-config.ino similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/examples/static-config/static-config.ino rename to lib/esp-knx-ip-0.5.0/examples/static-config/static-config.ino diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/keywords.txt b/lib/esp-knx-ip-0.5.0/keywords.txt similarity index 100% rename from lib/esp-knx-ip-async-udp-0.4.0.15/keywords.txt rename to lib/esp-knx-ip-0.5.0/keywords.txt diff --git a/lib/esp-knx-ip-async-udp-0.4.0.15/library.properties b/lib/esp-knx-ip-0.5.0/library.properties similarity index 60% rename from lib/esp-knx-ip-async-udp-0.4.0.15/library.properties rename to lib/esp-knx-ip-0.5.0/library.properties index ff2607bdc..57cad993c 100644 --- a/lib/esp-knx-ip-async-udp-0.4.0.15/library.properties +++ b/lib/esp-knx-ip-0.5.0/library.properties @@ -1,10 +1,10 @@ name=ESP KNX IP Library -version=0.4 +version=0.5 author=Nico Weichbrodt maintainer=Nico Weichbrodt sentence=ESP8266 library for KNX/IP communication. -paragraph=Build your own IoT devices with KNX/IP connectivity! This library depends on the ESPAsyncUDP library. +paragraph=Build your own IoT devices with KNX/IP connectivity! category=Communication url=https://github.com/envy/esp-knx-ip architectures=esp8266 -includes=esp-knx-ip.h \ No newline at end of file +includes=esp-knx-ip.h From 865dae4d574b178111e5dfbfac57cff19a4fca79 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 14:36:46 -0300 Subject: [PATCH 294/435] Update README.md --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index c66413966..294141be1 100644 --- a/README.md +++ b/README.md @@ -26,14 +26,11 @@ Several home automation systems have KNX support. For example, [Home Assistant]( If you use the ETS (KNX Configurator Software) you can add any Sonoff Tasmota KNX as a dummy device. -## Requirements ## +## Requirement ## -* [ESP KNX IP Library (async-udp branch)](https://github.com/envy/esp-knx-ip/tree/async-udp) -* [ESPAsyncUDP Library](https://github.com/me-no-dev/ESPAsyncUDP). This Library is used by ESP KNX IP Library. +* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip) -A copy of both libraries is also available at: -* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-async-udp -* https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/ESPAsyncUDP-master +A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0) ## Usage Examples ## From 4c918a28e3306ef8941bd78040003cbd71f68860 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 14:37:54 -0300 Subject: [PATCH 295/435] Update xdrv_11_knx.ino --- sonoff/xdrv_11_knx.ino | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 734c22c54..477321705 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -21,9 +21,8 @@ /*********************************************************************************************\ * KNX support * - * Using libraries: - * ESP KNX IP library (async-udp branch) (https://github.com/envy/esp-knx-ip/tree/async-udp) - * ESPAsyncUDP library (https://github.com/me-no-dev/ESPAsyncUDP) + * Using library: + * ESP KNX IP library (https://github.com/envy/esp-knx-ip) Constants in sonoff.h ----------------------- @@ -870,8 +869,6 @@ boolean Xdrv11(byte function) break; case FUNC_LOOP: knx.loop(); // Process knx events - // It is not used by the actual config of asyncUDP branch of ESP-KNX-IP Library, - // but is left here for compatibility with upcoming features of ESP-KNX-IP Library break; // case FUNC_COMMAND: // result = KNXCommand(); From 2d8c787c5547a2e9bbc5964d5b1097cd6fd91152 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 15:19:05 -0300 Subject: [PATCH 296/435] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 294141be1..bcc4525f2 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,8 @@ If you use the ETS (KNX Configurator Software) you can add any Sonoff Tasmota KN A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0) +It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. + ## Usage Examples ## There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on _Configure Module Menu_. From 51c5adfda419494dc09b547e96b52712a6211c76 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 16:02:33 -0300 Subject: [PATCH 297/435] Update xdrv_11_knx.ino --- sonoff/xdrv_11_knx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 477321705..76fc1cf0c 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -21,7 +21,7 @@ /*********************************************************************************************\ * KNX support * - * Using library: + * Using libraries: * ESP KNX IP library (https://github.com/envy/esp-knx-ip) Constants in sonoff.h From 4d399f77b4d818a35cd26281b9b7560dfdf83e79 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 16:04:12 -0300 Subject: [PATCH 298/435] Update xdrv_11_knx.ino --- sonoff/xdrv_11_knx.ino | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 76fc1cf0c..6906a7686 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -20,9 +20,6 @@ #ifdef USE_KNX /*********************************************************************************************\ * KNX support - * - * Using libraries: - * ESP KNX IP library (https://github.com/envy/esp-knx-ip) Constants in sonoff.h ----------------------- @@ -33,7 +30,6 @@ Constants in sonoff.h #define MAX_CALLBACK_ASSIGNMENTS 10 #define MAX_CALLBACKS 10 Both to MAX_KNX_CB - Variables in settings.h ----------------------- @@ -46,12 +42,12 @@ uint16_t Settings.knx_CB_addr[MAX_KNX_CB] Group address to write byte Settings.knx_GA_param[MAX_KNX_GA] Type of Input (relay changed, button pressed, sensor read) byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, toggle relay, reply sensor value) +//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library + // when an action is requested by another KNX Device + \*********************************************************************************************/ -#include - -//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library - // when an action is requested by another KNX Device +#include // ESP KNX IP library (https://github.com/envy/esp-knx-ip) address_t KNX_physs_addr; // Physical KNX address of this device address_t KNX_addr; // KNX Address converter variable From dcbcffecfe5369bcfa776713253e8e4adc804a98 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 16:05:25 -0300 Subject: [PATCH 299/435] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 799cff275..6ab966186 100644 --- a/README.md +++ b/README.md @@ -28,9 +28,7 @@ If you use the ETS (KNX Configurator Software) you can add any Sonoff Tasmota KN ## Requirement ## -* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip) - -A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0) +* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0) It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. From 57b6090729fd2f4908640101b6728b8ce4a017d7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 19 Apr 2018 16:06:14 -0300 Subject: [PATCH 300/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6ab966186..2b056a618 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ If you use the ETS (KNX Configurator Software) you can add any Sonoff Tasmota KN ## Requirement ## -* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0) +* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0). It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. From 12a4579b687f78d55a6634f29fc051b6866d6fdb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 23 Apr 2018 03:12:40 -0300 Subject: [PATCH 301/435] Create stale.yml Configuration for probot-stale --- .github/stale.yml | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 .github/stale.yml diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 000000000..d93d257f4 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,56 @@ +# Configuration for probot-stale - Activate from https://github.com/apps/stale +# +# Probot-stale Repository: https://github.com/probot/stale + +# Number of days of inactivity before an Issue or Pull Request becomes stale +daysUntilStale: 120 + +# Number of days of inactivity before a stale Issue or Pull Request is closed. +# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. +daysUntilClose: 14 + +# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable +exemptLabels: + - pinned + - security + +# Set to true to ignore issues in a project (defaults to false) +exemptProjects: false + +# Set to true to ignore issues in a milestone (defaults to false) +exemptMilestones: false + +# Label to use when marking as stale +staleLabel: stale + +# Comment to post when marking as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. + +# Comment to post when removing the stale label. +# unmarkComment: > +# Your comment here. + +# Comment to post when closing a stale Issue or Pull Request. +closeComment: > + This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. + +# Limit the number of actions per hour, from 1-30. Default is 30 +limitPerRun: 30 + +# Limit to only `issues` or `pulls` +# only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed From 3023b1b165f22edb0b30e80f83348202ef5e2bbe Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 23 Apr 2018 12:25:04 -0300 Subject: [PATCH 302/435] Update stale.yml --- .github/stale.yml | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index d93d257f4..43d5e77f3 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,7 +1,3 @@ -# Configuration for probot-stale - Activate from https://github.com/apps/stale -# -# Probot-stale Repository: https://github.com/probot/stale - # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 120 @@ -13,6 +9,8 @@ daysUntilClose: 14 exemptLabels: - pinned - security + - enhancement + - bug # Set to true to ignore issues in a project (defaults to false) exemptProjects: false @@ -28,7 +26,6 @@ markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. - # Comment to post when removing the stale label. # unmarkComment: > # Your comment here. @@ -36,21 +33,8 @@ markComment: > # Comment to post when closing a stale Issue or Pull Request. closeComment: > This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. - # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 30 # Limit to only `issues` or `pulls` -# only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed +only: issues From 42caae8e8a1c7b1b2e4399b7215c365fa7346732 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 23 Apr 2018 12:58:24 -0300 Subject: [PATCH 303/435] Update stale.yml --- .github/stale.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.github/stale.yml b/.github/stale.yml index 43d5e77f3..2ff6f786e 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,3 +1,7 @@ +# Configuration for probot-stale - Activate from https://github.com/apps/stale +# +# Probot-stale Repository: https://github.com/probot/stale + # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 120 @@ -26,6 +30,7 @@ markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. + # Comment to post when removing the stale label. # unmarkComment: > # Your comment here. @@ -33,8 +38,21 @@ markComment: > # Comment to post when closing a stale Issue or Pull Request. closeComment: > This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. + # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 30 # Limit to only `issues` or `pulls` only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed From bbf9b8432a963bbca9d937f5fc5e2d00e21fa0ba Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 29 Apr 2018 02:04:25 -0300 Subject: [PATCH 304/435] Fix Bug on KNX Driver -Solved BUG on Console LOG that informs incorrect sensor name. This also made that if humidity was selected, it made Tasmota Crash. --- sonoff/xdrv_11_knx.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 7084973b9..f4df76d53 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -548,7 +548,7 @@ void KnxSensor(byte sensor_type, float value) knx.write_2byte_float(KNX_addr, value); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), - device_param_ga[sensor_type], + device_param_ga[sensor_type-1], KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); AddLog(LOG_LEVEL_INFO); From c8a2494631671d602bfb4a7960291e29847239ef Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 29 Apr 2018 03:44:01 -0300 Subject: [PATCH 305/435] Fix Bug to show all available toggle options Fix Bug to show all available toggle options --- sonoff/xdrv_11_knx.ino | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index f4df76d53..a2d5acf5c 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -741,9 +741,15 @@ void HandleKNXConfiguration() page.replace(F("GAarea"), F("CB_AREA")); page.replace(F("GAfdef"), F("CB_FDEF")); page += FPSTR(HTTP_FORM_KNX4); + + byte j; for (byte i = 0; i < KNX_MAX_device_param ; i++) { - if ( device_param[i].show ) + // Check How many Relays are available and add: RelayX and TogleRelayX + if ( (i > 8) && (i < 16) ) { j=i-8; } else { j=i; } + if ( i == 8 ) { j = 0; } + + if ( device_param[j].show ) { page += FPSTR(HTTP_FORM_KNX_OPT); page.replace(F("{vop}"), String(device_param[i].type)); From 63b9b5454f141a5cfd18d94d0e21b0852a5ca352 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 29 Apr 2018 18:11:11 -0300 Subject: [PATCH 306/435] Update xdrv_11_knx.ino --- sonoff/xdrv_11_knx.ino | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index bad01ade9..3853284a2 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -20,6 +20,9 @@ #ifdef USE_KNX /*********************************************************************************************\ * KNX support + * + * Using libraries: + * ESP KNX IP library (https://github.com/envy/esp-knx-ip) Constants in sonoff.h ----------------------- @@ -30,6 +33,7 @@ Constants in sonoff.h #define MAX_CALLBACK_ASSIGNMENTS 10 #define MAX_CALLBACKS 10 Both to MAX_KNX_CB + Variables in settings.h ----------------------- @@ -42,12 +46,12 @@ uint16_t Settings.knx_CB_addr[MAX_KNX_CB] Group address to write byte Settings.knx_GA_param[MAX_KNX_GA] Type of Input (relay changed, button pressed, sensor read) byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, toggle relay, reply sensor value) -//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library - // when an action is requested by another KNX Device - \*********************************************************************************************/ -#include // ESP KNX IP library (https://github.com/envy/esp-knx-ip) +#include + +//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library + // when an action is requested by another KNX Device address_t KNX_physs_addr; // Physical KNX address of this device address_t KNX_addr; // KNX Address converter variable @@ -544,7 +548,7 @@ void KnxSensor(byte sensor_type, float value) knx.write_2byte_float(KNX_addr, value); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), - device_param_ga[sensor_type-1], + device_param_ga[sensor_type -1], KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); AddLog(LOG_LEVEL_INFO); @@ -737,14 +741,12 @@ void HandleKNXConfiguration() page.replace(F("GAarea"), F("CB_AREA")); page.replace(F("GAfdef"), F("CB_FDEF")); page += FPSTR(HTTP_FORM_KNX4); - byte j; for (byte i = 0; i < KNX_MAX_device_param ; i++) { // Check How many Relays are available and add: RelayX and TogleRelayX - if ( (i > 8) && (i < 16) ) { j=i-8; } else { j=i; } + if ( (i > 8) && (i < 16) ) { j=i-8; } else { j=i; } if ( i == 8 ) { j = 0; } - if ( device_param[j].show ) { page += FPSTR(HTTP_FORM_KNX_OPT); From 0b62195a0a5f3b51e0f3f5af83d673d13cce66b0 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 1 May 2018 20:25:34 -0300 Subject: [PATCH 307/435] Bug Fixed on Toggle Relay Bug Fixed on Toggle Relay --- sonoff/xdrv_11_knx.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 3853284a2..ccae68f0a 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -355,7 +355,7 @@ bool KNX_CONFIG_NOT_MATCH() if ( (i < 8) || (i > 15) ) // check relays and sensors (i from 8 to 16 are toggle relays parameters) { if ( KNX_CB_Search(i+1) != KNX_Empty ) { return true; } - if ( KNX_CB_Search(i+8) != KNX_Empty ) { return true; } + if ( KNX_CB_Search(i+9) != KNX_Empty ) { return true; } } } } @@ -520,7 +520,7 @@ void KnxSendButtonPower(byte key, byte device, byte state) knx.write_1bit(KNX_addr, !(state == 0)); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), - device_param_ga[device + 8], !(state == 0), + device_param_ga[device + 7], !(state == 0), KNX_addr.ga.area, KNX_addr.ga.line, KNX_addr.ga.member); AddLog(LOG_LEVEL_INFO); From ea202731bb60908c1ab27815c23443e5cae5b96e Mon Sep 17 00:00:00 2001 From: ascillato Date: Wed, 2 May 2018 00:32:29 -0300 Subject: [PATCH 308/435] Add Tasmota Display --- COPYFILES.BAT | 35 + lib/Adafruit_GFX-1.2.2.07/.gitignore | 2 + lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp | 1348 +++++++++++++++++ lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h | 211 +++ lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp | 336 ++++ lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h | 80 + .../Adafruit_SPITFT_Macros.h | 114 ++ .../Fonts/FreeMono12pt7b.h | 227 +++ .../Fonts/FreeMono18pt7b.h | 363 +++++ .../Fonts/FreeMono24pt7b.h | 577 +++++++ .../Fonts/FreeMono9pt7b.h | 176 +++ .../Fonts/FreeMonoBold12pt7b.h | 250 +++ .../Fonts/FreeMonoBold18pt7b.h | 423 ++++++ .../Fonts/FreeMonoBold24pt7b.h | 672 ++++++++ .../Fonts/FreeMonoBold9pt7b.h | 189 +++ .../Fonts/FreeMonoBoldOblique12pt7b.h | 269 ++++ .../Fonts/FreeMonoBoldOblique18pt7b.h | 460 ++++++ .../Fonts/FreeMonoBoldOblique24pt7b.h | 742 +++++++++ .../Fonts/FreeMonoBoldOblique9pt7b.h | 203 +++ .../Fonts/FreeMonoOblique12pt7b.h | 248 +++ .../Fonts/FreeMonoOblique18pt7b.h | 398 +++++ .../Fonts/FreeMonoOblique24pt7b.h | 643 ++++++++ .../Fonts/FreeMonoOblique9pt7b.h | 187 +++ .../Fonts/FreeSans12pt7b.h | 270 ++++ .../Fonts/FreeSans18pt7b.h | 452 ++++++ .../Fonts/FreeSans24pt7b.h | 727 +++++++++ .../Fonts/FreeSans9pt7b.h | 201 +++ .../Fonts/FreeSansBold12pt7b.h | 288 ++++ .../Fonts/FreeSansBold18pt7b.h | 481 ++++++ .../Fonts/FreeSansBold24pt7b.h | 784 ++++++++++ .../Fonts/FreeSansBold9pt7b.h | 208 +++ .../Fonts/FreeSansBoldOblique12pt7b.h | 317 ++++ .../Fonts/FreeSansBoldOblique18pt7b.h | 545 +++++++ .../Fonts/FreeSansBoldOblique24pt7b.h | 893 +++++++++++ .../Fonts/FreeSansBoldOblique9pt7b.h | 227 +++ .../Fonts/FreeSansOblique12pt7b.h | 302 ++++ .../Fonts/FreeSansOblique18pt7b.h | 518 +++++++ .../Fonts/FreeSansOblique24pt7b.h | 840 ++++++++++ .../Fonts/FreeSansOblique9pt7b.h | 220 +++ .../Fonts/FreeSerif12pt7b.h | 259 ++++ .../Fonts/FreeSerif18pt7b.h | 429 ++++++ .../Fonts/FreeSerif24pt7b.h | 690 +++++++++ .../Fonts/FreeSerif9pt7b.h | 195 +++ .../Fonts/FreeSerifBold12pt7b.h | 271 ++++ .../Fonts/FreeSerifBold18pt7b.h | 462 ++++++ .../Fonts/FreeSerifBold24pt7b.h | 759 ++++++++++ .../Fonts/FreeSerifBold9pt7b.h | 202 +++ .../Fonts/FreeSerifBoldItalic12pt7b.h | 292 ++++ .../Fonts/FreeSerifBoldItalic18pt7b.h | 500 ++++++ .../Fonts/FreeSerifBoldItalic24pt7b.h | 793 ++++++++++ .../Fonts/FreeSerifBoldItalic9pt7b.h | 215 +++ .../Fonts/FreeSerifItalic12pt7b.h | 271 ++++ .../Fonts/FreeSerifItalic18pt7b.h | 450 ++++++ .../Fonts/FreeSerifItalic24pt7b.h | 737 +++++++++ .../Fonts/FreeSerifItalic9pt7b.h | 202 +++ lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h | 131 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h | 123 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b | 130 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h | 474 ++++++ lib/Adafruit_GFX-1.2.2.07/README.md | 31 + .../fontconvert/Makefile | 12 + .../fontconvert/fontconvert.c | 284 ++++ .../fontconvert/fontconvert_win.md | 88 ++ .../fontconvert/makefonts.sh | 38 + lib/Adafruit_GFX-1.2.2.07/gfxfont.h | 24 + lib/Adafruit_GFX-1.2.2.07/glcdfont.c | 276 ++++ lib/Adafruit_GFX-1.2.2.07/library.properties | 9 + lib/Adafruit_GFX-1.2.2.07/license.txt | 24 + .../Adafruit_LEDBackpack.cpp | 672 ++++++++ .../Adafruit_LEDBackpack.h | 171 +++ lib/Adafruit_LED_Backpack-1.1.6/README.md | 30 + lib/Adafruit_LED_Backpack-1.1.6/README.txt | 26 + .../examples/HT16K33/HT16K33.ino | 55 + .../examples/bargraph24/bargraph24.ino | 65 + .../examples/bicolor8x8/bicolor8x8.pde | 122 ++ .../clock_sevenseg_ds1307.ino | 178 +++ .../clock_sevenseg_gps/clock_sevenseg_gps.ino | 159 ++ .../examples/matrix16x8/matrix16x8.ino | 133 ++ .../examples/matrix8x8/matrix8x8.ino | 120 ++ .../minimatrix16x8/minimatrix16x8.ino | 123 ++ .../examples/quadalphanum/quadalphanum.ino | 73 + .../quadalphanum_mini/quadalphanum_mini.ino | 72 + .../examples/roboface/roboface.pde | 251 +++ .../examples/sevenseg/sevenseg.ino | 81 + .../examples/wavface/wavface.pde | 336 ++++ .../examples/wavface/wavs/beware_i.wav | Bin 0 -> 20802 bytes .../examples/wavface/wavs/ihunger.wav | Bin 0 -> 10258 bytes .../examples/wavface/wavs/run_cowd.wav | Bin 0 -> 16096 bytes .../library.properties | 9 + lib/Adafruit_LED_Backpack-1.1.6/license.txt | 21 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../Adafruit_SSD1306.cpp | 729 +++++++++ lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h | 186 +++ lib/Adafruit_SSD1306-1.1.2/README.md | 32 + lib/Adafruit_SSD1306-1.1.2/README.txt | 24 + .../ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino | 375 +++++ .../ssd1306_128x32_spi/ssd1306_128x32_spi.ino | 368 +++++ .../ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino | 375 +++++ .../ssd1306_128x64_spi/ssd1306_128x64_spi.ino | 368 +++++ lib/Adafruit_SSD1306-1.1.2/library.properties | 9 + lib/Adafruit_SSD1306-1.1.2/license.txt | 26 + .../LiquidCrystal_I2C.cpp | 315 ++++ .../LiquidCrystal_I2C.h | 126 ++ .../LiquidCrystal_I2C.o | Bin 0 -> 41564 bytes lib/LiquidCrystal_I2C-1.1.3/README.md | 2 + .../examples/CustomChars/CustomChars.pde | 70 + .../examples/HelloWorld/HelloWorld.pde | 28 + .../examples/SerialDisplay/SerialDisplay.pde | 34 + lib/LiquidCrystal_I2C-1.1.3/keywords.txt | 46 + lib/LiquidCrystal_I2C-1.1.3/library.json | 15 + .../library.properties | 9 + lib/TasmotaTFT-1.0.1/README.txt | 21 + .../examples/graphicstest/graphicstest.ino | 360 +++++ lib/TasmotaTFT-1.0.1/keywords.txt | 41 + lib/TasmotaTFT-1.0.1/library.json | 15 + lib/TasmotaTFT-1.0.1/library.properties | 9 + lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp | 616 ++++++++ lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h | 137 ++ platformio.ini | 109 +- sonoff/settings.h | 2 +- sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 2 +- sonoff/user_config.h | 48 +- sonoff/xdrv_06_display.ino | 1096 ++++++++++++++ sonoff/xdrv_09_timers.ino | 2 +- sonoff/xdrv_11_knx.ino | 9 +- sonoff/xsns_14_sht3x.ino | 2 +- 128 files changed, 32107 insertions(+), 67 deletions(-) create mode 100644 COPYFILES.BAT create mode 100644 lib/Adafruit_GFX-1.2.2.07/.gitignore create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/README.md create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh create mode 100644 lib/Adafruit_GFX-1.2.2.07/gfxfont.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/glcdfont.c create mode 100644 lib/Adafruit_GFX-1.2.2.07/library.properties create mode 100644 lib/Adafruit_GFX-1.2.2.07/license.txt create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.md create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.txt create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/roboface/roboface.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/ihunger.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/library.properties create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/license.txt create mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp create mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h create mode 100644 lib/Adafruit_SSD1306-1.1.2/README.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/README.txt create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_spi/ssd1306_128x32_spi.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_spi/ssd1306_128x64_spi.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/library.properties create mode 100644 lib/Adafruit_SSD1306-1.1.2/license.txt create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o create mode 100644 lib/LiquidCrystal_I2C-1.1.3/README.md create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/keywords.txt create mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.json create mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.properties create mode 100644 lib/TasmotaTFT-1.0.1/README.txt create mode 100644 lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino create mode 100644 lib/TasmotaTFT-1.0.1/keywords.txt create mode 100644 lib/TasmotaTFT-1.0.1/library.json create mode 100644 lib/TasmotaTFT-1.0.1/library.properties create mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp create mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h create mode 100644 sonoff/xdrv_06_display.ino diff --git a/COPYFILES.BAT b/COPYFILES.BAT new file mode 100644 index 000000000..124e7eccb --- /dev/null +++ b/COPYFILES.BAT @@ -0,0 +1,35 @@ +@echo off + +echo *************************************************************** +echo: +echo Copying Firmwares for Release +echo: +echo *************************************************************** + +cd %systemdrive%\users\%username%\Desktop\Sonoff-Tasmota_KNX\.pioenvs + +copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin +copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin +copy sonoff-CZ\firmware.bin sonoff_KNX-CZ.bin +copy sonoff-DE\firmware.bin sonoff_KNX-DE.bin +copy sonoff-DE_4MB\firmware.bin sonoff_KNX-DE-4MB.bin +copy sonoff-EN\firmware.bin sonoff_KNX-EN.bin +copy sonoff-EN_4MB\firmware.bin sonoff_KNX-EN-4MB.bin +copy sonoff-ES\firmware.bin sonoff_KNX-ES.bin +copy sonoff-ES_4MB\firmware.bin sonoff_KNX-ES-4MB.bin +copy sonoff-FR\firmware.bin sonoff_KNX-FR.bin +copy sonoff-GR\firmware.bin sonoff_KNX-GR.bin +copy sonoff-HU\firmware.bin sonoff_KNX-HU.bin +copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin +copy sonoff-minimal\firmware.bin sonoff_minimal.bin +copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin +copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin +copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin +copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin +copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin + +echo: +echo: +echo DONE... +echo: +pause diff --git a/lib/Adafruit_GFX-1.2.2.07/.gitignore b/lib/Adafruit_GFX-1.2.2.07/.gitignore new file mode 100644 index 000000000..7b2fd3a2f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/.gitignore @@ -0,0 +1,2 @@ +default.vim +fontconvert/fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp new file mode 100644 index 000000000..53c7ad35c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp @@ -0,0 +1,1348 @@ +/* +This is the core graphics library for all our displays, providing a common +set of graphics primitives (points, lines, circles, etc.). It needs to be +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. + */ + +#include "Adafruit_GFX.h" +#include "glcdfont.c" +#ifdef __AVR__ + #include +#elif defined(ESP8266) || defined(ESP32) + #include +#endif + +// Many (but maybe not all) non-AVR board installs define macros +// for compatibility with existing PROGMEM-reading AVR code. +// Do our own checks and defines here for good measure... + +#ifndef pgm_read_byte + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#endif +#ifndef pgm_read_word + #define pgm_read_word(addr) (*(const unsigned short *)(addr)) +#endif +#ifndef pgm_read_dword + #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) +#endif + +// Pointers are a peculiar case...typically 16-bit on AVR boards, +// 32 bits elsewhere. Try to accommodate both... + +#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF) + #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) +#else + #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr)) +#endif + +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } +#endif + +Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): +WIDTH(w), HEIGHT(h) +{ + _width = WIDTH; + _height = HEIGHT; + rotation = 0; + cursor_y = cursor_x = 0; + textsize = 1; + textcolor = textbgcolor = 0xFFFF; + wrap = true; + _cp437 = false; + gfxFont = NULL; +} + +// Bresenham's algorithm - thx wikpedia +void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { + int16_t steep = abs(y1 - y0) > abs(x1 - x0); + if (steep) { + _swap_int16_t(x0, y0); + _swap_int16_t(x1, y1); + } + + if (x0 > x1) { + _swap_int16_t(x0, x1); + _swap_int16_t(y0, y1); + } + + int16_t dx, dy; + dx = x1 - x0; + dy = abs(y1 - y0); + + int16_t err = dx / 2; + int16_t ystep; + + if (y0 < y1) { + ystep = 1; + } else { + ystep = -1; + } + + for (; x0<=x1; x0++) { + if (steep) { + writePixel(y0, x0, color); + } else { + writePixel(x0, y0, color); + } + err -= dy; + if (err < 0) { + y0 += ystep; + err += dx; + } + } +} + +void Adafruit_GFX::startWrite(){ + // Overwrite in subclasses if desired! +} + +void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){ + // Overwrite in subclasses if startWrite is defined! + drawPixel(x, y, color); +} + +// (x,y) is topmost point; if unsure, calling function +// should sort endpoints or call writeLine() instead +void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Can be just writeLine(x, y, x, y+h-1, color); + // or writeFillRect(x, y, 1, h, color); + drawFastVLine(x, y, h, color); +} + +// (x,y) is leftmost point; if unsure, calling function +// should sort endpoints or call writeLine() instead +void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Example: writeLine(x, y, x+w-1, y, color); + // or writeFillRect(x, y, w, 1, color); + drawFastHLine(x, y, w, color); +} + +void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Overwrite in subclasses if desired! + fillRect(x,y,w,h,color); +} + +void Adafruit_GFX::endWrite(){ + // Overwrite in subclasses if startWrite is defined! +} + +// (x,y) is topmost point; if unsure, calling function +// should sort endpoints or call drawLine() instead +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + // Update in subclasses if desired! + startWrite(); + writeLine(x, y, x, y+h-1, color); + endWrite(); +} + +// (x,y) is leftmost point; if unsure, calling function +// should sort endpoints or call drawLine() instead +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + // Update in subclasses if desired! + startWrite(); + writeLine(x, y, x+w-1, y, color); + endWrite(); +} + +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Update in subclasses if desired! + startWrite(); + for (int16_t i=x; i y1) _swap_int16_t(y0, y1); + drawFastVLine(x0, y0, y1 - y0 + 1, color); + } else if(y0 == y1){ + if(x0 > x1) _swap_int16_t(x0, x1); + drawFastHLine(x0, y0, x1 - x0 + 1, color); + } else { + startWrite(); + writeLine(x0, y0, x1, y1, color); + endWrite(); + } +} + +// Draw a circle outline +void Adafruit_GFX::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; + + startWrite(); + writePixel(x0 , y0+r, color); + writePixel(x0 , y0-r, color); + writePixel(x0+r, y0 , color); + writePixel(x0-r, y0 , color); + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + writePixel(x0 + y, y0 + x, color); + writePixel(x0 - y, y0 + x, color); + writePixel(x0 + y, y0 - x, color); + writePixel(x0 - y, y0 - x, color); + } + endWrite(); +} + +void Adafruit_GFX::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; + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + writePixel(x0 + x, y0 - y, color); + writePixel(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + writePixel(x0 - y, y0 + x, color); + writePixel(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + writePixel(x0 - y, y0 - x, color); + writePixel(x0 - x, y0 - y, color); + } + } +} + +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { + startWrite(); + writeFastVLine(x0, y0-r, 2*r+1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endWrite(); +} + +// Used to do circles and roundrects +void Adafruit_GFX::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; + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + if (cornername & 0x1) { + writeFastVLine(x0+x, y0-y, 2*y+1+delta, color); + writeFastVLine(x0+y, y0-x, 2*x+1+delta, color); + } + if (cornername & 0x2) { + writeFastVLine(x0-x, y0-y, 2*y+1+delta, color); + writeFastVLine(x0-y, y0-x, 2*x+1+delta, color); + } + } +} + +// Draw a rectangle +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + writeFastHLine(x, y+h-1, w, color); + writeFastVLine(x, y, h, color); + writeFastVLine(x+w-1, y, h, color); + endWrite(); +} + +// Draw a rounded rectangle +void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, + int16_t h, int16_t r, uint16_t color) { + // smarter version + startWrite(); + writeFastHLine(x+r , y , w-2*r, color); // Top + writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom + writeFastVLine(x , y+r , h-2*r, color); // Left + writeFastVLine(x+w-1, y+r , h-2*r, color); // Right + // 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); + endWrite(); +} + +// Fill a rounded rectangle +void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, + int16_t h, int16_t r, uint16_t color) { + // smarter version + startWrite(); + writeFillRect(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); + endWrite(); +} + +// Draw a triangle +void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { + drawLine(x0, y0, x1, y1, color); + drawLine(x1, y1, x2, y2, color); + drawLine(x2, y2, x0, y0, color); +} + +// Fill a triangle +void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { + + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= y1 >= y0) + if (y0 > y1) { + _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); + } + if (y1 > y2) { + _swap_int16_t(y2, y1); _swap_int16_t(x2, x1); + } + if (y0 > y1) { + _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); + } + + startWrite(); + 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; + writeFastHLine(a, y0, b-a+1, color); + endWrite(); + return; + } + + int16_t + dx01 = x1 - x0, + dy01 = y1 - y0, + dx02 = x2 - x0, + dy02 = y2 - y0, + dx12 = x2 - x1, + dy12 = y2 - y1; + int32_t + 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 + + 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_int16_t(a,b); + writeFastHLine(a, y, b-a+1, color); + } + + // 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_int16_t(a,b); + writeFastHLine(a, y, b-a+1, color); + } + endWrite(); +} + +// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- + +// Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, +// using the specified foreground color (unset bits are transparent). +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t byte = 0; + + startWrite(); + for(int16_t j=0; j>= 1; + else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + // Nearly identical to drawBitmap(), only the bit order + // is reversed here (left-to-right = LSB to MSB): + if(byte & 0x01) writePixel(x+i, y, color); + } + } + endWrite(); +} + +// Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) +// pos. Specifically for 8-bit display devices such as IS31FL3731; +// no color reduction/expansion is performed. +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, int16_t h) { + startWrite(); + for(int16_t j=0; j= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size - 1) < 0) || // Clip left + ((y + 8 * size - 1) < 0)) // Clip top + return; + + if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior + + startWrite(); + for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns + uint8_t line = pgm_read_byte(&font[c * 5 + i]); + for(int8_t j=0; j<8; j++, line >>= 1) { + if(line & 1) { + if(size == 1) + writePixel(x+i, y+j, color); + else + writeFillRect(x+i*size, y+j*size, size, size, color); + } else if(bg != color) { + if(size == 1) + writePixel(x+i, y+j, bg); + else + writeFillRect(x+i*size, y+j*size, size, size, bg); + } + } + } + if(bg != color) { // If opaque, draw vertical line for last column + if(size == 1) writeFastVLine(x+5, y, 8, bg); + else writeFillRect(x+5*size, y, size, 8*size, bg); + } + endWrite(); + + } else { // Custom font + + // Character is assumed previously filtered by write() to eliminate + // newlines, returns, non-printable characters, etc. Calling + // drawChar() directly with 'bad' characters of font may cause mayhem! + + c -= (uint8_t)pgm_read_byte(&gfxFont->first); + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); + uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); + + uint16_t bo = pgm_read_word(&glyph->bitmapOffset); + uint8_t w = pgm_read_byte(&glyph->width), + h = pgm_read_byte(&glyph->height); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if(size > 1) { + xo16 = xo; + yo16 = yo; + } + + // Todo: Add character clipping here + + // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS. + // THIS IS ON PURPOSE AND BY DESIGN. The background color feature + // has typically been used with the 'classic' font to overwrite old + // screen contents with new data. This ONLY works because the + // characters are a uniform size; it's not a sensible thing to do with + // proportionally-spaced fonts with glyphs of varying sizes (and that + // may overlap). To replace previously-drawn text when using a custom + // font, use the getTextBounds() function to determine the smallest + // rectangle encompassing a string, erase the area with fillRect(), + // then draw new text. This WILL infortunately 'blink' the text, but + // is unavoidable. Drawing 'background' pixels will NOT fix this, + // only creates a new set of problems. Have an idea to work around + // this (a canvas object type for MCUs that can afford the RAM and + // displays supporting setAddrWindow() and pushColors()), but haven't + // implemented this yet. + + startWrite(); + for(yy=0; yy= 100 +size_t Adafruit_GFX::write(uint8_t c) { +#else +void Adafruit_GFX::write(uint8_t c) { +#endif + if(!gfxFont) { // 'Classic' built-in font + + if(c == '\n') { // Newline? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize * 8; // advance y one line + } else if(c != '\r') { // Ignore carriage returns + if(wrap && ((cursor_x + textsize * 6) > _width)) { // Off right? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize * 8; // advance y one line + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); + cursor_x += textsize * 6; // Advance x one char + } + + } else { // Custom font + + if(c == '\n') { + cursor_x = 0; + cursor_y += (int16_t)textsize * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if(c != '\r') { + uint8_t first = pgm_read_byte(&gfxFont->first); + if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( + &gfxFont->glyph))[c - first]); + uint8_t w = pgm_read_byte(&glyph->width), + h = pgm_read_byte(&glyph->height); + if((w > 0) && (h > 0)) { // Is there an associated bitmap? + int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic + if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) { + cursor_x = 0; + cursor_y += (int16_t)textsize * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); + } + cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize; + } + } + + } +#if ARDUINO >= 100 + return 1; +#endif +} + +void Adafruit_GFX::setCursor(int16_t x, int16_t y) { + cursor_x = x; + cursor_y = y; +} + +int16_t Adafruit_GFX::getCursorX(void) const { + return cursor_x; +} + +int16_t Adafruit_GFX::getCursorY(void) const { + return cursor_y; +} + +void Adafruit_GFX::setTextSize(uint8_t s) { + textsize = (s > 0) ? s : 1; +} + +void Adafruit_GFX::setTextColor(uint16_t c) { + // For 'transparent' background, we'll set the bg + // to the same as fg instead of using a flag + textcolor = textbgcolor = c; +} + +void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { + textcolor = c; + textbgcolor = b; +} + +void Adafruit_GFX::setTextWrap(boolean w) { + wrap = w; +} + +uint8_t Adafruit_GFX::getRotation(void) const { + return rotation; +} + +void Adafruit_GFX::setRotation(uint8_t x) { + rotation = (x & 3); + switch(rotation) { + case 0: + case 2: + _width = WIDTH; + _height = HEIGHT; + break; + case 1: + case 3: + _width = HEIGHT; + _height = WIDTH; + break; + } +} + +// Enable (or disable) Code Page 437-compatible charset. +// There was an error in glcdfont.c for the longest time -- one character +// (#176, the 'light shade' block) was missing -- this threw off the index +// of every character that followed it. But a TON of code has been written +// with the erroneous character indices. By default, the library uses the +// original 'wrong' behavior and old sketches will still work. Pass 'true' +// to this function to use correct CP437 character values in your code. +void Adafruit_GFX::cp437(boolean x) { + _cp437 = x; +} + +void Adafruit_GFX::setFont(const GFXfont *f) { + if(f) { // Font struct pointer passed in? + if(!gfxFont) { // And no current font struct? + // Switching from classic to new font behavior. + // Move cursor pos down 6 pixels so it's on baseline. + cursor_y += 6; + } + } else if(gfxFont) { // NULL passed. Current font struct defined? + // Switching from new to classic font behavior. + // Move cursor pos up 6 pixels so it's at top-left of char. + cursor_y -= 6; + } + gfxFont = (GFXfont *)f; +} + +// Broke this out as it's used by both the PROGMEM- and RAM-resident +// getTextBounds() functions. +void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) { + + if(gfxFont) { + + if(c == '\n') { // Newline? + *x = 0; // Reset x to zero, advance y by one line + *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if(c != '\r') { // Not a carriage return; is normal char + uint8_t first = pgm_read_byte(&gfxFont->first), + last = pgm_read_byte(&gfxFont->last); + if((c >= first) && (c <= last)) { // Char present in this font? + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( + &gfxFont->glyph))[c - first]); + uint8_t gw = pgm_read_byte(&glyph->width), + gh = pgm_read_byte(&glyph->height), + xa = pgm_read_byte(&glyph->xAdvance); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) { + *x = 0; // Reset x to zero, advance y by one line + *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + int16_t ts = (int16_t)textsize, + x1 = *x + xo * ts, + y1 = *y + yo * ts, + x2 = x1 + gw * ts - 1, + y2 = y1 + gh * ts - 1; + if(x1 < *minx) *minx = x1; + if(y1 < *miny) *miny = y1; + if(x2 > *maxx) *maxx = x2; + if(y2 > *maxy) *maxy = y2; + *x += xa * ts; + } + } + + } else { // Default font + + if(c == '\n') { // Newline? + *x = 0; // Reset x to zero, + *y += textsize * 8; // advance y one line + // min/max x/y unchaged -- that waits for next 'normal' character + } else if(c != '\r') { // Normal char; ignore carriage returns + if(wrap && ((*x + textsize * 6) > _width)) { // Off right? + *x = 0; // Reset x to zero, + *y += textsize * 8; // advance y one line + } + int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char + y2 = *y + textsize * 8 - 1; + if(x2 > *maxx) *maxx = x2; // Track max x, y + if(y2 > *maxy) *maxy = y2; + if(*x < *minx) *minx = *x; // Track min x, y + if(*y < *miny) *miny = *y; + *x += textsize * 6; // Advance x one char + } + } +} + +// Pass string and a cursor position, returns UL corner and W,H. +void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { + uint8_t c; // Current character + + *x1 = x; + *y1 = y; + *w = *h = 0; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while((c = *str++)) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if(maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if(maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +// Same as above, but for PROGMEM strings +void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str, + int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { + uint8_t *s = (uint8_t *)str, c; + + *x1 = x; + *y1 = y; + *w = *h = 0; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while((c = pgm_read_byte(s++))) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if(maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if(maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +// Return the size of the display (per current rotation) +int16_t Adafruit_GFX::width(void) const { + return _width; +} + +int16_t Adafruit_GFX::height(void) const { + return _height; +} + +void Adafruit_GFX::invertDisplay(boolean i) { + // Do nothing, must be subclassed if supported by hardware +} + +/***************************************************************************/ +// code for the GFX button UI element + +Adafruit_GFX_Button::Adafruit_GFX_Button(void) { + _gfx = 0; +} + +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton( + Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) +{ + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, + textcolor, label, textsize); +} + +// Newer function instead accepts upper-left corner & size +void Adafruit_GFX_Button::initButtonUL( + Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) +{ + _x1 = x1; + _y1 = y1; + _w = w; + _h = h; + _outlinecolor = outline; + _fillcolor = fill; + _textcolor = textcolor; + _textsize = textsize; + _gfx = gfx; + strncpy(_label, label, 9); +} + +void Adafruit_GFX_Button::drawButton(boolean inverted) { + uint16_t fill, outline, text; + + if(!inverted) { + fill = _fillcolor; + outline = _outlinecolor; + text = _textcolor; + } else { + fill = _textcolor; + outline = _outlinecolor; + text = _fillcolor; + } + + uint8_t r = min(_w, _h) / 4; // Corner radius + _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); + _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); + + _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize), + _y1 + (_h/2) - (4 * _textsize)); + _gfx->setTextColor(text); + _gfx->setTextSize(_textsize); + _gfx->print(_label); +} + +boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) { + return ((x >= _x1) && (x < (_x1 + _w)) && + (y >= _y1) && (y < (_y1 + _h))); +} + +void Adafruit_GFX_Button::press(boolean p) { + laststate = currstate; + currstate = p; +} + +boolean Adafruit_GFX_Button::isPressed() { return currstate; } +boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } +boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } + +// ------------------------------------------------------------------------- + +// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too +// comfy with the implementation) provide 1-, 8- and 16-bit offscreen +// canvases, the address of which can be passed to drawBitmap() or +// pushColors() (the latter appears only in a couple of GFX-subclassed TFT +// libraries at this time). This is here mostly to help with the recently- +// added proportionally-spaced fonts; adds a way to refresh a section of the +// screen without a massive flickering clear-and-redraw...but maybe you'll +// find other uses too. VERY RAM-intensive, since the buffer is in MCU +// memory and not the display driver...GXFcanvas1 might be minimally useful +// on an Uno-class board, but this and the others are much more likely to +// require at least a Mega or various recent ARM-type boards (recommended, +// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per +// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte +// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no +// scanline pad). +// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. + +GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint16_t bytes = ((w + 7) / 8) * h; + if((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas1::~GFXcanvas1(void) { + if(buffer) free(buffer); +} + +uint8_t* GFXcanvas1::getBuffer(void) { + return buffer; +} + +void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) { +#ifdef __AVR__ + // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR + static const uint8_t PROGMEM + GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, + GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE }; +#endif + + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; +#ifdef __AVR__ + if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); + else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); +#else + if(color) *ptr |= 0x80 >> (x & 7); + else *ptr &= ~(0x80 >> (x & 7)); +#endif + } +} + +void GFXcanvas1::fillScreen(uint16_t color) { + if(buffer) { + uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT; + memset(buffer, color ? 0xFF : 0x00, bytes); + } +} + +GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint32_t bytes = w * h; + if((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas8::~GFXcanvas8(void) { + if(buffer) free(buffer); +} + +uint8_t* GFXcanvas8::getBuffer(void) { + return buffer; +} + +void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) { + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + buffer[x + y * WIDTH] = color; + } +} + +void GFXcanvas8::fillScreen(uint16_t color) { + if(buffer) { + memset(buffer, color, WIDTH * HEIGHT); + } +} + +void GFXcanvas8::writeFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + + if((x >= _width) || (y < 0) || (y >= _height)) return; + int16_t x2 = x + w - 1; + if(x2 < 0) return; + + // Clip left/right + if(x < 0) { + x = 0; + w = x2 + 1; + } + if(x2 >= _width) w = _width - x; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + memset(buffer + y * WIDTH + x, color, w); +} + +GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint32_t bytes = w * h * 2; + if((buffer = (uint16_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas16::~GFXcanvas16(void) { + if(buffer) free(buffer); +} + +uint16_t* GFXcanvas16::getBuffer(void) { + return buffer; +} + +void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) { + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + buffer[x + y * WIDTH] = color; + } +} + +void GFXcanvas16::fillScreen(uint16_t color) { + if(buffer) { + uint8_t hi = color >> 8, lo = color & 0xFF; + if(hi == lo) { + memset(buffer, lo, WIDTH * HEIGHT * 2); + } else { + uint32_t i, pixels = WIDTH * HEIGHT; + for(i=0; i= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include "gfxfont.h" + +class Adafruit_GFX : public Print { + + public: + + Adafruit_GFX(int16_t w, int16_t h); // Constructor + + // This MUST be defined by the subclass: + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; + + // TRANSACTION API / CORE DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void startWrite(void); + virtual void writePixel(int16_t x, int16_t y, uint16_t color); + virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); + virtual void endWrite(void); + + // CONTROL API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void setRotation(uint8_t r); + virtual void invertDisplay(boolean i); + + // BASIC DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void + // It's good to implement those, even if using transaction API + drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), + drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), + fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), + fillScreen(uint16_t color), + // Optional and probably not necessary to change + drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), + drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + + // These exist only with Adafruit_GFX (no subclass overrides) + void + drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + uint16_t color), + fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + int16_t delta, uint16_t color), + drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color), + drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color, uint16_t bg), + drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h, uint16_t color), + drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h, uint16_t color, uint16_t bg), + drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color), + drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], const uint8_t mask[], + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, + uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, + const uint16_t bitmap[], const uint8_t mask[], + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, + uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h), + drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size), + setCursor(int16_t x, int16_t y), + setTextColor(uint16_t c), + setTextColor(uint16_t c, uint16_t bg), + setTextSize(uint8_t s), + setTextWrap(boolean w), + cp437(boolean x=true), + setFont(const GFXfont *f = NULL), + getTextBounds(char *string, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h), + getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); + +#if ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + + int16_t height(void) const; + int16_t width(void) const; + + uint8_t getRotation(void) const; + + // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y) + int16_t getCursorX(void) const; + int16_t getCursorY(void) const; + + protected: + void + charBounds(char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy); + const int16_t + WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes + int16_t + _width, _height, // Display w/h as modified by current rotation + cursor_x, cursor_y; + uint16_t + textcolor, textbgcolor; + uint8_t + textsize, + rotation; + boolean + wrap, // If set, 'wrap' text at right edge of display + _cp437; // If set, use correct CP437 charset (default is off) + GFXfont + *gfxFont; +}; + +class Adafruit_GFX_Button { + + public: + Adafruit_GFX_Button(void); + // "Classic" initButton() uses center & size + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + // New/alt initButton() uses upper-left corner & size + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, + uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void drawButton(boolean inverted = false); + boolean contains(int16_t x, int16_t y); + + void press(boolean p); + boolean isPressed(); + boolean justPressed(); + boolean justReleased(); + + private: + Adafruit_GFX *_gfx; + int16_t _x1, _y1; // Coordinates of top-left corner + uint16_t _w, _h; + uint8_t _textsize; + uint16_t _outlinecolor, _fillcolor, _textcolor; + char _label[10]; + + boolean currstate, laststate; +}; + +class GFXcanvas1 : public Adafruit_GFX { + public: + GFXcanvas1(uint16_t w, uint16_t h); + ~GFXcanvas1(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color); + uint8_t *getBuffer(void); + private: + uint8_t *buffer; +}; + +class GFXcanvas8 : public Adafruit_GFX { + public: + GFXcanvas8(uint16_t w, uint16_t h); + ~GFXcanvas8(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color), + writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + uint8_t *getBuffer(void); + private: + uint8_t *buffer; +}; + +class GFXcanvas16 : public Adafruit_GFX { + public: + GFXcanvas16(uint16_t w, uint16_t h); + ~GFXcanvas16(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color); + uint16_t *getBuffer(void); + private: + uint16_t *buffer; +}; + +#endif // _ADAFRUIT_GFX_H diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp new file mode 100644 index 000000000..9b6c8bbb6 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp @@ -0,0 +1,336 @@ +/*************************************************** + This is our library for generic SPI TFT Displays with + address windows and 16 bit color (e.g. ILI9341, HX8357D, ST7735...) + + 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 "Adafruit_SPITFT.h" +#ifndef ARDUINO_STM32_FEATHER + #include "pins_arduino.h" +#ifndef RASPI + #include "wiring_private.h" +#endif +#endif +#include + +#include "Adafruit_SPITFT_Macros.h" + + + +// Pass 8-bit (each) R,G,B, get back 16-bit packed color +uint16_t Adafruit_SPITFT::color565(uint8_t r, uint8_t g, uint8_t b) { + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3); +} + +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, + int8_t cs, int8_t dc, int8_t mosi, + int8_t sclk, int8_t rst, int8_t miso) + : Adafruit_GFX(w, h) { + _cs = cs; + _dc = dc; + _rst = rst; + _sclk = sclk; + _mosi = mosi; + _miso = miso; + _freq = 0; +#ifdef USE_FAST_PINIO + csport = portOutputRegister(digitalPinToPort(_cs)); + cspinmask = digitalPinToBitMask(_cs); + dcport = portOutputRegister(digitalPinToPort(_dc)); + dcpinmask = digitalPinToBitMask(_dc); + clkport = portOutputRegister(digitalPinToPort(_sclk)); + clkpinmask = digitalPinToBitMask(_sclk); + mosiport = portOutputRegister(digitalPinToPort(_mosi)); + mosipinmask = digitalPinToBitMask(_mosi); + if(miso >= 0){ + misoport = portInputRegister(digitalPinToPort(_miso)); + misopinmask = digitalPinToBitMask(_miso); + } else { + misoport = 0; + misopinmask = 0; + } +#endif +} + +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, + int8_t cs, int8_t dc, int8_t rst) + : Adafruit_GFX(w, h) { + _cs = cs; + _dc = dc; + _rst = rst; + _sclk = -1; + _mosi = -1; + _miso = -1; + _freq = 0; +#ifdef USE_FAST_PINIO + csport = portOutputRegister(digitalPinToPort(_cs)); + cspinmask = digitalPinToBitMask(_cs); + dcport = portOutputRegister(digitalPinToPort(_dc)); + dcpinmask = digitalPinToBitMask(_dc); + clkport = 0; + clkpinmask = 0; + mosiport = 0; + mosipinmask = 0; + misoport = 0; + misopinmask = 0; +#endif +} + + +void Adafruit_SPITFT::initSPI(uint32_t freq) +{ + _freq = freq; + + // Control Pins + pinMode(_dc, OUTPUT); + digitalWrite(_dc, LOW); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + + // Software SPI + if(_sclk >= 0){ + pinMode(_mosi, OUTPUT); + digitalWrite(_mosi, LOW); + pinMode(_sclk, OUTPUT); + digitalWrite(_sclk, HIGH); + if(_miso >= 0){ + pinMode(_miso, INPUT); + } + } + + // Hardware SPI + SPI_BEGIN(); + + // toggle RST low to reset + if (_rst >= 0) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } +} + +uint8_t Adafruit_SPITFT::spiRead() { + if(_sclk < 0){ + return HSPI_READ(); + } + if(_miso < 0){ + return 0; + } + uint8_t r = 0; + for (uint8_t i=0; i<8; i++) { + SSPI_SCK_LOW(); + SSPI_SCK_HIGH(); + r <<= 1; + if (SSPI_MISO_READ()){ + r |= 0x1; + } + } + return r; +} + +void Adafruit_SPITFT::spiWrite(uint8_t b) { + if(_sclk < 0){ + HSPI_WRITE(b); + return; + } + for(uint8_t bit = 0x80; bit; bit >>= 1){ + if((b) & bit){ + SSPI_MOSI_HIGH(); + } else { + SSPI_MOSI_LOW(); + } + SSPI_SCK_LOW(); + SSPI_SCK_HIGH(); + } +} + + +/* + * Transaction API + * */ + +void Adafruit_SPITFT::startWrite(void){ + SPI_BEGIN_TRANSACTION(); + SPI_CS_LOW(); +} + +void Adafruit_SPITFT::endWrite(void){ + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +void Adafruit_SPITFT::writeCommand(uint8_t cmd){ + SPI_DC_LOW(); + spiWrite(cmd); + SPI_DC_HIGH(); +} + +void Adafruit_SPITFT::pushColor(uint16_t color) { + startWrite(); + SPI_WRITE16(color); + endWrite(); +} + + +void Adafruit_SPITFT::writePixel(uint16_t color){ + SPI_WRITE16(color); +} + +void Adafruit_SPITFT::writePixels(uint16_t * colors, uint32_t len){ + SPI_WRITE_PIXELS((uint8_t*)colors , len * 2); +} + +void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len){ +#ifdef SPI_HAS_WRITE_PIXELS + if(_sclk >= 0){ + for (uint32_t t=0; t SPI_MAX_PIXELS_AT_ONCE)?SPI_MAX_PIXELS_AT_ONCE:len; + uint16_t tlen = 0; + + for (uint32_t t=0; tblen)?blen:len; + writePixels(temp, tlen); + len -= tlen; + } +#else + uint8_t hi = color >> 8, lo = color; + if(_sclk < 0){ //AVR Optimization + for (uint32_t t=len; t; t--){ + HSPI_WRITE(hi); + HSPI_WRITE(lo); + } + return; + } + for (uint32_t t=len; t; t--){ + spiWrite(hi); + spiWrite(lo); + } +#endif +} + +void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { + if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; + setAddrWindow(x,y,1,1); + writePixel(color); +} + +void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color){ + if((x >= _width) || (y >= _height)) return; + int16_t x2 = x + w - 1, y2 = y + h - 1; + if((x2 < 0) || (y2 < 0)) return; + + // Clip left/top + if(x < 0) { + x = 0; + w = x2 + 1; + } + if(y < 0) { + y = 0; + h = y2 + 1; + } + + // Clip right/bottom + if(x2 >= _width) w = _width - x; + if(y2 >= _height) h = _height - y; + + int32_t len = (int32_t)w * h; + setAddrWindow(x, y, w, h); + writeColor(color, len); +} + +void Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color){ + writeFillRect(x, y, 1, h, color); +} + +void Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color){ + writeFillRect(x, y, w, 1, color); +} + +void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color){ + startWrite(); + writePixel(x, y, color); + endWrite(); +} + +void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + startWrite(); + writeFastVLine(x, y, h, color); + endWrite(); +} + +void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + endWrite(); +} + +void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFillRect(x,y,w,h,color); + endWrite(); +} + +// Adapted from https://github.com/PaulStoffregen/ILI9341_t3 +// by Marc MERLIN. See examples/pictureEmbed to use this. +// 5/6/2017: function name and arguments have changed for compatibility +// with current GFX library and to avoid naming problems in prior +// implementation. Formerly drawBitmap() with arguments in different order. +void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, + uint16_t *pcolors, int16_t w, int16_t h) { + + int16_t x2, y2; // Lower-right coord + if(( x >= _width ) || // Off-edge right + ( y >= _height) || // " top + ((x2 = (x+w-1)) < 0 ) || // " left + ((y2 = (y+h-1)) < 0) ) return; // " bottom + + int16_t bx1=0, by1=0, // Clipped top-left within bitmap + saveW=w; // Save original bitmap width value + if(x < 0) { // Clip left + w += x; + bx1 = -x; + x = 0; + } + if(y < 0) { // Clip top + h += y; + by1 = -y; + y = 0; + } + if(x2 >= _width ) w = _width - x; // Clip right + if(y2 >= _height) h = _height - y; // Clip bottom + + pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left + startWrite(); + setAddrWindow(x, y, w, h); // Clipped area + while(h--) { // For each (clipped) scanline... + writePixels(pcolors, w); // Push one (clipped) row + pcolors += saveW; // Advance pointer by one full (unclipped) line + } + endWrite(); +} diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h new file mode 100644 index 000000000..0024a0193 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h @@ -0,0 +1,80 @@ + +#ifndef _ADAFRUIT_SPITFT_ +#define _ADAFRUIT_SPITFT_ + + +#if ARDUINO >= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include +#include "Adafruit_GFX.h" + + +#if defined(ARDUINO_STM32_FEATHER) +typedef volatile uint32 RwReg; +#endif +#if defined(ARDUINO_FEATHER52) +typedef volatile uint32_t RwReg; +#endif + +class Adafruit_SPITFT : public Adafruit_GFX { + protected: + + public: + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, int8_t _RST = -1, int8_t _MISO = -1); + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _RST = -1); + + virtual void begin(uint32_t freq) = 0; + void initSPI(uint32_t freq); + + // Required Non-Transaction + void drawPixel(int16_t x, int16_t y, uint16_t color); + + // Transaction API + void startWrite(void); + void endWrite(void); + void writePixel(int16_t x, int16_t y, uint16_t color); + void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + // Transaction API not used by GFX + virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0; + void writePixel(uint16_t color); + void writePixels(uint16_t * colors, uint32_t len); + void writeColor(uint16_t color, uint32_t len); + void pushColor(uint16_t color); + + // Recommended Non-Transaction + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + + using Adafruit_GFX::drawRGBBitmap; // Check base class first + void drawRGBBitmap(int16_t x, int16_t y, + uint16_t *pcolors, int16_t w, int16_t h); + + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + protected: + uint32_t _freq; +#if defined (__AVR__) || defined(TEENSYDUINO) || defined (ESP8266) || defined (ESP32) + int8_t _cs, _dc, _rst, _sclk, _mosi, _miso; +#else + int32_t _cs, _dc, _rst, _sclk, _mosi, _miso; +#endif + +#ifdef USE_FAST_PINIO + volatile RwReg *mosiport, *misoport, *clkport, *dcport, *csport; + RwReg mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask; +#endif + + void writeCommand(uint8_t cmd); + void spiWrite(uint8_t v); + uint8_t spiRead(void); +}; + +#endif diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h new file mode 100644 index 000000000..74391daa7 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h @@ -0,0 +1,114 @@ + +/* + * Control Pins + * */ + +#ifdef USE_FAST_PINIO +#define SPI_DC_HIGH() *dcport |= dcpinmask +#define SPI_DC_LOW() *dcport &= ~dcpinmask +#define SPI_CS_HIGH() *csport |= cspinmask +#define SPI_CS_LOW() *csport &= ~cspinmask +#else +#define SPI_DC_HIGH() digitalWrite(_dc, HIGH) +#define SPI_DC_LOW() digitalWrite(_dc, LOW) +#define SPI_CS_HIGH() digitalWrite(_cs, HIGH) +#define SPI_CS_LOW() digitalWrite(_cs, LOW) +#endif + +/* + * Software SPI Macros + * */ + +#ifdef USE_FAST_PINIO +#define SSPI_MOSI_HIGH() *mosiport |= mosipinmask +#define SSPI_MOSI_LOW() *mosiport &= ~mosipinmask +#define SSPI_SCK_HIGH() *clkport |= clkpinmask +#define SSPI_SCK_LOW() *clkport &= ~clkpinmask +#define SSPI_MISO_READ() ((*misoport & misopinmask) != 0) +#else +#define SSPI_MOSI_HIGH() digitalWrite(_mosi, HIGH) +#define SSPI_MOSI_LOW() digitalWrite(_mosi, LOW) +#define SSPI_SCK_HIGH() digitalWrite(_sclk, HIGH) +#define SSPI_SCK_LOW() digitalWrite(_sclk, LOW) +#define SSPI_MISO_READ() digitalRead(_miso) +#endif + +#define SSPI_BEGIN_TRANSACTION() +#define SSPI_END_TRANSACTION() +#define SSPI_WRITE(v) spiWrite(v) +#define SSPI_WRITE16(s) SSPI_WRITE((s) >> 8); SSPI_WRITE(s) +#define SSPI_WRITE32(l) SSPI_WRITE((l) >> 24); SSPI_WRITE((l) >> 16); SSPI_WRITE((l) >> 8); SSPI_WRITE(l) +#define SSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ SSPI_WRITE(((uint8_t*)(c))[i+1]); SSPI_WRITE(((uint8_t*)(c))[i]); } + +/* + * Hardware SPI Macros + * */ + +#define SPI_OBJECT SPI + +#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(SPI_CLOCK_DIV2); +#elif defined (__arm__) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(11); +#elif defined(ESP8266) || defined(ESP32) + #define HSPI_SET_CLOCK() SPI_OBJECT.setFrequency(_freq); +#elif defined(RASPI) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); +#elif defined(ARDUINO_ARCH_STM32F1) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); +#else + #define HSPI_SET_CLOCK() +#endif + +#ifdef SPI_HAS_TRANSACTION + #define HSPI_BEGIN_TRANSACTION() SPI_OBJECT.beginTransaction(SPISettings(_freq, MSBFIRST, SPI_MODE0)) + #define HSPI_END_TRANSACTION() SPI_OBJECT.endTransaction() +#else + #define HSPI_BEGIN_TRANSACTION() HSPI_SET_CLOCK(); SPI_OBJECT.setBitOrder(MSBFIRST); SPI_OBJECT.setDataMode(SPI_MODE0) + #define HSPI_END_TRANSACTION() +#endif + +#ifdef ESP32 + #define SPI_HAS_WRITE_PIXELS +#endif +#if defined(ESP8266) || defined(ESP32) + // Optimized SPI (ESP8266 and ESP32) + #define HSPI_READ() SPI_OBJECT.transfer(0) + #define HSPI_WRITE(b) SPI_OBJECT.write(b) + #define HSPI_WRITE16(s) SPI_OBJECT.write16(s) + #define HSPI_WRITE32(l) SPI_OBJECT.write32(l) + #ifdef SPI_HAS_WRITE_PIXELS + #define SPI_MAX_PIXELS_AT_ONCE 32 + #define HSPI_WRITE_PIXELS(c,l) SPI_OBJECT.writePixels(c,l) + #else + #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<((l)/2); i++){ SPI_WRITE16(((uint16_t*)(c))[i]); } + #endif +#else + // Standard Byte-by-Byte SPI + + #if defined (__AVR__) || defined(TEENSYDUINO) +static inline uint8_t _avr_spi_read(void) __attribute__((always_inline)); +static inline uint8_t _avr_spi_read(void) { + uint8_t r = 0; + SPDR = r; + while(!(SPSR & _BV(SPIF))); + r = SPDR; + return r; +} + #define HSPI_WRITE(b) {SPDR = (b); while(!(SPSR & _BV(SPIF)));} + #define HSPI_READ() _avr_spi_read() + #else + #define HSPI_WRITE(b) SPI_OBJECT.transfer((uint8_t)(b)) + #define HSPI_READ() HSPI_WRITE(0) + #endif + #define HSPI_WRITE16(s) HSPI_WRITE((s) >> 8); HSPI_WRITE(s) + #define HSPI_WRITE32(l) HSPI_WRITE((l) >> 24); HSPI_WRITE((l) >> 16); HSPI_WRITE((l) >> 8); HSPI_WRITE(l) + #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ HSPI_WRITE(((uint8_t*)(c))[i+1]); HSPI_WRITE(((uint8_t*)(c))[i]); } +#endif + +#define SPI_BEGIN() if(_sclk < 0){SPI_OBJECT.begin();} +#define SPI_BEGIN_TRANSACTION() if(_sclk < 0){HSPI_BEGIN_TRANSACTION();} +#define SPI_END_TRANSACTION() if(_sclk < 0){HSPI_END_TRANSACTION();} +#define SPI_WRITE16(s) if(_sclk < 0){HSPI_WRITE16(s);}else{SSPI_WRITE16(s);} +#define SPI_WRITE32(l) if(_sclk < 0){HSPI_WRITE32(l);}else{SSPI_WRITE32(l);} +#define SPI_WRITE_PIXELS(c,l) if(_sclk < 0){HSPI_WRITE_PIXELS(c,l);}else{SSPI_WRITE_PIXELS(c,l);} diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h new file mode 100644 index 000000000..94ecb883a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h @@ -0,0 +1,227 @@ +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38 }; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 3, 15, 14, 6, -14 }, // 0x21 '!' + { 6, 8, 7, 14, 3, -14 }, // 0x22 '"' + { 13, 10, 16, 14, 2, -14 }, // 0x23 '#' + { 33, 10, 17, 14, 2, -14 }, // 0x24 '$' + { 55, 10, 15, 14, 2, -14 }, // 0x25 '%' + { 74, 9, 12, 14, 3, -11 }, // 0x26 '&' + { 88, 3, 7, 14, 5, -14 }, // 0x27 ''' + { 91, 3, 18, 14, 7, -14 }, // 0x28 '(' + { 98, 3, 18, 14, 4, -14 }, // 0x29 ')' + { 105, 9, 9, 14, 3, -14 }, // 0x2A '*' + { 116, 9, 11, 14, 3, -11 }, // 0x2B '+' + { 129, 5, 7, 14, 3, -3 }, // 0x2C ',' + { 134, 11, 1, 14, 2, -6 }, // 0x2D '-' + { 136, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 138, 9, 18, 14, 3, -15 }, // 0x2F '/' + { 159, 9, 15, 14, 3, -14 }, // 0x30 '0' + { 176, 7, 14, 14, 4, -13 }, // 0x31 '1' + { 189, 9, 15, 14, 2, -14 }, // 0x32 '2' + { 206, 10, 15, 14, 2, -14 }, // 0x33 '3' + { 225, 8, 15, 14, 3, -14 }, // 0x34 '4' + { 240, 9, 15, 14, 3, -14 }, // 0x35 '5' + { 257, 9, 15, 14, 3, -14 }, // 0x36 '6' + { 274, 8, 15, 14, 3, -14 }, // 0x37 '7' + { 289, 9, 15, 14, 3, -14 }, // 0x38 '8' + { 306, 9, 15, 14, 3, -14 }, // 0x39 '9' + { 323, 3, 10, 14, 5, -9 }, // 0x3A ':' + { 327, 5, 13, 14, 3, -9 }, // 0x3B ';' + { 336, 11, 11, 14, 2, -11 }, // 0x3C '<' + { 352, 12, 4, 14, 1, -8 }, // 0x3D '=' + { 358, 11, 11, 14, 2, -11 }, // 0x3E '>' + { 374, 9, 14, 14, 3, -13 }, // 0x3F '?' + { 390, 9, 16, 14, 3, -14 }, // 0x40 '@' + { 408, 14, 14, 14, 0, -13 }, // 0x41 'A' + { 433, 11, 14, 14, 2, -13 }, // 0x42 'B' + { 453, 10, 14, 14, 2, -13 }, // 0x43 'C' + { 471, 10, 14, 14, 2, -13 }, // 0x44 'D' + { 489, 11, 14, 14, 2, -13 }, // 0x45 'E' + { 509, 11, 14, 14, 2, -13 }, // 0x46 'F' + { 529, 11, 14, 14, 2, -13 }, // 0x47 'G' + { 549, 10, 14, 14, 2, -13 }, // 0x48 'H' + { 567, 7, 14, 14, 4, -13 }, // 0x49 'I' + { 580, 11, 14, 14, 2, -13 }, // 0x4A 'J' + { 600, 12, 14, 14, 2, -13 }, // 0x4B 'K' + { 621, 11, 14, 14, 2, -13 }, // 0x4C 'L' + { 641, 13, 14, 14, 1, -13 }, // 0x4D 'M' + { 664, 12, 14, 14, 1, -13 }, // 0x4E 'N' + { 685, 12, 14, 14, 1, -13 }, // 0x4F 'O' + { 706, 10, 14, 14, 2, -13 }, // 0x50 'P' + { 724, 12, 17, 14, 1, -13 }, // 0x51 'Q' + { 750, 12, 14, 14, 2, -13 }, // 0x52 'R' + { 771, 10, 14, 14, 2, -13 }, // 0x53 'S' + { 789, 11, 14, 14, 2, -13 }, // 0x54 'T' + { 809, 12, 14, 14, 1, -13 }, // 0x55 'U' + { 830, 14, 14, 14, 0, -13 }, // 0x56 'V' + { 855, 14, 14, 14, 0, -13 }, // 0x57 'W' + { 880, 12, 14, 14, 1, -13 }, // 0x58 'X' + { 901, 12, 14, 14, 1, -13 }, // 0x59 'Y' + { 922, 9, 14, 14, 3, -13 }, // 0x5A 'Z' + { 938, 3, 18, 14, 7, -14 }, // 0x5B '[' + { 945, 9, 18, 14, 3, -15 }, // 0x5C '\' + { 966, 3, 18, 14, 5, -14 }, // 0x5D ']' + { 973, 9, 6, 14, 3, -14 }, // 0x5E '^' + { 980, 14, 1, 14, 0, 3 }, // 0x5F '_' + { 982, 4, 4, 14, 4, -15 }, // 0x60 '`' + { 984, 10, 10, 14, 2, -9 }, // 0x61 'a' + { 997, 13, 15, 14, 0, -14 }, // 0x62 'b' + { 1022, 11, 10, 14, 2, -9 }, // 0x63 'c' + { 1036, 11, 15, 14, 2, -14 }, // 0x64 'd' + { 1057, 10, 10, 14, 2, -9 }, // 0x65 'e' + { 1070, 9, 15, 14, 4, -14 }, // 0x66 'f' + { 1087, 11, 14, 14, 2, -9 }, // 0x67 'g' + { 1107, 10, 15, 14, 2, -14 }, // 0x68 'h' + { 1126, 9, 15, 14, 3, -14 }, // 0x69 'i' + { 1143, 7, 19, 14, 3, -14 }, // 0x6A 'j' + { 1160, 12, 15, 14, 1, -14 }, // 0x6B 'k' + { 1183, 9, 15, 14, 3, -14 }, // 0x6C 'l' + { 1200, 13, 10, 14, 1, -9 }, // 0x6D 'm' + { 1217, 12, 10, 14, 1, -9 }, // 0x6E 'n' + { 1232, 11, 10, 14, 2, -9 }, // 0x6F 'o' + { 1246, 12, 14, 14, 1, -9 }, // 0x70 'p' + { 1267, 11, 14, 14, 2, -9 }, // 0x71 'q' + { 1287, 10, 10, 14, 3, -9 }, // 0x72 'r' + { 1300, 10, 10, 14, 2, -9 }, // 0x73 's' + { 1313, 11, 14, 14, 1, -13 }, // 0x74 't' + { 1333, 11, 10, 14, 2, -9 }, // 0x75 'u' + { 1347, 13, 10, 14, 1, -9 }, // 0x76 'v' + { 1364, 13, 10, 14, 1, -9 }, // 0x77 'w' + { 1381, 12, 10, 14, 1, -9 }, // 0x78 'x' + { 1396, 12, 14, 14, 1, -9 }, // 0x79 'y' + { 1417, 9, 10, 14, 3, -9 }, // 0x7A 'z' + { 1429, 5, 18, 14, 5, -14 }, // 0x7B '{' + { 1441, 1, 18, 14, 7, -14 }, // 0x7C '|' + { 1444, 5, 18, 14, 5, -14 }, // 0x7D '}' + { 1456, 10, 3, 14, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = { + (uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2132 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h new file mode 100644 index 000000000..c605d296b --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h @@ -0,0 +1,363 @@ +const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { + 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, + 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, + 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, + 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, + 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, + 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, + 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, + 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, + 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, + 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, + 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, + 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, + 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, + 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, + 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, + 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, + 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, + 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, + 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, + 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, + 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, + 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, + 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, + 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, + 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, + 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, + 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, + 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, + 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, + 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, + 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, + 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, + 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, + 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, + 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, + 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, + 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, + 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, + 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, + 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, + 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, + 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, + 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, + 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, + 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, + 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, + 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, + 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, + 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, + 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, + 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, + 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, + 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, + 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, + 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, + 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, + 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, + 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, + 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, + 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, + 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, + 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, + 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, + 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, + 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, + 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, + 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, + 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, + 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, + 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, + 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, + 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, + 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, + 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, + 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, + 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, + 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, + 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, + 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, + 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, + 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, + 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, + 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, + 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, + 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, + 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, + 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, + 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, + 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, + 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, + 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, + 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, + 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, + 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, + 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, + 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, + 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, + 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, + 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, + 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, + 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, + 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, + 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, + 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, + 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, + 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, + 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, + 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, + 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, + 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, + 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, + 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, + 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, + 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, + 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, + 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, + 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, + 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, + 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, + 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, + 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, + 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, + 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, + 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, + 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, + 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, + 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, + 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, + 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, + 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, + 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, + 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, + 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, + 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, + 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, + 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, + 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, + 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, + 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, + 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, + 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, + 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, + 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, + 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, + 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, + 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, + 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, + 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, + 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, + 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, + 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, + 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, + 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, + 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, + 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, + 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, + 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, + 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, + 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, + 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, + 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, + 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, + 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, + 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, + 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, + 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, + 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, + 0x36, 0x04, 0x40, 0x07, 0x00 }; + +const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 4, 22, 21, 8, -21 }, // 0x21 '!' + { 11, 11, 10, 21, 5, -20 }, // 0x22 '"' + { 25, 14, 24, 21, 3, -21 }, // 0x23 '#' + { 67, 13, 26, 21, 4, -22 }, // 0x24 '$' + { 110, 15, 21, 21, 3, -20 }, // 0x25 '%' + { 150, 12, 18, 21, 4, -17 }, // 0x26 '&' + { 177, 4, 10, 21, 8, -20 }, // 0x27 ''' + { 182, 5, 25, 21, 10, -20 }, // 0x28 '(' + { 198, 5, 25, 21, 6, -20 }, // 0x29 ')' + { 214, 13, 12, 21, 4, -20 }, // 0x2A '*' + { 234, 15, 17, 21, 3, -17 }, // 0x2B '+' + { 266, 7, 10, 21, 5, -4 }, // 0x2C ',' + { 275, 15, 1, 21, 3, -9 }, // 0x2D '-' + { 277, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 281, 13, 26, 21, 4, -22 }, // 0x2F '/' + { 324, 13, 21, 21, 4, -20 }, // 0x30 '0' + { 359, 13, 21, 21, 4, -20 }, // 0x31 '1' + { 394, 13, 21, 21, 3, -20 }, // 0x32 '2' + { 429, 14, 21, 21, 3, -20 }, // 0x33 '3' + { 466, 12, 21, 21, 4, -20 }, // 0x34 '4' + { 498, 14, 21, 21, 3, -20 }, // 0x35 '5' + { 535, 12, 21, 21, 5, -20 }, // 0x36 '6' + { 567, 12, 21, 21, 4, -20 }, // 0x37 '7' + { 599, 13, 21, 21, 4, -20 }, // 0x38 '8' + { 634, 12, 21, 21, 5, -20 }, // 0x39 '9' + { 666, 5, 15, 21, 8, -14 }, // 0x3A ':' + { 676, 7, 20, 21, 5, -14 }, // 0x3B ';' + { 694, 15, 16, 21, 3, -17 }, // 0x3C '<' + { 724, 17, 6, 21, 2, -12 }, // 0x3D '=' + { 737, 15, 16, 21, 3, -17 }, // 0x3E '>' + { 767, 12, 20, 21, 5, -19 }, // 0x3F '?' + { 797, 13, 23, 21, 4, -20 }, // 0x40 '@' + { 835, 21, 20, 21, 0, -19 }, // 0x41 'A' + { 888, 18, 20, 21, 1, -19 }, // 0x42 'B' + { 933, 17, 20, 21, 2, -19 }, // 0x43 'C' + { 976, 16, 20, 21, 2, -19 }, // 0x44 'D' + { 1016, 17, 20, 21, 1, -19 }, // 0x45 'E' + { 1059, 17, 20, 21, 1, -19 }, // 0x46 'F' + { 1102, 17, 20, 21, 2, -19 }, // 0x47 'G' + { 1145, 16, 20, 21, 2, -19 }, // 0x48 'H' + { 1185, 13, 20, 21, 4, -19 }, // 0x49 'I' + { 1218, 17, 20, 21, 3, -19 }, // 0x4A 'J' + { 1261, 18, 20, 21, 1, -19 }, // 0x4B 'K' + { 1306, 15, 20, 21, 3, -19 }, // 0x4C 'L' + { 1344, 19, 20, 21, 1, -19 }, // 0x4D 'M' + { 1392, 18, 20, 21, 1, -19 }, // 0x4E 'N' + { 1437, 17, 20, 21, 2, -19 }, // 0x4F 'O' + { 1480, 16, 20, 21, 1, -19 }, // 0x50 'P' + { 1520, 17, 24, 21, 2, -19 }, // 0x51 'Q' + { 1571, 19, 20, 21, 1, -19 }, // 0x52 'R' + { 1619, 14, 20, 21, 3, -19 }, // 0x53 'S' + { 1654, 15, 20, 21, 3, -19 }, // 0x54 'T' + { 1692, 17, 20, 21, 2, -19 }, // 0x55 'U' + { 1735, 21, 20, 21, 0, -19 }, // 0x56 'V' + { 1788, 19, 20, 21, 1, -19 }, // 0x57 'W' + { 1836, 19, 20, 21, 1, -19 }, // 0x58 'X' + { 1884, 17, 20, 21, 2, -19 }, // 0x59 'Y' + { 1927, 13, 20, 21, 4, -19 }, // 0x5A 'Z' + { 1960, 5, 25, 21, 10, -20 }, // 0x5B '[' + { 1976, 13, 26, 21, 4, -22 }, // 0x5C '\' + { 2019, 5, 25, 21, 6, -20 }, // 0x5D ']' + { 2035, 13, 9, 21, 4, -20 }, // 0x5E '^' + { 2050, 21, 1, 21, 0, 4 }, // 0x5F '_' + { 2053, 6, 5, 21, 5, -21 }, // 0x60 '`' + { 2057, 16, 15, 21, 3, -14 }, // 0x61 'a' + { 2087, 18, 21, 21, 1, -20 }, // 0x62 'b' + { 2135, 15, 15, 21, 3, -14 }, // 0x63 'c' + { 2164, 18, 21, 21, 2, -20 }, // 0x64 'd' + { 2212, 16, 15, 21, 2, -14 }, // 0x65 'e' + { 2242, 14, 21, 21, 4, -20 }, // 0x66 'f' + { 2279, 17, 22, 21, 2, -14 }, // 0x67 'g' + { 2326, 17, 21, 21, 1, -20 }, // 0x68 'h' + { 2371, 14, 22, 21, 4, -21 }, // 0x69 'i' + { 2410, 10, 29, 21, 5, -21 }, // 0x6A 'j' + { 2447, 16, 21, 21, 2, -20 }, // 0x6B 'k' + { 2489, 14, 21, 21, 4, -20 }, // 0x6C 'l' + { 2526, 19, 15, 21, 1, -14 }, // 0x6D 'm' + { 2562, 17, 15, 21, 1, -14 }, // 0x6E 'n' + { 2594, 15, 15, 21, 3, -14 }, // 0x6F 'o' + { 2623, 18, 22, 21, 1, -14 }, // 0x70 'p' + { 2673, 18, 22, 21, 2, -14 }, // 0x71 'q' + { 2723, 15, 15, 21, 3, -14 }, // 0x72 'r' + { 2752, 13, 15, 21, 4, -14 }, // 0x73 's' + { 2777, 16, 20, 21, 1, -19 }, // 0x74 't' + { 2817, 17, 15, 21, 1, -14 }, // 0x75 'u' + { 2849, 19, 15, 21, 1, -14 }, // 0x76 'v' + { 2885, 19, 15, 21, 1, -14 }, // 0x77 'w' + { 2921, 17, 15, 21, 2, -14 }, // 0x78 'x' + { 2953, 17, 22, 21, 2, -14 }, // 0x79 'y' + { 3000, 13, 15, 21, 4, -14 }, // 0x7A 'z' + { 3025, 8, 25, 21, 6, -20 }, // 0x7B '{' + { 3050, 1, 25, 21, 10, -20 }, // 0x7C '|' + { 3054, 8, 25, 21, 7, -20 }, // 0x7D '}' + { 3079, 15, 5, 21, 3, -11 } }; // 0x7E '~' + +const GFXfont FreeMono18pt7b PROGMEM = { + (uint8_t *)FreeMono18pt7bBitmaps, + (GFXglyph *)FreeMono18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 3761 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h new file mode 100644 index 000000000..4c8bd151d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h @@ -0,0 +1,577 @@ +const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, + 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, + 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, + 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, + 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, + 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, + 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, + 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, + 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, + 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, + 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, + 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, + 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, + 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, + 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, + 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, + 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, + 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, + 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, + 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, + 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, + 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, + 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, + 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, + 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, + 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, + 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, + 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, + 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, + 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, + 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, + 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, + 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, + 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, + 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, + 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, + 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, + 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, + 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, + 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, + 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, + 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, + 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, + 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, + 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, + 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, + 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, + 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, + 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, + 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, + 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, + 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, + 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, + 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, + 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, + 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, + 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, + 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, + 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, + 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, + 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, + 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, + 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, + 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, + 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, + 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, + 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, + 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, + 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, + 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, + 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, + 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, + 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, + 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, + 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, + 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, + 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, + 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, + 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, + 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, + 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, + 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, + 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, + 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, + 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, + 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, + 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, + 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, + 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, + 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, + 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, + 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, + 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, + 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, + 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, + 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, + 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, + 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, + 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, + 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, + 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, + 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, + 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, + 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, + 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, + 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, + 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, + 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, + 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, + 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, + 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, + 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, + 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, + 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, + 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, + 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, + 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, + 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, + 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, + 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, + 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, + 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, + 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, + 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, + 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, + 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, + 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, + 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, + 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, + 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, + 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, + 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, + 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, + 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, + 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, + 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, + 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, + 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, + 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, + 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, + 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, + 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, + 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, + 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, + 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, + 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, + 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, + 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, + 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, + 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, + 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, + 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, + 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, + 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, + 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, + 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, + 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, + 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, + 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, + 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, + 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, + 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, + 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, + 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, + 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, + 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, + 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, + 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, + 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, + 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, + 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, + 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, + 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, + 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, + 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, + 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, + 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, + 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, + 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, + 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, + 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, + 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, + 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, + 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, + 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, + 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, + 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, + 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, + 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, + 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, + 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, + 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, + 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, + 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, + 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, + 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, + 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, + 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, + 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, + 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, + 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, + 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, + 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, + 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, + 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, + 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, + 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, + 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, + 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, + 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, + 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, + 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, + 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, + 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, + 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, + 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, + 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, + 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, + 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, + 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, + 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, + 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, + 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, + 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, + 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, + 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, + 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, + 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0 }; + +const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 5, 30, 28, 11, -28 }, // 0x21 '!' + { 19, 16, 14, 28, 6, -28 }, // 0x22 '"' + { 47, 19, 32, 28, 4, -29 }, // 0x23 '#' + { 123, 18, 33, 28, 5, -29 }, // 0x24 '$' + { 198, 20, 29, 28, 4, -27 }, // 0x25 '%' + { 271, 18, 25, 28, 5, -23 }, // 0x26 '&' + { 328, 7, 14, 28, 11, -28 }, // 0x27 ''' + { 341, 7, 34, 28, 14, -27 }, // 0x28 '(' + { 371, 7, 34, 28, 8, -27 }, // 0x29 ')' + { 401, 18, 16, 28, 5, -27 }, // 0x2A '*' + { 437, 20, 22, 28, 4, -23 }, // 0x2B '+' + { 492, 9, 14, 28, 6, -6 }, // 0x2C ',' + { 508, 22, 2, 28, 3, -13 }, // 0x2D '-' + { 514, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 520, 18, 35, 28, 5, -30 }, // 0x2F '/' + { 599, 18, 30, 28, 5, -28 }, // 0x30 '0' + { 667, 16, 29, 28, 6, -28 }, // 0x31 '1' + { 725, 18, 29, 28, 5, -28 }, // 0x32 '2' + { 791, 19, 30, 28, 5, -28 }, // 0x33 '3' + { 863, 16, 28, 28, 6, -27 }, // 0x34 '4' + { 919, 19, 29, 28, 5, -27 }, // 0x35 '5' + { 988, 18, 30, 28, 6, -28 }, // 0x36 '6' + { 1056, 18, 28, 28, 5, -27 }, // 0x37 '7' + { 1119, 18, 30, 28, 5, -28 }, // 0x38 '8' + { 1187, 18, 30, 28, 6, -28 }, // 0x39 '9' + { 1255, 7, 21, 28, 11, -19 }, // 0x3A ':' + { 1274, 10, 27, 28, 7, -19 }, // 0x3B ';' + { 1308, 22, 22, 28, 3, -23 }, // 0x3C '<' + { 1369, 24, 9, 28, 2, -17 }, // 0x3D '=' + { 1396, 21, 22, 28, 4, -23 }, // 0x3E '>' + { 1454, 17, 28, 28, 6, -26 }, // 0x3F '?' + { 1514, 18, 32, 28, 5, -28 }, // 0x40 '@' + { 1586, 28, 26, 28, 0, -25 }, // 0x41 'A' + { 1677, 22, 26, 28, 3, -25 }, // 0x42 'B' + { 1749, 22, 28, 28, 3, -26 }, // 0x43 'C' + { 1826, 22, 26, 28, 3, -25 }, // 0x44 'D' + { 1898, 22, 26, 28, 3, -25 }, // 0x45 'E' + { 1970, 22, 26, 28, 3, -25 }, // 0x46 'F' + { 2042, 23, 28, 28, 3, -26 }, // 0x47 'G' + { 2123, 23, 26, 28, 3, -25 }, // 0x48 'H' + { 2198, 16, 26, 28, 6, -25 }, // 0x49 'I' + { 2250, 23, 27, 28, 4, -25 }, // 0x4A 'J' + { 2328, 24, 26, 28, 3, -25 }, // 0x4B 'K' + { 2406, 21, 26, 28, 4, -25 }, // 0x4C 'L' + { 2475, 26, 26, 28, 1, -25 }, // 0x4D 'M' + { 2560, 24, 26, 28, 2, -25 }, // 0x4E 'N' + { 2638, 24, 28, 28, 2, -26 }, // 0x4F 'O' + { 2722, 21, 26, 28, 3, -25 }, // 0x50 'P' + { 2791, 24, 32, 28, 2, -26 }, // 0x51 'Q' + { 2887, 24, 26, 28, 3, -25 }, // 0x52 'R' + { 2965, 20, 28, 28, 4, -26 }, // 0x53 'S' + { 3035, 22, 26, 28, 3, -25 }, // 0x54 'T' + { 3107, 23, 27, 28, 3, -25 }, // 0x55 'U' + { 3185, 28, 26, 28, 0, -25 }, // 0x56 'V' + { 3276, 26, 26, 28, 1, -25 }, // 0x57 'W' + { 3361, 24, 26, 28, 2, -25 }, // 0x58 'X' + { 3439, 24, 26, 28, 2, -25 }, // 0x59 'Y' + { 3517, 18, 26, 28, 5, -25 }, // 0x5A 'Z' + { 3576, 7, 34, 28, 13, -27 }, // 0x5B '[' + { 3606, 18, 35, 28, 5, -30 }, // 0x5C '\' + { 3685, 7, 34, 28, 8, -27 }, // 0x5D ']' + { 3715, 18, 12, 28, 5, -28 }, // 0x5E '^' + { 3742, 28, 2, 28, 0, 5 }, // 0x5F '_' + { 3749, 8, 7, 28, 7, -29 }, // 0x60 '`' + { 3756, 22, 22, 28, 3, -20 }, // 0x61 'a' + { 3817, 23, 29, 28, 2, -27 }, // 0x62 'b' + { 3901, 21, 22, 28, 4, -20 }, // 0x63 'c' + { 3959, 24, 29, 28, 3, -27 }, // 0x64 'd' + { 4046, 21, 22, 28, 3, -20 }, // 0x65 'e' + { 4104, 19, 28, 28, 6, -27 }, // 0x66 'f' + { 4171, 23, 30, 28, 3, -20 }, // 0x67 'g' + { 4258, 23, 28, 28, 3, -27 }, // 0x68 'h' + { 4339, 18, 29, 28, 5, -28 }, // 0x69 'i' + { 4405, 14, 38, 28, 6, -28 }, // 0x6A 'j' + { 4472, 22, 28, 28, 4, -27 }, // 0x6B 'k' + { 4549, 18, 28, 28, 5, -27 }, // 0x6C 'l' + { 4612, 28, 21, 28, 0, -20 }, // 0x6D 'm' + { 4686, 23, 21, 28, 2, -20 }, // 0x6E 'n' + { 4747, 22, 22, 28, 3, -20 }, // 0x6F 'o' + { 4808, 23, 30, 28, 2, -20 }, // 0x70 'p' + { 4895, 24, 30, 28, 3, -20 }, // 0x71 'q' + { 4985, 21, 20, 28, 5, -19 }, // 0x72 'r' + { 5038, 18, 22, 28, 5, -20 }, // 0x73 's' + { 5088, 21, 27, 28, 3, -25 }, // 0x74 't' + { 5159, 23, 21, 28, 3, -19 }, // 0x75 'u' + { 5220, 26, 20, 28, 1, -19 }, // 0x76 'v' + { 5285, 26, 20, 28, 1, -19 }, // 0x77 'w' + { 5350, 24, 20, 28, 2, -19 }, // 0x78 'x' + { 5410, 24, 29, 28, 2, -19 }, // 0x79 'y' + { 5497, 17, 20, 28, 6, -19 }, // 0x7A 'z' + { 5540, 11, 34, 28, 8, -27 }, // 0x7B '{' + { 5587, 2, 34, 28, 13, -27 }, // 0x7C '|' + { 5596, 11, 34, 28, 9, -27 }, // 0x7D '}' + { 5643, 20, 6, 28, 4, -15 } }; // 0x7E '~' + +const GFXfont FreeMono24pt7b PROGMEM = { + (uint8_t *)FreeMono24pt7bBitmaps, + (GFXglyph *)FreeMono24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 6330 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h new file mode 100644 index 000000000..c82d7869c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h @@ -0,0 +1,176 @@ +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30 }; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 2, 11, 11, 4, -10 }, // 0x21 '!' + { 3, 6, 5, 11, 2, -10 }, // 0x22 '"' + { 7, 7, 12, 11, 2, -10 }, // 0x23 '#' + { 18, 8, 12, 11, 1, -10 }, // 0x24 '$' + { 30, 7, 11, 11, 2, -10 }, // 0x25 '%' + { 40, 7, 10, 11, 2, -9 }, // 0x26 '&' + { 49, 3, 5, 11, 4, -10 }, // 0x27 ''' + { 51, 2, 13, 11, 5, -10 }, // 0x28 '(' + { 55, 2, 13, 11, 4, -10 }, // 0x29 ')' + { 59, 7, 7, 11, 2, -10 }, // 0x2A '*' + { 66, 7, 7, 11, 2, -8 }, // 0x2B '+' + { 73, 3, 5, 11, 2, -1 }, // 0x2C ',' + { 75, 9, 1, 11, 1, -5 }, // 0x2D '-' + { 77, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 78, 7, 13, 11, 2, -11 }, // 0x2F '/' + { 90, 7, 11, 11, 2, -10 }, // 0x30 '0' + { 100, 5, 11, 11, 3, -10 }, // 0x31 '1' + { 107, 7, 11, 11, 2, -10 }, // 0x32 '2' + { 117, 8, 11, 11, 1, -10 }, // 0x33 '3' + { 128, 6, 11, 11, 3, -10 }, // 0x34 '4' + { 137, 7, 11, 11, 2, -10 }, // 0x35 '5' + { 147, 7, 11, 11, 2, -10 }, // 0x36 '6' + { 157, 7, 11, 11, 2, -10 }, // 0x37 '7' + { 167, 7, 11, 11, 2, -10 }, // 0x38 '8' + { 177, 7, 11, 11, 2, -10 }, // 0x39 '9' + { 187, 2, 8, 11, 4, -7 }, // 0x3A ':' + { 189, 3, 11, 11, 3, -7 }, // 0x3B ';' + { 194, 8, 8, 11, 1, -8 }, // 0x3C '<' + { 202, 9, 4, 11, 1, -6 }, // 0x3D '=' + { 207, 9, 8, 11, 1, -8 }, // 0x3E '>' + { 216, 7, 10, 11, 2, -9 }, // 0x3F '?' + { 225, 8, 12, 11, 2, -10 }, // 0x40 '@' + { 237, 11, 10, 11, 0, -9 }, // 0x41 'A' + { 251, 9, 10, 11, 1, -9 }, // 0x42 'B' + { 263, 9, 10, 11, 1, -9 }, // 0x43 'C' + { 275, 9, 10, 11, 1, -9 }, // 0x44 'D' + { 287, 9, 10, 11, 1, -9 }, // 0x45 'E' + { 299, 9, 10, 11, 1, -9 }, // 0x46 'F' + { 311, 10, 10, 11, 1, -9 }, // 0x47 'G' + { 324, 9, 10, 11, 1, -9 }, // 0x48 'H' + { 336, 5, 10, 11, 3, -9 }, // 0x49 'I' + { 343, 8, 10, 11, 2, -9 }, // 0x4A 'J' + { 353, 9, 10, 11, 1, -9 }, // 0x4B 'K' + { 365, 8, 10, 11, 2, -9 }, // 0x4C 'L' + { 375, 11, 10, 11, 0, -9 }, // 0x4D 'M' + { 389, 9, 10, 11, 1, -9 }, // 0x4E 'N' + { 401, 9, 10, 11, 1, -9 }, // 0x4F 'O' + { 413, 8, 10, 11, 1, -9 }, // 0x50 'P' + { 423, 9, 13, 11, 1, -9 }, // 0x51 'Q' + { 438, 9, 10, 11, 1, -9 }, // 0x52 'R' + { 450, 7, 10, 11, 2, -9 }, // 0x53 'S' + { 459, 9, 10, 11, 1, -9 }, // 0x54 'T' + { 471, 9, 10, 11, 1, -9 }, // 0x55 'U' + { 483, 11, 10, 11, 0, -9 }, // 0x56 'V' + { 497, 11, 10, 11, 0, -9 }, // 0x57 'W' + { 511, 9, 10, 11, 1, -9 }, // 0x58 'X' + { 523, 9, 10, 11, 1, -9 }, // 0x59 'Y' + { 535, 7, 10, 11, 2, -9 }, // 0x5A 'Z' + { 544, 2, 13, 11, 5, -10 }, // 0x5B '[' + { 548, 7, 13, 11, 2, -11 }, // 0x5C '\' + { 560, 2, 13, 11, 4, -10 }, // 0x5D ']' + { 564, 7, 5, 11, 2, -10 }, // 0x5E '^' + { 569, 11, 1, 11, 0, 2 }, // 0x5F '_' + { 571, 3, 3, 11, 3, -11 }, // 0x60 '`' + { 573, 9, 8, 11, 1, -7 }, // 0x61 'a' + { 582, 9, 11, 11, 1, -10 }, // 0x62 'b' + { 595, 7, 8, 11, 2, -7 }, // 0x63 'c' + { 602, 9, 11, 11, 1, -10 }, // 0x64 'd' + { 615, 8, 8, 11, 1, -7 }, // 0x65 'e' + { 623, 6, 11, 11, 3, -10 }, // 0x66 'f' + { 632, 9, 11, 11, 1, -7 }, // 0x67 'g' + { 645, 9, 11, 11, 1, -10 }, // 0x68 'h' + { 658, 7, 10, 11, 2, -9 }, // 0x69 'i' + { 667, 5, 13, 11, 3, -9 }, // 0x6A 'j' + { 676, 8, 11, 11, 2, -10 }, // 0x6B 'k' + { 687, 7, 11, 11, 2, -10 }, // 0x6C 'l' + { 697, 9, 8, 11, 1, -7 }, // 0x6D 'm' + { 706, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 715, 9, 8, 11, 1, -7 }, // 0x6F 'o' + { 724, 9, 11, 11, 1, -7 }, // 0x70 'p' + { 737, 9, 11, 11, 1, -7 }, // 0x71 'q' + { 750, 7, 8, 11, 3, -7 }, // 0x72 'r' + { 757, 7, 8, 11, 2, -7 }, // 0x73 's' + { 764, 8, 10, 11, 2, -9 }, // 0x74 't' + { 774, 8, 8, 11, 1, -7 }, // 0x75 'u' + { 782, 9, 8, 11, 1, -7 }, // 0x76 'v' + { 791, 9, 8, 11, 1, -7 }, // 0x77 'w' + { 800, 9, 8, 11, 1, -7 }, // 0x78 'x' + { 809, 9, 11, 11, 1, -7 }, // 0x79 'y' + { 822, 7, 8, 11, 2, -7 }, // 0x7A 'z' + { 829, 3, 13, 11, 4, -10 }, // 0x7B '{' + { 834, 1, 13, 11, 5, -10 }, // 0x7C '|' + { 836, 3, 13, 11, 4, -10 }, // 0x7D '}' + { 841, 7, 3, 11, 2, -6 } }; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = { + (uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1516 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h new file mode 100644 index 000000000..4ad9d1a4f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h @@ -0,0 +1,250 @@ +const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, + 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, + 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, + 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, + 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, + 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, + 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, + 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, + 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, + 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, + 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, + 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, + 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, + 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, + 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, + 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, + 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, + 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, + 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, + 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, + 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, + 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, + 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, + 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, + 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, + 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, + 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, + 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, + 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, + 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, + 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, + 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, + 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, + 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, + 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, + 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, + 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, + 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, + 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, + 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, + 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, + 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, + 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, + 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, + 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, + 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, + 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, + 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, + 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, + 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, + 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, + 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, + 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, + 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, + 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, + 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, + 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, + 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, + 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, + 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, + 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, + 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, + 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, + 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, + 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, + 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, + 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, + 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, + 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, + 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, + 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, + 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, + 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, + 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, + 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, + 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, + 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, + 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, + 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, + 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, + 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, + 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, + 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, + 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, + 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, + 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, + 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, + 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, + 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, + 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, + 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, + 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, + 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, + 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, + 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, + 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, + 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, + 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, + 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, + 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, + 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, + 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, + 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, + 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, + 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, + 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, + 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, + 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, + 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, + 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, + 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, + 0xE6, 0x1C }; + +const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 4, 15, 14, 5, -14 }, // 0x21 '!' + { 8, 8, 7, 14, 3, -13 }, // 0x22 '"' + { 15, 11, 18, 14, 2, -15 }, // 0x23 '#' + { 40, 10, 20, 14, 2, -16 }, // 0x24 '$' + { 65, 10, 15, 14, 2, -14 }, // 0x25 '%' + { 84, 10, 13, 14, 2, -12 }, // 0x26 '&' + { 101, 3, 7, 14, 5, -13 }, // 0x27 ''' + { 104, 5, 19, 14, 6, -14 }, // 0x28 '(' + { 116, 5, 19, 14, 3, -14 }, // 0x29 ')' + { 128, 10, 10, 14, 2, -14 }, // 0x2A '*' + { 141, 12, 13, 14, 1, -12 }, // 0x2B '+' + { 161, 5, 7, 14, 4, -2 }, // 0x2C ',' + { 166, 12, 2, 14, 1, -7 }, // 0x2D '-' + { 169, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 171, 10, 20, 14, 2, -16 }, // 0x2F '/' + { 196, 10, 15, 14, 2, -14 }, // 0x30 '0' + { 215, 10, 15, 14, 2, -14 }, // 0x31 '1' + { 234, 10, 15, 14, 2, -14 }, // 0x32 '2' + { 253, 11, 15, 14, 1, -14 }, // 0x33 '3' + { 274, 9, 14, 14, 2, -13 }, // 0x34 '4' + { 290, 10, 15, 14, 2, -14 }, // 0x35 '5' + { 309, 10, 15, 14, 2, -14 }, // 0x36 '6' + { 328, 10, 15, 14, 2, -14 }, // 0x37 '7' + { 347, 10, 15, 14, 2, -14 }, // 0x38 '8' + { 366, 10, 15, 14, 3, -14 }, // 0x39 '9' + { 385, 3, 11, 14, 5, -10 }, // 0x3A ':' + { 390, 4, 15, 14, 4, -10 }, // 0x3B ';' + { 398, 12, 11, 14, 1, -11 }, // 0x3C '<' + { 415, 12, 7, 14, 1, -9 }, // 0x3D '=' + { 426, 12, 11, 14, 1, -11 }, // 0x3E '>' + { 443, 9, 14, 14, 3, -13 }, // 0x3F '?' + { 459, 11, 19, 14, 2, -14 }, // 0x40 '@' + { 486, 15, 14, 14, -1, -13 }, // 0x41 'A' + { 513, 13, 14, 14, 0, -13 }, // 0x42 'B' + { 536, 12, 14, 14, 1, -13 }, // 0x43 'C' + { 557, 12, 14, 14, 1, -13 }, // 0x44 'D' + { 578, 13, 14, 14, 0, -13 }, // 0x45 'E' + { 601, 13, 14, 14, 0, -13 }, // 0x46 'F' + { 624, 13, 14, 14, 1, -13 }, // 0x47 'G' + { 647, 14, 14, 14, 0, -13 }, // 0x48 'H' + { 672, 10, 14, 14, 2, -13 }, // 0x49 'I' + { 690, 13, 14, 14, 1, -13 }, // 0x4A 'J' + { 713, 14, 14, 14, 0, -13 }, // 0x4B 'K' + { 738, 12, 14, 14, 1, -13 }, // 0x4C 'L' + { 759, 14, 14, 14, 0, -13 }, // 0x4D 'M' + { 784, 13, 14, 14, 0, -13 }, // 0x4E 'N' + { 807, 12, 14, 14, 1, -13 }, // 0x4F 'O' + { 828, 12, 14, 14, 0, -13 }, // 0x50 'P' + { 849, 12, 17, 14, 1, -13 }, // 0x51 'Q' + { 875, 14, 14, 14, 0, -13 }, // 0x52 'R' + { 900, 10, 14, 14, 2, -13 }, // 0x53 'S' + { 918, 12, 14, 14, 1, -13 }, // 0x54 'T' + { 939, 12, 14, 14, 1, -13 }, // 0x55 'U' + { 960, 16, 14, 14, -1, -13 }, // 0x56 'V' + { 988, 14, 14, 14, 0, -13 }, // 0x57 'W' + { 1013, 14, 14, 14, 0, -13 }, // 0x58 'X' + { 1038, 12, 14, 14, 1, -13 }, // 0x59 'Y' + { 1059, 10, 14, 14, 2, -13 }, // 0x5A 'Z' + { 1077, 5, 19, 14, 6, -14 }, // 0x5B '[' + { 1089, 10, 20, 14, 2, -16 }, // 0x5C '\' + { 1114, 5, 19, 14, 3, -14 }, // 0x5D ']' + { 1126, 10, 8, 14, 2, -15 }, // 0x5E '^' + { 1136, 14, 2, 14, 0, 4 }, // 0x5F '_' + { 1140, 4, 4, 14, 4, -15 }, // 0x60 '`' + { 1142, 12, 11, 14, 1, -10 }, // 0x61 'a' + { 1159, 13, 15, 14, 0, -14 }, // 0x62 'b' + { 1184, 12, 11, 14, 1, -10 }, // 0x63 'c' + { 1201, 13, 15, 14, 1, -14 }, // 0x64 'd' + { 1226, 12, 11, 14, 1, -10 }, // 0x65 'e' + { 1243, 11, 15, 14, 2, -14 }, // 0x66 'f' + { 1264, 13, 16, 14, 1, -10 }, // 0x67 'g' + { 1290, 14, 15, 14, 0, -14 }, // 0x68 'h' + { 1317, 11, 14, 14, 1, -13 }, // 0x69 'i' + { 1337, 8, 19, 15, 3, -13 }, // 0x6A 'j' + { 1356, 13, 15, 14, 1, -14 }, // 0x6B 'k' + { 1381, 11, 15, 14, 1, -14 }, // 0x6C 'l' + { 1402, 15, 11, 14, 0, -10 }, // 0x6D 'm' + { 1423, 14, 11, 14, 0, -10 }, // 0x6E 'n' + { 1443, 12, 11, 14, 1, -10 }, // 0x6F 'o' + { 1460, 14, 16, 14, 0, -10 }, // 0x70 'p' + { 1488, 14, 16, 14, 0, -10 }, // 0x71 'q' + { 1516, 12, 11, 14, 1, -10 }, // 0x72 'r' + { 1533, 10, 11, 14, 2, -10 }, // 0x73 's' + { 1547, 11, 14, 14, 1, -13 }, // 0x74 't' + { 1567, 13, 11, 14, 0, -10 }, // 0x75 'u' + { 1585, 14, 11, 14, 0, -10 }, // 0x76 'v' + { 1605, 14, 11, 14, 0, -10 }, // 0x77 'w' + { 1625, 14, 11, 14, 0, -10 }, // 0x78 'x' + { 1645, 12, 16, 14, 1, -10 }, // 0x79 'y' + { 1669, 11, 11, 14, 1, -10 }, // 0x7A 'z' + { 1685, 7, 19, 14, 3, -14 }, // 0x7B '{' + { 1702, 2, 19, 14, 6, -14 }, // 0x7C '|' + { 1707, 7, 19, 14, 4, -14 }, // 0x7D '}' + { 1724, 12, 4, 14, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoBold12pt7b PROGMEM = { + (uint8_t *)FreeMonoBold12pt7bBitmaps, + (GFXglyph *)FreeMonoBold12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2402 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h new file mode 100644 index 000000000..36e0be05d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h @@ -0,0 +1,423 @@ +const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { + 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, + 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, + 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, + 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, + 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, + 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, + 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, + 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, + 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, + 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, + 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, + 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, + 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, + 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, + 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, + 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, + 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, + 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, + 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, + 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, + 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, + 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, + 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, + 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, + 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, + 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, + 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, + 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, + 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, + 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, + 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, + 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, + 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, + 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, + 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, + 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, + 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, + 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, + 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, + 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, + 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, + 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, + 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, + 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, + 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, + 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, + 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, + 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, + 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, + 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, + 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, + 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, + 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, + 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, + 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, + 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, + 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, + 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, + 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, + 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, + 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, + 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, + 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, + 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, + 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, + 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, + 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, + 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, + 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, + 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, + 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, + 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, + 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, + 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, + 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, + 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, + 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, + 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, + 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, + 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, + 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, + 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, + 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, + 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, + 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, + 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, + 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, + 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, + 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, + 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, + 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, + 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, + 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, + 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, + 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, + 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, + 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, + 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, + 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, + 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, + 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, + 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, + 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, + 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, + 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, + 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, + 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, + 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, + 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, + 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, + 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, + 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, + 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, + 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, + 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, + 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, + 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, + 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, + 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, + 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, + 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, + 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, + 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, + 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, + 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, + 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, + 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, + 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, + 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, + 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, + 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, + 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, + 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, + 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, + 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, + 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, + 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, + 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, + 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, + 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, + 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, + 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, + 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, + 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, + 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, + 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, + 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, + 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, + 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, + 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, + 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, + 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, + 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, + 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, + 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, + 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, + 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, + 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, + 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, + 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, + 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, + 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, + 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, + 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, + 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, + 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, + 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, + 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, + 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, + 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, + 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, + 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, + 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, + 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, + 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, + 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, + 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, + 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, + 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, + 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, + 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, + 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, + 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, + 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, + 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, + 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, + 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78 }; + +const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 5, 22, 21, 8, -21 }, // 0x21 '!' + { 14, 11, 10, 21, 5, -20 }, // 0x22 '"' + { 28, 16, 25, 21, 3, -22 }, // 0x23 '#' + { 78, 14, 28, 21, 4, -23 }, // 0x24 '$' + { 127, 15, 21, 21, 3, -20 }, // 0x25 '%' + { 167, 15, 20, 21, 3, -19 }, // 0x26 '&' + { 205, 4, 10, 21, 8, -20 }, // 0x27 ''' + { 210, 8, 27, 21, 9, -21 }, // 0x28 '(' + { 237, 8, 27, 21, 4, -21 }, // 0x29 ')' + { 264, 16, 15, 21, 3, -21 }, // 0x2A '*' + { 294, 16, 19, 21, 3, -18 }, // 0x2B '+' + { 332, 7, 10, 21, 5, -3 }, // 0x2C ',' + { 341, 19, 4, 21, 1, -11 }, // 0x2D '-' + { 351, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 355, 15, 28, 21, 3, -23 }, // 0x2F '/' + { 408, 16, 23, 21, 3, -22 }, // 0x30 '0' + { 454, 15, 22, 21, 3, -21 }, // 0x31 '1' + { 496, 15, 23, 21, 3, -22 }, // 0x32 '2' + { 540, 16, 23, 21, 3, -22 }, // 0x33 '3' + { 586, 15, 21, 21, 3, -20 }, // 0x34 '4' + { 626, 17, 22, 21, 2, -21 }, // 0x35 '5' + { 673, 15, 23, 21, 4, -22 }, // 0x36 '6' + { 717, 15, 22, 21, 3, -21 }, // 0x37 '7' + { 759, 15, 23, 21, 3, -22 }, // 0x38 '8' + { 803, 15, 23, 21, 4, -22 }, // 0x39 '9' + { 847, 5, 16, 21, 8, -15 }, // 0x3A ':' + { 857, 7, 22, 21, 5, -15 }, // 0x3B ';' + { 877, 18, 16, 21, 1, -17 }, // 0x3C '<' + { 913, 19, 10, 21, 1, -14 }, // 0x3D '=' + { 937, 18, 16, 21, 2, -17 }, // 0x3E '>' + { 973, 15, 21, 21, 4, -20 }, // 0x3F '?' + { 1013, 15, 27, 21, 3, -21 }, // 0x40 '@' + { 1064, 22, 21, 21, -1, -20 }, // 0x41 'A' + { 1122, 20, 21, 21, 1, -20 }, // 0x42 'B' + { 1175, 19, 21, 21, 1, -20 }, // 0x43 'C' + { 1225, 18, 21, 21, 2, -20 }, // 0x44 'D' + { 1273, 19, 21, 21, 1, -20 }, // 0x45 'E' + { 1323, 19, 21, 21, 1, -20 }, // 0x46 'F' + { 1373, 20, 21, 21, 1, -20 }, // 0x47 'G' + { 1426, 21, 21, 21, 0, -20 }, // 0x48 'H' + { 1482, 14, 21, 21, 4, -20 }, // 0x49 'I' + { 1519, 19, 21, 21, 2, -20 }, // 0x4A 'J' + { 1569, 20, 21, 21, 1, -20 }, // 0x4B 'K' + { 1622, 18, 21, 21, 2, -20 }, // 0x4C 'L' + { 1670, 23, 21, 21, -1, -20 }, // 0x4D 'M' + { 1731, 20, 21, 21, 1, -20 }, // 0x4E 'N' + { 1784, 20, 21, 21, 1, -20 }, // 0x4F 'O' + { 1837, 18, 21, 21, 1, -20 }, // 0x50 'P' + { 1885, 20, 26, 21, 1, -20 }, // 0x51 'Q' + { 1950, 21, 21, 21, 0, -20 }, // 0x52 'R' + { 2006, 17, 21, 21, 2, -20 }, // 0x53 'S' + { 2051, 19, 21, 21, 1, -20 }, // 0x54 'T' + { 2101, 21, 21, 21, 0, -20 }, // 0x55 'U' + { 2157, 23, 21, 21, -1, -20 }, // 0x56 'V' + { 2218, 21, 21, 21, 0, -20 }, // 0x57 'W' + { 2274, 19, 21, 21, 1, -20 }, // 0x58 'X' + { 2324, 20, 21, 21, 1, -20 }, // 0x59 'Y' + { 2377, 16, 21, 21, 3, -20 }, // 0x5A 'Z' + { 2419, 8, 27, 21, 9, -21 }, // 0x5B '[' + { 2446, 15, 28, 21, 3, -23 }, // 0x5C '\' + { 2499, 8, 27, 21, 4, -21 }, // 0x5D ']' + { 2526, 15, 11, 21, 3, -21 }, // 0x5E '^' + { 2547, 21, 4, 21, 0, 4 }, // 0x5F '_' + { 2558, 6, 6, 21, 6, -22 }, // 0x60 '`' + { 2563, 19, 16, 21, 1, -15 }, // 0x61 'a' + { 2601, 19, 22, 21, 1, -21 }, // 0x62 'b' + { 2654, 17, 16, 21, 2, -15 }, // 0x63 'c' + { 2688, 20, 22, 21, 1, -21 }, // 0x64 'd' + { 2743, 18, 16, 21, 1, -15 }, // 0x65 'e' + { 2779, 16, 22, 21, 4, -21 }, // 0x66 'f' + { 2823, 19, 23, 21, 1, -15 }, // 0x67 'g' + { 2878, 21, 22, 21, 0, -21 }, // 0x68 'h' + { 2936, 16, 22, 21, 3, -21 }, // 0x69 'i' + { 2980, 12, 29, 21, 5, -21 }, // 0x6A 'j' + { 3024, 18, 22, 21, 2, -21 }, // 0x6B 'k' + { 3074, 16, 22, 21, 3, -21 }, // 0x6C 'l' + { 3118, 22, 16, 21, -1, -15 }, // 0x6D 'm' + { 3162, 20, 16, 21, 0, -15 }, // 0x6E 'n' + { 3202, 19, 16, 21, 1, -15 }, // 0x6F 'o' + { 3240, 21, 23, 21, 0, -15 }, // 0x70 'p' + { 3301, 21, 23, 22, 1, -15 }, // 0x71 'q' + { 3362, 17, 16, 21, 3, -15 }, // 0x72 'r' + { 3396, 16, 16, 21, 3, -15 }, // 0x73 's' + { 3428, 17, 21, 21, 1, -20 }, // 0x74 't' + { 3473, 18, 16, 21, 1, -15 }, // 0x75 'u' + { 3509, 21, 16, 21, 0, -15 }, // 0x76 'v' + { 3551, 21, 16, 21, 0, -15 }, // 0x77 'w' + { 3593, 19, 16, 21, 1, -15 }, // 0x78 'x' + { 3631, 19, 23, 21, 1, -15 }, // 0x79 'y' + { 3686, 14, 16, 21, 3, -15 }, // 0x7A 'z' + { 3714, 10, 27, 21, 6, -21 }, // 0x7B '{' + { 3748, 4, 27, 21, 9, -21 }, // 0x7C '|' + { 3762, 10, 27, 21, 6, -21 }, // 0x7D '}' + { 3796, 17, 8, 21, 2, -13 } }; // 0x7E '~' + +const GFXfont FreeMonoBold18pt7b PROGMEM = { + (uint8_t *)FreeMonoBold18pt7bBitmaps, + (GFXglyph *)FreeMonoBold18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4485 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h new file mode 100644 index 000000000..aa0dcd045 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h @@ -0,0 +1,672 @@ +const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { + 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, + 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, + 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, + 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, + 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, + 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, + 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, + 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, + 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, + 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, + 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, + 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, + 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, + 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, + 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, + 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, + 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, + 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, + 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, + 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, + 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, + 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, + 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, + 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, + 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, + 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, + 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, + 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, + 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, + 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, + 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, + 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, + 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, + 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, + 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, + 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, + 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, + 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, + 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, + 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, + 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, + 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, + 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, + 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, + 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, + 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, + 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, + 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, + 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, + 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, + 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, + 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, + 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, + 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, + 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, + 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, + 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, + 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, + 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, + 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, + 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, + 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, + 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, + 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, + 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, + 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, + 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, + 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, + 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, + 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, + 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, + 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, + 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, + 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, + 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, + 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, + 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, + 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, + 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, + 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, + 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, + 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, + 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, + 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, + 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, + 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, + 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, + 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, + 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, + 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, + 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, + 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, + 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, + 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, + 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, + 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, + 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, + 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, + 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, + 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, + 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, + 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, + 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, + 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, + 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, + 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, + 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, + 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, + 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, + 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, + 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, + 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, + 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, + 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, + 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, + 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, + 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, + 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, + 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, + 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, + 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, + 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, + 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, + 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, + 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, + 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, + 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, + 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, + 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, + 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, + 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, + 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, + 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, + 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, + 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, + 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, + 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, + 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, + 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, + 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, + 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, + 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, + 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, + 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, + 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, + 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, + 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, + 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, + 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, + 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, + 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, + 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, + 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, + 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, + 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, + 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, + 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, + 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, + 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, + 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, + 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, + 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, + 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, + 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, + 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, + 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, + 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, + 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, + 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, + 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, + 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, + 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, + 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, + 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, + 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, + 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, + 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, + 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, + 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, + 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, + 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, + 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, + 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, + 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, + 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, + 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, + 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, + 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, + 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, + 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, + 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, + 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, + 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, + 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, + 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, + 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, + 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, + 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, + 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, + 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, + 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, + 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, + 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, + 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, + 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, + 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, + 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, + 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, + 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, + 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, + 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, + 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, + 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, + 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, + 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, + 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, + 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, + 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, + 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, + 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, + 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, + 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, + 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, + 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, + 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, + 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, + 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, + 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, + 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, + 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, + 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, + 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, + 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, + 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, + 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, + 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, + 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, + 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, + 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, + 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, + 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, + 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, + 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, + 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, + 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, + 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, + 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, + 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, + 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0x00 }; + +const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 7, 31, 28, 10, -29 }, // 0x21 '!' + { 28, 15, 14, 28, 6, -28 }, // 0x22 '"' + { 55, 22, 34, 28, 3, -30 }, // 0x23 '#' + { 149, 19, 38, 28, 5, -31 }, // 0x24 '$' + { 240, 21, 30, 28, 4, -28 }, // 0x25 '%' + { 319, 21, 28, 28, 4, -26 }, // 0x26 '&' + { 393, 6, 14, 28, 11, -28 }, // 0x27 ''' + { 404, 10, 37, 28, 12, -29 }, // 0x28 '(' + { 451, 10, 37, 28, 6, -29 }, // 0x29 ')' + { 498, 21, 19, 28, 4, -28 }, // 0x2A '*' + { 548, 23, 26, 28, 3, -25 }, // 0x2B '+' + { 623, 9, 14, 28, 7, -6 }, // 0x2C ',' + { 639, 24, 5, 28, 2, -15 }, // 0x2D '-' + { 654, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 660, 20, 38, 28, 4, -32 }, // 0x2F '/' + { 755, 21, 31, 28, 4, -29 }, // 0x30 '0' + { 837, 20, 29, 28, 4, -28 }, // 0x31 '1' + { 910, 21, 30, 28, 3, -29 }, // 0x32 '2' + { 989, 21, 31, 28, 4, -29 }, // 0x33 '3' + { 1071, 20, 28, 28, 4, -27 }, // 0x34 '4' + { 1141, 21, 31, 28, 4, -29 }, // 0x35 '5' + { 1223, 20, 31, 28, 5, -29 }, // 0x36 '6' + { 1301, 20, 30, 28, 4, -29 }, // 0x37 '7' + { 1376, 20, 31, 28, 4, -29 }, // 0x38 '8' + { 1454, 20, 31, 28, 5, -29 }, // 0x39 '9' + { 1532, 7, 22, 28, 11, -20 }, // 0x3A ':' + { 1552, 10, 28, 28, 6, -20 }, // 0x3B ';' + { 1587, 24, 21, 28, 2, -23 }, // 0x3C '<' + { 1650, 24, 14, 28, 2, -19 }, // 0x3D '=' + { 1692, 23, 22, 28, 3, -23 }, // 0x3E '>' + { 1756, 20, 29, 28, 5, -27 }, // 0x3F '?' + { 1829, 19, 36, 28, 4, -28 }, // 0x40 '@' + { 1915, 29, 27, 28, -1, -26 }, // 0x41 'A' + { 2013, 26, 27, 28, 1, -26 }, // 0x42 'B' + { 2101, 25, 29, 28, 2, -27 }, // 0x43 'C' + { 2192, 25, 27, 28, 1, -26 }, // 0x44 'D' + { 2277, 25, 27, 28, 1, -26 }, // 0x45 'E' + { 2362, 25, 27, 28, 1, -26 }, // 0x46 'F' + { 2447, 25, 29, 28, 2, -27 }, // 0x47 'G' + { 2538, 26, 27, 28, 1, -26 }, // 0x48 'H' + { 2626, 19, 27, 28, 5, -26 }, // 0x49 'I' + { 2691, 25, 28, 28, 3, -26 }, // 0x4A 'J' + { 2779, 27, 27, 28, 1, -26 }, // 0x4B 'K' + { 2871, 25, 27, 28, 2, -26 }, // 0x4C 'L' + { 2956, 31, 27, 28, -1, -26 }, // 0x4D 'M' + { 3061, 28, 27, 28, 0, -26 }, // 0x4E 'N' + { 3156, 27, 29, 28, 1, -27 }, // 0x4F 'O' + { 3254, 24, 27, 28, 1, -26 }, // 0x50 'P' + { 3335, 27, 35, 28, 1, -27 }, // 0x51 'Q' + { 3454, 28, 27, 28, 0, -26 }, // 0x52 'R' + { 3549, 22, 29, 28, 3, -27 }, // 0x53 'S' + { 3629, 25, 27, 28, 2, -26 }, // 0x54 'T' + { 3714, 28, 28, 28, 0, -26 }, // 0x55 'U' + { 3812, 30, 27, 28, -1, -26 }, // 0x56 'V' + { 3914, 28, 27, 28, 0, -26 }, // 0x57 'W' + { 4009, 26, 27, 28, 1, -26 }, // 0x58 'X' + { 4097, 26, 27, 28, 1, -26 }, // 0x59 'Y' + { 4185, 21, 27, 28, 4, -26 }, // 0x5A 'Z' + { 4256, 10, 37, 28, 12, -29 }, // 0x5B '[' + { 4303, 20, 38, 28, 4, -32 }, // 0x5C '\' + { 4398, 10, 37, 28, 6, -29 }, // 0x5D ']' + { 4445, 20, 15, 28, 4, -29 }, // 0x5E '^' + { 4483, 28, 5, 28, 0, 5 }, // 0x5F '_' + { 4501, 9, 8, 28, 8, -30 }, // 0x60 '`' + { 4510, 24, 23, 28, 2, -21 }, // 0x61 'a' + { 4579, 27, 31, 28, 0, -29 }, // 0x62 'b' + { 4684, 24, 23, 28, 3, -21 }, // 0x63 'c' + { 4753, 26, 31, 28, 2, -29 }, // 0x64 'd' + { 4854, 24, 23, 28, 2, -21 }, // 0x65 'e' + { 4923, 22, 30, 28, 4, -29 }, // 0x66 'f' + { 5006, 25, 31, 28, 2, -21 }, // 0x67 'g' + { 5103, 26, 30, 28, 1, -29 }, // 0x68 'h' + { 5201, 21, 29, 28, 4, -28 }, // 0x69 'i' + { 5278, 17, 38, 28, 5, -28 }, // 0x6A 'j' + { 5359, 25, 30, 28, 2, -29 }, // 0x6B 'k' + { 5453, 21, 30, 28, 4, -29 }, // 0x6C 'l' + { 5532, 30, 22, 28, -1, -21 }, // 0x6D 'm' + { 5615, 25, 22, 28, 1, -21 }, // 0x6E 'n' + { 5684, 25, 23, 28, 2, -21 }, // 0x6F 'o' + { 5756, 28, 31, 28, 0, -21 }, // 0x70 'p' + { 5865, 28, 31, 28, 1, -21 }, // 0x71 'q' + { 5974, 24, 22, 28, 3, -21 }, // 0x72 'r' + { 6040, 21, 23, 28, 4, -21 }, // 0x73 's' + { 6101, 23, 28, 28, 1, -26 }, // 0x74 't' + { 6182, 25, 22, 28, 1, -20 }, // 0x75 'u' + { 6251, 28, 21, 28, 0, -20 }, // 0x76 'v' + { 6325, 28, 21, 28, 0, -20 }, // 0x77 'w' + { 6399, 26, 21, 28, 1, -20 }, // 0x78 'x' + { 6468, 26, 30, 28, 1, -20 }, // 0x79 'y' + { 6566, 19, 21, 28, 5, -20 }, // 0x7A 'z' + { 6616, 14, 37, 28, 7, -29 }, // 0x7B '{' + { 6681, 5, 36, 28, 12, -28 }, // 0x7C '|' + { 6704, 14, 37, 28, 8, -29 }, // 0x7D '}' + { 6769, 22, 10, 28, 3, -17 } }; // 0x7E '~' + +const GFXfont FreeMonoBold24pt7b PROGMEM = { + (uint8_t *)FreeMonoBold24pt7bBitmaps, + (GFXglyph *)FreeMonoBold24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 7469 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h new file mode 100644 index 000000000..75b1766b2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h @@ -0,0 +1,189 @@ +const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, + 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, + 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, + 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, + 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, + 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, + 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, + 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, + 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, + 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, + 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, + 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, + 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, + 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, + 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, + 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, + 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, + 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, + 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, + 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, + 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, + 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, + 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, + 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, + 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, + 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, + 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, + 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, + 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, + 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, + 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, + 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, + 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, + 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, + 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, + 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, + 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, + 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, + 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, + 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, + 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, + 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, + 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, + 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, + 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, + 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, + 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, + 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, + 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, + 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, + 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, + 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, + 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, + 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, + 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, + 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, + 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, + 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, + 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, + 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, + 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, + 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, + 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, + 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, + 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, + 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, + 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, + 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, + 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, + 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, + 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, + 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, + 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, + 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, + 0x7C, 0xF3, 0xC0, 0xC0 }; + +const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 3, 11, 11, 4, -10 }, // 0x21 '!' + { 5, 7, 5, 11, 2, -10 }, // 0x22 '"' + { 10, 8, 12, 11, 1, -10 }, // 0x23 '#' + { 22, 7, 14, 11, 2, -11 }, // 0x24 '$' + { 35, 7, 11, 11, 2, -10 }, // 0x25 '%' + { 45, 8, 10, 11, 1, -9 }, // 0x26 '&' + { 55, 3, 5, 11, 4, -10 }, // 0x27 ''' + { 57, 4, 14, 11, 5, -10 }, // 0x28 '(' + { 64, 4, 14, 11, 2, -10 }, // 0x29 ')' + { 71, 8, 7, 11, 2, -10 }, // 0x2A '*' + { 78, 8, 9, 11, 2, -8 }, // 0x2B '+' + { 87, 3, 5, 11, 3, -1 }, // 0x2C ',' + { 89, 9, 2, 11, 1, -5 }, // 0x2D '-' + { 92, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 93, 7, 15, 11, 2, -12 }, // 0x2F '/' + { 107, 7, 12, 11, 2, -11 }, // 0x30 '0' + { 118, 7, 11, 11, 2, -10 }, // 0x31 '1' + { 128, 8, 12, 11, 1, -11 }, // 0x32 '2' + { 140, 8, 12, 11, 2, -11 }, // 0x33 '3' + { 152, 7, 10, 11, 2, -9 }, // 0x34 '4' + { 161, 9, 11, 11, 1, -10 }, // 0x35 '5' + { 174, 8, 12, 11, 2, -11 }, // 0x36 '6' + { 186, 8, 11, 11, 1, -10 }, // 0x37 '7' + { 197, 7, 12, 11, 2, -11 }, // 0x38 '8' + { 208, 8, 12, 11, 2, -11 }, // 0x39 '9' + { 220, 2, 8, 11, 4, -7 }, // 0x3A ':' + { 222, 3, 11, 11, 3, -7 }, // 0x3B ';' + { 227, 9, 8, 11, 1, -8 }, // 0x3C '<' + { 236, 9, 6, 11, 1, -7 }, // 0x3D '=' + { 243, 9, 8, 11, 1, -8 }, // 0x3E '>' + { 252, 8, 11, 11, 2, -10 }, // 0x3F '?' + { 263, 9, 15, 11, 1, -11 }, // 0x40 '@' + { 280, 11, 11, 11, 0, -10 }, // 0x41 'A' + { 296, 10, 11, 11, 1, -10 }, // 0x42 'B' + { 310, 9, 11, 11, 1, -10 }, // 0x43 'C' + { 323, 10, 11, 11, 0, -10 }, // 0x44 'D' + { 337, 9, 11, 11, 1, -10 }, // 0x45 'E' + { 350, 9, 11, 11, 1, -10 }, // 0x46 'F' + { 363, 10, 11, 11, 1, -10 }, // 0x47 'G' + { 377, 9, 11, 11, 1, -10 }, // 0x48 'H' + { 390, 6, 11, 11, 3, -10 }, // 0x49 'I' + { 399, 10, 11, 11, 1, -10 }, // 0x4A 'J' + { 413, 10, 11, 11, 1, -10 }, // 0x4B 'K' + { 427, 9, 11, 11, 1, -10 }, // 0x4C 'L' + { 440, 11, 11, 11, 0, -10 }, // 0x4D 'M' + { 456, 11, 11, 11, 0, -10 }, // 0x4E 'N' + { 472, 11, 11, 11, 0, -10 }, // 0x4F 'O' + { 488, 9, 11, 11, 1, -10 }, // 0x50 'P' + { 501, 11, 14, 11, 0, -10 }, // 0x51 'Q' + { 521, 9, 11, 11, 1, -10 }, // 0x52 'R' + { 534, 9, 11, 11, 1, -10 }, // 0x53 'S' + { 547, 9, 11, 11, 1, -10 }, // 0x54 'T' + { 560, 11, 11, 11, 0, -10 }, // 0x55 'U' + { 576, 11, 11, 11, 0, -10 }, // 0x56 'V' + { 592, 10, 11, 11, 0, -10 }, // 0x57 'W' + { 606, 10, 11, 11, 0, -10 }, // 0x58 'X' + { 620, 10, 11, 11, 0, -10 }, // 0x59 'Y' + { 634, 8, 11, 11, 2, -10 }, // 0x5A 'Z' + { 645, 4, 14, 11, 5, -10 }, // 0x5B '[' + { 652, 7, 15, 11, 2, -12 }, // 0x5C '\' + { 666, 4, 14, 11, 2, -10 }, // 0x5D ']' + { 673, 7, 6, 11, 2, -11 }, // 0x5E '^' + { 679, 11, 2, 11, 0, 3 }, // 0x5F '_' + { 682, 3, 3, 11, 3, -11 }, // 0x60 '`' + { 684, 9, 8, 11, 1, -7 }, // 0x61 'a' + { 693, 10, 11, 11, 0, -10 }, // 0x62 'b' + { 707, 9, 8, 11, 1, -7 }, // 0x63 'c' + { 716, 10, 11, 11, 1, -10 }, // 0x64 'd' + { 730, 9, 8, 11, 1, -7 }, // 0x65 'e' + { 739, 8, 11, 11, 2, -10 }, // 0x66 'f' + { 750, 9, 12, 11, 1, -7 }, // 0x67 'g' + { 764, 9, 11, 11, 1, -10 }, // 0x68 'h' + { 777, 8, 11, 11, 2, -10 }, // 0x69 'i' + { 788, 6, 15, 11, 2, -10 }, // 0x6A 'j' + { 800, 9, 11, 11, 1, -10 }, // 0x6B 'k' + { 813, 8, 11, 11, 2, -10 }, // 0x6C 'l' + { 824, 11, 8, 11, 0, -7 }, // 0x6D 'm' + { 835, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 844, 9, 8, 11, 1, -7 }, // 0x6F 'o' + { 853, 11, 12, 11, 0, -7 }, // 0x70 'p' + { 870, 11, 12, 11, 0, -7 }, // 0x71 'q' + { 887, 9, 8, 11, 1, -7 }, // 0x72 'r' + { 896, 8, 8, 11, 2, -7 }, // 0x73 's' + { 904, 8, 11, 11, 1, -10 }, // 0x74 't' + { 915, 9, 8, 11, 1, -7 }, // 0x75 'u' + { 924, 11, 8, 11, 0, -7 }, // 0x76 'v' + { 935, 11, 8, 11, 0, -7 }, // 0x77 'w' + { 946, 9, 8, 11, 1, -7 }, // 0x78 'x' + { 955, 10, 12, 11, 0, -7 }, // 0x79 'y' + { 970, 7, 8, 11, 2, -7 }, // 0x7A 'z' + { 977, 4, 14, 11, 3, -10 }, // 0x7B '{' + { 984, 2, 14, 11, 5, -10 }, // 0x7C '|' + { 988, 4, 14, 11, 4, -10 }, // 0x7D '}' + { 995, 9, 4, 11, 1, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoBold9pt7b PROGMEM = { + (uint8_t *)FreeMonoBold9pt7bBitmaps, + (GFXglyph *)FreeMonoBold9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1672 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h new file mode 100644 index 000000000..cc3ecb271 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h @@ -0,0 +1,269 @@ +const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, + 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, + 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, + 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, + 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, + 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, + 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, + 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, + 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, + 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, + 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, + 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, + 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, + 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, + 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, + 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, + 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, + 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, + 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, + 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, + 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, + 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, + 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, + 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, + 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, + 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, + 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, + 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, + 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, + 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, + 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, + 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, + 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, + 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, + 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, + 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, + 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, + 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, + 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, + 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, + 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, + 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, + 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, + 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, + 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, + 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, + 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, + 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, + 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, + 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, + 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, + 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, + 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, + 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, + 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, + 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, + 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, + 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, + 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, + 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, + 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, + 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, + 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, + 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, + 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, + 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, + 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, + 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, + 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, + 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, + 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, + 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, + 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, + 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, + 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, + 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, + 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, + 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, + 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, + 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, + 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, + 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, + 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, + 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, + 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, + 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, + 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, + 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, + 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, + 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, + 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, + 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, + 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, + 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, + 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, + 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, + 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, + 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, + 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, + 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, + 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, + 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, + 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, + 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, + 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, + 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, + 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, + 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, + 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, + 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, + 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, + 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, + 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, + 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, + 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, + 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, + 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, + 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, + 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, + 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, + 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, + 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, + 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, + 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, + 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, + 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, + 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, + 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, + 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, + 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, + 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, + 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38 }; + +const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 6, 15, 14, 6, -14 }, // 0x21 '!' + { 12, 8, 7, 14, 6, -13 }, // 0x22 '"' + { 19, 13, 18, 14, 2, -15 }, // 0x23 '#' + { 49, 11, 20, 14, 3, -16 }, // 0x24 '$' + { 77, 11, 15, 14, 3, -14 }, // 0x25 '%' + { 98, 11, 13, 14, 2, -12 }, // 0x26 '&' + { 116, 3, 7, 14, 8, -13 }, // 0x27 ''' + { 119, 7, 19, 14, 7, -14 }, // 0x28 '(' + { 136, 7, 19, 14, 2, -14 }, // 0x29 ')' + { 153, 11, 10, 14, 4, -14 }, // 0x2A '*' + { 167, 12, 13, 14, 3, -12 }, // 0x2B '+' + { 187, 6, 7, 14, 3, -2 }, // 0x2C ',' + { 193, 13, 2, 14, 2, -7 }, // 0x2D '-' + { 197, 3, 3, 14, 6, -2 }, // 0x2E '.' + { 199, 14, 20, 14, 2, -16 }, // 0x2F '/' + { 234, 11, 15, 14, 3, -14 }, // 0x30 '0' + { 255, 11, 15, 14, 2, -14 }, // 0x31 '1' + { 276, 13, 15, 14, 1, -14 }, // 0x32 '2' + { 301, 12, 15, 14, 2, -14 }, // 0x33 '3' + { 324, 11, 14, 14, 3, -13 }, // 0x34 '4' + { 344, 12, 15, 14, 2, -14 }, // 0x35 '5' + { 367, 11, 15, 14, 4, -14 }, // 0x36 '6' + { 388, 11, 15, 14, 4, -14 }, // 0x37 '7' + { 409, 11, 15, 14, 3, -14 }, // 0x38 '8' + { 430, 11, 15, 14, 3, -14 }, // 0x39 '9' + { 451, 5, 11, 14, 5, -10 }, // 0x3A ':' + { 458, 7, 15, 14, 3, -10 }, // 0x3B ';' + { 472, 13, 11, 14, 2, -11 }, // 0x3C '<' + { 490, 13, 7, 14, 2, -9 }, // 0x3D '=' + { 502, 13, 11, 14, 2, -11 }, // 0x3E '>' + { 520, 9, 14, 14, 5, -13 }, // 0x3F '?' + { 536, 12, 19, 14, 2, -14 }, // 0x40 '@' + { 565, 15, 14, 14, 0, -13 }, // 0x41 'A' + { 592, 13, 14, 14, 1, -13 }, // 0x42 'B' + { 615, 14, 14, 14, 2, -13 }, // 0x43 'C' + { 640, 13, 14, 14, 1, -13 }, // 0x44 'D' + { 663, 15, 14, 14, 0, -13 }, // 0x45 'E' + { 690, 16, 14, 14, 0, -13 }, // 0x46 'F' + { 718, 14, 14, 14, 1, -13 }, // 0x47 'G' + { 743, 16, 14, 14, 0, -13 }, // 0x48 'H' + { 771, 12, 14, 14, 2, -13 }, // 0x49 'I' + { 792, 16, 14, 14, 0, -13 }, // 0x4A 'J' + { 820, 16, 14, 14, 0, -13 }, // 0x4B 'K' + { 848, 13, 14, 14, 1, -13 }, // 0x4C 'L' + { 871, 18, 14, 14, 0, -13 }, // 0x4D 'M' + { 903, 16, 14, 14, 1, -13 }, // 0x4E 'N' + { 931, 14, 14, 14, 1, -13 }, // 0x4F 'O' + { 956, 13, 14, 14, 1, -13 }, // 0x50 'P' + { 979, 14, 17, 14, 1, -13 }, // 0x51 'Q' + { 1009, 15, 14, 14, 0, -13 }, // 0x52 'R' + { 1036, 12, 14, 14, 3, -13 }, // 0x53 'S' + { 1057, 13, 14, 14, 2, -13 }, // 0x54 'T' + { 1080, 14, 14, 14, 2, -13 }, // 0x55 'U' + { 1105, 15, 14, 14, 1, -13 }, // 0x56 'V' + { 1132, 15, 14, 14, 1, -13 }, // 0x57 'W' + { 1159, 16, 14, 14, 0, -13 }, // 0x58 'X' + { 1187, 13, 14, 14, 2, -13 }, // 0x59 'Y' + { 1210, 14, 14, 14, 1, -13 }, // 0x5A 'Z' + { 1235, 9, 19, 14, 5, -14 }, // 0x5B '[' + { 1257, 7, 20, 14, 5, -16 }, // 0x5C '\' + { 1275, 9, 19, 14, 3, -14 }, // 0x5D ']' + { 1297, 10, 8, 14, 4, -15 }, // 0x5E '^' + { 1307, 15, 2, 14, -1, 4 }, // 0x5F '_' + { 1311, 4, 4, 14, 7, -15 }, // 0x60 '`' + { 1313, 12, 11, 14, 2, -10 }, // 0x61 'a' + { 1330, 15, 15, 14, -1, -14 }, // 0x62 'b' + { 1359, 12, 11, 14, 2, -10 }, // 0x63 'c' + { 1376, 14, 15, 14, 2, -14 }, // 0x64 'd' + { 1403, 12, 11, 14, 2, -10 }, // 0x65 'e' + { 1420, 15, 15, 14, 2, -14 }, // 0x66 'f' + { 1449, 14, 16, 14, 2, -10 }, // 0x67 'g' + { 1477, 13, 15, 14, 1, -14 }, // 0x68 'h' + { 1502, 11, 14, 14, 2, -13 }, // 0x69 'i' + { 1522, 12, 19, 14, 1, -13 }, // 0x6A 'j' + { 1551, 14, 15, 14, 1, -14 }, // 0x6B 'k' + { 1578, 11, 15, 14, 2, -14 }, // 0x6C 'l' + { 1599, 15, 11, 14, 0, -10 }, // 0x6D 'm' + { 1620, 13, 11, 14, 1, -10 }, // 0x6E 'n' + { 1638, 12, 11, 14, 2, -10 }, // 0x6F 'o' + { 1655, 16, 16, 14, -1, -10 }, // 0x70 'p' + { 1687, 15, 16, 14, 1, -10 }, // 0x71 'q' + { 1717, 14, 11, 14, 1, -10 }, // 0x72 'r' + { 1737, 12, 11, 14, 2, -10 }, // 0x73 's' + { 1754, 10, 14, 14, 2, -13 }, // 0x74 't' + { 1772, 12, 11, 14, 2, -10 }, // 0x75 'u' + { 1789, 15, 11, 14, 1, -10 }, // 0x76 'v' + { 1810, 14, 11, 14, 2, -10 }, // 0x77 'w' + { 1830, 14, 11, 14, 1, -10 }, // 0x78 'x' + { 1850, 16, 16, 14, 0, -10 }, // 0x79 'y' + { 1882, 12, 11, 14, 2, -10 }, // 0x7A 'z' + { 1899, 10, 19, 14, 4, -14 }, // 0x7B '{' + { 1923, 6, 19, 14, 5, -14 }, // 0x7C '|' + { 1938, 9, 19, 14, 3, -14 }, // 0x7D '}' + { 1960, 12, 4, 14, 3, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2638 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h new file mode 100644 index 000000000..bc4f20ea5 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h @@ -0,0 +1,460 @@ +const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, + 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, + 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, + 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, + 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, + 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, + 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, + 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, + 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, + 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, + 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, + 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, + 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, + 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, + 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, + 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, + 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, + 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, + 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, + 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, + 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, + 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, + 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, + 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, + 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, + 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, + 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, + 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, + 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, + 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, + 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, + 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, + 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, + 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, + 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, + 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, + 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, + 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, + 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, + 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, + 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, + 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, + 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, + 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, + 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, + 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, + 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, + 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, + 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, + 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, + 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, + 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, + 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, + 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, + 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, + 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, + 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, + 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, + 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, + 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, + 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, + 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, + 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, + 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, + 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, + 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, + 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, + 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, + 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, + 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, + 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, + 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, + 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, + 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, + 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, + 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, + 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, + 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, + 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, + 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, + 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, + 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, + 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, + 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, + 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, + 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, + 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, + 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, + 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, + 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, + 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, + 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, + 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, + 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, + 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, + 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, + 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, + 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, + 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, + 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, + 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, + 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, + 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, + 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, + 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, + 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, + 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, + 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, + 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, + 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, + 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, + 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, + 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, + 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, + 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, + 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, + 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, + 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, + 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, + 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, + 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, + 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, + 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, + 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, + 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, + 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, + 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, + 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, + 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, + 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, + 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, + 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, + 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, + 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, + 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, + 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, + 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, + 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, + 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, + 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, + 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, + 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, + 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, + 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, + 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, + 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, + 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, + 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, + 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, + 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, + 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, + 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, + 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, + 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, + 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, + 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, + 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, + 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, + 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, + 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, + 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, + 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, + 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, + 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, + 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, + 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, + 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, + 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, + 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, + 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, + 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, + 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, + 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, + 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, + 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, + 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, + 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, + 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, + 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, + 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, + 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, + 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, + 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, + 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, + 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, + 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, + 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, + 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, + 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, + 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, + 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, + 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, + 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, + 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, + 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, + 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, + 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, + 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, + 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, + 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, + 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, + 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, + 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, + 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, + 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, + 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, + 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, + 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, + 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, + 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, + 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, + 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, + 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, + 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, + 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, + 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, + 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, + 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, + 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, + 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, + 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, + 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0 }; + +const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 9, 22, 21, 9, -21 }, // 0x21 '!' + { 25, 12, 10, 21, 9, -20 }, // 0x22 '"' + { 40, 18, 25, 21, 4, -22 }, // 0x23 '#' + { 97, 18, 28, 21, 4, -23 }, // 0x24 '$' + { 160, 16, 21, 21, 5, -20 }, // 0x25 '%' + { 202, 16, 20, 21, 4, -19 }, // 0x26 '&' + { 242, 5, 10, 21, 12, -20 }, // 0x27 ''' + { 249, 10, 27, 21, 11, -21 }, // 0x28 '(' + { 283, 10, 27, 21, 4, -21 }, // 0x29 ')' + { 317, 15, 15, 21, 6, -21 }, // 0x2A '*' + { 346, 18, 19, 21, 4, -18 }, // 0x2B '+' + { 389, 9, 10, 21, 4, -3 }, // 0x2C ',' + { 401, 18, 4, 21, 4, -11 }, // 0x2D '-' + { 410, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 414, 21, 28, 21, 2, -23 }, // 0x2F '/' + { 488, 17, 23, 21, 5, -22 }, // 0x30 '0' + { 537, 15, 22, 21, 3, -21 }, // 0x31 '1' + { 579, 20, 23, 21, 2, -22 }, // 0x32 '2' + { 637, 18, 23, 21, 3, -22 }, // 0x33 '3' + { 689, 16, 21, 21, 4, -20 }, // 0x34 '4' + { 731, 18, 22, 21, 4, -21 }, // 0x35 '5' + { 781, 19, 23, 21, 5, -22 }, // 0x36 '6' + { 836, 16, 22, 21, 6, -21 }, // 0x37 '7' + { 880, 19, 23, 21, 3, -22 }, // 0x38 '8' + { 935, 18, 23, 21, 4, -22 }, // 0x39 '9' + { 987, 7, 16, 21, 9, -15 }, // 0x3A ':' + { 1001, 11, 22, 21, 4, -15 }, // 0x3B ';' + { 1032, 18, 16, 21, 4, -17 }, // 0x3C '<' + { 1068, 19, 10, 21, 3, -14 }, // 0x3D '=' + { 1092, 19, 16, 21, 3, -17 }, // 0x3E '>' + { 1130, 14, 21, 21, 8, -20 }, // 0x3F '?' + { 1167, 18, 27, 21, 3, -21 }, // 0x40 '@' + { 1228, 22, 21, 21, 0, -20 }, // 0x41 'A' + { 1286, 21, 21, 21, 1, -20 }, // 0x42 'B' + { 1342, 21, 21, 21, 2, -20 }, // 0x43 'C' + { 1398, 21, 21, 21, 1, -20 }, // 0x44 'D' + { 1454, 22, 21, 21, 0, -20 }, // 0x45 'E' + { 1512, 23, 21, 21, 0, -20 }, // 0x46 'F' + { 1573, 21, 21, 21, 2, -20 }, // 0x47 'G' + { 1629, 23, 21, 21, 0, -20 }, // 0x48 'H' + { 1690, 19, 21, 21, 2, -20 }, // 0x49 'I' + { 1740, 23, 21, 21, 0, -20 }, // 0x4A 'J' + { 1801, 23, 21, 21, 0, -20 }, // 0x4B 'K' + { 1862, 20, 21, 21, 1, -20 }, // 0x4C 'L' + { 1915, 25, 21, 21, 0, -20 }, // 0x4D 'M' + { 1981, 24, 21, 21, 1, -20 }, // 0x4E 'N' + { 2044, 20, 21, 21, 2, -20 }, // 0x4F 'O' + { 2097, 21, 21, 21, 1, -20 }, // 0x50 'P' + { 2153, 20, 26, 21, 2, -20 }, // 0x51 'Q' + { 2218, 22, 21, 21, 0, -20 }, // 0x52 'R' + { 2276, 19, 21, 21, 3, -20 }, // 0x53 'S' + { 2326, 19, 21, 21, 3, -20 }, // 0x54 'T' + { 2376, 21, 21, 21, 3, -20 }, // 0x55 'U' + { 2432, 23, 21, 21, 1, -20 }, // 0x56 'V' + { 2493, 22, 21, 21, 2, -20 }, // 0x57 'W' + { 2551, 24, 21, 21, 0, -20 }, // 0x58 'X' + { 2614, 20, 21, 21, 3, -20 }, // 0x59 'Y' + { 2667, 19, 21, 21, 2, -20 }, // 0x5A 'Z' + { 2717, 13, 27, 21, 8, -21 }, // 0x5B '[' + { 2761, 10, 28, 21, 8, -23 }, // 0x5C '\' + { 2796, 13, 27, 21, 4, -21 }, // 0x5D ']' + { 2840, 15, 11, 21, 6, -21 }, // 0x5E '^' + { 2861, 21, 4, 21, -1, 4 }, // 0x5F '_' + { 2872, 6, 6, 21, 10, -22 }, // 0x60 '`' + { 2877, 19, 16, 21, 2, -15 }, // 0x61 'a' + { 2915, 22, 22, 21, 0, -21 }, // 0x62 'b' + { 2976, 19, 16, 21, 3, -15 }, // 0x63 'c' + { 3014, 21, 22, 21, 3, -21 }, // 0x64 'd' + { 3072, 18, 16, 21, 3, -15 }, // 0x65 'e' + { 3108, 21, 22, 21, 3, -21 }, // 0x66 'f' + { 3166, 21, 23, 21, 2, -15 }, // 0x67 'g' + { 3227, 20, 22, 21, 1, -21 }, // 0x68 'h' + { 3282, 16, 22, 21, 3, -21 }, // 0x69 'i' + { 3326, 18, 29, 21, 2, -21 }, // 0x6A 'j' + { 3392, 20, 22, 21, 1, -21 }, // 0x6B 'k' + { 3447, 16, 22, 21, 3, -21 }, // 0x6C 'l' + { 3491, 23, 16, 21, 0, -15 }, // 0x6D 'm' + { 3537, 21, 16, 21, 1, -15 }, // 0x6E 'n' + { 3579, 18, 16, 21, 3, -15 }, // 0x6F 'o' + { 3615, 23, 23, 21, -1, -15 }, // 0x70 'p' + { 3682, 22, 23, 21, 2, -15 }, // 0x71 'q' + { 3746, 20, 16, 21, 2, -15 }, // 0x72 'r' + { 3786, 16, 16, 21, 4, -15 }, // 0x73 's' + { 3818, 16, 21, 21, 4, -20 }, // 0x74 't' + { 3860, 18, 16, 21, 3, -15 }, // 0x75 'u' + { 3896, 21, 16, 21, 2, -15 }, // 0x76 'v' + { 3938, 21, 16, 21, 3, -15 }, // 0x77 'w' + { 3980, 21, 16, 21, 1, -15 }, // 0x78 'x' + { 4022, 24, 23, 21, -1, -15 }, // 0x79 'y' + { 4091, 18, 16, 21, 3, -15 }, // 0x7A 'z' + { 4127, 12, 27, 21, 8, -21 }, // 0x7B '{' + { 4168, 8, 27, 21, 8, -21 }, // 0x7C '|' + { 4195, 13, 27, 21, 4, -21 }, // 0x7D '}' + { 4239, 17, 8, 21, 4, -13 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4928 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h new file mode 100644 index 000000000..a2bbbdf36 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h @@ -0,0 +1,742 @@ +const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, + 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, + 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, + 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, + 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, + 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, + 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, + 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, + 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, + 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, + 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, + 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, + 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, + 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, + 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, + 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, + 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, + 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, + 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, + 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, + 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, + 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, + 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, + 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, + 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, + 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, + 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, + 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, + 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, + 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, + 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, + 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, + 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, + 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, + 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, + 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, + 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, + 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, + 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, + 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, + 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, + 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, + 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, + 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, + 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, + 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, + 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, + 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, + 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, + 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, + 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, + 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, + 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, + 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, + 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, + 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, + 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, + 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, + 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, + 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, + 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, + 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, + 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, + 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, + 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, + 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, + 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, + 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, + 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, + 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, + 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, + 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, + 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, + 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, + 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, + 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, + 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, + 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, + 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, + 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, + 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, + 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, + 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, + 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, + 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, + 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, + 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, + 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, + 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, + 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, + 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, + 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, + 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, + 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, + 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, + 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, + 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, + 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, + 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, + 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, + 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, + 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, + 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, + 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, + 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, + 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, + 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, + 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, + 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, + 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, + 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, + 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, + 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, + 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, + 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, + 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, + 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, + 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, + 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, + 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, + 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, + 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, + 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, + 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, + 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, + 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, + 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, + 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, + 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, + 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, + 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, + 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, + 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, + 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, + 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, + 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, + 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, + 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, + 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, + 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, + 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, + 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, + 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, + 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, + 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, + 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, + 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, + 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, + 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, + 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, + 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, + 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, + 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, + 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, + 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, + 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, + 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, + 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, + 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, + 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, + 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, + 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, + 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, + 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, + 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, + 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, + 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, + 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, + 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, + 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, + 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, + 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, + 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, + 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, + 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, + 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, + 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, + 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, + 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, + 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, + 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, + 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, + 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, + 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, + 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, + 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, + 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, + 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, + 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, + 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, + 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, + 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, + 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, + 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, + 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, + 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, + 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, + 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, + 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, + 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, + 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, + 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, + 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, + 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, + 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, + 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, + 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, + 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, + 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, + 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, + 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, + 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, + 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, + 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, + 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, + 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, + 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, + 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, + 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, + 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, + 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, + 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, + 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, + 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, + 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, + 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, + 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, + 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, + 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, + 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, + 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, + 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, + 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, + 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, + 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, + 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, + 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, + 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, + 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, + 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, + 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, + 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, + 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, + 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, + 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, + 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, + 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, + 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, + 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, + 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, + 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, + 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, + 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, + 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, + 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, + 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, + 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, + 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, + 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, + 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, + 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, + 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, + 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, + 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, + 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, + 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, + 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, + 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0x80 }; + +const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 12, 31, 28, 12, -29 }, // 0x21 '!' + { 47, 17, 14, 28, 11, -28 }, // 0x22 '"' + { 77, 24, 34, 28, 5, -30 }, // 0x23 '#' + { 179, 25, 38, 28, 4, -31 }, // 0x24 '$' + { 298, 22, 30, 28, 6, -28 }, // 0x25 '%' + { 381, 21, 28, 28, 5, -26 }, // 0x26 '&' + { 455, 7, 14, 28, 16, -28 }, // 0x27 ''' + { 468, 14, 37, 28, 14, -29 }, // 0x28 '(' + { 533, 14, 37, 28, 5, -29 }, // 0x29 ')' + { 598, 21, 19, 28, 8, -28 }, // 0x2A '*' + { 648, 24, 26, 28, 5, -25 }, // 0x2B '+' + { 726, 12, 14, 28, 6, -6 }, // 0x2C ',' + { 747, 24, 5, 28, 5, -15 }, // 0x2D '-' + { 762, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 768, 28, 38, 28, 3, -32 }, // 0x2F '/' + { 901, 23, 31, 28, 6, -29 }, // 0x30 '0' + { 991, 21, 30, 28, 4, -29 }, // 0x31 '1' + { 1070, 26, 30, 28, 3, -29 }, // 0x32 '2' + { 1168, 25, 31, 28, 4, -29 }, // 0x33 '3' + { 1265, 22, 28, 28, 5, -27 }, // 0x34 '4' + { 1342, 25, 31, 28, 4, -29 }, // 0x35 '5' + { 1439, 24, 31, 28, 7, -29 }, // 0x36 '6' + { 1532, 22, 30, 28, 9, -29 }, // 0x37 '7' + { 1615, 23, 31, 28, 6, -29 }, // 0x38 '8' + { 1705, 24, 31, 28, 5, -29 }, // 0x39 '9' + { 1798, 10, 22, 28, 11, -20 }, // 0x3A ':' + { 1826, 15, 28, 28, 5, -20 }, // 0x3B ';' + { 1879, 25, 21, 28, 5, -23 }, // 0x3C '<' + { 1945, 26, 14, 28, 4, -19 }, // 0x3D '=' + { 1991, 25, 22, 28, 4, -23 }, // 0x3E '>' + { 2060, 19, 29, 28, 10, -27 }, // 0x3F '?' + { 2129, 23, 36, 28, 5, -28 }, // 0x40 '@' + { 2233, 30, 27, 28, 0, -26 }, // 0x41 'A' + { 2335, 29, 27, 28, 1, -26 }, // 0x42 'B' + { 2433, 28, 29, 28, 3, -27 }, // 0x43 'C' + { 2535, 28, 27, 28, 1, -26 }, // 0x44 'D' + { 2630, 29, 27, 28, 1, -26 }, // 0x45 'E' + { 2728, 31, 27, 28, 0, -26 }, // 0x46 'F' + { 2833, 28, 29, 28, 3, -27 }, // 0x47 'G' + { 2935, 30, 27, 28, 1, -26 }, // 0x48 'H' + { 3037, 25, 27, 28, 3, -26 }, // 0x49 'I' + { 3122, 31, 28, 28, 0, -26 }, // 0x4A 'J' + { 3231, 31, 27, 28, 0, -26 }, // 0x4B 'K' + { 3336, 27, 27, 28, 1, -26 }, // 0x4C 'L' + { 3428, 34, 27, 28, 0, -26 }, // 0x4D 'M' + { 3543, 32, 27, 28, 1, -26 }, // 0x4E 'N' + { 3651, 27, 29, 28, 3, -27 }, // 0x4F 'O' + { 3749, 28, 27, 28, 1, -26 }, // 0x50 'P' + { 3844, 27, 35, 28, 3, -27 }, // 0x51 'Q' + { 3963, 29, 27, 28, 0, -26 }, // 0x52 'R' + { 4061, 26, 29, 28, 3, -27 }, // 0x53 'S' + { 4156, 26, 27, 28, 4, -26 }, // 0x54 'T' + { 4244, 28, 28, 28, 4, -26 }, // 0x55 'U' + { 4342, 30, 27, 28, 2, -26 }, // 0x56 'V' + { 4444, 29, 27, 28, 3, -26 }, // 0x57 'W' + { 4542, 32, 27, 28, 0, -26 }, // 0x58 'X' + { 4650, 26, 27, 28, 4, -26 }, // 0x59 'Y' + { 4738, 27, 27, 28, 2, -26 }, // 0x5A 'Z' + { 4830, 18, 37, 28, 10, -29 }, // 0x5B '[' + { 4914, 13, 38, 28, 10, -32 }, // 0x5C '\' + { 4976, 18, 37, 28, 5, -29 }, // 0x5D ']' + { 5060, 20, 15, 28, 8, -29 }, // 0x5E '^' + { 5098, 29, 5, 28, -2, 5 }, // 0x5F '_' + { 5117, 8, 8, 28, 13, -30 }, // 0x60 '`' + { 5125, 24, 23, 28, 3, -21 }, // 0x61 'a' + { 5194, 29, 31, 28, 0, -29 }, // 0x62 'b' + { 5307, 25, 23, 28, 3, -21 }, // 0x63 'c' + { 5379, 28, 31, 28, 3, -29 }, // 0x64 'd' + { 5488, 24, 23, 28, 3, -21 }, // 0x65 'e' + { 5557, 28, 30, 28, 4, -29 }, // 0x66 'f' + { 5662, 28, 31, 28, 3, -21 }, // 0x67 'g' + { 5771, 26, 30, 28, 2, -29 }, // 0x68 'h' + { 5869, 23, 29, 28, 3, -28 }, // 0x69 'i' + { 5953, 23, 38, 28, 3, -28 }, // 0x6A 'j' + { 6063, 26, 30, 28, 2, -29 }, // 0x6B 'k' + { 6161, 23, 30, 28, 3, -29 }, // 0x6C 'l' + { 6248, 30, 22, 28, 0, -21 }, // 0x6D 'm' + { 6331, 26, 22, 28, 2, -21 }, // 0x6E 'n' + { 6403, 25, 23, 28, 3, -21 }, // 0x6F 'o' + { 6475, 31, 31, 28, -1, -21 }, // 0x70 'p' + { 6596, 29, 31, 28, 2, -21 }, // 0x71 'q' + { 6709, 28, 22, 28, 2, -21 }, // 0x72 'r' + { 6786, 23, 23, 28, 4, -21 }, // 0x73 's' + { 6853, 20, 28, 28, 5, -26 }, // 0x74 't' + { 6923, 23, 22, 28, 5, -20 }, // 0x75 'u' + { 6987, 28, 21, 28, 3, -20 }, // 0x76 'v' + { 7061, 28, 21, 28, 3, -20 }, // 0x77 'w' + { 7135, 29, 21, 28, 1, -20 }, // 0x78 'x' + { 7212, 32, 30, 28, -1, -20 }, // 0x79 'y' + { 7332, 25, 21, 28, 4, -20 }, // 0x7A 'z' + { 7398, 17, 37, 28, 10, -29 }, // 0x7B '{' + { 7477, 11, 36, 28, 11, -28 }, // 0x7C '|' + { 7527, 17, 37, 28, 6, -29 }, // 0x7D '}' + { 7606, 23, 10, 28, 5, -17 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 8307 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h new file mode 100644 index 000000000..b530723a3 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h @@ -0,0 +1,203 @@ +const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, + 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, + 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, + 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, + 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, + 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, + 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, + 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, + 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, + 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, + 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, + 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, + 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, + 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, + 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, + 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, + 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, + 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, + 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, + 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, + 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, + 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, + 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, + 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, + 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, + 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, + 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, + 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, + 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, + 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, + 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, + 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, + 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, + 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, + 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, + 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, + 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, + 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, + 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, + 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, + 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, + 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, + 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, + 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, + 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, + 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, + 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, + 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, + 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, + 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, + 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, + 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, + 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, + 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, + 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, + 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, + 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, + 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, + 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, + 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, + 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, + 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, + 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, + 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, + 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, + 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, + 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, + 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, + 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, + 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, + 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, + 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, + 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, + 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, + 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, + 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, + 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, + 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, + 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, + 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, + 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, + 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, + 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, + 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, + 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, + 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, + 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, + 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, + 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, + 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, + 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, + 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, + 0xF7, 0xC1, 0xC0 }; + +const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 5, 11, 11, 4, -10 }, // 0x21 '!' + { 7, 7, 5, 11, 4, -10 }, // 0x22 '"' + { 12, 9, 12, 11, 2, -10 }, // 0x23 '#' + { 26, 9, 14, 11, 2, -11 }, // 0x24 '$' + { 42, 9, 11, 11, 2, -10 }, // 0x25 '%' + { 55, 8, 10, 11, 2, -9 }, // 0x26 '&' + { 65, 2, 5, 11, 6, -10 }, // 0x27 ''' + { 67, 5, 14, 11, 5, -10 }, // 0x28 '(' + { 76, 5, 14, 11, 2, -10 }, // 0x29 ')' + { 85, 8, 7, 11, 3, -10 }, // 0x2A '*' + { 92, 9, 9, 11, 2, -8 }, // 0x2B '+' + { 103, 4, 5, 11, 2, -1 }, // 0x2C ',' + { 106, 9, 2, 11, 2, -5 }, // 0x2D '-' + { 109, 3, 2, 11, 4, -1 }, // 0x2E '.' + { 110, 11, 15, 11, 1, -12 }, // 0x2F '/' + { 131, 9, 12, 11, 2, -11 }, // 0x30 '0' + { 145, 8, 12, 11, 2, -11 }, // 0x31 '1' + { 157, 10, 12, 11, 1, -11 }, // 0x32 '2' + { 172, 9, 12, 11, 2, -11 }, // 0x33 '3' + { 186, 8, 10, 11, 2, -9 }, // 0x34 '4' + { 196, 9, 11, 11, 3, -10 }, // 0x35 '5' + { 209, 9, 12, 11, 3, -11 }, // 0x36 '6' + { 223, 8, 11, 11, 3, -10 }, // 0x37 '7' + { 234, 9, 12, 11, 2, -11 }, // 0x38 '8' + { 248, 8, 12, 11, 3, -11 }, // 0x39 '9' + { 260, 4, 8, 11, 4, -7 }, // 0x3A ':' + { 264, 6, 11, 11, 2, -7 }, // 0x3B ';' + { 273, 10, 8, 11, 2, -8 }, // 0x3C '<' + { 283, 10, 6, 11, 1, -7 }, // 0x3D '=' + { 291, 10, 8, 11, 1, -8 }, // 0x3E '>' + { 301, 7, 11, 11, 4, -10 }, // 0x3F '?' + { 311, 9, 15, 11, 2, -11 }, // 0x40 '@' + { 328, 11, 11, 11, 0, -10 }, // 0x41 'A' + { 344, 11, 11, 11, 0, -10 }, // 0x42 'B' + { 360, 12, 11, 11, 1, -10 }, // 0x43 'C' + { 377, 11, 11, 11, 0, -10 }, // 0x44 'D' + { 393, 12, 11, 11, 0, -10 }, // 0x45 'E' + { 410, 12, 11, 11, 0, -10 }, // 0x46 'F' + { 427, 11, 11, 11, 1, -10 }, // 0x47 'G' + { 443, 12, 11, 11, 0, -10 }, // 0x48 'H' + { 460, 10, 11, 11, 1, -10 }, // 0x49 'I' + { 474, 12, 11, 11, 0, -10 }, // 0x4A 'J' + { 491, 11, 11, 11, 0, -10 }, // 0x4B 'K' + { 507, 11, 11, 11, 0, -10 }, // 0x4C 'L' + { 523, 13, 11, 11, 0, -10 }, // 0x4D 'M' + { 541, 13, 11, 11, 0, -10 }, // 0x4E 'N' + { 559, 10, 11, 11, 1, -10 }, // 0x4F 'O' + { 573, 11, 11, 11, 0, -10 }, // 0x50 'P' + { 589, 10, 14, 11, 1, -10 }, // 0x51 'Q' + { 607, 12, 11, 11, 0, -10 }, // 0x52 'R' + { 624, 10, 11, 11, 2, -10 }, // 0x53 'S' + { 638, 11, 11, 11, 1, -10 }, // 0x54 'T' + { 654, 11, 11, 11, 1, -10 }, // 0x55 'U' + { 670, 11, 11, 11, 1, -10 }, // 0x56 'V' + { 686, 11, 11, 11, 1, -10 }, // 0x57 'W' + { 702, 12, 11, 11, 0, -10 }, // 0x58 'X' + { 719, 11, 11, 11, 1, -10 }, // 0x59 'Y' + { 735, 10, 11, 11, 1, -10 }, // 0x5A 'Z' + { 749, 7, 14, 11, 4, -10 }, // 0x5B '[' + { 762, 5, 15, 11, 4, -12 }, // 0x5C '\' + { 772, 7, 14, 11, 2, -10 }, // 0x5D ']' + { 785, 8, 6, 11, 3, -11 }, // 0x5E '^' + { 791, 11, 2, 11, -1, 3 }, // 0x5F '_' + { 794, 3, 3, 11, 5, -11 }, // 0x60 '`' + { 796, 10, 8, 11, 1, -7 }, // 0x61 'a' + { 806, 11, 11, 11, 0, -10 }, // 0x62 'b' + { 822, 10, 8, 11, 1, -7 }, // 0x63 'c' + { 832, 11, 11, 11, 1, -10 }, // 0x64 'd' + { 848, 9, 8, 11, 1, -7 }, // 0x65 'e' + { 857, 10, 11, 11, 2, -10 }, // 0x66 'f' + { 871, 11, 12, 11, 1, -7 }, // 0x67 'g' + { 888, 10, 11, 11, 1, -10 }, // 0x68 'h' + { 902, 9, 11, 11, 1, -10 }, // 0x69 'i' + { 915, 9, 15, 11, 1, -10 }, // 0x6A 'j' + { 932, 10, 11, 11, 1, -10 }, // 0x6B 'k' + { 946, 9, 11, 11, 1, -10 }, // 0x6C 'l' + { 959, 12, 8, 11, 0, -7 }, // 0x6D 'm' + { 971, 11, 8, 11, 1, -7 }, // 0x6E 'n' + { 982, 10, 8, 11, 1, -7 }, // 0x6F 'o' + { 992, 12, 12, 11, -1, -7 }, // 0x70 'p' + { 1010, 11, 12, 11, 1, -7 }, // 0x71 'q' + { 1027, 10, 8, 11, 1, -7 }, // 0x72 'r' + { 1037, 8, 8, 11, 2, -7 }, // 0x73 's' + { 1045, 9, 11, 11, 1, -10 }, // 0x74 't' + { 1058, 10, 8, 11, 1, -7 }, // 0x75 'u' + { 1068, 11, 8, 11, 1, -7 }, // 0x76 'v' + { 1079, 11, 8, 11, 1, -7 }, // 0x77 'w' + { 1090, 11, 8, 11, 1, -7 }, // 0x78 'x' + { 1101, 12, 12, 11, 0, -7 }, // 0x79 'y' + { 1119, 9, 8, 11, 2, -7 }, // 0x7A 'z' + { 1128, 7, 14, 11, 3, -10 }, // 0x7B '{' + { 1141, 4, 14, 11, 4, -10 }, // 0x7C '|' + { 1148, 8, 14, 11, 2, -10 }, // 0x7D '}' + { 1162, 9, 4, 11, 2, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1839 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h new file mode 100644 index 000000000..83a9a7708 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h @@ -0,0 +1,248 @@ +const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { + 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, + 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, + 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, + 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, + 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, + 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, + 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, + 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, + 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, + 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, + 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, + 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, + 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, + 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, + 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, + 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, + 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, + 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, + 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, + 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, + 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, + 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, + 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, + 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, + 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, + 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, + 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, + 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, + 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, + 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, + 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, + 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, + 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, + 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, + 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, + 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, + 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, + 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, + 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, + 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, + 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, + 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, + 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, + 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, + 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, + 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, + 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, + 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, + 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, + 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, + 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, + 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, + 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, + 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, + 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, + 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, + 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, + 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, + 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, + 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, + 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, + 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, + 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, + 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, + 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, + 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, + 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, + 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, + 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, + 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, + 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, + 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, + 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, + 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, + 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, + 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, + 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, + 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, + 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, + 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, + 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, + 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, + 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, + 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, + 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, + 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, + 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, + 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, + 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, + 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, + 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, + 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, + 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, + 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, + 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, + 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, + 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, + 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, + 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, + 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, + 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, + 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, + 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, + 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, + 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, + 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, + 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, + 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, + 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, + 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, + 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, + 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, + 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, + 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, + 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, + 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, + 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, + 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, + 0x88, 0x0E, 0x00 }; + +const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 4, 15, 14, 6, -14 }, // 0x21 '!' + { 8, 8, 7, 14, 5, -14 }, // 0x22 '"' + { 15, 11, 16, 14, 3, -14 }, // 0x23 '#' + { 37, 10, 18, 14, 4, -15 }, // 0x24 '$' + { 60, 11, 15, 14, 3, -14 }, // 0x25 '%' + { 81, 9, 12, 14, 3, -11 }, // 0x26 '&' + { 95, 3, 7, 14, 8, -14 }, // 0x27 ''' + { 98, 5, 18, 14, 8, -14 }, // 0x28 '(' + { 110, 5, 18, 14, 4, -14 }, // 0x29 ')' + { 122, 9, 9, 14, 5, -14 }, // 0x2A '*' + { 133, 11, 11, 14, 3, -11 }, // 0x2B '+' + { 149, 6, 7, 14, 3, -3 }, // 0x2C ',' + { 155, 11, 1, 14, 3, -6 }, // 0x2D '-' + { 157, 3, 3, 14, 6, -2 }, // 0x2E '.' + { 159, 13, 18, 14, 2, -15 }, // 0x2F '/' + { 189, 10, 15, 14, 4, -14 }, // 0x30 '0' + { 208, 9, 15, 14, 3, -14 }, // 0x31 '1' + { 225, 12, 15, 14, 2, -14 }, // 0x32 '2' + { 248, 11, 15, 14, 3, -14 }, // 0x33 '3' + { 269, 10, 15, 14, 3, -14 }, // 0x34 '4' + { 288, 11, 15, 14, 3, -14 }, // 0x35 '5' + { 309, 11, 15, 14, 4, -14 }, // 0x36 '6' + { 330, 10, 15, 14, 5, -14 }, // 0x37 '7' + { 349, 11, 15, 14, 3, -14 }, // 0x38 '8' + { 370, 11, 15, 14, 3, -14 }, // 0x39 '9' + { 391, 5, 10, 14, 5, -9 }, // 0x3A ':' + { 398, 7, 13, 14, 3, -9 }, // 0x3B ';' + { 410, 12, 11, 14, 3, -11 }, // 0x3C '<' + { 427, 13, 4, 14, 2, -8 }, // 0x3D '=' + { 434, 12, 11, 14, 2, -11 }, // 0x3E '>' + { 451, 8, 14, 14, 6, -13 }, // 0x3F '?' + { 465, 10, 16, 14, 3, -14 }, // 0x40 '@' + { 485, 14, 14, 14, 0, -13 }, // 0x41 'A' + { 510, 13, 14, 14, 1, -13 }, // 0x42 'B' + { 533, 12, 14, 14, 3, -13 }, // 0x43 'C' + { 554, 13, 14, 14, 1, -13 }, // 0x44 'D' + { 577, 14, 14, 14, 1, -13 }, // 0x45 'E' + { 602, 14, 14, 14, 1, -13 }, // 0x46 'F' + { 627, 12, 14, 14, 3, -13 }, // 0x47 'G' + { 648, 15, 14, 14, 1, -13 }, // 0x48 'H' + { 675, 11, 14, 14, 3, -13 }, // 0x49 'I' + { 695, 15, 14, 14, 2, -13 }, // 0x4A 'J' + { 722, 15, 14, 14, 1, -13 }, // 0x4B 'K' + { 749, 12, 14, 14, 2, -13 }, // 0x4C 'L' + { 770, 17, 14, 14, 0, -13 }, // 0x4D 'M' + { 800, 15, 14, 14, 1, -13 }, // 0x4E 'N' + { 827, 13, 14, 14, 2, -13 }, // 0x4F 'O' + { 850, 13, 14, 14, 1, -13 }, // 0x50 'P' + { 873, 13, 17, 14, 2, -13 }, // 0x51 'Q' + { 901, 13, 14, 14, 1, -13 }, // 0x52 'R' + { 924, 11, 14, 14, 3, -13 }, // 0x53 'S' + { 944, 12, 14, 14, 4, -13 }, // 0x54 'T' + { 965, 13, 14, 14, 3, -13 }, // 0x55 'U' + { 988, 14, 14, 14, 3, -13 }, // 0x56 'V' + { 1013, 14, 14, 14, 3, -13 }, // 0x57 'W' + { 1038, 15, 14, 14, 1, -13 }, // 0x58 'X' + { 1065, 12, 14, 14, 4, -13 }, // 0x59 'Y' + { 1086, 12, 14, 14, 2, -13 }, // 0x5A 'Z' + { 1107, 7, 18, 14, 6, -14 }, // 0x5B '[' + { 1123, 5, 18, 14, 6, -15 }, // 0x5C '\' + { 1135, 7, 18, 14, 3, -14 }, // 0x5D ']' + { 1151, 9, 6, 14, 5, -14 }, // 0x5E '^' + { 1158, 15, 1, 14, -1, 3 }, // 0x5F '_' + { 1160, 3, 4, 14, 6, -15 }, // 0x60 '`' + { 1162, 12, 10, 14, 2, -9 }, // 0x61 'a' + { 1177, 13, 15, 14, 1, -14 }, // 0x62 'b' + { 1202, 12, 10, 14, 3, -9 }, // 0x63 'c' + { 1217, 13, 15, 14, 2, -14 }, // 0x64 'd' + { 1242, 11, 10, 14, 3, -9 }, // 0x65 'e' + { 1256, 13, 15, 14, 3, -14 }, // 0x66 'f' + { 1281, 13, 14, 14, 3, -9 }, // 0x67 'g' + { 1304, 13, 15, 14, 1, -14 }, // 0x68 'h' + { 1329, 10, 15, 14, 2, -14 }, // 0x69 'i' + { 1348, 10, 19, 14, 2, -14 }, // 0x6A 'j' + { 1372, 12, 15, 14, 2, -14 }, // 0x6B 'k' + { 1395, 10, 15, 14, 2, -14 }, // 0x6C 'l' + { 1414, 14, 10, 14, 0, -9 }, // 0x6D 'm' + { 1432, 12, 10, 14, 1, -9 }, // 0x6E 'n' + { 1447, 11, 10, 14, 3, -9 }, // 0x6F 'o' + { 1461, 14, 14, 14, 0, -9 }, // 0x70 'p' + { 1486, 13, 14, 14, 3, -9 }, // 0x71 'q' + { 1509, 13, 10, 14, 2, -9 }, // 0x72 'r' + { 1526, 10, 10, 14, 3, -9 }, // 0x73 's' + { 1539, 9, 14, 14, 3, -13 }, // 0x74 't' + { 1555, 12, 10, 14, 2, -9 }, // 0x75 'u' + { 1570, 13, 10, 14, 3, -9 }, // 0x76 'v' + { 1587, 13, 10, 14, 3, -9 }, // 0x77 'w' + { 1604, 14, 10, 14, 1, -9 }, // 0x78 'x' + { 1622, 14, 14, 14, 1, -9 }, // 0x79 'y' + { 1647, 11, 10, 14, 3, -9 }, // 0x7A 'z' + { 1661, 7, 18, 14, 5, -14 }, // 0x7B '{' + { 1677, 4, 17, 14, 6, -13 }, // 0x7C '|' + { 1686, 7, 18, 14, 4, -14 }, // 0x7D '}' + { 1702, 11, 3, 14, 3, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoOblique12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2379 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h new file mode 100644 index 000000000..1979e7203 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h @@ -0,0 +1,398 @@ +const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { + 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, + 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, + 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, + 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, + 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, + 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, + 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, + 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, + 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, + 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, + 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, + 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, + 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, + 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, + 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, + 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, + 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, + 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, + 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, + 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, + 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, + 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, + 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, + 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, + 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, + 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, + 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, + 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, + 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, + 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, + 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, + 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, + 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, + 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, + 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, + 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, + 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, + 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, + 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, + 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, + 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, + 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, + 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, + 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, + 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, + 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, + 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, + 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, + 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, + 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, + 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, + 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, + 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, + 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, + 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, + 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, + 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, + 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, + 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, + 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, + 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, + 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, + 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, + 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, + 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, + 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, + 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, + 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, + 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, + 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, + 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, + 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, + 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, + 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, + 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, + 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, + 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, + 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, + 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, + 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, + 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, + 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, + 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, + 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, + 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, + 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, + 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, + 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, + 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, + 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, + 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, + 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, + 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, + 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, + 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, + 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, + 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, + 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, + 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, + 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, + 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, + 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, + 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, + 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, + 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, + 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, + 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, + 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, + 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, + 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, + 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, + 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, + 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, + 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, + 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, + 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, + 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, + 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, + 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, + 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, + 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, + 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, + 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, + 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, + 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, + 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, + 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, + 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, + 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, + 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, + 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, + 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, + 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, + 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, + 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, + 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, + 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, + 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, + 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, + 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, + 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, + 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, + 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, + 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, + 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, + 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, + 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, + 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, + 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, + 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, + 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, + 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, + 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, + 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, + 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, + 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, + 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, + 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, + 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, + 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, + 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, + 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, + 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, + 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, + 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, + 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, + 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, + 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, + 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, + 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, + 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, + 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, + 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, + 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, + 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, + 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, + 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, + 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, + 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, + 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, + 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, + 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, + 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, + 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, + 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, + 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, + 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00 }; + +const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 7, 22, 21, 9, -21 }, // 0x21 '!' + { 20, 13, 10, 21, 7, -20 }, // 0x22 '"' + { 37, 15, 24, 21, 5, -21 }, // 0x23 '#' + { 82, 16, 26, 21, 4, -22 }, // 0x24 '$' + { 134, 16, 21, 21, 5, -20 }, // 0x25 '%' + { 176, 13, 18, 21, 5, -17 }, // 0x26 '&' + { 206, 5, 10, 21, 12, -20 }, // 0x27 ''' + { 213, 8, 25, 21, 12, -20 }, // 0x28 '(' + { 238, 8, 25, 21, 5, -20 }, // 0x29 ')' + { 263, 14, 11, 21, 7, -19 }, // 0x2A '*' + { 283, 15, 17, 21, 5, -17 }, // 0x2B '+' + { 315, 9, 10, 21, 4, -4 }, // 0x2C ',' + { 327, 16, 1, 21, 5, -9 }, // 0x2D '-' + { 329, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 333, 19, 26, 21, 3, -22 }, // 0x2F '/' + { 395, 14, 21, 21, 5, -20 }, // 0x30 '0' + { 432, 13, 21, 21, 4, -20 }, // 0x31 '1' + { 467, 17, 21, 21, 3, -20 }, // 0x32 '2' + { 512, 16, 21, 21, 3, -20 }, // 0x33 '3' + { 554, 14, 21, 21, 5, -20 }, // 0x34 '4' + { 591, 17, 21, 21, 4, -20 }, // 0x35 '5' + { 636, 16, 21, 21, 6, -20 }, // 0x36 '6' + { 678, 13, 21, 21, 8, -20 }, // 0x37 '7' + { 713, 15, 21, 21, 5, -20 }, // 0x38 '8' + { 753, 15, 21, 21, 5, -20 }, // 0x39 '9' + { 793, 7, 15, 21, 8, -14 }, // 0x3A ':' + { 807, 11, 20, 21, 4, -14 }, // 0x3B ';' + { 835, 17, 16, 21, 5, -17 }, // 0x3C '<' + { 869, 19, 6, 21, 3, -12 }, // 0x3D '=' + { 884, 18, 16, 21, 3, -17 }, // 0x3E '>' + { 920, 12, 20, 21, 8, -19 }, // 0x3F '?' + { 950, 15, 23, 21, 5, -20 }, // 0x40 '@' + { 994, 21, 20, 21, 0, -19 }, // 0x41 'A' + { 1047, 18, 20, 21, 2, -19 }, // 0x42 'B' + { 1092, 18, 20, 21, 4, -19 }, // 0x43 'C' + { 1137, 18, 20, 21, 2, -19 }, // 0x44 'D' + { 1182, 20, 20, 21, 2, -19 }, // 0x45 'E' + { 1232, 20, 20, 21, 2, -19 }, // 0x46 'F' + { 1282, 18, 20, 21, 4, -19 }, // 0x47 'G' + { 1327, 21, 20, 21, 2, -19 }, // 0x48 'H' + { 1380, 17, 20, 21, 4, -19 }, // 0x49 'I' + { 1423, 20, 20, 21, 4, -19 }, // 0x4A 'J' + { 1473, 21, 20, 21, 2, -19 }, // 0x4B 'K' + { 1526, 18, 20, 21, 2, -19 }, // 0x4C 'L' + { 1571, 24, 20, 21, 1, -19 }, // 0x4D 'M' + { 1631, 22, 20, 21, 2, -19 }, // 0x4E 'N' + { 1686, 17, 20, 21, 4, -19 }, // 0x4F 'O' + { 1729, 18, 20, 21, 2, -19 }, // 0x50 'P' + { 1774, 17, 24, 21, 4, -19 }, // 0x51 'Q' + { 1825, 18, 20, 21, 2, -19 }, // 0x52 'R' + { 1870, 18, 20, 21, 3, -19 }, // 0x53 'S' + { 1915, 17, 20, 21, 5, -19 }, // 0x54 'T' + { 1958, 18, 20, 21, 5, -19 }, // 0x55 'U' + { 2003, 21, 20, 21, 4, -19 }, // 0x56 'V' + { 2056, 20, 20, 21, 4, -19 }, // 0x57 'W' + { 2106, 21, 20, 21, 2, -19 }, // 0x58 'X' + { 2159, 18, 20, 21, 5, -19 }, // 0x59 'Y' + { 2204, 17, 20, 21, 4, -19 }, // 0x5A 'Z' + { 2247, 11, 25, 21, 9, -20 }, // 0x5B '[' + { 2282, 8, 27, 21, 9, -22 }, // 0x5C '\' + { 2309, 11, 25, 21, 5, -20 }, // 0x5D ']' + { 2344, 13, 9, 21, 7, -20 }, // 0x5E '^' + { 2359, 21, 1, 21, -1, 4 }, // 0x5F '_' + { 2362, 5, 5, 21, 9, -21 }, // 0x60 '`' + { 2366, 16, 15, 21, 3, -14 }, // 0x61 'a' + { 2396, 19, 21, 21, 1, -20 }, // 0x62 'b' + { 2446, 17, 15, 21, 4, -14 }, // 0x63 'c' + { 2478, 18, 21, 21, 4, -20 }, // 0x64 'd' + { 2526, 16, 15, 21, 4, -14 }, // 0x65 'e' + { 2556, 19, 21, 21, 4, -20 }, // 0x66 'f' + { 2606, 19, 22, 21, 4, -14 }, // 0x67 'g' + { 2659, 18, 21, 21, 2, -20 }, // 0x68 'h' + { 2707, 15, 22, 21, 3, -21 }, // 0x69 'i' + { 2749, 15, 29, 21, 3, -21 }, // 0x6A 'j' + { 2804, 18, 21, 21, 2, -20 }, // 0x6B 'k' + { 2852, 15, 21, 21, 3, -20 }, // 0x6C 'l' + { 2892, 20, 15, 21, 1, -14 }, // 0x6D 'm' + { 2930, 17, 15, 21, 2, -14 }, // 0x6E 'n' + { 2962, 16, 15, 21, 4, -14 }, // 0x6F 'o' + { 2992, 20, 22, 21, 0, -14 }, // 0x70 'p' + { 3047, 19, 22, 21, 4, -14 }, // 0x71 'q' + { 3100, 19, 15, 21, 3, -14 }, // 0x72 'r' + { 3136, 15, 15, 21, 4, -14 }, // 0x73 's' + { 3165, 13, 20, 21, 5, -19 }, // 0x74 't' + { 3198, 15, 15, 21, 4, -14 }, // 0x75 'u' + { 3227, 19, 15, 21, 4, -14 }, // 0x76 'v' + { 3263, 17, 15, 21, 5, -14 }, // 0x77 'w' + { 3295, 19, 15, 21, 2, -14 }, // 0x78 'x' + { 3331, 21, 22, 21, 1, -14 }, // 0x79 'y' + { 3389, 16, 15, 21, 4, -14 }, // 0x7A 'z' + { 3419, 11, 25, 21, 8, -20 }, // 0x7B '{' + { 3454, 6, 24, 21, 9, -19 }, // 0x7C '|' + { 3472, 10, 25, 21, 6, -20 }, // 0x7D '}' + { 3504, 15, 5, 21, 5, -11 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoOblique18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4186 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h new file mode 100644 index 000000000..8a5592c29 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h @@ -0,0 +1,643 @@ +const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, + 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, + 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, + 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, + 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, + 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, + 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, + 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, + 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, + 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, + 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, + 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, + 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, + 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, + 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, + 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, + 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, + 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, + 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, + 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, + 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, + 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, + 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, + 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, + 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, + 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, + 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, + 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, + 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, + 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, + 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, + 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, + 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, + 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, + 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, + 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, + 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, + 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, + 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, + 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, + 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, + 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, + 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, + 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, + 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, + 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, + 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, + 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, + 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, + 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, + 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, + 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, + 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, + 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, + 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, + 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, + 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, + 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, + 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, + 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, + 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, + 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, + 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, + 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, + 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, + 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, + 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, + 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, + 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, + 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, + 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, + 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, + 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, + 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, + 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, + 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, + 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, + 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, + 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, + 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, + 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, + 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, + 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, + 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, + 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, + 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, + 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, + 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, + 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, + 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, + 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, + 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, + 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, + 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, + 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, + 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, + 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, + 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, + 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, + 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, + 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, + 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, + 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, + 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, + 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, + 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, + 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, + 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, + 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, + 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, + 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, + 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, + 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, + 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, + 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, + 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, + 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, + 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, + 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, + 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, + 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, + 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, + 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, + 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, + 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, + 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, + 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, + 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, + 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, + 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, + 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, + 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, + 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, + 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, + 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, + 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, + 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, + 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, + 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, + 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, + 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, + 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, + 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, + 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, + 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, + 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, + 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, + 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, + 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, + 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, + 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, + 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, + 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, + 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, + 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, + 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, + 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, + 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, + 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, + 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, + 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, + 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, + 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, + 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, + 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, + 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, + 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, + 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, + 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, + 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, + 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, + 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, + 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, + 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, + 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, + 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, + 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, + 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, + 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, + 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, + 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, + 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, + 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, + 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, + 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, + 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, + 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, + 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, + 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, + 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, + 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, + 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, + 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, + 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, + 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, + 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, + 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, + 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, + 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, + 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, + 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, + 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, + 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, + 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, + 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, + 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, + 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, + 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, + 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, + 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, + 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, + 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, + 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, + 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, + 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, + 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, + 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, + 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, + 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, + 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, + 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, + 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, + 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, + 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, + 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, + 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, + 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, + 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, + 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, + 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, + 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, + 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, + 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, + 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, + 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, + 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, + 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, + 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, + 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, + 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, + 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, + 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, + 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, + 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, + 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, + 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, + 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, + 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, + 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, + 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, + 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, + 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, + 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, + 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, + 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, + 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, + 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, + 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, + 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, + 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, + 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, + 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, + 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, + 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, + 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, + 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, + 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, + 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, + 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, + 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, + 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, + 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, + 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, + 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, + 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, + 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, + 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, + 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, + 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0 }; + +const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 10, 30, 28, 12, -28 }, // 0x21 '!' + { 38, 16, 14, 28, 10, -28 }, // 0x22 '"' + { 66, 22, 32, 28, 6, -29 }, // 0x23 '#' + { 154, 21, 33, 28, 6, -29 }, // 0x24 '$' + { 241, 22, 29, 28, 6, -27 }, // 0x25 '%' + { 321, 19, 25, 28, 6, -23 }, // 0x26 '&' + { 381, 7, 14, 28, 16, -28 }, // 0x27 ''' + { 394, 11, 34, 28, 16, -27 }, // 0x28 '(' + { 441, 11, 34, 28, 7, -27 }, // 0x29 ')' + { 488, 18, 17, 28, 10, -28 }, // 0x2A '*' + { 527, 22, 22, 28, 6, -23 }, // 0x2B '+' + { 588, 12, 14, 28, 5, -6 }, // 0x2C ',' + { 609, 22, 2, 28, 6, -13 }, // 0x2D '-' + { 615, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 621, 24, 35, 28, 5, -30 }, // 0x2F '/' + { 726, 20, 30, 28, 7, -28 }, // 0x30 '0' + { 801, 17, 29, 28, 6, -28 }, // 0x31 '1' + { 863, 23, 29, 28, 4, -28 }, // 0x32 '2' + { 947, 22, 30, 28, 5, -28 }, // 0x33 '3' + { 1030, 19, 28, 28, 7, -27 }, // 0x34 '4' + { 1097, 21, 29, 28, 6, -27 }, // 0x35 '5' + { 1174, 21, 30, 28, 9, -28 }, // 0x36 '6' + { 1253, 18, 28, 28, 10, -27 }, // 0x37 '7' + { 1316, 20, 30, 28, 7, -28 }, // 0x38 '8' + { 1391, 22, 30, 28, 6, -28 }, // 0x39 '9' + { 1474, 10, 21, 28, 11, -19 }, // 0x3A ':' + { 1501, 15, 27, 28, 5, -19 }, // 0x3B ';' + { 1552, 23, 22, 28, 6, -23 }, // 0x3C '<' + { 1616, 25, 9, 28, 4, -17 }, // 0x3D '=' + { 1645, 24, 22, 28, 4, -23 }, // 0x3E '>' + { 1711, 16, 28, 28, 11, -26 }, // 0x3F '?' + { 1767, 19, 32, 28, 7, -28 }, // 0x40 '@' + { 1843, 27, 26, 28, 1, -25 }, // 0x41 'A' + { 1931, 26, 26, 28, 2, -25 }, // 0x42 'B' + { 2016, 25, 28, 28, 5, -26 }, // 0x43 'C' + { 2104, 26, 26, 28, 2, -25 }, // 0x44 'D' + { 2189, 27, 26, 28, 2, -25 }, // 0x45 'E' + { 2277, 28, 26, 28, 2, -25 }, // 0x46 'F' + { 2368, 25, 28, 28, 5, -26 }, // 0x47 'G' + { 2456, 27, 26, 28, 3, -25 }, // 0x48 'H' + { 2544, 22, 26, 28, 6, -25 }, // 0x49 'I' + { 2616, 28, 27, 28, 5, -25 }, // 0x4A 'J' + { 2711, 29, 26, 28, 2, -25 }, // 0x4B 'K' + { 2806, 25, 26, 28, 3, -25 }, // 0x4C 'L' + { 2888, 32, 26, 28, 1, -25 }, // 0x4D 'M' + { 2992, 30, 26, 28, 2, -25 }, // 0x4E 'N' + { 3090, 24, 28, 28, 5, -26 }, // 0x4F 'O' + { 3174, 26, 26, 28, 2, -25 }, // 0x50 'P' + { 3259, 24, 32, 28, 5, -26 }, // 0x51 'Q' + { 3355, 26, 26, 28, 2, -25 }, // 0x52 'R' + { 3440, 24, 28, 28, 5, -26 }, // 0x53 'S' + { 3524, 24, 26, 28, 7, -25 }, // 0x54 'T' + { 3602, 26, 27, 28, 6, -25 }, // 0x55 'U' + { 3690, 27, 26, 28, 6, -25 }, // 0x56 'V' + { 3778, 27, 26, 28, 6, -25 }, // 0x57 'W' + { 3866, 29, 26, 28, 2, -25 }, // 0x58 'X' + { 3961, 24, 26, 28, 7, -25 }, // 0x59 'Y' + { 4039, 23, 26, 28, 5, -25 }, // 0x5A 'Z' + { 4114, 15, 34, 28, 12, -27 }, // 0x5B '[' + { 4178, 10, 35, 28, 12, -30 }, // 0x5C '\' + { 4222, 15, 34, 28, 6, -27 }, // 0x5D ']' + { 4286, 18, 12, 28, 9, -28 }, // 0x5E '^' + { 4313, 28, 2, 28, -1, 5 }, // 0x5F '_' + { 4320, 6, 7, 28, 13, -29 }, // 0x60 '`' + { 4326, 22, 22, 28, 4, -20 }, // 0x61 'a' + { 4387, 27, 29, 28, 1, -27 }, // 0x62 'b' + { 4485, 22, 22, 28, 6, -20 }, // 0x63 'c' + { 4546, 25, 29, 28, 5, -27 }, // 0x64 'd' + { 4637, 22, 22, 28, 5, -20 }, // 0x65 'e' + { 4698, 26, 28, 28, 5, -27 }, // 0x66 'f' + { 4789, 25, 30, 28, 5, -20 }, // 0x67 'g' + { 4883, 24, 28, 28, 3, -27 }, // 0x68 'h' + { 4967, 19, 29, 28, 5, -28 }, // 0x69 'i' + { 5036, 20, 38, 28, 4, -28 }, // 0x6A 'j' + { 5131, 24, 28, 28, 3, -27 }, // 0x6B 'k' + { 5215, 19, 28, 28, 5, -27 }, // 0x6C 'l' + { 5282, 27, 21, 28, 1, -20 }, // 0x6D 'm' + { 5353, 23, 21, 28, 3, -20 }, // 0x6E 'n' + { 5414, 22, 22, 28, 5, -20 }, // 0x6F 'o' + { 5475, 29, 30, 28, -1, -20 }, // 0x70 'p' + { 5584, 26, 30, 28, 5, -20 }, // 0x71 'q' + { 5682, 25, 20, 28, 4, -19 }, // 0x72 'r' + { 5745, 21, 22, 28, 5, -20 }, // 0x73 's' + { 5803, 17, 27, 28, 7, -25 }, // 0x74 't' + { 5861, 21, 21, 28, 6, -19 }, // 0x75 'u' + { 5917, 26, 20, 28, 5, -19 }, // 0x76 'v' + { 5982, 25, 20, 28, 6, -19 }, // 0x77 'w' + { 6045, 26, 20, 28, 3, -19 }, // 0x78 'x' + { 6110, 29, 29, 28, 1, -19 }, // 0x79 'y' + { 6216, 21, 20, 28, 5, -19 }, // 0x7A 'z' + { 6269, 15, 34, 28, 10, -27 }, // 0x7B '{' + { 6333, 9, 35, 28, 12, -28 }, // 0x7C '|' + { 6373, 15, 34, 28, 8, -27 }, // 0x7D '}' + { 6437, 20, 6, 28, 7, -15 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoOblique24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 7124 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h new file mode 100644 index 000000000..a00ca8290 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h @@ -0,0 +1,187 @@ +const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { + 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, + 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, + 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, + 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, + 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, + 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, + 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, + 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, + 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, + 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, + 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, + 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, + 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, + 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, + 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, + 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, + 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, + 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, + 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, + 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, + 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, + 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, + 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, + 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, + 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, + 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, + 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, + 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, + 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, + 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, + 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, + 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, + 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, + 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, + 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, + 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, + 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, + 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, + 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, + 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, + 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, + 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, + 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, + 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, + 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, + 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, + 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, + 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, + 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, + 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, + 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, + 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, + 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, + 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, + 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, + 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, + 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, + 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, + 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, + 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, + 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, + 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, + 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, + 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, + 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, + 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, + 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, + 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, + 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, + 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, + 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, + 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, + 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, + 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, + 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, + 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, + 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, + 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30 }; + +const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 4, 11, 11, 4, -10 }, // 0x21 '!' + { 6, 5, 5, 11, 4, -10 }, // 0x22 '"' + { 10, 9, 12, 11, 2, -10 }, // 0x23 '#' + { 24, 8, 12, 11, 3, -10 }, // 0x24 '$' + { 36, 9, 11, 11, 2, -10 }, // 0x25 '%' + { 49, 7, 10, 11, 2, -9 }, // 0x26 '&' + { 58, 2, 5, 11, 6, -10 }, // 0x27 ''' + { 60, 4, 13, 11, 6, -10 }, // 0x28 '(' + { 67, 4, 13, 11, 3, -10 }, // 0x29 ')' + { 74, 7, 7, 11, 4, -10 }, // 0x2A '*' + { 81, 9, 8, 11, 2, -8 }, // 0x2B '+' + { 90, 4, 5, 11, 2, -1 }, // 0x2C ',' + { 93, 9, 1, 11, 2, -5 }, // 0x2D '-' + { 95, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 96, 9, 13, 11, 2, -11 }, // 0x2F '/' + { 111, 7, 11, 11, 3, -10 }, // 0x30 '0' + { 121, 7, 11, 11, 2, -10 }, // 0x31 '1' + { 131, 9, 11, 11, 2, -10 }, // 0x32 '2' + { 144, 9, 11, 11, 2, -10 }, // 0x33 '3' + { 157, 8, 11, 11, 2, -10 }, // 0x34 '4' + { 168, 9, 11, 11, 2, -10 }, // 0x35 '5' + { 181, 8, 11, 11, 3, -10 }, // 0x36 '6' + { 192, 7, 11, 11, 4, -10 }, // 0x37 '7' + { 202, 8, 11, 11, 3, -10 }, // 0x38 '8' + { 213, 8, 11, 11, 3, -10 }, // 0x39 '9' + { 224, 3, 8, 11, 4, -7 }, // 0x3A ':' + { 227, 5, 11, 11, 2, -7 }, // 0x3B ';' + { 234, 9, 8, 11, 2, -8 }, // 0x3C '<' + { 243, 9, 4, 11, 2, -6 }, // 0x3D '=' + { 248, 9, 8, 11, 2, -8 }, // 0x3E '>' + { 257, 7, 10, 11, 4, -9 }, // 0x3F '?' + { 266, 7, 12, 11, 3, -10 }, // 0x40 '@' + { 277, 11, 10, 11, 0, -9 }, // 0x41 'A' + { 291, 10, 10, 11, 1, -9 }, // 0x42 'B' + { 304, 9, 10, 11, 2, -9 }, // 0x43 'C' + { 316, 10, 10, 11, 1, -9 }, // 0x44 'D' + { 329, 10, 10, 11, 1, -9 }, // 0x45 'E' + { 342, 11, 10, 11, 1, -9 }, // 0x46 'F' + { 356, 9, 10, 11, 2, -9 }, // 0x47 'G' + { 368, 11, 10, 11, 1, -9 }, // 0x48 'H' + { 382, 9, 10, 11, 2, -9 }, // 0x49 'I' + { 394, 11, 10, 11, 2, -9 }, // 0x4A 'J' + { 408, 11, 10, 11, 1, -9 }, // 0x4B 'K' + { 422, 10, 10, 11, 1, -9 }, // 0x4C 'L' + { 435, 13, 10, 11, 0, -9 }, // 0x4D 'M' + { 452, 11, 10, 11, 1, -9 }, // 0x4E 'N' + { 466, 9, 10, 11, 2, -9 }, // 0x4F 'O' + { 478, 10, 10, 11, 1, -9 }, // 0x50 'P' + { 491, 9, 13, 11, 2, -9 }, // 0x51 'Q' + { 506, 10, 10, 11, 1, -9 }, // 0x52 'R' + { 519, 9, 10, 11, 2, -9 }, // 0x53 'S' + { 531, 9, 10, 11, 3, -9 }, // 0x54 'T' + { 543, 10, 10, 11, 2, -9 }, // 0x55 'U' + { 556, 11, 10, 11, 2, -9 }, // 0x56 'V' + { 570, 11, 10, 11, 2, -9 }, // 0x57 'W' + { 584, 11, 10, 11, 1, -9 }, // 0x58 'X' + { 598, 9, 10, 11, 3, -9 }, // 0x59 'Y' + { 610, 9, 10, 11, 2, -9 }, // 0x5A 'Z' + { 622, 5, 13, 11, 5, -10 }, // 0x5B '[' + { 631, 4, 14, 11, 4, -11 }, // 0x5C '\' + { 638, 5, 13, 11, 2, -10 }, // 0x5D ']' + { 647, 7, 5, 11, 3, -10 }, // 0x5E '^' + { 652, 11, 1, 11, 0, 2 }, // 0x5F '_' + { 654, 2, 3, 11, 5, -11 }, // 0x60 '`' + { 655, 9, 8, 11, 2, -7 }, // 0x61 'a' + { 664, 11, 11, 11, 0, -10 }, // 0x62 'b' + { 680, 10, 8, 11, 2, -7 }, // 0x63 'c' + { 690, 9, 11, 11, 2, -10 }, // 0x64 'd' + { 703, 9, 8, 11, 2, -7 }, // 0x65 'e' + { 712, 10, 11, 11, 2, -10 }, // 0x66 'f' + { 726, 10, 11, 11, 2, -7 }, // 0x67 'g' + { 740, 10, 11, 11, 1, -10 }, // 0x68 'h' + { 754, 8, 11, 11, 2, -10 }, // 0x69 'i' + { 765, 9, 14, 11, 1, -10 }, // 0x6A 'j' + { 781, 9, 11, 11, 1, -10 }, // 0x6B 'k' + { 794, 8, 11, 11, 2, -10 }, // 0x6C 'l' + { 805, 11, 8, 11, 0, -7 }, // 0x6D 'm' + { 816, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 825, 9, 8, 11, 2, -7 }, // 0x6F 'o' + { 834, 11, 11, 11, 0, -7 }, // 0x70 'p' + { 850, 10, 11, 11, 2, -7 }, // 0x71 'q' + { 864, 9, 8, 11, 2, -7 }, // 0x72 'r' + { 873, 8, 8, 11, 2, -7 }, // 0x73 's' + { 881, 7, 10, 11, 2, -9 }, // 0x74 't' + { 890, 9, 8, 11, 2, -7 }, // 0x75 'u' + { 899, 10, 8, 11, 2, -7 }, // 0x76 'v' + { 909, 10, 8, 11, 2, -7 }, // 0x77 'w' + { 919, 10, 8, 11, 1, -7 }, // 0x78 'x' + { 929, 12, 11, 11, 0, -7 }, // 0x79 'y' + { 946, 8, 8, 11, 2, -7 }, // 0x7A 'z' + { 954, 6, 13, 11, 4, -10 }, // 0x7B '{' + { 964, 3, 12, 11, 5, -9 }, // 0x7C '|' + { 969, 6, 13, 11, 3, -10 }, // 0x7D '}' + { 979, 7, 3, 11, 3, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoOblique9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1654 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h new file mode 100644 index 000000000..9ecbb8fb0 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h @@ -0,0 +1,270 @@ +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80 }; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 18, 8, 3, -17 }, // 0x21 '!' + { 5, 6, 6, 8, 1, -16 }, // 0x22 '"' + { 10, 13, 16, 13, 0, -15 }, // 0x23 '#' + { 36, 11, 20, 13, 1, -17 }, // 0x24 '$' + { 64, 20, 17, 21, 1, -16 }, // 0x25 '%' + { 107, 14, 17, 16, 1, -16 }, // 0x26 '&' + { 137, 2, 6, 5, 1, -16 }, // 0x27 ''' + { 139, 5, 23, 8, 2, -17 }, // 0x28 '(' + { 154, 5, 23, 8, 1, -17 }, // 0x29 ')' + { 169, 7, 7, 9, 1, -17 }, // 0x2A '*' + { 176, 10, 11, 14, 2, -10 }, // 0x2B '+' + { 190, 2, 6, 7, 2, -1 }, // 0x2C ',' + { 192, 6, 2, 8, 1, -7 }, // 0x2D '-' + { 194, 2, 2, 6, 2, -1 }, // 0x2E '.' + { 195, 7, 18, 7, 0, -17 }, // 0x2F '/' + { 211, 11, 17, 13, 1, -16 }, // 0x30 '0' + { 235, 5, 17, 13, 3, -16 }, // 0x31 '1' + { 246, 11, 17, 13, 1, -16 }, // 0x32 '2' + { 270, 11, 17, 13, 1, -16 }, // 0x33 '3' + { 294, 11, 17, 13, 1, -16 }, // 0x34 '4' + { 318, 11, 17, 13, 1, -16 }, // 0x35 '5' + { 342, 11, 17, 13, 1, -16 }, // 0x36 '6' + { 366, 11, 17, 13, 1, -16 }, // 0x37 '7' + { 390, 11, 17, 13, 1, -16 }, // 0x38 '8' + { 414, 11, 17, 13, 1, -16 }, // 0x39 '9' + { 438, 2, 13, 6, 2, -12 }, // 0x3A ':' + { 442, 2, 16, 6, 2, -11 }, // 0x3B ';' + { 446, 12, 12, 14, 1, -11 }, // 0x3C '<' + { 464, 12, 6, 14, 1, -8 }, // 0x3D '=' + { 473, 12, 12, 14, 1, -11 }, // 0x3E '>' + { 491, 10, 18, 13, 2, -17 }, // 0x3F '?' + { 514, 22, 21, 24, 1, -17 }, // 0x40 '@' + { 572, 16, 18, 16, 0, -17 }, // 0x41 'A' + { 608, 13, 18, 16, 2, -17 }, // 0x42 'B' + { 638, 15, 18, 17, 1, -17 }, // 0x43 'C' + { 672, 14, 18, 17, 2, -17 }, // 0x44 'D' + { 704, 12, 18, 15, 2, -17 }, // 0x45 'E' + { 731, 11, 18, 14, 2, -17 }, // 0x46 'F' + { 756, 16, 18, 18, 1, -17 }, // 0x47 'G' + { 792, 13, 18, 17, 2, -17 }, // 0x48 'H' + { 822, 2, 18, 7, 2, -17 }, // 0x49 'I' + { 827, 9, 18, 13, 1, -17 }, // 0x4A 'J' + { 848, 14, 18, 16, 2, -17 }, // 0x4B 'K' + { 880, 10, 18, 14, 2, -17 }, // 0x4C 'L' + { 903, 16, 18, 20, 2, -17 }, // 0x4D 'M' + { 939, 13, 18, 18, 2, -17 }, // 0x4E 'N' + { 969, 17, 18, 19, 1, -17 }, // 0x4F 'O' + { 1008, 12, 18, 16, 2, -17 }, // 0x50 'P' + { 1035, 17, 19, 19, 1, -17 }, // 0x51 'Q' + { 1076, 14, 18, 17, 2, -17 }, // 0x52 'R' + { 1108, 14, 18, 16, 1, -17 }, // 0x53 'S' + { 1140, 12, 18, 15, 1, -17 }, // 0x54 'T' + { 1167, 13, 18, 17, 2, -17 }, // 0x55 'U' + { 1197, 15, 18, 15, 0, -17 }, // 0x56 'V' + { 1231, 22, 18, 22, 0, -17 }, // 0x57 'W' + { 1281, 15, 18, 16, 0, -17 }, // 0x58 'X' + { 1315, 16, 18, 16, 0, -17 }, // 0x59 'Y' + { 1351, 13, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1381, 4, 23, 7, 2, -17 }, // 0x5B '[' + { 1393, 7, 18, 7, 0, -17 }, // 0x5C '\' + { 1409, 4, 23, 7, 1, -17 }, // 0x5D ']' + { 1421, 9, 9, 11, 1, -16 }, // 0x5E '^' + { 1432, 15, 1, 13, -1, 4 }, // 0x5F '_' + { 1434, 5, 4, 6, 1, -17 }, // 0x60 '`' + { 1437, 12, 13, 13, 1, -12 }, // 0x61 'a' + { 1457, 12, 18, 13, 1, -17 }, // 0x62 'b' + { 1484, 10, 13, 12, 1, -12 }, // 0x63 'c' + { 1501, 11, 18, 13, 1, -17 }, // 0x64 'd' + { 1526, 11, 13, 13, 1, -12 }, // 0x65 'e' + { 1544, 5, 18, 7, 1, -17 }, // 0x66 'f' + { 1556, 11, 18, 13, 1, -12 }, // 0x67 'g' + { 1581, 10, 18, 13, 1, -17 }, // 0x68 'h' + { 1604, 2, 18, 5, 2, -17 }, // 0x69 'i' + { 1609, 4, 23, 6, 0, -17 }, // 0x6A 'j' + { 1621, 11, 18, 12, 1, -17 }, // 0x6B 'k' + { 1646, 2, 18, 5, 1, -17 }, // 0x6C 'l' + { 1651, 17, 13, 19, 1, -12 }, // 0x6D 'm' + { 1679, 10, 13, 13, 1, -12 }, // 0x6E 'n' + { 1696, 11, 13, 13, 1, -12 }, // 0x6F 'o' + { 1714, 12, 17, 13, 1, -12 }, // 0x70 'p' + { 1740, 11, 17, 13, 1, -12 }, // 0x71 'q' + { 1764, 6, 13, 8, 1, -12 }, // 0x72 'r' + { 1774, 10, 13, 12, 1, -12 }, // 0x73 's' + { 1791, 5, 16, 7, 1, -15 }, // 0x74 't' + { 1801, 10, 13, 13, 1, -12 }, // 0x75 'u' + { 1818, 12, 13, 12, 0, -12 }, // 0x76 'v' + { 1838, 17, 13, 17, 0, -12 }, // 0x77 'w' + { 1866, 11, 13, 11, 0, -12 }, // 0x78 'x' + { 1884, 11, 18, 11, 0, -12 }, // 0x79 'y' + { 1909, 10, 13, 12, 1, -12 }, // 0x7A 'z' + { 1926, 5, 23, 8, 1, -17 }, // 0x7B '{' + { 1941, 2, 23, 6, 2, -17 }, // 0x7C '|' + { 1947, 5, 23, 8, 2, -17 }, // 0x7D '}' + { 1962, 10, 5, 12, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = { + (uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2641 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h new file mode 100644 index 000000000..3fdc5911e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h @@ -0,0 +1,452 @@ +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00 }; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 3, 26, 12, 4, -25 }, // 0x21 '!' + { 10, 9, 9, 12, 1, -24 }, // 0x22 '"' + { 21, 19, 24, 19, 0, -23 }, // 0x23 '#' + { 78, 16, 30, 19, 2, -26 }, // 0x24 '$' + { 138, 29, 25, 31, 1, -24 }, // 0x25 '%' + { 229, 20, 25, 23, 2, -24 }, // 0x26 '&' + { 292, 3, 9, 7, 2, -24 }, // 0x27 ''' + { 296, 8, 33, 12, 3, -25 }, // 0x28 '(' + { 329, 8, 33, 12, 1, -25 }, // 0x29 ')' + { 362, 10, 10, 14, 2, -25 }, // 0x2A '*' + { 375, 16, 16, 20, 2, -15 }, // 0x2B '+' + { 407, 3, 9, 10, 3, -3 }, // 0x2C ',' + { 411, 8, 3, 12, 2, -10 }, // 0x2D '-' + { 414, 3, 4, 9, 3, -3 }, // 0x2E '.' + { 416, 10, 26, 10, 0, -25 }, // 0x2F '/' + { 449, 16, 25, 19, 2, -24 }, // 0x30 '0' + { 499, 8, 25, 19, 4, -24 }, // 0x31 '1' + { 524, 16, 25, 19, 2, -24 }, // 0x32 '2' + { 574, 17, 25, 19, 1, -24 }, // 0x33 '3' + { 628, 16, 25, 19, 1, -24 }, // 0x34 '4' + { 678, 17, 25, 19, 1, -24 }, // 0x35 '5' + { 732, 16, 25, 19, 2, -24 }, // 0x36 '6' + { 782, 16, 25, 19, 2, -24 }, // 0x37 '7' + { 832, 17, 25, 19, 1, -24 }, // 0x38 '8' + { 886, 16, 25, 19, 1, -24 }, // 0x39 '9' + { 936, 3, 19, 9, 3, -18 }, // 0x3A ':' + { 944, 3, 24, 9, 3, -18 }, // 0x3B ';' + { 953, 17, 17, 20, 2, -16 }, // 0x3C '<' + { 990, 17, 9, 20, 2, -12 }, // 0x3D '=' + { 1010, 17, 17, 20, 2, -16 }, // 0x3E '>' + { 1047, 15, 26, 19, 3, -25 }, // 0x3F '?' + { 1096, 32, 31, 36, 1, -25 }, // 0x40 '@' + { 1220, 22, 26, 23, 1, -25 }, // 0x41 'A' + { 1292, 19, 26, 23, 3, -25 }, // 0x42 'B' + { 1354, 22, 26, 25, 1, -25 }, // 0x43 'C' + { 1426, 20, 26, 24, 3, -25 }, // 0x44 'D' + { 1491, 18, 26, 22, 3, -25 }, // 0x45 'E' + { 1550, 17, 26, 21, 3, -25 }, // 0x46 'F' + { 1606, 24, 26, 27, 1, -25 }, // 0x47 'G' + { 1684, 19, 26, 25, 3, -25 }, // 0x48 'H' + { 1746, 3, 26, 10, 4, -25 }, // 0x49 'I' + { 1756, 14, 26, 18, 1, -25 }, // 0x4A 'J' + { 1802, 20, 26, 24, 3, -25 }, // 0x4B 'K' + { 1867, 15, 26, 20, 3, -25 }, // 0x4C 'L' + { 1916, 24, 26, 30, 3, -25 }, // 0x4D 'M' + { 1994, 20, 26, 26, 3, -25 }, // 0x4E 'N' + { 2059, 25, 26, 27, 1, -25 }, // 0x4F 'O' + { 2141, 18, 26, 23, 3, -25 }, // 0x50 'P' + { 2200, 25, 28, 27, 1, -25 }, // 0x51 'Q' + { 2288, 20, 26, 25, 3, -25 }, // 0x52 'R' + { 2353, 20, 26, 23, 1, -25 }, // 0x53 'S' + { 2418, 19, 26, 22, 1, -25 }, // 0x54 'T' + { 2480, 19, 26, 25, 3, -25 }, // 0x55 'U' + { 2542, 21, 26, 23, 1, -25 }, // 0x56 'V' + { 2611, 32, 26, 33, 0, -25 }, // 0x57 'W' + { 2715, 21, 26, 23, 1, -25 }, // 0x58 'X' + { 2784, 23, 26, 24, 0, -25 }, // 0x59 'Y' + { 2859, 19, 26, 22, 1, -25 }, // 0x5A 'Z' + { 2921, 6, 33, 10, 2, -25 }, // 0x5B '[' + { 2946, 10, 26, 10, 0, -25 }, // 0x5C '\' + { 2979, 6, 33, 10, 1, -25 }, // 0x5D ']' + { 3004, 13, 13, 16, 2, -24 }, // 0x5E '^' + { 3026, 21, 2, 19, -1, 5 }, // 0x5F '_' + { 3032, 7, 5, 9, 1, -25 }, // 0x60 '`' + { 3037, 17, 19, 19, 1, -18 }, // 0x61 'a' + { 3078, 16, 26, 20, 2, -25 }, // 0x62 'b' + { 3130, 16, 19, 18, 1, -18 }, // 0x63 'c' + { 3168, 17, 26, 20, 1, -25 }, // 0x64 'd' + { 3224, 16, 19, 19, 1, -18 }, // 0x65 'e' + { 3262, 7, 26, 10, 1, -25 }, // 0x66 'f' + { 3285, 16, 27, 19, 1, -18 }, // 0x67 'g' + { 3339, 15, 26, 19, 2, -25 }, // 0x68 'h' + { 3388, 3, 26, 8, 2, -25 }, // 0x69 'i' + { 3398, 6, 34, 9, 0, -25 }, // 0x6A 'j' + { 3424, 16, 26, 18, 2, -25 }, // 0x6B 'k' + { 3476, 3, 26, 7, 2, -25 }, // 0x6C 'l' + { 3486, 24, 19, 28, 2, -18 }, // 0x6D 'm' + { 3543, 15, 19, 19, 2, -18 }, // 0x6E 'n' + { 3579, 17, 19, 19, 1, -18 }, // 0x6F 'o' + { 3620, 16, 25, 20, 2, -18 }, // 0x70 'p' + { 3670, 17, 25, 20, 1, -18 }, // 0x71 'q' + { 3724, 9, 19, 12, 2, -18 }, // 0x72 'r' + { 3746, 14, 19, 17, 2, -18 }, // 0x73 's' + { 3780, 7, 23, 10, 1, -22 }, // 0x74 't' + { 3801, 15, 19, 19, 2, -18 }, // 0x75 'u' + { 3837, 17, 19, 17, 0, -18 }, // 0x76 'v' + { 3878, 25, 19, 25, 0, -18 }, // 0x77 'w' + { 3938, 16, 19, 17, 0, -18 }, // 0x78 'x' + { 3976, 17, 27, 17, 0, -18 }, // 0x79 'y' + { 4034, 15, 19, 17, 1, -18 }, // 0x7A 'z' + { 4070, 8, 33, 12, 1, -25 }, // 0x7B '{' + { 4103, 2, 33, 9, 3, -25 }, // 0x7C '|' + { 4112, 8, 33, 12, 3, -25 }, // 0x7D '}' + { 4145, 15, 7, 18, 1, -15 } }; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = { + (uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4831 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h new file mode 100644 index 000000000..ff2d174fb --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h @@ -0,0 +1,727 @@ +const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, + 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, + 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, + 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, + 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, + 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, + 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, + 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, + 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, + 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, + 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, + 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, + 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, + 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, + 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, + 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, + 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, + 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, + 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, + 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, + 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, + 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, + 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, + 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, + 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, + 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, + 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, + 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, + 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, + 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, + 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, + 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, + 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, + 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, + 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, + 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, + 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, + 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, + 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, + 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, + 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, + 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, + 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, + 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, + 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, + 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, + 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, + 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, + 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, + 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, + 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, + 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, + 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, + 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, + 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, + 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, + 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, + 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, + 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, + 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, + 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, + 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, + 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, + 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, + 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, + 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, + 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, + 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, + 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, + 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, + 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, + 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, + 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, + 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, + 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, + 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, + 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, + 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, + 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, + 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, + 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, + 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, + 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, + 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, + 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, + 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, + 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, + 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, + 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, + 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, + 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, + 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, + 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, + 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, + 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, + 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, + 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, + 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, + 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, + 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, + 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, + 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, + 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, + 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, + 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, + 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, + 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, + 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, + 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, + 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, + 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, + 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, + 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, + 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, + 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, + 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, + 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, + 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, + 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, + 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, + 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, + 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, + 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, + 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, + 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, + 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, + 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, + 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, + 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, + 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, + 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, + 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, + 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, + 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, + 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, + 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, + 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, + 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, + 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, + 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, + 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, + 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, + 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, + 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, + 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, + 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, + 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, + 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, + 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, + 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, + 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, + 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, + 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, + 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, + 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, + 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, + 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, + 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, + 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, + 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, + 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, + 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, + 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, + 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, + 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, + 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, + 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, + 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, + 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, + 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, + 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, + 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, + 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, + 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, + 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, + 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, + 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, + 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, + 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, + 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, + 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, + 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, + 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, + 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, + 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, + 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, + 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, + 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, + 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, + 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, + 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, + 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, + 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, + 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, + 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, + 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, + 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, + 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, + 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, + 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, + 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, + 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, + 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, + 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, + 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, + 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, + 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, + 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, + 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, + 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, + 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, + 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, + 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, + 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, + 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, + 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, + 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, + 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, + 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, + 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, + 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, + 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, + 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, + 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, + 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, + 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, + 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, + 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, + 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, + 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, + 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, + 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, + 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, + 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, + 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, + 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, + 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, + 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, + 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, + 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, + 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, + 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, + 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, + 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, + 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, + 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, + 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, + 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, + 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, + 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, + 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, + 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, + 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, + 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, + 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, + 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, + 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, + 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, + 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, + 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, + 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, + 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, + 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0 }; + +const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 4, 34, 16, 6, -33 }, // 0x21 '!' + { 17, 11, 12, 16, 2, -32 }, // 0x22 '"' + { 34, 24, 33, 26, 1, -31 }, // 0x23 '#' + { 133, 23, 41, 26, 1, -34 }, // 0x24 '$' + { 251, 39, 34, 42, 1, -32 }, // 0x25 '%' + { 417, 28, 34, 31, 2, -32 }, // 0x26 '&' + { 536, 4, 12, 9, 2, -32 }, // 0x27 ''' + { 542, 10, 44, 16, 3, -33 }, // 0x28 '(' + { 597, 10, 44, 16, 2, -33 }, // 0x29 ')' + { 652, 14, 14, 18, 2, -33 }, // 0x2A '*' + { 677, 23, 22, 27, 2, -21 }, // 0x2B '+' + { 741, 4, 12, 13, 4, -4 }, // 0x2C ',' + { 747, 11, 4, 16, 2, -14 }, // 0x2D '-' + { 753, 4, 5, 12, 4, -4 }, // 0x2E '.' + { 756, 13, 35, 13, 0, -33 }, // 0x2F '/' + { 813, 22, 34, 26, 2, -32 }, // 0x30 '0' + { 907, 11, 33, 26, 5, -32 }, // 0x31 '1' + { 953, 22, 33, 26, 2, -32 }, // 0x32 '2' + { 1044, 23, 34, 26, 1, -32 }, // 0x33 '3' + { 1142, 23, 33, 26, 1, -32 }, // 0x34 '4' + { 1237, 22, 34, 26, 2, -32 }, // 0x35 '5' + { 1331, 22, 34, 26, 2, -32 }, // 0x36 '6' + { 1425, 21, 33, 26, 2, -32 }, // 0x37 '7' + { 1512, 22, 34, 26, 2, -32 }, // 0x38 '8' + { 1606, 21, 34, 26, 2, -32 }, // 0x39 '9' + { 1696, 4, 25, 12, 4, -24 }, // 0x3A ':' + { 1709, 4, 32, 12, 4, -24 }, // 0x3B ';' + { 1725, 23, 23, 27, 2, -22 }, // 0x3C '<' + { 1792, 23, 12, 27, 2, -16 }, // 0x3D '=' + { 1827, 23, 23, 27, 2, -22 }, // 0x3E '>' + { 1894, 20, 35, 26, 4, -34 }, // 0x3F '?' + { 1982, 43, 42, 48, 2, -34 }, // 0x40 '@' + { 2208, 30, 34, 31, 1, -33 }, // 0x41 'A' + { 2336, 25, 34, 31, 4, -33 }, // 0x42 'B' + { 2443, 29, 36, 33, 2, -34 }, // 0x43 'C' + { 2574, 27, 34, 33, 4, -33 }, // 0x44 'D' + { 2689, 24, 34, 30, 4, -33 }, // 0x45 'E' + { 2791, 22, 34, 28, 4, -33 }, // 0x46 'F' + { 2885, 31, 36, 36, 2, -34 }, // 0x47 'G' + { 3025, 26, 34, 34, 4, -33 }, // 0x48 'H' + { 3136, 4, 34, 13, 5, -33 }, // 0x49 'I' + { 3153, 19, 35, 25, 2, -33 }, // 0x4A 'J' + { 3237, 27, 34, 32, 4, -33 }, // 0x4B 'K' + { 3352, 21, 34, 26, 4, -33 }, // 0x4C 'L' + { 3442, 32, 34, 40, 4, -33 }, // 0x4D 'M' + { 3578, 26, 34, 34, 4, -33 }, // 0x4E 'N' + { 3689, 33, 36, 37, 2, -34 }, // 0x4F 'O' + { 3838, 24, 34, 31, 4, -33 }, // 0x50 'P' + { 3940, 33, 38, 37, 2, -34 }, // 0x51 'Q' + { 4097, 26, 34, 33, 4, -33 }, // 0x52 'R' + { 4208, 27, 36, 31, 2, -34 }, // 0x53 'S' + { 4330, 26, 34, 30, 2, -33 }, // 0x54 'T' + { 4441, 26, 35, 34, 4, -33 }, // 0x55 'U' + { 4555, 29, 34, 30, 1, -33 }, // 0x56 'V' + { 4679, 42, 34, 44, 1, -33 }, // 0x57 'W' + { 4858, 29, 34, 31, 1, -33 }, // 0x58 'X' + { 4982, 30, 34, 32, 1, -33 }, // 0x59 'Y' + { 5110, 27, 34, 29, 1, -33 }, // 0x5A 'Z' + { 5225, 8, 44, 13, 3, -33 }, // 0x5B '[' + { 5269, 13, 35, 13, 0, -33 }, // 0x5C '\' + { 5326, 8, 44, 13, 1, -33 }, // 0x5D ']' + { 5370, 18, 18, 22, 2, -32 }, // 0x5E '^' + { 5411, 28, 2, 26, -1, 7 }, // 0x5F '_' + { 5418, 10, 7, 12, 1, -34 }, // 0x60 '`' + { 5427, 24, 27, 26, 1, -25 }, // 0x61 'a' + { 5508, 22, 35, 26, 3, -33 }, // 0x62 'b' + { 5605, 21, 27, 24, 1, -25 }, // 0x63 'c' + { 5676, 23, 35, 26, 1, -33 }, // 0x64 'd' + { 5777, 22, 27, 25, 1, -25 }, // 0x65 'e' + { 5852, 10, 34, 13, 1, -33 }, // 0x66 'f' + { 5895, 22, 36, 26, 1, -25 }, // 0x67 'g' + { 5994, 19, 34, 25, 3, -33 }, // 0x68 'h' + { 6075, 4, 34, 10, 3, -33 }, // 0x69 'i' + { 6092, 8, 44, 11, 0, -33 }, // 0x6A 'j' + { 6136, 21, 34, 24, 3, -33 }, // 0x6B 'k' + { 6226, 4, 34, 10, 3, -33 }, // 0x6C 'l' + { 6243, 32, 26, 38, 3, -25 }, // 0x6D 'm' + { 6347, 20, 26, 25, 3, -25 }, // 0x6E 'n' + { 6412, 23, 27, 25, 1, -25 }, // 0x6F 'o' + { 6490, 22, 35, 26, 3, -25 }, // 0x70 'p' + { 6587, 23, 35, 26, 1, -25 }, // 0x71 'q' + { 6688, 12, 26, 16, 3, -25 }, // 0x72 'r' + { 6727, 20, 27, 23, 1, -25 }, // 0x73 's' + { 6795, 10, 32, 13, 1, -30 }, // 0x74 't' + { 6835, 20, 26, 25, 3, -24 }, // 0x75 'u' + { 6900, 23, 25, 23, 0, -24 }, // 0x76 'v' + { 6972, 34, 25, 34, 0, -24 }, // 0x77 'w' + { 7079, 22, 25, 22, 0, -24 }, // 0x78 'x' + { 7148, 22, 35, 22, 0, -24 }, // 0x79 'y' + { 7245, 20, 25, 23, 1, -24 }, // 0x7A 'z' + { 7308, 11, 44, 16, 2, -33 }, // 0x7B '{' + { 7369, 3, 44, 12, 4, -33 }, // 0x7C '|' + { 7386, 11, 44, 16, 2, -33 }, // 0x7D '}' + { 7447, 19, 7, 24, 2, -19 } }; // 0x7E '~' + +const GFXfont FreeSans24pt7b PROGMEM = { + (uint8_t *)FreeSans24pt7bBitmaps, + (GFXglyph *)FreeSans24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h new file mode 100644 index 000000000..1f006a189 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h @@ -0,0 +1,201 @@ +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 }; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 2, 13, 6, 2, -12 }, // 0x21 '!' + { 4, 5, 4, 6, 1, -12 }, // 0x22 '"' + { 7, 10, 12, 10, 0, -11 }, // 0x23 '#' + { 22, 9, 16, 10, 1, -13 }, // 0x24 '$' + { 40, 16, 13, 16, 1, -12 }, // 0x25 '%' + { 66, 11, 13, 12, 1, -12 }, // 0x26 '&' + { 84, 2, 4, 4, 1, -12 }, // 0x27 ''' + { 85, 4, 17, 6, 1, -12 }, // 0x28 '(' + { 94, 4, 17, 6, 1, -12 }, // 0x29 ')' + { 103, 5, 5, 7, 1, -12 }, // 0x2A '*' + { 107, 6, 8, 11, 3, -7 }, // 0x2B '+' + { 113, 2, 4, 5, 2, 0 }, // 0x2C ',' + { 114, 4, 1, 6, 1, -4 }, // 0x2D '-' + { 115, 2, 1, 5, 1, 0 }, // 0x2E '.' + { 116, 5, 13, 5, 0, -12 }, // 0x2F '/' + { 125, 8, 13, 10, 1, -12 }, // 0x30 '0' + { 138, 4, 13, 10, 3, -12 }, // 0x31 '1' + { 145, 9, 13, 10, 1, -12 }, // 0x32 '2' + { 160, 8, 13, 10, 1, -12 }, // 0x33 '3' + { 173, 7, 13, 10, 2, -12 }, // 0x34 '4' + { 185, 9, 13, 10, 1, -12 }, // 0x35 '5' + { 200, 9, 13, 10, 1, -12 }, // 0x36 '6' + { 215, 8, 13, 10, 0, -12 }, // 0x37 '7' + { 228, 9, 13, 10, 1, -12 }, // 0x38 '8' + { 243, 8, 13, 10, 1, -12 }, // 0x39 '9' + { 256, 2, 10, 5, 1, -9 }, // 0x3A ':' + { 259, 3, 12, 5, 1, -8 }, // 0x3B ';' + { 264, 9, 9, 11, 1, -8 }, // 0x3C '<' + { 275, 9, 4, 11, 1, -5 }, // 0x3D '=' + { 280, 9, 9, 11, 1, -8 }, // 0x3E '>' + { 291, 9, 13, 10, 1, -12 }, // 0x3F '?' + { 306, 17, 16, 18, 1, -12 }, // 0x40 '@' + { 340, 12, 13, 12, 0, -12 }, // 0x41 'A' + { 360, 11, 13, 12, 1, -12 }, // 0x42 'B' + { 378, 11, 13, 13, 1, -12 }, // 0x43 'C' + { 396, 11, 13, 13, 1, -12 }, // 0x44 'D' + { 414, 9, 13, 11, 1, -12 }, // 0x45 'E' + { 429, 8, 13, 11, 1, -12 }, // 0x46 'F' + { 442, 12, 13, 14, 1, -12 }, // 0x47 'G' + { 462, 11, 13, 13, 1, -12 }, // 0x48 'H' + { 480, 2, 13, 5, 2, -12 }, // 0x49 'I' + { 484, 7, 13, 10, 1, -12 }, // 0x4A 'J' + { 496, 11, 13, 12, 1, -12 }, // 0x4B 'K' + { 514, 8, 13, 10, 1, -12 }, // 0x4C 'L' + { 527, 13, 13, 15, 1, -12 }, // 0x4D 'M' + { 549, 11, 13, 13, 1, -12 }, // 0x4E 'N' + { 567, 13, 13, 14, 1, -12 }, // 0x4F 'O' + { 589, 10, 13, 12, 1, -12 }, // 0x50 'P' + { 606, 13, 14, 14, 1, -12 }, // 0x51 'Q' + { 629, 12, 13, 13, 1, -12 }, // 0x52 'R' + { 649, 10, 13, 12, 1, -12 }, // 0x53 'S' + { 666, 9, 13, 11, 1, -12 }, // 0x54 'T' + { 681, 11, 13, 13, 1, -12 }, // 0x55 'U' + { 699, 11, 13, 12, 0, -12 }, // 0x56 'V' + { 717, 17, 13, 17, 0, -12 }, // 0x57 'W' + { 745, 12, 13, 12, 0, -12 }, // 0x58 'X' + { 765, 12, 13, 12, 0, -12 }, // 0x59 'Y' + { 785, 10, 13, 11, 1, -12 }, // 0x5A 'Z' + { 802, 3, 17, 5, 1, -12 }, // 0x5B '[' + { 809, 5, 13, 5, 0, -12 }, // 0x5C '\' + { 818, 3, 17, 5, 0, -12 }, // 0x5D ']' + { 825, 7, 7, 8, 1, -12 }, // 0x5E '^' + { 832, 10, 1, 10, 0, 3 }, // 0x5F '_' + { 834, 4, 3, 5, 0, -12 }, // 0x60 '`' + { 836, 9, 10, 10, 1, -9 }, // 0x61 'a' + { 848, 9, 13, 10, 1, -12 }, // 0x62 'b' + { 863, 8, 10, 9, 1, -9 }, // 0x63 'c' + { 873, 8, 13, 10, 1, -12 }, // 0x64 'd' + { 886, 8, 10, 10, 1, -9 }, // 0x65 'e' + { 896, 4, 13, 5, 1, -12 }, // 0x66 'f' + { 903, 8, 14, 10, 1, -9 }, // 0x67 'g' + { 917, 8, 13, 10, 1, -12 }, // 0x68 'h' + { 930, 2, 13, 4, 1, -12 }, // 0x69 'i' + { 934, 4, 17, 4, 0, -12 }, // 0x6A 'j' + { 943, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 958, 2, 13, 4, 1, -12 }, // 0x6C 'l' + { 962, 13, 10, 15, 1, -9 }, // 0x6D 'm' + { 979, 8, 10, 10, 1, -9 }, // 0x6E 'n' + { 989, 8, 10, 10, 1, -9 }, // 0x6F 'o' + { 999, 9, 13, 10, 1, -9 }, // 0x70 'p' + { 1014, 8, 13, 10, 1, -9 }, // 0x71 'q' + { 1027, 5, 10, 6, 1, -9 }, // 0x72 'r' + { 1034, 8, 10, 9, 1, -9 }, // 0x73 's' + { 1044, 4, 12, 5, 1, -11 }, // 0x74 't' + { 1050, 8, 10, 10, 1, -9 }, // 0x75 'u' + { 1060, 9, 10, 9, 0, -9 }, // 0x76 'v' + { 1072, 13, 10, 13, 0, -9 }, // 0x77 'w' + { 1089, 8, 10, 9, 0, -9 }, // 0x78 'x' + { 1099, 9, 14, 9, 0, -9 }, // 0x79 'y' + { 1115, 7, 10, 9, 1, -9 }, // 0x7A 'z' + { 1124, 4, 17, 6, 1, -12 }, // 0x7B '{' + { 1133, 2, 17, 4, 2, -12 }, // 0x7C '|' + { 1138, 4, 17, 6, 1, -12 }, // 0x7D '}' + { 1147, 7, 3, 9, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = { + (uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1822 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h new file mode 100644 index 000000000..e0922be27 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h @@ -0,0 +1,288 @@ +const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, + 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, + 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, + 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, + 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, + 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, + 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, + 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, + 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, + 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, + 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, + 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, + 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, + 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, + 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, + 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, + 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, + 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, + 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, + 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, + 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, + 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, + 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, + 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, + 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, + 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, + 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, + 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, + 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, + 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, + 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, + 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, + 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, + 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, + 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, + 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, + 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, + 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, + 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, + 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, + 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, + 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, + 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, + 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, + 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, + 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, + 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, + 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, + 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, + 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, + 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, + 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, + 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, + 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, + 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, + 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, + 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, + 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, + 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, + 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, + 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, + 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, + 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, + 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, + 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, + 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, + 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, + 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, + 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, + 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, + 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, + 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, + 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, + 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, + 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, + 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, + 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, + 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, + 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, + 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, + 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, + 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, + 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, + 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, + 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, + 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, + 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, + 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, + 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, + 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, + 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, + 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, + 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, + 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, + 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, + 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, + 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, + 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, + 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, + 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, + 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, + 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, + 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, + 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, + 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, + 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, + 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, + 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, + 0x01, 0xE0 }; + +const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 4, 17, 8, 3, -16 }, // 0x21 '!' + { 9, 10, 6, 11, 1, -17 }, // 0x22 '"' + { 17, 13, 16, 13, 0, -15 }, // 0x23 '#' + { 43, 13, 20, 13, 0, -17 }, // 0x24 '$' + { 76, 19, 17, 21, 1, -16 }, // 0x25 '%' + { 117, 16, 17, 17, 1, -16 }, // 0x26 '&' + { 151, 4, 6, 6, 1, -17 }, // 0x27 ''' + { 154, 6, 22, 8, 1, -17 }, // 0x28 '(' + { 171, 6, 22, 8, 1, -17 }, // 0x29 ')' + { 188, 7, 8, 9, 1, -17 }, // 0x2A '*' + { 195, 11, 11, 14, 2, -10 }, // 0x2B '+' + { 211, 4, 7, 6, 1, -2 }, // 0x2C ',' + { 215, 6, 3, 8, 1, -7 }, // 0x2D '-' + { 218, 4, 3, 6, 1, -2 }, // 0x2E '.' + { 220, 6, 17, 7, 0, -16 }, // 0x2F '/' + { 233, 12, 17, 13, 1, -16 }, // 0x30 '0' + { 259, 7, 17, 14, 3, -16 }, // 0x31 '1' + { 274, 12, 17, 13, 1, -16 }, // 0x32 '2' + { 300, 12, 17, 13, 1, -16 }, // 0x33 '3' + { 326, 11, 17, 13, 1, -16 }, // 0x34 '4' + { 350, 12, 17, 13, 1, -16 }, // 0x35 '5' + { 376, 12, 17, 13, 1, -16 }, // 0x36 '6' + { 402, 11, 17, 13, 1, -16 }, // 0x37 '7' + { 426, 12, 17, 13, 1, -16 }, // 0x38 '8' + { 452, 12, 17, 13, 1, -16 }, // 0x39 '9' + { 478, 4, 12, 6, 1, -11 }, // 0x3A ':' + { 484, 4, 16, 6, 1, -11 }, // 0x3B ';' + { 492, 12, 12, 14, 1, -11 }, // 0x3C '<' + { 510, 12, 9, 14, 1, -9 }, // 0x3D '=' + { 524, 12, 12, 14, 1, -11 }, // 0x3E '>' + { 542, 12, 18, 15, 2, -17 }, // 0x3F '?' + { 569, 21, 21, 23, 1, -17 }, // 0x40 '@' + { 625, 16, 18, 17, 0, -17 }, // 0x41 'A' + { 661, 14, 18, 17, 2, -17 }, // 0x42 'B' + { 693, 16, 18, 17, 1, -17 }, // 0x43 'C' + { 729, 15, 18, 17, 2, -17 }, // 0x44 'D' + { 763, 13, 18, 16, 2, -17 }, // 0x45 'E' + { 793, 12, 18, 15, 2, -17 }, // 0x46 'F' + { 820, 16, 18, 18, 1, -17 }, // 0x47 'G' + { 856, 14, 18, 18, 2, -17 }, // 0x48 'H' + { 888, 4, 18, 7, 2, -17 }, // 0x49 'I' + { 897, 11, 18, 14, 1, -17 }, // 0x4A 'J' + { 922, 16, 18, 17, 2, -17 }, // 0x4B 'K' + { 958, 11, 18, 15, 2, -17 }, // 0x4C 'L' + { 983, 17, 18, 21, 2, -17 }, // 0x4D 'M' + { 1022, 15, 18, 18, 2, -17 }, // 0x4E 'N' + { 1056, 17, 18, 19, 1, -17 }, // 0x4F 'O' + { 1095, 14, 18, 16, 2, -17 }, // 0x50 'P' + { 1127, 17, 19, 19, 1, -17 }, // 0x51 'Q' + { 1168, 16, 18, 17, 2, -17 }, // 0x52 'R' + { 1204, 15, 18, 16, 1, -17 }, // 0x53 'S' + { 1238, 12, 18, 15, 2, -17 }, // 0x54 'T' + { 1265, 14, 18, 18, 2, -17 }, // 0x55 'U' + { 1297, 15, 18, 16, 0, -17 }, // 0x56 'V' + { 1331, 23, 18, 23, 0, -17 }, // 0x57 'W' + { 1383, 15, 18, 16, 1, -17 }, // 0x58 'X' + { 1417, 16, 18, 15, 0, -17 }, // 0x59 'Y' + { 1453, 13, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1483, 6, 23, 8, 2, -17 }, // 0x5B '[' + { 1501, 7, 17, 7, 0, -16 }, // 0x5C '\' + { 1516, 6, 23, 8, 0, -17 }, // 0x5D ']' + { 1534, 12, 11, 14, 1, -16 }, // 0x5E '^' + { 1551, 15, 2, 13, -1, 4 }, // 0x5F '_' + { 1555, 4, 3, 6, 0, -17 }, // 0x60 '`' + { 1557, 13, 13, 14, 1, -12 }, // 0x61 'a' + { 1579, 13, 18, 15, 2, -17 }, // 0x62 'b' + { 1609, 12, 13, 13, 1, -12 }, // 0x63 'c' + { 1629, 13, 18, 15, 1, -17 }, // 0x64 'd' + { 1659, 13, 13, 14, 1, -12 }, // 0x65 'e' + { 1681, 7, 18, 8, 1, -17 }, // 0x66 'f' + { 1697, 13, 18, 15, 1, -12 }, // 0x67 'g' + { 1727, 12, 18, 14, 2, -17 }, // 0x68 'h' + { 1754, 4, 18, 7, 2, -17 }, // 0x69 'i' + { 1763, 6, 23, 7, 0, -17 }, // 0x6A 'j' + { 1781, 12, 18, 14, 2, -17 }, // 0x6B 'k' + { 1808, 4, 18, 6, 2, -17 }, // 0x6C 'l' + { 1817, 19, 13, 21, 2, -12 }, // 0x6D 'm' + { 1848, 12, 13, 15, 2, -12 }, // 0x6E 'n' + { 1868, 13, 13, 15, 1, -12 }, // 0x6F 'o' + { 1890, 13, 18, 15, 2, -12 }, // 0x70 'p' + { 1920, 13, 18, 15, 1, -12 }, // 0x71 'q' + { 1950, 8, 13, 9, 2, -12 }, // 0x72 'r' + { 1963, 12, 13, 13, 1, -12 }, // 0x73 's' + { 1983, 6, 15, 8, 1, -14 }, // 0x74 't' + { 1995, 12, 13, 15, 2, -12 }, // 0x75 'u' + { 2015, 13, 13, 13, 0, -12 }, // 0x76 'v' + { 2037, 18, 13, 19, 0, -12 }, // 0x77 'w' + { 2067, 13, 13, 13, 0, -12 }, // 0x78 'x' + { 2089, 13, 18, 13, 0, -12 }, // 0x79 'y' + { 2119, 10, 13, 12, 1, -12 }, // 0x7A 'z' + { 2136, 6, 23, 9, 1, -17 }, // 0x7B '{' + { 2154, 2, 22, 7, 2, -17 }, // 0x7C '|' + { 2160, 6, 23, 9, 3, -17 }, // 0x7D '}' + { 2178, 12, 5, 12, 0, -7 } }; // 0x7E '~' + +const GFXfont FreeSansBold12pt7b PROGMEM = { + (uint8_t *)FreeSansBold12pt7bBitmaps, + (GFXglyph *)FreeSansBold12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2858 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h new file mode 100644 index 000000000..d5927cde4 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h @@ -0,0 +1,481 @@ +const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, + 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, + 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, + 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, + 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, + 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, + 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, + 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, + 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, + 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, + 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, + 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, + 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, + 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, + 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, + 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, + 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, + 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, + 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, + 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, + 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, + 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, + 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, + 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, + 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, + 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, + 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, + 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, + 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, + 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, + 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, + 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, + 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, + 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, + 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, + 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, + 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, + 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, + 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, + 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, + 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, + 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, + 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, + 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, + 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, + 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, + 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, + 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, + 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, + 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, + 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, + 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, + 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, + 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, + 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, + 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, + 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, + 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, + 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, + 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, + 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, + 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, + 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, + 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, + 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, + 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, + 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, + 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, + 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, + 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, + 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, + 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, + 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, + 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, + 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, + 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, + 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, + 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, + 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, + 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, + 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, + 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, + 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, + 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, + 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, + 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, + 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, + 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, + 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, + 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, + 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, + 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, + 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, + 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, + 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, + 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, + 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, + 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, + 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, + 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, + 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, + 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, + 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, + 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, + 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, + 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, + 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, + 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, + 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, + 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, + 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, + 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, + 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, + 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, + 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, + 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, + 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, + 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, + 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, + 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, + 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, + 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, + 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, + 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, + 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, + 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, + 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, + 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, + 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, + 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, + 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, + 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, + 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, + 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, + 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, + 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, + 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, + 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, + 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, + 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, + 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, + 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, + 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, + 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, + 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, + 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, + 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, + 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, + 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, + 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, + 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, + 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, + 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, + 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, + 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, + 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, + 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, + 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, + 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, + 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, + 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, + 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, + 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, + 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, + 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, + 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, + 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, + 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, + 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, + 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, + 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, + 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, + 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, + 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, + 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, + 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, + 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, + 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, + 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, + 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, + 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, + 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, + 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, + 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, + 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, + 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, + 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, + 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, + 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, + 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, + 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, + 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, + 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, + 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, + 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, + 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, + 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, + 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, + 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, + 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, + 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, + 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, + 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, + 0xC0, 0x0F, 0x00 }; + +const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 5, 25, 12, 4, -24 }, // 0x21 '!' + { 16, 13, 9, 17, 2, -25 }, // 0x22 '"' + { 31, 20, 24, 19, 0, -23 }, // 0x23 '#' + { 91, 19, 29, 19, 0, -25 }, // 0x24 '$' + { 160, 29, 25, 31, 1, -24 }, // 0x25 '%' + { 251, 22, 25, 25, 2, -24 }, // 0x26 '&' + { 320, 5, 9, 9, 2, -25 }, // 0x27 ''' + { 326, 9, 33, 12, 1, -25 }, // 0x28 '(' + { 364, 9, 33, 12, 1, -25 }, // 0x29 ')' + { 402, 12, 11, 14, 0, -25 }, // 0x2A '*' + { 419, 16, 16, 20, 2, -15 }, // 0x2B '+' + { 451, 5, 11, 9, 2, -4 }, // 0x2C ',' + { 458, 9, 4, 12, 1, -10 }, // 0x2D '-' + { 463, 5, 5, 9, 2, -4 }, // 0x2E '.' + { 467, 9, 25, 10, 0, -24 }, // 0x2F '/' + { 496, 17, 25, 19, 1, -24 }, // 0x30 '0' + { 550, 10, 25, 19, 3, -24 }, // 0x31 '1' + { 582, 17, 25, 19, 1, -24 }, // 0x32 '2' + { 636, 17, 25, 19, 1, -24 }, // 0x33 '3' + { 690, 16, 25, 19, 2, -24 }, // 0x34 '4' + { 740, 17, 25, 19, 1, -24 }, // 0x35 '5' + { 794, 18, 25, 19, 1, -24 }, // 0x36 '6' + { 851, 17, 25, 19, 1, -24 }, // 0x37 '7' + { 905, 17, 25, 19, 1, -24 }, // 0x38 '8' + { 959, 17, 25, 19, 1, -24 }, // 0x39 '9' + { 1013, 5, 18, 9, 2, -17 }, // 0x3A ':' + { 1025, 5, 24, 9, 2, -17 }, // 0x3B ';' + { 1040, 18, 17, 20, 1, -16 }, // 0x3C '<' + { 1079, 17, 12, 20, 2, -13 }, // 0x3D '=' + { 1105, 18, 17, 20, 1, -16 }, // 0x3E '>' + { 1144, 18, 26, 21, 2, -25 }, // 0x3F '?' + { 1203, 32, 31, 34, 1, -25 }, // 0x40 '@' + { 1327, 24, 26, 24, 0, -25 }, // 0x41 'A' + { 1405, 20, 26, 25, 3, -25 }, // 0x42 'B' + { 1470, 23, 26, 25, 1, -25 }, // 0x43 'C' + { 1545, 21, 26, 25, 3, -25 }, // 0x44 'D' + { 1614, 19, 26, 23, 3, -25 }, // 0x45 'E' + { 1676, 17, 26, 22, 3, -25 }, // 0x46 'F' + { 1732, 24, 26, 27, 1, -25 }, // 0x47 'G' + { 1810, 20, 26, 26, 3, -25 }, // 0x48 'H' + { 1875, 5, 26, 11, 3, -25 }, // 0x49 'I' + { 1892, 16, 26, 20, 1, -25 }, // 0x4A 'J' + { 1944, 22, 26, 25, 3, -25 }, // 0x4B 'K' + { 2016, 17, 26, 22, 3, -25 }, // 0x4C 'L' + { 2072, 24, 26, 30, 3, -25 }, // 0x4D 'M' + { 2150, 20, 26, 26, 3, -25 }, // 0x4E 'N' + { 2215, 25, 26, 27, 1, -25 }, // 0x4F 'O' + { 2297, 19, 26, 24, 3, -25 }, // 0x50 'P' + { 2359, 25, 27, 27, 1, -25 }, // 0x51 'Q' + { 2444, 21, 26, 25, 3, -25 }, // 0x52 'R' + { 2513, 20, 26, 24, 2, -25 }, // 0x53 'S' + { 2578, 19, 26, 23, 2, -25 }, // 0x54 'T' + { 2640, 20, 26, 26, 3, -25 }, // 0x55 'U' + { 2705, 22, 26, 23, 1, -25 }, // 0x56 'V' + { 2777, 32, 26, 34, 1, -25 }, // 0x57 'W' + { 2881, 22, 26, 24, 1, -25 }, // 0x58 'X' + { 2953, 21, 26, 22, 1, -25 }, // 0x59 'Y' + { 3022, 19, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3084, 8, 33, 12, 2, -25 }, // 0x5B '[' + { 3117, 10, 25, 10, 0, -24 }, // 0x5C '\' + { 3149, 8, 33, 12, 1, -25 }, // 0x5D ']' + { 3182, 16, 15, 20, 2, -23 }, // 0x5E '^' + { 3212, 21, 3, 19, -1, 5 }, // 0x5F '_' + { 3220, 7, 5, 9, 1, -25 }, // 0x60 '`' + { 3225, 18, 19, 20, 1, -18 }, // 0x61 'a' + { 3268, 18, 26, 22, 2, -25 }, // 0x62 'b' + { 3327, 17, 19, 20, 1, -18 }, // 0x63 'c' + { 3368, 19, 26, 22, 1, -25 }, // 0x64 'd' + { 3430, 18, 19, 20, 1, -18 }, // 0x65 'e' + { 3473, 10, 26, 12, 1, -25 }, // 0x66 'f' + { 3506, 18, 26, 21, 1, -18 }, // 0x67 'g' + { 3565, 17, 26, 21, 2, -25 }, // 0x68 'h' + { 3621, 5, 26, 10, 2, -25 }, // 0x69 'i' + { 3638, 7, 33, 10, 0, -25 }, // 0x6A 'j' + { 3667, 17, 26, 20, 2, -25 }, // 0x6B 'k' + { 3723, 5, 26, 9, 2, -25 }, // 0x6C 'l' + { 3740, 27, 19, 31, 2, -18 }, // 0x6D 'm' + { 3805, 17, 19, 21, 2, -18 }, // 0x6E 'n' + { 3846, 19, 19, 21, 1, -18 }, // 0x6F 'o' + { 3892, 18, 26, 22, 2, -18 }, // 0x70 'p' + { 3951, 19, 26, 22, 1, -18 }, // 0x71 'q' + { 4013, 11, 19, 14, 2, -18 }, // 0x72 'r' + { 4040, 17, 19, 19, 1, -18 }, // 0x73 's' + { 4081, 9, 23, 12, 1, -22 }, // 0x74 't' + { 4107, 17, 19, 21, 2, -18 }, // 0x75 'u' + { 4148, 19, 19, 19, 0, -18 }, // 0x76 'v' + { 4194, 27, 19, 27, 0, -18 }, // 0x77 'w' + { 4259, 18, 19, 19, 1, -18 }, // 0x78 'x' + { 4302, 19, 26, 19, 0, -18 }, // 0x79 'y' + { 4364, 16, 19, 18, 1, -18 }, // 0x7A 'z' + { 4402, 9, 33, 14, 1, -25 }, // 0x7B '{' + { 4440, 3, 33, 10, 4, -25 }, // 0x7C '|' + { 4453, 9, 33, 14, 3, -25 }, // 0x7D '}' + { 4491, 15, 6, 18, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSansBold18pt7b PROGMEM = { + (uint8_t *)FreeSansBold18pt7bBitmaps, + (GFXglyph *)FreeSansBold18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5175 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h new file mode 100644 index 000000000..aadc9a1dc --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h @@ -0,0 +1,784 @@ +const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, + 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, + 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, + 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, + 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, + 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, + 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, + 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, + 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, + 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, + 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, + 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, + 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, + 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, + 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, + 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, + 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, + 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, + 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, + 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, + 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, + 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, + 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, + 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, + 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, + 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, + 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, + 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, + 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, + 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, + 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, + 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, + 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, + 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, + 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, + 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, + 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, + 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, + 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, + 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, + 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, + 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, + 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, + 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, + 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, + 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, + 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, + 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, + 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, + 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, + 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, + 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, + 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, + 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, + 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, + 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, + 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, + 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, + 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, + 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, + 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, + 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, + 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, + 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, + 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, + 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, + 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, + 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, + 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, + 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, + 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, + 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, + 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, + 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, + 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, + 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, + 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, + 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, + 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, + 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, + 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, + 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, + 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, + 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, + 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, + 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, + 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, + 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, + 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, + 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, + 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, + 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, + 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, + 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, + 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, + 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, + 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, + 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, + 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, + 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, + 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, + 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, + 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, + 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, + 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, + 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, + 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, + 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, + 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, + 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, + 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, + 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, + 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, + 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, + 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, + 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, + 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, + 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, + 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, + 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, + 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, + 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, + 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, + 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, + 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, + 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, + 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, + 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, + 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, + 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, + 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, + 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, + 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, + 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, + 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, + 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, + 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, + 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, + 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, + 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, + 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, + 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, + 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, + 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, + 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, + 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, + 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, + 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, + 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, + 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, + 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, + 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, + 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, + 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, + 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, + 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, + 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, + 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, + 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, + 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, + 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, + 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, + 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, + 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, + 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, + 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, + 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, + 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, + 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, + 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, + 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, + 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, + 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, + 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, + 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, + 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, + 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, + 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, + 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, + 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, + 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, + 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, + 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, + 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, + 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, + 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, + 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, + 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, + 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, + 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, + 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, + 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, + 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, + 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, + 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, + 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, + 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, + 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, + 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, + 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, + 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, + 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, + 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, + 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, + 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, + 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, + 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, + 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, + 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, + 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, + 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, + 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, + 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, + 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, + 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, + 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, + 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, + 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, + 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, + 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, + 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, + 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, + 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, + 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, + 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, + 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, + 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, + 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, + 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, + 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, + 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, + 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, + 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, + 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, + 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, + 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, + 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, + 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, + 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, + 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, + 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, + 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, + 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, + 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, + 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, + 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, + 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, + 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, + 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, + 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, + 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, + 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, + 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, + 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, + 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, + 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, + 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, + 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, + 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, + 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, + 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, + 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, + 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, + 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, + 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, + 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, + 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, + 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, + 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, + 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, + 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, + 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, + 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, + 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, + 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, + 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, + 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, + 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, + 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8 }; + +const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 7, 34, 16, 5, -33 }, // 0x21 '!' + { 30, 18, 12, 22, 2, -33 }, // 0x22 '"' + { 57, 26, 33, 26, 0, -31 }, // 0x23 '#' + { 165, 25, 40, 26, 1, -34 }, // 0x24 '$' + { 290, 39, 34, 42, 1, -32 }, // 0x25 '%' + { 456, 30, 35, 34, 3, -33 }, // 0x26 '&' + { 588, 7, 12, 12, 3, -33 }, // 0x27 ''' + { 599, 13, 44, 16, 2, -33 }, // 0x28 '(' + { 671, 13, 44, 16, 1, -33 }, // 0x29 ')' + { 743, 15, 15, 18, 1, -33 }, // 0x2A '*' + { 772, 23, 22, 27, 2, -21 }, // 0x2B '+' + { 836, 7, 15, 12, 2, -6 }, // 0x2C ',' + { 850, 13, 6, 16, 1, -15 }, // 0x2D '-' + { 860, 7, 7, 12, 2, -6 }, // 0x2E '.' + { 867, 13, 34, 13, 0, -32 }, // 0x2F '/' + { 923, 24, 35, 26, 1, -33 }, // 0x30 '0' + { 1028, 14, 33, 26, 4, -32 }, // 0x31 '1' + { 1086, 23, 34, 26, 2, -33 }, // 0x32 '2' + { 1184, 23, 35, 26, 2, -33 }, // 0x33 '3' + { 1285, 22, 33, 26, 2, -32 }, // 0x34 '4' + { 1376, 23, 34, 26, 2, -32 }, // 0x35 '5' + { 1474, 23, 35, 26, 2, -33 }, // 0x36 '6' + { 1575, 23, 33, 26, 1, -32 }, // 0x37 '7' + { 1670, 24, 35, 26, 1, -33 }, // 0x38 '8' + { 1775, 24, 35, 26, 1, -33 }, // 0x39 '9' + { 1880, 7, 25, 12, 2, -24 }, // 0x3A ':' + { 1902, 7, 33, 12, 2, -24 }, // 0x3B ';' + { 1931, 23, 23, 27, 2, -22 }, // 0x3C '<' + { 1998, 23, 18, 27, 2, -19 }, // 0x3D '=' + { 2050, 23, 23, 27, 2, -22 }, // 0x3E '>' + { 2117, 24, 35, 29, 3, -34 }, // 0x3F '?' + { 2222, 43, 41, 46, 1, -34 }, // 0x40 '@' + { 2443, 32, 34, 33, 0, -33 }, // 0x41 'A' + { 2579, 27, 34, 33, 4, -33 }, // 0x42 'B' + { 2694, 30, 36, 34, 2, -34 }, // 0x43 'C' + { 2829, 28, 34, 34, 4, -33 }, // 0x44 'D' + { 2948, 25, 34, 31, 4, -33 }, // 0x45 'E' + { 3055, 24, 34, 30, 4, -33 }, // 0x46 'F' + { 3157, 31, 36, 36, 2, -34 }, // 0x47 'G' + { 3297, 27, 34, 35, 4, -33 }, // 0x48 'H' + { 3412, 7, 34, 15, 4, -33 }, // 0x49 'I' + { 3442, 22, 35, 27, 1, -33 }, // 0x4A 'J' + { 3539, 30, 34, 34, 4, -33 }, // 0x4B 'K' + { 3667, 23, 34, 29, 4, -33 }, // 0x4C 'L' + { 3765, 33, 34, 41, 4, -33 }, // 0x4D 'M' + { 3906, 28, 34, 35, 4, -33 }, // 0x4E 'N' + { 4025, 33, 36, 37, 2, -34 }, // 0x4F 'O' + { 4174, 26, 34, 32, 4, -33 }, // 0x50 'P' + { 4285, 33, 37, 37, 2, -34 }, // 0x51 'Q' + { 4438, 28, 34, 34, 4, -33 }, // 0x52 'R' + { 4557, 28, 36, 32, 2, -34 }, // 0x53 'S' + { 4683, 27, 34, 30, 2, -33 }, // 0x54 'T' + { 4798, 27, 35, 35, 4, -33 }, // 0x55 'U' + { 4917, 29, 34, 31, 1, -33 }, // 0x56 'V' + { 5041, 43, 34, 45, 1, -33 }, // 0x57 'W' + { 5224, 30, 34, 32, 1, -33 }, // 0x58 'X' + { 5352, 29, 34, 30, 1, -33 }, // 0x59 'Y' + { 5476, 26, 34, 29, 1, -33 }, // 0x5A 'Z' + { 5587, 11, 43, 16, 3, -33 }, // 0x5B '[' + { 5647, 14, 34, 13, -1, -32 }, // 0x5C '\' + { 5707, 11, 43, 16, 1, -33 }, // 0x5D ']' + { 5767, 22, 20, 27, 3, -32 }, // 0x5E '^' + { 5822, 28, 4, 26, -1, 6 }, // 0x5F '_' + { 5836, 9, 7, 12, 1, -35 }, // 0x60 '`' + { 5844, 24, 26, 27, 2, -24 }, // 0x61 'a' + { 5922, 25, 35, 29, 3, -33 }, // 0x62 'b' + { 6032, 23, 26, 26, 2, -24 }, // 0x63 'c' + { 6107, 25, 35, 29, 2, -33 }, // 0x64 'd' + { 6217, 24, 26, 27, 2, -24 }, // 0x65 'e' + { 6295, 14, 34, 16, 1, -33 }, // 0x66 'f' + { 6355, 24, 36, 29, 2, -24 }, // 0x67 'g' + { 6463, 23, 34, 28, 3, -33 }, // 0x68 'h' + { 6561, 7, 34, 13, 3, -33 }, // 0x69 'i' + { 6591, 10, 45, 13, 0, -33 }, // 0x6A 'j' + { 6648, 23, 34, 27, 3, -33 }, // 0x6B 'k' + { 6746, 7, 34, 13, 3, -33 }, // 0x6C 'l' + { 6776, 36, 25, 42, 3, -24 }, // 0x6D 'm' + { 6889, 23, 25, 29, 3, -24 }, // 0x6E 'n' + { 6961, 25, 26, 29, 2, -24 }, // 0x6F 'o' + { 7043, 25, 36, 29, 3, -24 }, // 0x70 'p' + { 7156, 25, 36, 29, 2, -24 }, // 0x71 'q' + { 7269, 15, 25, 18, 3, -24 }, // 0x72 'r' + { 7316, 24, 26, 26, 1, -24 }, // 0x73 's' + { 7394, 12, 32, 16, 2, -30 }, // 0x74 't' + { 7442, 23, 26, 29, 3, -24 }, // 0x75 'u' + { 7517, 25, 25, 25, 0, -24 }, // 0x76 'v' + { 7596, 35, 25, 37, 1, -24 }, // 0x77 'w' + { 7706, 24, 25, 26, 1, -24 }, // 0x78 'x' + { 7781, 25, 36, 26, 0, -24 }, // 0x79 'y' + { 7894, 21, 25, 24, 1, -24 }, // 0x7A 'z' + { 7960, 13, 43, 18, 2, -33 }, // 0x7B '{' + { 8030, 4, 44, 13, 5, -33 }, // 0x7C '|' + { 8052, 13, 43, 18, 3, -33 }, // 0x7D '}' + { 8122, 21, 8, 23, 1, -14 } }; // 0x7E '~' + +const GFXfont FreeSansBold24pt7b PROGMEM = { + (uint8_t *)FreeSansBold24pt7bBitmaps, + (GFXglyph *)FreeSansBold24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8815 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h new file mode 100644 index 000000000..aeea463e7 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h @@ -0,0 +1,208 @@ +const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, + 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, + 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, + 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, + 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, + 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, + 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, + 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, + 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, + 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, + 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, + 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, + 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, + 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, + 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, + 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, + 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, + 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, + 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, + 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, + 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, + 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, + 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, + 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, + 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, + 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, + 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, + 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, + 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, + 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, + 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, + 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, + 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, + 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, + 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, + 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, + 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, + 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, + 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, + 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, + 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, + 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, + 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, + 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, + 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, + 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, + 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, + 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, + 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, + 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, + 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, + 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, + 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, + 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, + 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, + 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, + 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, + 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, + 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, + 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, + 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, + 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, + 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, + 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, + 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, + 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, + 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, + 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, + 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, + 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, + 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, + 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, + 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, + 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, + 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, + 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, + 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, + 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, + 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, + 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, + 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, + 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, + 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, + 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, + 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, + 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E }; + +const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 3, 13, 6, 2, -12 }, // 0x21 '!' + { 5, 7, 5, 9, 1, -12 }, // 0x22 '"' + { 10, 10, 12, 10, 0, -11 }, // 0x23 '#' + { 25, 9, 15, 10, 1, -13 }, // 0x24 '$' + { 42, 16, 13, 16, 0, -12 }, // 0x25 '%' + { 68, 12, 13, 13, 1, -12 }, // 0x26 '&' + { 88, 3, 5, 5, 1, -12 }, // 0x27 ''' + { 90, 6, 17, 6, 1, -12 }, // 0x28 '(' + { 103, 6, 17, 6, 0, -12 }, // 0x29 ')' + { 116, 5, 6, 7, 1, -12 }, // 0x2A '*' + { 120, 7, 8, 11, 2, -7 }, // 0x2B '+' + { 127, 3, 5, 4, 1, -1 }, // 0x2C ',' + { 129, 5, 2, 6, 0, -5 }, // 0x2D '-' + { 131, 3, 2, 4, 1, -1 }, // 0x2E '.' + { 132, 5, 13, 5, 0, -12 }, // 0x2F '/' + { 141, 9, 13, 10, 1, -12 }, // 0x30 '0' + { 156, 5, 13, 10, 2, -12 }, // 0x31 '1' + { 165, 9, 13, 10, 1, -12 }, // 0x32 '2' + { 180, 8, 13, 10, 1, -12 }, // 0x33 '3' + { 193, 8, 13, 10, 2, -12 }, // 0x34 '4' + { 206, 9, 13, 10, 1, -12 }, // 0x35 '5' + { 221, 9, 13, 10, 1, -12 }, // 0x36 '6' + { 236, 9, 13, 10, 0, -12 }, // 0x37 '7' + { 251, 10, 13, 10, 0, -12 }, // 0x38 '8' + { 268, 9, 13, 10, 1, -12 }, // 0x39 '9' + { 283, 3, 9, 4, 1, -8 }, // 0x3A ':' + { 287, 3, 12, 4, 1, -8 }, // 0x3B ';' + { 292, 9, 9, 11, 1, -8 }, // 0x3C '<' + { 303, 9, 6, 11, 1, -6 }, // 0x3D '=' + { 310, 9, 9, 11, 1, -8 }, // 0x3E '>' + { 321, 9, 13, 11, 1, -12 }, // 0x3F '?' + { 336, 16, 15, 18, 0, -12 }, // 0x40 '@' + { 366, 12, 13, 13, 0, -12 }, // 0x41 'A' + { 386, 11, 13, 13, 1, -12 }, // 0x42 'B' + { 404, 12, 13, 13, 1, -12 }, // 0x43 'C' + { 424, 12, 13, 13, 1, -12 }, // 0x44 'D' + { 444, 9, 13, 12, 1, -12 }, // 0x45 'E' + { 459, 9, 13, 11, 1, -12 }, // 0x46 'F' + { 474, 11, 13, 14, 1, -12 }, // 0x47 'G' + { 492, 11, 13, 13, 1, -12 }, // 0x48 'H' + { 510, 3, 13, 6, 1, -12 }, // 0x49 'I' + { 515, 8, 13, 10, 1, -12 }, // 0x4A 'J' + { 528, 12, 13, 13, 1, -12 }, // 0x4B 'K' + { 548, 8, 13, 11, 1, -12 }, // 0x4C 'L' + { 561, 14, 13, 16, 1, -12 }, // 0x4D 'M' + { 584, 11, 13, 14, 1, -12 }, // 0x4E 'N' + { 602, 13, 13, 14, 1, -12 }, // 0x4F 'O' + { 624, 11, 13, 12, 1, -12 }, // 0x50 'P' + { 642, 13, 14, 14, 1, -12 }, // 0x51 'Q' + { 665, 12, 13, 13, 1, -12 }, // 0x52 'R' + { 685, 11, 13, 12, 1, -12 }, // 0x53 'S' + { 703, 9, 13, 12, 2, -12 }, // 0x54 'T' + { 718, 11, 13, 13, 1, -12 }, // 0x55 'U' + { 736, 12, 13, 12, 0, -12 }, // 0x56 'V' + { 756, 17, 13, 17, 0, -12 }, // 0x57 'W' + { 784, 12, 13, 12, 0, -12 }, // 0x58 'X' + { 804, 11, 13, 12, 1, -12 }, // 0x59 'Y' + { 822, 9, 13, 11, 1, -12 }, // 0x5A 'Z' + { 837, 4, 17, 6, 1, -12 }, // 0x5B '[' + { 846, 5, 13, 5, 0, -12 }, // 0x5C '\' + { 855, 4, 17, 6, 0, -12 }, // 0x5D ']' + { 864, 8, 8, 11, 1, -12 }, // 0x5E '^' + { 872, 10, 1, 10, 0, 4 }, // 0x5F '_' + { 874, 3, 2, 5, 0, -12 }, // 0x60 '`' + { 875, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 888, 10, 13, 11, 1, -12 }, // 0x62 'b' + { 905, 9, 10, 10, 1, -9 }, // 0x63 'c' + { 917, 9, 13, 11, 1, -12 }, // 0x64 'd' + { 932, 9, 10, 10, 1, -9 }, // 0x65 'e' + { 944, 5, 13, 6, 1, -12 }, // 0x66 'f' + { 953, 9, 14, 11, 1, -9 }, // 0x67 'g' + { 969, 9, 13, 11, 1, -12 }, // 0x68 'h' + { 984, 3, 13, 5, 1, -12 }, // 0x69 'i' + { 989, 4, 17, 5, 0, -12 }, // 0x6A 'j' + { 998, 9, 13, 10, 1, -12 }, // 0x6B 'k' + { 1013, 3, 13, 5, 1, -12 }, // 0x6C 'l' + { 1018, 14, 10, 16, 1, -9 }, // 0x6D 'm' + { 1036, 9, 10, 11, 1, -9 }, // 0x6E 'n' + { 1048, 10, 10, 11, 1, -9 }, // 0x6F 'o' + { 1061, 10, 14, 11, 1, -9 }, // 0x70 'p' + { 1079, 9, 14, 11, 1, -9 }, // 0x71 'q' + { 1095, 6, 10, 7, 1, -9 }, // 0x72 'r' + { 1103, 9, 10, 10, 1, -9 }, // 0x73 's' + { 1115, 5, 12, 6, 1, -11 }, // 0x74 't' + { 1123, 9, 10, 11, 1, -9 }, // 0x75 'u' + { 1135, 10, 10, 10, 0, -9 }, // 0x76 'v' + { 1148, 14, 10, 14, 0, -9 }, // 0x77 'w' + { 1166, 10, 10, 10, 0, -9 }, // 0x78 'x' + { 1179, 10, 14, 10, 0, -9 }, // 0x79 'y' + { 1197, 8, 10, 9, 1, -9 }, // 0x7A 'z' + { 1207, 4, 17, 7, 1, -12 }, // 0x7B '{' + { 1216, 1, 17, 5, 2, -12 }, // 0x7C '|' + { 1219, 4, 17, 7, 2, -12 }, // 0x7D '}' + { 1228, 8, 2, 9, 0, -4 } }; // 0x7E '~' + +const GFXfont FreeSansBold9pt7b PROGMEM = { + (uint8_t *)FreeSansBold9pt7bBitmaps, + (GFXglyph *)FreeSansBold9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1902 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h new file mode 100644 index 000000000..fabbad3f4 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h @@ -0,0 +1,317 @@ +const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, + 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, + 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, + 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, + 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, + 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, + 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, + 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, + 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, + 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, + 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, + 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, + 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, + 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, + 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, + 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, + 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, + 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, + 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, + 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, + 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, + 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, + 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, + 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, + 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, + 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, + 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, + 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, + 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, + 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, + 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, + 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, + 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, + 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, + 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, + 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, + 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, + 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, + 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, + 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, + 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, + 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, + 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, + 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, + 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, + 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, + 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, + 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, + 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, + 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, + 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, + 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, + 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, + 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, + 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, + 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, + 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, + 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, + 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, + 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, + 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, + 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, + 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, + 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, + 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, + 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, + 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, + 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, + 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, + 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, + 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, + 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, + 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, + 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, + 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, + 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, + 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, + 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, + 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, + 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, + 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, + 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, + 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, + 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, + 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, + 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, + 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, + 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, + 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, + 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, + 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, + 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, + 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, + 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, + 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, + 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, + 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, + 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, + 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, + 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, + 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, + 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, + 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, + 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, + 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, + 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, + 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, + 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, + 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, + 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, + 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, + 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, + 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, + 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, + 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, + 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, + 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, + 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, + 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, + 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, + 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, + 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, + 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, + 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, + 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, + 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, + 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, + 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, + 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, + 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, + 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, + 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, + 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, + 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, + 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, + 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, + 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, + 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, + 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, + 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, + 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, + 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, + 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, + 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, + 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, + 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, + 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, + 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, + 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, + 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, + 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, + 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, + 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, + 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, + 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, + 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, + 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, + 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, + 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, + 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, + 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, + 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, + 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, + 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, + 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, + 0x7E, 0x01, 0xC0 }; + +const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 7, 17, 8, 3, -16 }, // 0x21 '!' + { 15, 10, 6, 11, 4, -17 }, // 0x22 '"' + { 23, 15, 16, 13, 1, -15 }, // 0x23 '#' + { 53, 15, 21, 13, 1, -17 }, // 0x24 '$' + { 93, 18, 18, 21, 3, -17 }, // 0x25 '%' + { 134, 15, 17, 17, 2, -16 }, // 0x26 '&' + { 166, 4, 6, 6, 4, -17 }, // 0x27 ''' + { 169, 9, 22, 8, 2, -17 }, // 0x28 '(' + { 194, 9, 22, 8, -1, -16 }, // 0x29 ')' + { 219, 8, 8, 9, 3, -17 }, // 0x2A '*' + { 227, 12, 11, 14, 2, -10 }, // 0x2B '+' + { 244, 5, 7, 7, 1, -2 }, // 0x2C ',' + { 249, 7, 3, 8, 2, -7 }, // 0x2D '-' + { 252, 4, 3, 7, 2, -2 }, // 0x2E '.' + { 254, 10, 17, 7, 0, -16 }, // 0x2F '/' + { 276, 13, 17, 13, 2, -16 }, // 0x30 '0' + { 304, 9, 17, 13, 4, -16 }, // 0x31 '1' + { 324, 15, 17, 13, 1, -16 }, // 0x32 '2' + { 356, 13, 17, 13, 2, -16 }, // 0x33 '3' + { 384, 13, 17, 13, 1, -16 }, // 0x34 '4' + { 412, 14, 17, 13, 1, -16 }, // 0x35 '5' + { 442, 13, 17, 13, 2, -16 }, // 0x36 '6' + { 470, 13, 17, 13, 3, -16 }, // 0x37 '7' + { 498, 14, 17, 13, 1, -16 }, // 0x38 '8' + { 528, 14, 17, 13, 2, -16 }, // 0x39 '9' + { 558, 6, 12, 8, 3, -11 }, // 0x3A ':' + { 567, 7, 16, 8, 2, -11 }, // 0x3B ';' + { 581, 13, 12, 14, 2, -11 }, // 0x3C '<' + { 601, 14, 9, 14, 1, -9 }, // 0x3D '=' + { 617, 13, 12, 14, 1, -10 }, // 0x3E '>' + { 637, 13, 18, 15, 4, -17 }, // 0x3F '?' + { 667, 22, 21, 23, 2, -17 }, // 0x40 '@' + { 725, 17, 18, 17, 0, -17 }, // 0x41 'A' + { 764, 17, 18, 17, 2, -17 }, // 0x42 'B' + { 803, 17, 18, 17, 3, -17 }, // 0x43 'C' + { 842, 17, 18, 17, 2, -17 }, // 0x44 'D' + { 881, 16, 18, 16, 2, -17 }, // 0x45 'E' + { 917, 16, 18, 15, 2, -17 }, // 0x46 'F' + { 953, 17, 18, 19, 3, -17 }, // 0x47 'G' + { 992, 17, 18, 17, 2, -17 }, // 0x48 'H' + { 1031, 7, 18, 7, 2, -17 }, // 0x49 'I' + { 1047, 14, 18, 13, 1, -17 }, // 0x4A 'J' + { 1079, 18, 18, 17, 2, -17 }, // 0x4B 'K' + { 1120, 13, 18, 15, 2, -17 }, // 0x4C 'L' + { 1150, 20, 18, 20, 2, -17 }, // 0x4D 'M' + { 1195, 18, 18, 17, 2, -17 }, // 0x4E 'N' + { 1236, 17, 18, 19, 3, -17 }, // 0x4F 'O' + { 1275, 16, 18, 16, 2, -17 }, // 0x50 'P' + { 1311, 17, 19, 19, 3, -17 }, // 0x51 'Q' + { 1352, 17, 18, 17, 2, -17 }, // 0x52 'R' + { 1391, 16, 18, 16, 2, -17 }, // 0x53 'S' + { 1427, 15, 18, 15, 3, -17 }, // 0x54 'T' + { 1461, 16, 18, 17, 3, -17 }, // 0x55 'U' + { 1497, 15, 18, 16, 4, -17 }, // 0x56 'V' + { 1531, 21, 18, 23, 4, -17 }, // 0x57 'W' + { 1579, 18, 18, 16, 1, -17 }, // 0x58 'X' + { 1620, 15, 18, 16, 4, -17 }, // 0x59 'Y' + { 1654, 17, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1693, 10, 23, 8, 1, -17 }, // 0x5B '[' + { 1722, 4, 23, 7, 3, -22 }, // 0x5C '\' + { 1734, 10, 23, 8, 0, -17 }, // 0x5D ']' + { 1763, 11, 11, 14, 3, -16 }, // 0x5E '^' + { 1779, 15, 2, 13, -2, 4 }, // 0x5F '_' + { 1783, 4, 3, 8, 4, -17 }, // 0x60 '`' + { 1785, 13, 13, 13, 1, -12 }, // 0x61 'a' + { 1807, 15, 18, 15, 1, -17 }, // 0x62 'b' + { 1841, 13, 13, 13, 2, -12 }, // 0x63 'c' + { 1863, 15, 18, 15, 2, -17 }, // 0x64 'd' + { 1897, 13, 13, 13, 2, -12 }, // 0x65 'e' + { 1919, 9, 18, 8, 2, -17 }, // 0x66 'f' + { 1940, 15, 18, 15, 1, -12 }, // 0x67 'g' + { 1974, 14, 18, 15, 2, -17 }, // 0x68 'h' + { 2006, 7, 18, 7, 2, -17 }, // 0x69 'i' + { 2022, 10, 23, 7, -1, -17 }, // 0x6A 'j' + { 2051, 15, 18, 13, 1, -17 }, // 0x6B 'k' + { 2085, 7, 18, 7, 2, -17 }, // 0x6C 'l' + { 2101, 21, 13, 21, 1, -12 }, // 0x6D 'm' + { 2136, 14, 13, 15, 2, -12 }, // 0x6E 'n' + { 2159, 14, 13, 15, 2, -12 }, // 0x6F 'o' + { 2182, 16, 18, 15, 0, -12 }, // 0x70 'p' + { 2218, 14, 18, 15, 2, -12 }, // 0x71 'q' + { 2250, 10, 13, 9, 2, -12 }, // 0x72 'r' + { 2267, 12, 13, 13, 3, -12 }, // 0x73 's' + { 2287, 8, 15, 8, 2, -14 }, // 0x74 't' + { 2302, 14, 13, 15, 2, -12 }, // 0x75 'u' + { 2325, 13, 13, 13, 3, -12 }, // 0x76 'v' + { 2347, 17, 13, 19, 3, -12 }, // 0x77 'w' + { 2375, 16, 13, 13, 0, -12 }, // 0x78 'x' + { 2401, 15, 18, 13, 1, -12 }, // 0x79 'y' + { 2435, 13, 13, 12, 1, -12 }, // 0x7A 'z' + { 2457, 9, 23, 9, 3, -17 }, // 0x7B '{' + { 2483, 6, 23, 7, 1, -17 }, // 0x7C '|' + { 2501, 9, 23, 9, 0, -17 }, // 0x7D '}' + { 2527, 12, 5, 14, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 3207 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h new file mode 100644 index 000000000..79c748c78 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h @@ -0,0 +1,545 @@ +const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, + 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, + 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, + 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, + 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, + 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, + 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, + 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, + 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, + 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, + 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, + 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, + 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, + 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, + 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, + 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, + 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, + 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, + 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, + 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, + 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, + 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, + 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, + 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, + 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, + 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, + 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, + 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, + 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, + 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, + 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, + 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, + 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, + 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, + 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, + 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, + 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, + 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, + 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, + 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, + 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, + 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, + 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, + 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, + 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, + 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, + 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, + 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, + 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, + 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, + 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, + 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, + 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, + 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, + 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, + 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, + 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, + 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, + 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, + 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, + 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, + 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, + 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, + 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, + 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, + 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, + 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, + 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, + 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, + 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, + 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, + 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, + 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, + 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, + 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, + 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, + 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, + 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, + 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, + 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, + 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, + 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, + 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, + 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, + 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, + 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, + 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, + 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, + 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, + 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, + 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, + 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, + 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, + 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, + 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, + 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, + 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, + 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, + 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, + 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, + 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, + 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, + 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, + 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, + 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, + 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, + 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, + 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, + 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, + 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, + 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, + 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, + 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, + 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, + 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, + 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, + 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, + 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, + 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, + 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, + 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, + 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, + 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, + 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, + 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, + 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, + 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, + 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, + 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, + 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, + 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, + 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, + 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, + 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, + 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, + 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, + 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, + 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, + 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, + 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, + 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, + 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, + 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, + 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, + 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, + 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, + 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, + 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, + 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, + 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, + 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, + 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, + 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, + 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, + 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, + 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, + 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, + 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, + 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, + 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, + 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, + 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, + 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, + 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, + 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, + 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, + 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, + 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, + 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, + 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, + 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, + 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, + 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, + 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, + 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, + 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, + 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, + 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, + 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, + 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, + 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, + 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, + 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, + 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, + 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, + 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, + 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, + 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, + 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, + 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, + 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, + 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, + 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, + 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, + 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, + 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, + 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, + 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, + 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, + 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, + 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, + 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, + 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, + 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, + 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, + 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, + 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, + 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, + 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, + 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, + 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, + 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, + 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, + 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, + 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, + 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, + 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, + 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, + 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, + 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, + 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, + 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, + 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, + 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, + 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, + 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, + 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, + 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, + 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, + 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, + 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, + 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, + 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, + 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, + 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, + 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, + 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, + 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, + 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, + 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, + 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, + 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, + 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, + 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, + 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, + 0xF0, 0x01, 0xE0 }; + +const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 10, 25, 12, 4, -24 }, // 0x21 '!' + { 32, 13, 9, 17, 6, -25 }, // 0x22 '"' + { 47, 22, 24, 19, 1, -23 }, // 0x23 '#' + { 113, 19, 31, 19, 2, -26 }, // 0x24 '$' + { 187, 26, 26, 31, 5, -25 }, // 0x25 '%' + { 272, 21, 25, 25, 3, -24 }, // 0x26 '&' + { 338, 5, 9, 8, 6, -25 }, // 0x27 ''' + { 344, 13, 33, 12, 3, -25 }, // 0x28 '(' + { 398, 13, 33, 12, -1, -25 }, // 0x29 ')' + { 452, 12, 11, 14, 5, -25 }, // 0x2A '*' + { 469, 18, 16, 20, 3, -15 }, // 0x2B '+' + { 505, 7, 11, 10, 1, -4 }, // 0x2C ',' + { 515, 10, 4, 12, 2, -10 }, // 0x2D '-' + { 520, 6, 5, 10, 2, -4 }, // 0x2E '.' + { 524, 15, 25, 10, 0, -24 }, // 0x2F '/' + { 571, 18, 25, 19, 3, -24 }, // 0x30 '0' + { 628, 13, 25, 19, 6, -24 }, // 0x31 '1' + { 669, 21, 25, 19, 1, -24 }, // 0x32 '2' + { 735, 20, 25, 19, 2, -24 }, // 0x33 '3' + { 798, 19, 25, 19, 2, -24 }, // 0x34 '4' + { 858, 20, 24, 19, 2, -23 }, // 0x35 '5' + { 918, 19, 25, 19, 3, -24 }, // 0x36 '6' + { 978, 19, 24, 19, 5, -23 }, // 0x37 '7' + { 1035, 20, 25, 19, 2, -24 }, // 0x38 '8' + { 1098, 19, 25, 19, 2, -24 }, // 0x39 '9' + { 1158, 9, 18, 12, 4, -17 }, // 0x3A ':' + { 1179, 10, 24, 12, 3, -17 }, // 0x3B ';' + { 1209, 19, 17, 20, 3, -16 }, // 0x3C '<' + { 1250, 20, 12, 20, 2, -13 }, // 0x3D '=' + { 1280, 19, 17, 20, 1, -15 }, // 0x3E '>' + { 1321, 18, 26, 21, 6, -25 }, // 0x3F '?' + { 1380, 33, 31, 34, 3, -25 }, // 0x40 '@' + { 1508, 23, 26, 25, 1, -25 }, // 0x41 'A' + { 1583, 24, 26, 25, 3, -25 }, // 0x42 'B' + { 1661, 24, 26, 25, 4, -25 }, // 0x43 'C' + { 1739, 24, 26, 25, 3, -25 }, // 0x44 'D' + { 1817, 24, 26, 23, 3, -25 }, // 0x45 'E' + { 1895, 23, 26, 21, 3, -25 }, // 0x46 'F' + { 1970, 24, 26, 27, 4, -25 }, // 0x47 'G' + { 2048, 26, 26, 25, 2, -25 }, // 0x48 'H' + { 2133, 10, 26, 10, 2, -25 }, // 0x49 'I' + { 2166, 20, 26, 19, 2, -25 }, // 0x4A 'J' + { 2231, 26, 26, 25, 3, -25 }, // 0x4B 'K' + { 2316, 18, 26, 21, 3, -25 }, // 0x4C 'L' + { 2375, 31, 26, 29, 2, -25 }, // 0x4D 'M' + { 2476, 27, 26, 25, 2, -25 }, // 0x4E 'N' + { 2564, 25, 26, 27, 4, -25 }, // 0x4F 'O' + { 2646, 23, 26, 23, 3, -25 }, // 0x50 'P' + { 2721, 25, 27, 27, 4, -25 }, // 0x51 'Q' + { 2806, 24, 26, 25, 3, -25 }, // 0x52 'R' + { 2884, 22, 26, 23, 3, -25 }, // 0x53 'S' + { 2956, 21, 26, 21, 5, -25 }, // 0x54 'T' + { 3025, 24, 26, 25, 4, -25 }, // 0x55 'U' + { 3103, 22, 26, 23, 6, -25 }, // 0x56 'V' + { 3175, 32, 26, 33, 6, -25 }, // 0x57 'W' + { 3279, 27, 26, 23, 1, -25 }, // 0x58 'X' + { 3367, 22, 26, 23, 6, -25 }, // 0x59 'Y' + { 3439, 25, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3521, 15, 33, 12, 1, -25 }, // 0x5B '[' + { 3583, 5, 25, 10, 5, -24 }, // 0x5C '\' + { 3599, 15, 33, 12, -1, -25 }, // 0x5D ']' + { 3661, 16, 15, 20, 4, -23 }, // 0x5E '^' + { 3691, 21, 3, 19, -2, 5 }, // 0x5F '_' + { 3699, 5, 5, 12, 6, -25 }, // 0x60 '`' + { 3703, 18, 19, 19, 2, -18 }, // 0x61 'a' + { 3746, 20, 26, 21, 2, -25 }, // 0x62 'b' + { 3811, 18, 19, 19, 3, -18 }, // 0x63 'c' + { 3854, 22, 26, 21, 3, -25 }, // 0x64 'd' + { 3926, 19, 19, 19, 2, -18 }, // 0x65 'e' + { 3972, 13, 26, 12, 3, -25 }, // 0x66 'f' + { 4015, 22, 27, 21, 1, -18 }, // 0x67 'g' + { 4090, 20, 26, 21, 2, -25 }, // 0x68 'h' + { 4155, 10, 26, 10, 2, -25 }, // 0x69 'i' + { 4188, 15, 34, 10, -2, -25 }, // 0x6A 'j' + { 4252, 21, 26, 19, 2, -25 }, // 0x6B 'k' + { 4321, 10, 26, 10, 2, -25 }, // 0x6C 'l' + { 4354, 30, 19, 31, 2, -18 }, // 0x6D 'm' + { 4426, 20, 19, 21, 2, -18 }, // 0x6E 'n' + { 4474, 19, 19, 21, 3, -18 }, // 0x6F 'o' + { 4520, 22, 27, 21, 0, -18 }, // 0x70 'p' + { 4595, 20, 27, 21, 3, -18 }, // 0x71 'q' + { 4663, 15, 19, 14, 2, -18 }, // 0x72 'r' + { 4699, 18, 19, 19, 2, -18 }, // 0x73 's' + { 4742, 11, 23, 12, 4, -22 }, // 0x74 't' + { 4774, 20, 19, 21, 3, -18 }, // 0x75 'u' + { 4822, 18, 19, 19, 5, -18 }, // 0x76 'v' + { 4865, 27, 19, 27, 4, -18 }, // 0x77 'w' + { 4930, 22, 19, 19, 1, -18 }, // 0x78 'x' + { 4983, 22, 27, 19, 1, -18 }, // 0x79 'y' + { 5058, 19, 19, 17, 1, -18 }, // 0x7A 'z' + { 5104, 14, 33, 14, 2, -25 }, // 0x7B '{' + { 5162, 9, 33, 10, 2, -25 }, // 0x7C '|' + { 5200, 14, 33, 14, 2, -25 }, // 0x7D '}' + { 5258, 17, 6, 20, 3, -10 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h new file mode 100644 index 000000000..ea65f9b8d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h @@ -0,0 +1,893 @@ +const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, + 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, + 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, + 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, + 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, + 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, + 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, + 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, + 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, + 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, + 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, + 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, + 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, + 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, + 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, + 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, + 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, + 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, + 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, + 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, + 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, + 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, + 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, + 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, + 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, + 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, + 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, + 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, + 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, + 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, + 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, + 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, + 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, + 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, + 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, + 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, + 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, + 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, + 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, + 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, + 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, + 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, + 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, + 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, + 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, + 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, + 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, + 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, + 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, + 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, + 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, + 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, + 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, + 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, + 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, + 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, + 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, + 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, + 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, + 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, + 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, + 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, + 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, + 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, + 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, + 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, + 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, + 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, + 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, + 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, + 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, + 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, + 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, + 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, + 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, + 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, + 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, + 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, + 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, + 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, + 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, + 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, + 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, + 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, + 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, + 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, + 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, + 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, + 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, + 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, + 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, + 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, + 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, + 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, + 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, + 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, + 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, + 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, + 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, + 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, + 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, + 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, + 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, + 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, + 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, + 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, + 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, + 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, + 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, + 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, + 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, + 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, + 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, + 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, + 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, + 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, + 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, + 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, + 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, + 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, + 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, + 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, + 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, + 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, + 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, + 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, + 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, + 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, + 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, + 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, + 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, + 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, + 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, + 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, + 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, + 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, + 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, + 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, + 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, + 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, + 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, + 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, + 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, + 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, + 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, + 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, + 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, + 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, + 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, + 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, + 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, + 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, + 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, + 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, + 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, + 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, + 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, + 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, + 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, + 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, + 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, + 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, + 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, + 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, + 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, + 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, + 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, + 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, + 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, + 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, + 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, + 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, + 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, + 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, + 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, + 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, + 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, + 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, + 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, + 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, + 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, + 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, + 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, + 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, + 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, + 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, + 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, + 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, + 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, + 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, + 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, + 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, + 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, + 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, + 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, + 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, + 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, + 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, + 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, + 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, + 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, + 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, + 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, + 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, + 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, + 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, + 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, + 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, + 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, + 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, + 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, + 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, + 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, + 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, + 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, + 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, + 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, + 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, + 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, + 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, + 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, + 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, + 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, + 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, + 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, + 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, + 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, + 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, + 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, + 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, + 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, + 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, + 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, + 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, + 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, + 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, + 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, + 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, + 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, + 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, + 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, + 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, + 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, + 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, + 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, + 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, + 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, + 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, + 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, + 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, + 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, + 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, + 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, + 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, + 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, + 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, + 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, + 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, + 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, + 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, + 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, + 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, + 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, + 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, + 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, + 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, + 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, + 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, + 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, + 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, + 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, + 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, + 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, + 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, + 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, + 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, + 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, + 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, + 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, + 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, + 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, + 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, + 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, + 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, + 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, + 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, + 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, + 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, + 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, + 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, + 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, + 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, + 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, + 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, + 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, + 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, + 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, + 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, + 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, + 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, + 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, + 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, + 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, + 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, + 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, + 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, + 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, + 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, + 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, + 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, + 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, + 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, + 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, + 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, + 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, + 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, + 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, + 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, + 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, + 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, + 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, + 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, + 0x00, 0x03, 0xF0 }; + +const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 14, 34, 16, 5, -33 }, // 0x21 '!' + { 60, 18, 12, 22, 8, -33 }, // 0x22 '"' + { 87, 29, 33, 26, 2, -31 }, // 0x23 '#' + { 207, 26, 42, 26, 3, -35 }, // 0x24 '$' + { 344, 36, 34, 42, 6, -32 }, // 0x25 '%' + { 497, 29, 35, 34, 4, -33 }, // 0x26 '&' + { 624, 7, 12, 11, 8, -33 }, // 0x27 ''' + { 635, 17, 44, 16, 4, -33 }, // 0x28 '(' + { 729, 17, 44, 16, 0, -34 }, // 0x29 ')' + { 823, 15, 15, 18, 7, -33 }, // 0x2A '*' + { 852, 24, 22, 27, 4, -21 }, // 0x2B '+' + { 918, 10, 15, 13, 1, -6 }, // 0x2C ',' + { 937, 14, 6, 16, 3, -15 }, // 0x2D '-' + { 948, 8, 7, 13, 3, -6 }, // 0x2E '.' + { 955, 20, 34, 13, 0, -32 }, // 0x2F '/' + { 1040, 25, 35, 26, 4, -33 }, // 0x30 '0' + { 1150, 17, 33, 26, 8, -32 }, // 0x31 '1' + { 1221, 29, 34, 26, 1, -33 }, // 0x32 '2' + { 1345, 26, 35, 26, 3, -33 }, // 0x33 '3' + { 1459, 25, 32, 26, 3, -31 }, // 0x34 '4' + { 1559, 27, 34, 26, 3, -32 }, // 0x35 '5' + { 1674, 25, 35, 26, 4, -33 }, // 0x36 '6' + { 1784, 26, 33, 26, 6, -32 }, // 0x37 '7' + { 1892, 26, 35, 26, 3, -33 }, // 0x38 '8' + { 2006, 25, 35, 26, 4, -33 }, // 0x39 '9' + { 2116, 12, 25, 16, 5, -24 }, // 0x3A ':' + { 2154, 14, 33, 16, 3, -24 }, // 0x3B ';' + { 2212, 26, 23, 27, 4, -22 }, // 0x3C '<' + { 2287, 26, 18, 27, 3, -19 }, // 0x3D '=' + { 2346, 26, 23, 27, 1, -21 }, // 0x3E '>' + { 2421, 24, 35, 29, 8, -34 }, // 0x3F '?' + { 2526, 45, 41, 46, 3, -34 }, // 0x40 '@' + { 2757, 32, 34, 34, 1, -33 }, // 0x41 'A' + { 2893, 32, 34, 34, 4, -33 }, // 0x42 'B' + { 3029, 32, 36, 34, 5, -34 }, // 0x43 'C' + { 3173, 32, 34, 34, 4, -33 }, // 0x44 'D' + { 3309, 32, 34, 31, 4, -33 }, // 0x45 'E' + { 3445, 32, 34, 29, 3, -33 }, // 0x46 'F' + { 3581, 33, 36, 37, 5, -34 }, // 0x47 'G' + { 3730, 35, 34, 34, 3, -33 }, // 0x48 'H' + { 3879, 14, 34, 13, 3, -33 }, // 0x49 'I' + { 3939, 27, 35, 26, 3, -33 }, // 0x4A 'J' + { 4058, 37, 34, 34, 3, -33 }, // 0x4B 'K' + { 4216, 24, 34, 29, 4, -33 }, // 0x4C 'L' + { 4318, 41, 34, 39, 3, -33 }, // 0x4D 'M' + { 4493, 35, 34, 34, 3, -33 }, // 0x4E 'N' + { 4642, 34, 36, 37, 5, -34 }, // 0x4F 'O' + { 4795, 31, 34, 31, 4, -33 }, // 0x50 'P' + { 4927, 34, 37, 37, 5, -34 }, // 0x51 'Q' + { 5085, 33, 34, 34, 4, -33 }, // 0x52 'R' + { 5226, 30, 36, 31, 4, -34 }, // 0x53 'S' + { 5361, 28, 34, 29, 7, -33 }, // 0x54 'T' + { 5480, 32, 35, 34, 6, -33 }, // 0x55 'U' + { 5620, 30, 34, 31, 8, -33 }, // 0x56 'V' + { 5748, 43, 34, 44, 8, -33 }, // 0x57 'W' + { 5931, 37, 34, 31, 1, -33 }, // 0x58 'X' + { 6089, 29, 34, 31, 9, -33 }, // 0x59 'Y' + { 6213, 33, 34, 29, 1, -33 }, // 0x5A 'Z' + { 6354, 21, 43, 16, 1, -33 }, // 0x5B '[' + { 6467, 7, 36, 13, 6, -34 }, // 0x5C '\' + { 6499, 21, 43, 16, -1, -33 }, // 0x5D ']' + { 6612, 21, 20, 27, 6, -32 }, // 0x5E '^' + { 6665, 29, 4, 26, -3, 6 }, // 0x5F '_' + { 6680, 7, 7, 16, 8, -35 }, // 0x60 '`' + { 6687, 25, 26, 26, 2, -24 }, // 0x61 'a' + { 6769, 27, 35, 29, 3, -33 }, // 0x62 'b' + { 6888, 25, 26, 26, 4, -24 }, // 0x63 'c' + { 6970, 29, 35, 29, 4, -33 }, // 0x64 'd' + { 7097, 25, 26, 26, 3, -24 }, // 0x65 'e' + { 7179, 18, 34, 16, 4, -33 }, // 0x66 'f' + { 7256, 29, 35, 29, 2, -24 }, // 0x67 'g' + { 7383, 27, 34, 29, 3, -33 }, // 0x68 'h' + { 7498, 14, 34, 13, 3, -33 }, // 0x69 'i' + { 7558, 19, 44, 13, -2, -33 }, // 0x6A 'j' + { 7663, 28, 34, 26, 3, -33 }, // 0x6B 'k' + { 7782, 14, 34, 13, 3, -33 }, // 0x6C 'l' + { 7842, 40, 25, 42, 3, -24 }, // 0x6D 'm' + { 7967, 27, 25, 29, 3, -24 }, // 0x6E 'n' + { 8052, 26, 26, 29, 4, -24 }, // 0x6F 'o' + { 8137, 29, 35, 29, 1, -24 }, // 0x70 'p' + { 8264, 28, 35, 29, 3, -24 }, // 0x71 'q' + { 8387, 20, 25, 18, 3, -24 }, // 0x72 'r' + { 8450, 24, 26, 26, 3, -24 }, // 0x73 's' + { 8528, 14, 32, 16, 5, -30 }, // 0x74 't' + { 8584, 27, 26, 29, 4, -24 }, // 0x75 'u' + { 8672, 25, 25, 26, 6, -24 }, // 0x76 'v' + { 8751, 35, 25, 37, 6, -24 }, // 0x77 'w' + { 8861, 29, 25, 26, 1, -24 }, // 0x78 'x' + { 8952, 29, 35, 26, 2, -24 }, // 0x79 'y' + { 9079, 26, 25, 23, 1, -24 }, // 0x7A 'z' + { 9161, 18, 43, 18, 4, -33 }, // 0x7B '{' + { 9258, 13, 43, 13, 3, -33 }, // 0x7C '|' + { 9328, 18, 43, 18, 2, -33 }, // 0x7D '}' + { 9425, 22, 8, 27, 5, -14 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 10119 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h new file mode 100644 index 000000000..6250aca3e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h @@ -0,0 +1,227 @@ +const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, + 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, + 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, + 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, + 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, + 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, + 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, + 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, + 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, + 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, + 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, + 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, + 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, + 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, + 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, + 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, + 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, + 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, + 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, + 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, + 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, + 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, + 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, + 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, + 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, + 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, + 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, + 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, + 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, + 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, + 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, + 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, + 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, + 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, + 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, + 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, + 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, + 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, + 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, + 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, + 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, + 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, + 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, + 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, + 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, + 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, + 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, + 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, + 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, + 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, + 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, + 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, + 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, + 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, + 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, + 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, + 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, + 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, + 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, + 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, + 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, + 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, + 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, + 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, + 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, + 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, + 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, + 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, + 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, + 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, + 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, + 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, + 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, + 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, + 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, + 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, + 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, + 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, + 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, + 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, + 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, + 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, + 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, + 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, + 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, + 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, + 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, + 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, + 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, + 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, + 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, + 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, + 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, + 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, + 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, + 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, + 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, + 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, + 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, + 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, + 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, + 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, + 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, + 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, + 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, + 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, + 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, + 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E }; + +const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 5, 13, 6, 2, -12 }, // 0x21 '!' + { 9, 7, 5, 9, 3, -12 }, // 0x22 '"' + { 14, 11, 12, 10, 1, -11 }, // 0x23 '#' + { 31, 11, 16, 10, 1, -13 }, // 0x24 '$' + { 53, 14, 13, 16, 2, -12 }, // 0x25 '%' + { 76, 12, 13, 13, 2, -12 }, // 0x26 '&' + { 96, 3, 5, 4, 3, -12 }, // 0x27 ''' + { 98, 8, 17, 6, 2, -12 }, // 0x28 '(' + { 115, 8, 17, 6, -2, -13 }, // 0x29 ')' + { 132, 6, 6, 7, 3, -12 }, // 0x2A '*' + { 137, 9, 8, 11, 2, -7 }, // 0x2B '+' + { 146, 4, 6, 5, 0, -2 }, // 0x2C ',' + { 149, 5, 2, 6, 1, -5 }, // 0x2D '-' + { 151, 3, 2, 5, 1, -1 }, // 0x2E '.' + { 152, 8, 13, 5, 0, -12 }, // 0x2F '/' + { 165, 10, 13, 10, 1, -12 }, // 0x30 '0' + { 182, 7, 13, 10, 3, -12 }, // 0x31 '1' + { 194, 11, 13, 10, 1, -12 }, // 0x32 '2' + { 212, 11, 13, 10, 1, -12 }, // 0x33 '3' + { 230, 10, 12, 10, 1, -11 }, // 0x34 '4' + { 245, 11, 13, 10, 1, -12 }, // 0x35 '5' + { 263, 10, 13, 10, 2, -12 }, // 0x36 '6' + { 280, 10, 13, 10, 2, -12 }, // 0x37 '7' + { 297, 11, 13, 10, 1, -12 }, // 0x38 '8' + { 315, 11, 13, 10, 1, -12 }, // 0x39 '9' + { 333, 4, 9, 6, 2, -8 }, // 0x3A ':' + { 338, 5, 12, 6, 1, -8 }, // 0x3B ';' + { 346, 10, 9, 11, 1, -8 }, // 0x3C '<' + { 358, 10, 6, 11, 1, -6 }, // 0x3D '=' + { 366, 10, 9, 11, 1, -7 }, // 0x3E '>' + { 378, 10, 13, 11, 3, -12 }, // 0x3F '?' + { 395, 18, 16, 18, 1, -13 }, // 0x40 '@' + { 431, 13, 13, 13, 0, -12 }, // 0x41 'A' + { 453, 13, 13, 13, 1, -12 }, // 0x42 'B' + { 475, 13, 13, 13, 2, -12 }, // 0x43 'C' + { 497, 13, 13, 13, 1, -12 }, // 0x44 'D' + { 519, 13, 13, 12, 1, -12 }, // 0x45 'E' + { 541, 12, 13, 11, 1, -12 }, // 0x46 'F' + { 561, 12, 13, 14, 2, -12 }, // 0x47 'G' + { 581, 14, 13, 13, 1, -12 }, // 0x48 'H' + { 604, 5, 13, 5, 1, -12 }, // 0x49 'I' + { 613, 11, 13, 10, 1, -12 }, // 0x4A 'J' + { 631, 14, 13, 13, 1, -12 }, // 0x4B 'K' + { 654, 10, 13, 11, 1, -12 }, // 0x4C 'L' + { 671, 16, 13, 15, 1, -12 }, // 0x4D 'M' + { 697, 14, 13, 13, 1, -12 }, // 0x4E 'N' + { 720, 13, 13, 14, 2, -12 }, // 0x4F 'O' + { 742, 13, 13, 12, 1, -12 }, // 0x50 'P' + { 764, 13, 14, 14, 2, -12 }, // 0x51 'Q' + { 787, 13, 13, 13, 1, -12 }, // 0x52 'R' + { 809, 13, 13, 12, 1, -12 }, // 0x53 'S' + { 831, 11, 13, 11, 3, -12 }, // 0x54 'T' + { 849, 13, 13, 13, 2, -12 }, // 0x55 'U' + { 871, 11, 13, 12, 3, -12 }, // 0x56 'V' + { 889, 17, 13, 17, 3, -12 }, // 0x57 'W' + { 917, 14, 13, 12, 0, -12 }, // 0x58 'X' + { 940, 11, 13, 12, 3, -12 }, // 0x59 'Y' + { 958, 12, 13, 11, 1, -12 }, // 0x5A 'Z' + { 978, 8, 17, 6, 0, -12 }, // 0x5B '[' + { 995, 3, 17, 5, 2, -16 }, // 0x5C '\' + { 1002, 8, 17, 6, 0, -13 }, // 0x5D ']' + { 1019, 8, 8, 11, 2, -12 }, // 0x5E '^' + { 1027, 11, 1, 10, -1, 4 }, // 0x5F '_' + { 1029, 3, 2, 6, 3, -12 }, // 0x60 '`' + { 1030, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 1043, 11, 13, 11, 1, -12 }, // 0x62 'b' + { 1061, 10, 10, 10, 1, -9 }, // 0x63 'c' + { 1074, 12, 13, 11, 1, -12 }, // 0x64 'd' + { 1094, 10, 10, 10, 1, -9 }, // 0x65 'e' + { 1107, 6, 13, 6, 2, -12 }, // 0x66 'f' + { 1117, 12, 14, 11, 0, -9 }, // 0x67 'g' + { 1138, 11, 13, 11, 1, -12 }, // 0x68 'h' + { 1156, 5, 13, 5, 1, -12 }, // 0x69 'i' + { 1165, 8, 17, 5, -1, -12 }, // 0x6A 'j' + { 1182, 11, 13, 10, 1, -12 }, // 0x6B 'k' + { 1200, 5, 13, 5, 1, -12 }, // 0x6C 'l' + { 1209, 16, 10, 16, 1, -9 }, // 0x6D 'm' + { 1229, 11, 10, 11, 1, -9 }, // 0x6E 'n' + { 1243, 11, 10, 11, 1, -9 }, // 0x6F 'o' + { 1257, 12, 14, 11, 0, -9 }, // 0x70 'p' + { 1278, 11, 14, 11, 1, -9 }, // 0x71 'q' + { 1298, 8, 10, 7, 1, -9 }, // 0x72 'r' + { 1308, 9, 10, 10, 2, -9 }, // 0x73 's' + { 1320, 6, 12, 6, 2, -11 }, // 0x74 't' + { 1329, 10, 10, 11, 2, -9 }, // 0x75 'u' + { 1342, 10, 10, 10, 2, -9 }, // 0x76 'v' + { 1355, 14, 10, 14, 2, -9 }, // 0x77 'w' + { 1373, 12, 10, 10, 0, -9 }, // 0x78 'x' + { 1388, 11, 14, 10, 1, -9 }, // 0x79 'y' + { 1408, 10, 10, 9, 0, -9 }, // 0x7A 'z' + { 1421, 7, 17, 7, 2, -12 }, // 0x7B '{' + { 1436, 5, 17, 5, 1, -12 }, // 0x7C '|' + { 1447, 7, 17, 7, 0, -13 }, // 0x7D '}' + { 1462, 8, 2, 11, 2, -4 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 2136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h new file mode 100644 index 000000000..efdbd8d11 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h @@ -0,0 +1,302 @@ +const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, + 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, + 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, + 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, + 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, + 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, + 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, + 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, + 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, + 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, + 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, + 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, + 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, + 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, + 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, + 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, + 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, + 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, + 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, + 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, + 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, + 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, + 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, + 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, + 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, + 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, + 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, + 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, + 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, + 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, + 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, + 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, + 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, + 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, + 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, + 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, + 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, + 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, + 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, + 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, + 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, + 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, + 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, + 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, + 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, + 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, + 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, + 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, + 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, + 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, + 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, + 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, + 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, + 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, + 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, + 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, + 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, + 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, + 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, + 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, + 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, + 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, + 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, + 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, + 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, + 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, + 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, + 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, + 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, + 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, + 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, + 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, + 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, + 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, + 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, + 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, + 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, + 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, + 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, + 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, + 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, + 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, + 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, + 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, + 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, + 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, + 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, + 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, + 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, + 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, + 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, + 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, + 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, + 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, + 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, + 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, + 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, + 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, + 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, + 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, + 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, + 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, + 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, + 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, + 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, + 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, + 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, + 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, + 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, + 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, + 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, + 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, + 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, + 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, + 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, + 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, + 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, + 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, + 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, + 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, + 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, + 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, + 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, + 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, + 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, + 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, + 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, + 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, + 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, + 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, + 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, + 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, + 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, + 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, + 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, + 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, + 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, + 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, + 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, + 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, + 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, + 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, + 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, + 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, + 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, + 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, + 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, + 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, + 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, + 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, + 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, + 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, + 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, + 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38 }; + +const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 6, 18, 7, 3, -17 }, // 0x21 '!' + { 14, 6, 6, 9, 4, -16 }, // 0x22 '"' + { 19, 15, 18, 13, 1, -17 }, // 0x23 '#' + { 53, 13, 21, 13, 2, -17 }, // 0x24 '$' + { 88, 19, 17, 21, 3, -16 }, // 0x25 '%' + { 129, 13, 17, 16, 2, -16 }, // 0x26 '&' + { 157, 2, 6, 5, 4, -16 }, // 0x27 ''' + { 159, 8, 23, 8, 3, -17 }, // 0x28 '(' + { 182, 8, 23, 8, 0, -16 }, // 0x29 ')' + { 205, 8, 8, 9, 4, -17 }, // 0x2A '*' + { 213, 12, 11, 14, 2, -10 }, // 0x2B '+' + { 230, 4, 6, 7, 1, -1 }, // 0x2C ',' + { 233, 6, 2, 8, 2, -7 }, // 0x2D '-' + { 235, 3, 2, 7, 2, -1 }, // 0x2E '.' + { 236, 10, 18, 7, 0, -17 }, // 0x2F '/' + { 259, 12, 17, 13, 2, -16 }, // 0x30 '0' + { 285, 7, 17, 13, 5, -16 }, // 0x31 '1' + { 300, 14, 17, 13, 1, -16 }, // 0x32 '2' + { 330, 12, 17, 13, 2, -16 }, // 0x33 '3' + { 356, 12, 17, 13, 2, -16 }, // 0x34 '4' + { 382, 13, 17, 13, 2, -16 }, // 0x35 '5' + { 410, 12, 17, 13, 2, -16 }, // 0x36 '6' + { 436, 13, 17, 13, 3, -16 }, // 0x37 '7' + { 464, 12, 17, 13, 2, -16 }, // 0x38 '8' + { 490, 12, 17, 13, 2, -16 }, // 0x39 '9' + { 516, 5, 12, 7, 3, -11 }, // 0x3A ':' + { 524, 6, 16, 7, 2, -11 }, // 0x3B ';' + { 536, 13, 12, 14, 2, -11 }, // 0x3C '<' + { 556, 13, 6, 14, 2, -8 }, // 0x3D '=' + { 566, 13, 12, 14, 1, -10 }, // 0x3E '>' + { 586, 11, 18, 13, 4, -17 }, // 0x3F '?' + { 611, 23, 21, 24, 2, -17 }, // 0x40 '@' + { 672, 16, 18, 16, 0, -17 }, // 0x41 'A' + { 708, 15, 18, 16, 2, -17 }, // 0x42 'B' + { 742, 16, 18, 17, 2, -17 }, // 0x43 'C' + { 778, 16, 18, 17, 2, -17 }, // 0x44 'D' + { 814, 16, 18, 16, 2, -17 }, // 0x45 'E' + { 850, 15, 18, 14, 2, -17 }, // 0x46 'F' + { 884, 16, 18, 19, 3, -17 }, // 0x47 'G' + { 920, 17, 18, 17, 2, -17 }, // 0x48 'H' + { 959, 6, 18, 7, 2, -17 }, // 0x49 'I' + { 973, 13, 18, 12, 1, -17 }, // 0x4A 'J' + { 1003, 18, 18, 16, 2, -17 }, // 0x4B 'K' + { 1044, 11, 18, 13, 2, -17 }, // 0x4C 'L' + { 1069, 20, 18, 20, 2, -17 }, // 0x4D 'M' + { 1114, 17, 18, 18, 2, -17 }, // 0x4E 'N' + { 1153, 17, 18, 18, 2, -17 }, // 0x4F 'O' + { 1192, 15, 18, 15, 2, -17 }, // 0x50 'P' + { 1226, 18, 19, 19, 2, -17 }, // 0x51 'Q' + { 1269, 16, 18, 17, 2, -17 }, // 0x52 'R' + { 1305, 15, 18, 16, 2, -17 }, // 0x53 'S' + { 1339, 14, 18, 15, 4, -17 }, // 0x54 'T' + { 1371, 16, 18, 17, 3, -17 }, // 0x55 'U' + { 1407, 15, 18, 15, 4, -17 }, // 0x56 'V' + { 1441, 22, 18, 22, 4, -17 }, // 0x57 'W' + { 1491, 19, 18, 16, 0, -17 }, // 0x58 'X' + { 1534, 16, 18, 16, 4, -17 }, // 0x59 'Y' + { 1570, 17, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1609, 10, 23, 7, 0, -17 }, // 0x5B '[' + { 1638, 3, 18, 7, 4, -17 }, // 0x5C '\' + { 1645, 10, 23, 7, -1, -16 }, // 0x5D ']' + { 1674, 10, 9, 11, 2, -16 }, // 0x5E '^' + { 1686, 14, 1, 13, -1, 4 }, // 0x5F '_' + { 1688, 4, 4, 8, 4, -17 }, // 0x60 '`' + { 1690, 11, 13, 13, 2, -12 }, // 0x61 'a' + { 1708, 13, 18, 13, 1, -17 }, // 0x62 'b' + { 1738, 11, 13, 12, 2, -12 }, // 0x63 'c' + { 1756, 14, 18, 13, 2, -17 }, // 0x64 'd' + { 1788, 12, 13, 13, 2, -12 }, // 0x65 'e' + { 1808, 8, 18, 6, 2, -17 }, // 0x66 'f' + { 1826, 14, 18, 13, 1, -12 }, // 0x67 'g' + { 1858, 12, 18, 13, 1, -17 }, // 0x68 'h' + { 1885, 5, 18, 5, 2, -17 }, // 0x69 'i' + { 1897, 9, 23, 6, -1, -17 }, // 0x6A 'j' + { 1923, 13, 18, 12, 1, -17 }, // 0x6B 'k' + { 1953, 5, 18, 5, 2, -17 }, // 0x6C 'l' + { 1965, 19, 13, 20, 1, -12 }, // 0x6D 'm' + { 1996, 12, 13, 13, 1, -12 }, // 0x6E 'n' + { 2016, 12, 13, 13, 2, -12 }, // 0x6F 'o' + { 2036, 14, 18, 14, 0, -12 }, // 0x70 'p' + { 2068, 13, 18, 13, 2, -12 }, // 0x71 'q' + { 2098, 9, 13, 8, 1, -12 }, // 0x72 'r' + { 2113, 12, 13, 12, 1, -12 }, // 0x73 's' + { 2133, 7, 16, 6, 2, -15 }, // 0x74 't' + { 2147, 12, 13, 13, 2, -12 }, // 0x75 'u' + { 2167, 11, 13, 12, 3, -12 }, // 0x76 'v' + { 2185, 17, 13, 17, 3, -12 }, // 0x77 'w' + { 2213, 14, 13, 12, 0, -12 }, // 0x78 'x' + { 2236, 14, 18, 11, 0, -12 }, // 0x79 'y' + { 2268, 12, 13, 12, 1, -12 }, // 0x7A 'z' + { 2288, 8, 23, 8, 3, -17 }, // 0x7B '{' + { 2311, 6, 23, 6, 1, -17 }, // 0x7C '|' + { 2329, 9, 23, 8, -1, -16 }, // 0x7D '}' + { 2355, 11, 5, 14, 3, -10 } }; // 0x7E '~' + +const GFXfont FreeSansOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansOblique12pt7bBitmaps, + (GFXglyph *)FreeSansOblique12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 3034 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h new file mode 100644 index 000000000..2a18a3f6a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h @@ -0,0 +1,518 @@ +const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, + 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, + 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, + 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, + 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, + 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, + 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, + 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, + 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, + 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, + 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, + 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, + 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, + 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, + 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, + 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, + 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, + 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, + 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, + 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, + 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, + 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, + 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, + 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, + 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, + 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, + 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, + 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, + 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, + 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, + 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, + 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, + 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, + 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, + 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, + 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, + 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, + 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, + 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, + 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, + 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, + 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, + 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, + 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, + 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, + 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, + 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, + 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, + 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, + 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, + 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, + 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, + 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, + 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, + 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, + 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, + 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, + 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, + 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, + 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, + 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, + 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, + 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, + 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, + 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, + 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, + 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, + 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, + 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, + 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, + 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, + 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, + 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, + 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, + 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, + 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, + 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, + 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, + 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, + 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, + 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, + 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, + 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, + 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, + 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, + 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, + 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, + 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, + 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, + 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, + 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, + 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, + 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, + 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, + 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, + 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, + 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, + 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, + 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, + 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, + 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, + 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, + 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, + 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, + 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, + 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, + 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, + 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, + 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, + 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, + 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, + 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, + 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, + 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, + 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, + 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, + 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, + 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, + 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, + 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, + 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, + 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, + 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, + 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, + 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, + 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, + 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, + 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, + 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, + 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, + 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, + 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, + 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, + 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, + 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, + 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, + 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, + 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, + 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, + 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, + 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, + 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, + 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, + 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, + 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, + 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, + 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, + 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, + 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, + 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, + 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, + 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, + 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, + 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, + 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, + 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, + 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, + 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, + 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, + 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, + 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, + 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, + 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, + 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, + 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, + 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, + 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, + 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, + 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, + 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, + 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, + 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, + 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, + 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, + 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, + 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, + 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, + 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, + 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, + 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, + 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, + 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, + 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, + 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, + 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, + 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, + 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, + 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, + 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, + 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, + 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, + 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, + 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, + 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, + 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, + 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, + 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, + 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, + 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, + 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, + 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, + 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, + 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, + 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, + 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, + 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, + 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, + 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, + 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, + 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, + 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, + 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, + 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, + 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, + 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, + 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, + 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, + 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, + 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, + 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, + 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, + 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, + 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, + 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, + 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, + 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, + 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, + 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, + 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, + 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, + 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, + 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, + 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, + 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, + 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, + 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, + 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, + 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, + 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, + 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, + 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, + 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, + 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, + 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78 }; + +const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 9, 26, 10, 4, -25 }, // 0x21 '!' + { 30, 10, 9, 12, 6, -24 }, // 0x22 '"' + { 42, 21, 25, 19, 2, -24 }, // 0x23 '#' + { 108, 20, 31, 19, 2, -26 }, // 0x24 '$' + { 186, 26, 25, 31, 5, -24 }, // 0x25 '%' + { 268, 20, 25, 23, 3, -24 }, // 0x26 '&' + { 331, 4, 9, 7, 6, -24 }, // 0x27 ''' + { 336, 12, 33, 12, 4, -25 }, // 0x28 '(' + { 386, 12, 33, 12, -1, -24 }, // 0x29 ')' + { 436, 10, 10, 14, 6, -25 }, // 0x2A '*' + { 449, 18, 16, 20, 3, -15 }, // 0x2B '+' + { 485, 5, 8, 10, 2, -2 }, // 0x2C ',' + { 490, 9, 3, 12, 3, -10 }, // 0x2D '-' + { 494, 4, 4, 10, 3, -3 }, // 0x2E '.' + { 496, 15, 26, 10, 0, -25 }, // 0x2F '/' + { 545, 18, 25, 19, 3, -24 }, // 0x30 '0' + { 602, 10, 25, 19, 7, -24 }, // 0x31 '1' + { 634, 20, 25, 19, 2, -24 }, // 0x32 '2' + { 697, 19, 25, 19, 2, -24 }, // 0x33 '3' + { 757, 18, 25, 19, 2, -24 }, // 0x34 '4' + { 814, 20, 25, 19, 2, -24 }, // 0x35 '5' + { 877, 19, 25, 19, 3, -24 }, // 0x36 '6' + { 937, 18, 25, 19, 5, -24 }, // 0x37 '7' + { 994, 19, 25, 19, 3, -24 }, // 0x38 '8' + { 1054, 19, 25, 19, 2, -24 }, // 0x39 '9' + { 1114, 7, 19, 10, 4, -18 }, // 0x3A ':' + { 1131, 8, 24, 10, 3, -18 }, // 0x3B ';' + { 1155, 19, 17, 20, 3, -16 }, // 0x3C '<' + { 1196, 18, 9, 20, 3, -12 }, // 0x3D '=' + { 1217, 19, 17, 20, 2, -15 }, // 0x3E '>' + { 1258, 16, 26, 19, 6, -25 }, // 0x3F '?' + { 1310, 33, 31, 36, 3, -25 }, // 0x40 '@' + { 1438, 23, 26, 23, 0, -25 }, // 0x41 'A' + { 1513, 21, 26, 23, 3, -25 }, // 0x42 'B' + { 1582, 22, 26, 25, 4, -25 }, // 0x43 'C' + { 1654, 23, 26, 25, 3, -25 }, // 0x44 'D' + { 1729, 23, 26, 23, 3, -25 }, // 0x45 'E' + { 1804, 22, 26, 21, 3, -25 }, // 0x46 'F' + { 1876, 24, 26, 27, 4, -25 }, // 0x47 'G' + { 1954, 25, 26, 25, 3, -25 }, // 0x48 'H' + { 2036, 8, 26, 10, 4, -25 }, // 0x49 'I' + { 2062, 18, 26, 18, 2, -25 }, // 0x4A 'J' + { 2121, 25, 26, 23, 3, -25 }, // 0x4B 'K' + { 2203, 16, 26, 19, 3, -25 }, // 0x4C 'L' + { 2255, 29, 26, 30, 3, -25 }, // 0x4D 'M' + { 2350, 25, 26, 26, 3, -25 }, // 0x4E 'N' + { 2432, 24, 26, 27, 4, -25 }, // 0x4F 'O' + { 2510, 22, 26, 23, 3, -25 }, // 0x50 'P' + { 2582, 25, 28, 27, 4, -25 }, // 0x51 'Q' + { 2670, 23, 26, 25, 3, -25 }, // 0x52 'R' + { 2745, 22, 26, 23, 3, -25 }, // 0x53 'S' + { 2817, 20, 26, 21, 6, -25 }, // 0x54 'T' + { 2882, 24, 26, 25, 4, -25 }, // 0x55 'U' + { 2960, 21, 26, 23, 6, -25 }, // 0x56 'V' + { 3029, 32, 26, 33, 6, -25 }, // 0x57 'W' + { 3133, 27, 26, 23, 1, -25 }, // 0x58 'X' + { 3221, 23, 26, 24, 6, -25 }, // 0x59 'Y' + { 3296, 25, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3378, 13, 33, 10, 1, -25 }, // 0x5B '[' + { 3432, 4, 26, 10, 5, -25 }, // 0x5C '\' + { 3445, 13, 33, 10, -1, -24 }, // 0x5D ']' + { 3499, 14, 14, 16, 3, -24 }, // 0x5E '^' + { 3524, 21, 2, 19, -2, 5 }, // 0x5F '_' + { 3530, 6, 5, 12, 6, -25 }, // 0x60 '`' + { 3534, 18, 19, 19, 2, -18 }, // 0x61 'a' + { 3577, 19, 26, 20, 2, -25 }, // 0x62 'b' + { 3639, 16, 19, 18, 3, -18 }, // 0x63 'c' + { 3677, 20, 26, 20, 3, -25 }, // 0x64 'd' + { 3742, 17, 19, 19, 3, -18 }, // 0x65 'e' + { 3783, 11, 26, 9, 2, -25 }, // 0x66 'f' + { 3819, 19, 27, 19, 2, -18 }, // 0x67 'g' + { 3884, 18, 26, 19, 2, -25 }, // 0x68 'h' + { 3943, 8, 26, 8, 2, -25 }, // 0x69 'i' + { 3969, 14, 34, 8, -2, -25 }, // 0x6A 'j' + { 4029, 19, 26, 18, 2, -25 }, // 0x6B 'k' + { 4091, 8, 26, 8, 2, -25 }, // 0x6C 'l' + { 4117, 27, 19, 29, 2, -18 }, // 0x6D 'm' + { 4182, 18, 19, 19, 2, -18 }, // 0x6E 'n' + { 4225, 17, 19, 19, 3, -18 }, // 0x6F 'o' + { 4266, 21, 26, 20, 0, -18 }, // 0x70 'p' + { 4335, 20, 27, 19, 2, -18 }, // 0x71 'q' + { 4403, 13, 19, 11, 2, -18 }, // 0x72 'r' + { 4434, 16, 19, 18, 2, -18 }, // 0x73 's' + { 4472, 10, 23, 9, 3, -22 }, // 0x74 't' + { 4501, 18, 19, 19, 3, -18 }, // 0x75 'u' + { 4544, 16, 19, 17, 4, -18 }, // 0x76 'v' + { 4582, 24, 19, 25, 4, -18 }, // 0x77 'w' + { 4639, 19, 19, 17, 1, -18 }, // 0x78 'x' + { 4685, 20, 27, 17, 0, -18 }, // 0x79 'y' + { 4753, 19, 19, 17, 1, -18 }, // 0x7A 'z' + { 4799, 12, 33, 12, 3, -25 }, // 0x7B '{' + { 4849, 9, 33, 9, 2, -25 }, // 0x7C '|' + { 4887, 12, 33, 12, 0, -24 }, // 0x7D '}' + { 4937, 16, 7, 20, 5, -15 } }; // 0x7E '~' + +const GFXfont FreeSansOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansOblique18pt7bBitmaps, + (GFXglyph *)FreeSansOblique18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5623 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h new file mode 100644 index 000000000..4c8c8ab02 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h @@ -0,0 +1,840 @@ +const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, + 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, + 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, + 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, + 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, + 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, + 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, + 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, + 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, + 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, + 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, + 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, + 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, + 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, + 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, + 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, + 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, + 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, + 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, + 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, + 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, + 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, + 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, + 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, + 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, + 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, + 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, + 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, + 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, + 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, + 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, + 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, + 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, + 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, + 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, + 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, + 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, + 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, + 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, + 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, + 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, + 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, + 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, + 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, + 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, + 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, + 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, + 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, + 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, + 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, + 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, + 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, + 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, + 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, + 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, + 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, + 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, + 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, + 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, + 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, + 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, + 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, + 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, + 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, + 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, + 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, + 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, + 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, + 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, + 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, + 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, + 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, + 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, + 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, + 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, + 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, + 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, + 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, + 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, + 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, + 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, + 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, + 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, + 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, + 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, + 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, + 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, + 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, + 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, + 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, + 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, + 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, + 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, + 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, + 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, + 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, + 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, + 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, + 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, + 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, + 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, + 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, + 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, + 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, + 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, + 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, + 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, + 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, + 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, + 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, + 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, + 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, + 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, + 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, + 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, + 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, + 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, + 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, + 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, + 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, + 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, + 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, + 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, + 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, + 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, + 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, + 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, + 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, + 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, + 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, + 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, + 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, + 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, + 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, + 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, + 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, + 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, + 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, + 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, + 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, + 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, + 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, + 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, + 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, + 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, + 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, + 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, + 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, + 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, + 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, + 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, + 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, + 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, + 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, + 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, + 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, + 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, + 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, + 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, + 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, + 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, + 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, + 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, + 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, + 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, + 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, + 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, + 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, + 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, + 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, + 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, + 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, + 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, + 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, + 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, + 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, + 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, + 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, + 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, + 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, + 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, + 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, + 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, + 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, + 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, + 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, + 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, + 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, + 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, + 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, + 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, + 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, + 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, + 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, + 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, + 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, + 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, + 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, + 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, + 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, + 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, + 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, + 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, + 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, + 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, + 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, + 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, + 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, + 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, + 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, + 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, + 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, + 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, + 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, + 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, + 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, + 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, + 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, + 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, + 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, + 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, + 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, + 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, + 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, + 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, + 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, + 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, + 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, + 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, + 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, + 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, + 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, + 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, + 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, + 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, + 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, + 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, + 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, + 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, + 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, + 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, + 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, + 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, + 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, + 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, + 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, + 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, + 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, + 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, + 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, + 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, + 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, + 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, + 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, + 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, + 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, + 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, + 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, + 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, + 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, + 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, + 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, + 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, + 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, + 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, + 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, + 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, + 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, + 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, + 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, + 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, + 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, + 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, + 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, + 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, + 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, + 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, + 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, + 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, + 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, + 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, + 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, + 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, + 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, + 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, + 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, + 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, + 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, + 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, + 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, + 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, + 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, + 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, + 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, + 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, + 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, + 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, + 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, + 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, + 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, + 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, + 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, + 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, + 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, + 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, + 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, + 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, + 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, + 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, + 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, + 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, + 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, + 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, + 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, + 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, + 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, + 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, + 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, + 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, + 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, + 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, + 0x00, 0x1E, 0x00 }; + +const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 11, 34, 13, 6, -33 }, // 0x21 '!' + { 47, 13, 12, 17, 8, -32 }, // 0x22 '"' + { 67, 28, 34, 26, 3, -32 }, // 0x23 '#' + { 186, 26, 42, 26, 3, -35 }, // 0x24 '$' + { 323, 36, 34, 42, 6, -32 }, // 0x25 '%' + { 476, 26, 34, 31, 4, -32 }, // 0x26 '&' + { 587, 5, 12, 9, 8, -32 }, // 0x27 ''' + { 595, 15, 44, 16, 5, -33 }, // 0x28 '(' + { 678, 15, 44, 16, 1, -33 }, // 0x29 ')' + { 761, 14, 13, 18, 8, -33 }, // 0x2A '*' + { 784, 23, 22, 27, 5, -20 }, // 0x2B '+' + { 848, 7, 12, 13, 3, -4 }, // 0x2C ',' + { 859, 12, 4, 16, 5, -14 }, // 0x2D '-' + { 865, 6, 5, 13, 4, -4 }, // 0x2E '.' + { 869, 21, 35, 13, -1, -33 }, // 0x2F '/' + { 961, 23, 34, 26, 5, -32 }, // 0x30 '0' + { 1059, 13, 33, 26, 10, -32 }, // 0x31 '1' + { 1113, 27, 33, 26, 2, -32 }, // 0x32 '2' + { 1225, 25, 34, 26, 3, -32 }, // 0x33 '3' + { 1332, 24, 33, 26, 3, -32 }, // 0x34 '4' + { 1431, 27, 34, 26, 3, -32 }, // 0x35 '5' + { 1546, 24, 34, 26, 4, -32 }, // 0x36 '6' + { 1648, 26, 33, 26, 6, -32 }, // 0x37 '7' + { 1756, 25, 34, 26, 3, -32 }, // 0x38 '8' + { 1863, 24, 34, 26, 4, -32 }, // 0x39 '9' + { 1965, 10, 25, 13, 5, -24 }, // 0x3A ':' + { 1997, 11, 32, 13, 4, -24 }, // 0x3B ';' + { 2041, 26, 23, 27, 4, -22 }, // 0x3C '<' + { 2116, 26, 12, 27, 3, -16 }, // 0x3D '=' + { 2155, 26, 23, 27, 2, -21 }, // 0x3E '>' + { 2230, 20, 35, 26, 9, -34 }, // 0x3F '?' + { 2318, 45, 42, 48, 4, -34 }, // 0x40 '@' + { 2555, 30, 34, 31, 1, -33 }, // 0x41 'A' + { 2683, 29, 34, 31, 4, -33 }, // 0x42 'B' + { 2807, 30, 36, 33, 5, -34 }, // 0x43 'C' + { 2942, 31, 34, 33, 4, -33 }, // 0x44 'D' + { 3074, 31, 34, 31, 4, -33 }, // 0x45 'E' + { 3206, 30, 34, 28, 4, -33 }, // 0x46 'F' + { 3334, 33, 36, 37, 5, -34 }, // 0x47 'G' + { 3483, 33, 34, 34, 4, -33 }, // 0x48 'H' + { 3624, 11, 34, 13, 5, -33 }, // 0x49 'I' + { 3671, 25, 35, 24, 2, -33 }, // 0x4A 'J' + { 3781, 34, 34, 31, 4, -33 }, // 0x4B 'K' + { 3926, 22, 34, 26, 4, -33 }, // 0x4C 'L' + { 4020, 39, 34, 40, 4, -33 }, // 0x4D 'M' + { 4186, 34, 34, 34, 4, -33 }, // 0x4E 'N' + { 4331, 33, 36, 36, 5, -34 }, // 0x4F 'O' + { 4480, 29, 34, 30, 4, -33 }, // 0x50 'P' + { 4604, 33, 38, 36, 5, -34 }, // 0x51 'Q' + { 4761, 30, 34, 33, 4, -33 }, // 0x52 'R' + { 4889, 29, 36, 31, 4, -34 }, // 0x53 'S' + { 5020, 28, 34, 29, 7, -33 }, // 0x54 'T' + { 5139, 31, 35, 34, 6, -33 }, // 0x55 'U' + { 5275, 29, 34, 30, 8, -33 }, // 0x56 'V' + { 5399, 43, 34, 44, 8, -33 }, // 0x57 'W' + { 5582, 36, 34, 31, 1, -33 }, // 0x58 'X' + { 5735, 30, 34, 32, 8, -33 }, // 0x59 'Y' + { 5863, 34, 34, 29, 1, -33 }, // 0x5A 'Z' + { 6008, 18, 44, 13, 1, -33 }, // 0x5B '[' + { 6107, 6, 35, 13, 7, -33 }, // 0x5C '\' + { 6134, 18, 44, 13, -1, -33 }, // 0x5D ']' + { 6233, 17, 18, 22, 6, -32 }, // 0x5E '^' + { 6272, 29, 2, 26, -3, 7 }, // 0x5F '_' + { 6280, 8, 7, 16, 8, -34 }, // 0x60 '`' + { 6287, 23, 27, 26, 3, -25 }, // 0x61 'a' + { 6365, 25, 35, 26, 3, -33 }, // 0x62 'b' + { 6475, 22, 27, 24, 4, -25 }, // 0x63 'c' + { 6550, 27, 35, 26, 4, -33 }, // 0x64 'd' + { 6669, 23, 27, 26, 4, -25 }, // 0x65 'e' + { 6747, 15, 34, 12, 3, -33 }, // 0x66 'f' + { 6811, 27, 36, 26, 2, -25 }, // 0x67 'g' + { 6933, 23, 34, 25, 3, -33 }, // 0x68 'h' + { 7031, 11, 34, 10, 3, -33 }, // 0x69 'i' + { 7078, 18, 44, 11, -2, -33 }, // 0x6A 'j' + { 7177, 25, 34, 24, 3, -33 }, // 0x6B 'k' + { 7284, 11, 34, 10, 3, -33 }, // 0x6C 'l' + { 7331, 36, 26, 38, 3, -25 }, // 0x6D 'm' + { 7448, 23, 26, 25, 3, -25 }, // 0x6E 'n' + { 7523, 23, 27, 26, 4, -25 }, // 0x6F 'o' + { 7601, 27, 36, 26, 1, -25 }, // 0x70 'p' + { 7723, 26, 36, 26, 3, -25 }, // 0x71 'q' + { 7840, 17, 26, 15, 3, -25 }, // 0x72 'r' + { 7896, 21, 27, 24, 3, -25 }, // 0x73 's' + { 7967, 13, 32, 12, 4, -30 }, // 0x74 't' + { 8019, 24, 26, 25, 4, -24 }, // 0x75 'u' + { 8097, 22, 25, 23, 6, -24 }, // 0x76 'v' + { 8166, 33, 25, 34, 6, -24 }, // 0x77 'w' + { 8270, 26, 25, 23, 1, -24 }, // 0x78 'x' + { 8352, 27, 35, 23, 0, -24 }, // 0x79 'y' + { 8471, 25, 25, 23, 1, -24 }, // 0x7A 'z' + { 8550, 16, 44, 16, 5, -33 }, // 0x7B '{' + { 8638, 12, 44, 12, 3, -33 }, // 0x7C '|' + { 8704, 16, 44, 16, -1, -33 }, // 0x7D '}' + { 8792, 21, 7, 27, 6, -19 } }; // 0x7E '~' + +const GFXfont FreeSansOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansOblique24pt7bBitmaps, + (GFXglyph *)FreeSansOblique24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 9483 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h new file mode 100644 index 000000000..18a6cbe1e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h @@ -0,0 +1,220 @@ +const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { + 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, + 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, + 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, + 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, + 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, + 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, + 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, + 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, + 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, + 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, + 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, + 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, + 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, + 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, + 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, + 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, + 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, + 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, + 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, + 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, + 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, + 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, + 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, + 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, + 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, + 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, + 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, + 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, + 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, + 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, + 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, + 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, + 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, + 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, + 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, + 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, + 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, + 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, + 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, + 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, + 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, + 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, + 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, + 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, + 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, + 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, + 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, + 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, + 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, + 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, + 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, + 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, + 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, + 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, + 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, + 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, + 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, + 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, + 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, + 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, + 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, + 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, + 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, + 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, + 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, + 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, + 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, + 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, + 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, + 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, + 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, + 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, + 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, + 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, + 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, + 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, + 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, + 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, + 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, + 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, + 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, + 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, + 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, + 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, + 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, + 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, + 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, + 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, + 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, + 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, + 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, + 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, + 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, + 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, + 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, + 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, + 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, + 0xC0 }; + +const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 5, 13, 5, 2, -12 }, // 0x21 '!' + { 9, 5, 4, 6, 3, -12 }, // 0x22 '"' + { 12, 11, 13, 10, 1, -12 }, // 0x23 '#' + { 30, 11, 16, 10, 1, -13 }, // 0x24 '$' + { 52, 15, 13, 16, 2, -12 }, // 0x25 '%' + { 77, 10, 13, 12, 2, -12 }, // 0x26 '&' + { 94, 2, 4, 3, 3, -12 }, // 0x27 ''' + { 95, 7, 17, 6, 2, -12 }, // 0x28 '(' + { 110, 7, 17, 6, -1, -12 }, // 0x29 ')' + { 125, 6, 5, 7, 3, -12 }, // 0x2A '*' + { 129, 9, 8, 11, 2, -7 }, // 0x2B '+' + { 138, 3, 5, 5, 1, -1 }, // 0x2C ',' + { 140, 4, 1, 6, 2, -4 }, // 0x2D '-' + { 141, 2, 1, 5, 2, 0 }, // 0x2E '.' + { 142, 8, 13, 5, 0, -12 }, // 0x2F '/' + { 155, 9, 13, 10, 2, -12 }, // 0x30 '0' + { 170, 5, 13, 10, 4, -12 }, // 0x31 '1' + { 179, 11, 13, 10, 1, -12 }, // 0x32 '2' + { 197, 10, 13, 10, 1, -12 }, // 0x33 '3' + { 214, 9, 13, 10, 1, -12 }, // 0x34 '4' + { 229, 11, 13, 10, 1, -12 }, // 0x35 '5' + { 247, 10, 13, 10, 2, -12 }, // 0x36 '6' + { 264, 10, 13, 10, 2, -12 }, // 0x37 '7' + { 281, 10, 13, 10, 1, -12 }, // 0x38 '8' + { 298, 10, 13, 10, 1, -12 }, // 0x39 '9' + { 315, 4, 9, 5, 2, -8 }, // 0x3A ':' + { 320, 5, 12, 5, 1, -8 }, // 0x3B ';' + { 328, 9, 9, 11, 2, -8 }, // 0x3C '<' + { 339, 10, 4, 11, 1, -5 }, // 0x3D '=' + { 344, 9, 9, 11, 1, -7 }, // 0x3E '>' + { 355, 9, 13, 10, 3, -12 }, // 0x3F '?' + { 370, 18, 16, 18, 1, -12 }, // 0x40 '@' + { 406, 12, 13, 12, 0, -12 }, // 0x41 'A' + { 426, 12, 13, 12, 1, -12 }, // 0x42 'B' + { 446, 12, 13, 13, 2, -12 }, // 0x43 'C' + { 466, 13, 13, 13, 1, -12 }, // 0x44 'D' + { 488, 12, 13, 12, 1, -12 }, // 0x45 'E' + { 508, 12, 13, 11, 1, -12 }, // 0x46 'F' + { 528, 13, 13, 14, 2, -12 }, // 0x47 'G' + { 550, 13, 13, 13, 1, -12 }, // 0x48 'H' + { 572, 4, 13, 5, 2, -12 }, // 0x49 'I' + { 579, 10, 13, 9, 1, -12 }, // 0x4A 'J' + { 596, 14, 13, 12, 1, -12 }, // 0x4B 'K' + { 619, 9, 13, 10, 1, -12 }, // 0x4C 'L' + { 634, 16, 13, 15, 1, -12 }, // 0x4D 'M' + { 660, 13, 13, 13, 1, -12 }, // 0x4E 'N' + { 682, 13, 13, 14, 2, -12 }, // 0x4F 'O' + { 704, 12, 13, 12, 1, -12 }, // 0x50 'P' + { 724, 13, 14, 14, 2, -12 }, // 0x51 'Q' + { 747, 13, 13, 13, 1, -12 }, // 0x52 'R' + { 769, 12, 13, 12, 1, -12 }, // 0x53 'S' + { 789, 10, 13, 11, 3, -12 }, // 0x54 'T' + { 806, 12, 13, 13, 2, -12 }, // 0x55 'U' + { 826, 11, 13, 12, 3, -12 }, // 0x56 'V' + { 844, 16, 13, 17, 3, -12 }, // 0x57 'W' + { 870, 14, 13, 12, 0, -12 }, // 0x58 'X' + { 893, 12, 13, 12, 3, -12 }, // 0x59 'Y' + { 913, 12, 13, 11, 1, -12 }, // 0x5A 'Z' + { 933, 7, 17, 5, 0, -12 }, // 0x5B '[' + { 948, 2, 13, 5, 3, -12 }, // 0x5C '\' + { 952, 7, 17, 5, 0, -12 }, // 0x5D ']' + { 967, 7, 7, 8, 2, -12 }, // 0x5E '^' + { 974, 11, 1, 10, -1, 3 }, // 0x5F '_' + { 976, 3, 3, 6, 3, -12 }, // 0x60 '`' + { 978, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 991, 10, 13, 10, 1, -12 }, // 0x62 'b' + { 1008, 9, 10, 9, 1, -9 }, // 0x63 'c' + { 1020, 11, 13, 10, 1, -12 }, // 0x64 'd' + { 1038, 10, 10, 10, 1, -9 }, // 0x65 'e' + { 1051, 6, 13, 5, 1, -12 }, // 0x66 'f' + { 1061, 10, 14, 10, 0, -9 }, // 0x67 'g' + { 1079, 10, 13, 10, 1, -12 }, // 0x68 'h' + { 1096, 4, 13, 4, 1, -12 }, // 0x69 'i' + { 1103, 6, 17, 4, -1, -12 }, // 0x6A 'j' + { 1116, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 1131, 4, 13, 4, 1, -12 }, // 0x6C 'l' + { 1138, 15, 10, 15, 1, -9 }, // 0x6D 'm' + { 1157, 10, 11, 10, 1, -10 }, // 0x6E 'n' + { 1171, 10, 10, 10, 1, -9 }, // 0x6F 'o' + { 1184, 11, 14, 10, 0, -9 }, // 0x70 'p' + { 1204, 10, 14, 10, 1, -9 }, // 0x71 'q' + { 1222, 7, 10, 6, 1, -9 }, // 0x72 'r' + { 1231, 8, 10, 9, 1, -9 }, // 0x73 's' + { 1241, 4, 12, 5, 2, -11 }, // 0x74 't' + { 1247, 9, 10, 10, 2, -9 }, // 0x75 'u' + { 1259, 9, 10, 9, 2, -9 }, // 0x76 'v' + { 1271, 13, 10, 13, 2, -9 }, // 0x77 'w' + { 1288, 11, 10, 9, 0, -9 }, // 0x78 'x' + { 1302, 11, 14, 9, 0, -9 }, // 0x79 'y' + { 1322, 9, 10, 9, 1, -9 }, // 0x7A 'z' + { 1334, 5, 17, 6, 2, -12 }, // 0x7B '{' + { 1345, 4, 17, 5, 1, -12 }, // 0x7C '|' + { 1354, 5, 17, 6, 0, -12 }, // 0x7D '}' + { 1365, 9, 3, 11, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeSansOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansOblique9pt7bBitmaps, + (GFXglyph *)FreeSansOblique9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 2041 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h new file mode 100644 index 000000000..48ad3da69 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h @@ -0,0 +1,259 @@ +const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, + 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, + 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, + 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, + 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, + 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, + 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, + 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, + 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, + 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, + 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, + 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, + 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, + 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, + 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, + 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, + 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, + 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, + 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, + 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, + 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, + 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, + 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, + 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, + 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, + 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, + 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, + 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, + 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, + 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, + 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, + 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, + 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, + 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, + 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, + 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, + 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, + 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, + 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, + 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, + 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, + 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, + 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, + 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, + 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, + 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, + 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, + 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, + 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, + 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, + 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, + 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, + 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, + 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, + 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, + 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, + 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, + 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, + 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, + 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, + 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, + 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, + 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, + 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, + 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, + 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, + 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, + 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, + 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, + 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, + 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, + 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, + 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, + 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, + 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, + 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, + 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, + 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, + 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, + 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, + 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, + 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, + 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, + 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, + 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, + 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, + 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, + 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, + 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, + 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, + 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, + 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, + 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, + 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, + 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, + 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, + 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, + 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, + 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, + 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, + 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, + 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, + 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, + 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, + 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, + 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, + 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, + 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, + 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, + 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, + 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, + 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, + 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, + 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, + 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, + 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, + 0x62, 0x41, 0xC0 }; + +const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 16, 8, 3, -15 }, // 0x21 '!' + { 4, 6, 6, 10, 1, -15 }, // 0x22 '"' + { 9, 12, 16, 12, 0, -15 }, // 0x23 '#' + { 33, 10, 18, 12, 1, -16 }, // 0x24 '$' + { 56, 18, 17, 20, 1, -16 }, // 0x25 '%' + { 95, 17, 16, 19, 1, -15 }, // 0x26 '&' + { 129, 2, 6, 5, 1, -15 }, // 0x27 ''' + { 131, 6, 20, 8, 1, -15 }, // 0x28 '(' + { 146, 6, 20, 8, 1, -15 }, // 0x29 ')' + { 161, 8, 10, 12, 3, -14 }, // 0x2A '*' + { 171, 11, 11, 14, 1, -10 }, // 0x2B '+' + { 187, 3, 6, 6, 2, -2 }, // 0x2C ',' + { 190, 6, 1, 8, 1, -5 }, // 0x2D '-' + { 191, 2, 3, 6, 2, -2 }, // 0x2E '.' + { 192, 7, 17, 7, 0, -16 }, // 0x2F '/' + { 207, 10, 17, 12, 1, -16 }, // 0x30 '0' + { 229, 6, 17, 12, 3, -16 }, // 0x31 '1' + { 242, 10, 15, 12, 1, -14 }, // 0x32 '2' + { 261, 10, 16, 12, 1, -15 }, // 0x33 '3' + { 281, 10, 16, 12, 1, -15 }, // 0x34 '4' + { 301, 10, 17, 12, 1, -16 }, // 0x35 '5' + { 323, 10, 17, 12, 1, -16 }, // 0x36 '6' + { 345, 10, 16, 12, 0, -15 }, // 0x37 '7' + { 365, 10, 17, 12, 1, -16 }, // 0x38 '8' + { 387, 10, 18, 12, 1, -16 }, // 0x39 '9' + { 410, 2, 12, 6, 2, -11 }, // 0x3A ':' + { 413, 4, 15, 6, 2, -11 }, // 0x3B ';' + { 421, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 441, 12, 6, 14, 1, -8 }, // 0x3D '=' + { 450, 12, 13, 14, 1, -11 }, // 0x3E '>' + { 470, 8, 17, 11, 2, -16 }, // 0x3F '?' + { 487, 17, 16, 21, 2, -15 }, // 0x40 '@' + { 521, 17, 16, 17, 0, -15 }, // 0x41 'A' + { 555, 12, 16, 15, 1, -15 }, // 0x42 'B' + { 579, 15, 16, 16, 1, -15 }, // 0x43 'C' + { 609, 16, 16, 17, 0, -15 }, // 0x44 'D' + { 641, 14, 16, 15, 0, -15 }, // 0x45 'E' + { 669, 14, 16, 14, 0, -15 }, // 0x46 'F' + { 697, 16, 16, 17, 1, -15 }, // 0x47 'G' + { 729, 16, 16, 17, 0, -15 }, // 0x48 'H' + { 761, 6, 16, 8, 1, -15 }, // 0x49 'I' + { 773, 8, 16, 9, 0, -15 }, // 0x4A 'J' + { 789, 16, 16, 17, 1, -15 }, // 0x4B 'K' + { 821, 15, 16, 15, 0, -15 }, // 0x4C 'L' + { 851, 19, 16, 21, 1, -15 }, // 0x4D 'M' + { 889, 16, 16, 17, 1, -15 }, // 0x4E 'N' + { 921, 15, 16, 17, 1, -15 }, // 0x4F 'O' + { 951, 12, 16, 14, 0, -15 }, // 0x50 'P' + { 975, 16, 20, 17, 1, -15 }, // 0x51 'Q' + { 1015, 15, 16, 16, 0, -15 }, // 0x52 'R' + { 1045, 11, 16, 13, 0, -15 }, // 0x53 'S' + { 1067, 15, 16, 15, 0, -15 }, // 0x54 'T' + { 1097, 16, 16, 17, 1, -15 }, // 0x55 'U' + { 1129, 17, 16, 17, 0, -15 }, // 0x56 'V' + { 1163, 22, 16, 23, 0, -15 }, // 0x57 'W' + { 1207, 17, 16, 17, 0, -15 }, // 0x58 'X' + { 1241, 16, 16, 17, 0, -15 }, // 0x59 'Y' + { 1273, 14, 16, 15, 1, -15 }, // 0x5A 'Z' + { 1301, 5, 20, 8, 2, -15 }, // 0x5B '[' + { 1314, 7, 17, 7, 0, -16 }, // 0x5C '\' + { 1329, 5, 20, 8, 1, -15 }, // 0x5D ']' + { 1342, 10, 9, 11, 1, -15 }, // 0x5E '^' + { 1354, 12, 1, 12, 0, 3 }, // 0x5F '_' + { 1356, 5, 4, 6, 0, -15 }, // 0x60 '`' + { 1359, 10, 11, 10, 1, -10 }, // 0x61 'a' + { 1373, 10, 17, 12, 1, -16 }, // 0x62 'b' + { 1395, 8, 11, 11, 1, -10 }, // 0x63 'c' + { 1406, 10, 17, 12, 1, -16 }, // 0x64 'd' + { 1428, 10, 11, 11, 1, -10 }, // 0x65 'e' + { 1442, 9, 17, 9, 0, -16 }, // 0x66 'f' + { 1462, 12, 16, 11, 0, -10 }, // 0x67 'g' + { 1486, 11, 17, 12, 0, -16 }, // 0x68 'h' + { 1510, 5, 16, 7, 0, -15 }, // 0x69 'i' + { 1520, 6, 21, 8, 0, -15 }, // 0x6A 'j' + { 1536, 11, 17, 12, 1, -16 }, // 0x6B 'k' + { 1560, 5, 17, 6, 0, -16 }, // 0x6C 'l' + { 1571, 18, 11, 19, 0, -10 }, // 0x6D 'm' + { 1596, 11, 11, 12, 0, -10 }, // 0x6E 'n' + { 1612, 10, 11, 12, 1, -10 }, // 0x6F 'o' + { 1626, 11, 16, 12, 0, -10 }, // 0x70 'p' + { 1648, 10, 16, 12, 1, -10 }, // 0x71 'q' + { 1668, 8, 11, 8, 0, -10 }, // 0x72 'r' + { 1679, 7, 11, 9, 1, -10 }, // 0x73 's' + { 1689, 6, 13, 7, 1, -12 }, // 0x74 't' + { 1699, 10, 11, 12, 1, -10 }, // 0x75 'u' + { 1713, 11, 11, 11, 0, -10 }, // 0x76 'v' + { 1729, 16, 11, 16, 0, -10 }, // 0x77 'w' + { 1751, 11, 11, 12, 0, -10 }, // 0x78 'x' + { 1767, 11, 16, 11, 0, -10 }, // 0x79 'y' + { 1789, 10, 11, 10, 0, -10 }, // 0x7A 'z' + { 1803, 5, 21, 12, 2, -16 }, // 0x7B '{' + { 1817, 1, 17, 5, 2, -16 }, // 0x7C '|' + { 1820, 5, 21, 12, 5, -15 }, // 0x7D '}' + { 1834, 12, 3, 12, 0, -6 } }; // 0x7E '~' + +const GFXfont FreeSerif12pt7b PROGMEM = { + (uint8_t *)FreeSerif12pt7bBitmaps, + (GFXglyph *)FreeSerif12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2511 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h new file mode 100644 index 000000000..7d19dd183 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h @@ -0,0 +1,429 @@ +const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { + 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, + 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, + 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, + 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, + 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, + 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, + 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, + 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, + 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, + 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, + 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, + 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, + 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, + 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, + 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, + 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, + 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, + 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, + 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, + 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, + 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, + 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, + 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, + 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, + 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, + 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, + 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, + 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, + 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, + 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, + 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, + 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, + 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, + 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, + 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, + 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, + 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, + 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, + 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, + 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, + 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, + 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, + 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, + 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, + 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, + 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, + 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, + 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, + 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, + 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, + 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, + 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, + 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, + 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, + 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, + 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, + 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, + 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, + 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, + 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, + 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, + 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, + 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, + 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, + 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, + 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, + 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, + 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, + 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, + 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, + 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, + 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, + 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, + 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, + 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, + 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, + 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, + 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, + 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, + 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, + 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, + 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, + 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, + 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, + 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, + 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, + 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, + 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, + 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, + 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, + 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, + 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, + 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, + 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, + 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, + 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, + 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, + 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, + 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, + 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, + 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, + 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, + 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, + 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, + 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, + 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, + 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, + 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, + 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, + 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, + 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, + 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, + 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, + 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, + 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, + 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, + 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, + 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, + 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, + 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, + 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, + 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, + 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, + 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, + 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, + 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, + 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, + 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, + 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, + 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, + 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, + 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, + 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, + 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, + 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, + 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, + 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, + 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, + 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, + 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, + 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, + 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, + 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, + 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, + 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, + 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, + 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, + 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, + 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, + 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, + 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, + 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, + 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, + 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, + 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, + 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, + 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, + 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, + 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, + 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, + 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, + 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, + 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, + 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, + 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, + 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, + 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, + 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, + 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, + 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, + 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, + 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, + 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, + 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, + 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, + 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, + 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, + 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, + 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, + 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, + 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, + 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, + 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, + 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, + 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, + 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, + 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, + 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, + 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, + 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, + 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, + 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, + 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, + 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, + 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C }; + +const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 4, 24, 12, 5, -23 }, // 0x21 '!' + { 12, 8, 9, 14, 3, -23 }, // 0x22 '"' + { 21, 17, 23, 17, 0, -22 }, // 0x23 '#' + { 70, 13, 27, 17, 2, -24 }, // 0x24 '$' + { 114, 25, 23, 29, 2, -22 }, // 0x25 '%' + { 186, 25, 25, 27, 1, -24 }, // 0x26 '&' + { 265, 3, 9, 7, 2, -23 }, // 0x27 ''' + { 269, 9, 30, 12, 2, -23 }, // 0x28 '(' + { 303, 9, 30, 12, 1, -22 }, // 0x29 ')' + { 337, 12, 14, 18, 3, -23 }, // 0x2A '*' + { 358, 16, 18, 20, 2, -17 }, // 0x2B '+' + { 394, 4, 9, 9, 2, -3 }, // 0x2C ',' + { 399, 8, 2, 12, 1, -8 }, // 0x2D '-' + { 401, 4, 4, 9, 2, -3 }, // 0x2E '.' + { 403, 10, 24, 10, 0, -23 }, // 0x2F '/' + { 433, 16, 24, 18, 1, -23 }, // 0x30 '0' + { 481, 10, 24, 18, 3, -23 }, // 0x31 '1' + { 511, 16, 24, 17, 1, -23 }, // 0x32 '2' + { 559, 13, 24, 17, 2, -23 }, // 0x33 '3' + { 598, 16, 23, 18, 0, -22 }, // 0x34 '4' + { 644, 13, 24, 17, 2, -23 }, // 0x35 '5' + { 683, 16, 24, 18, 1, -23 }, // 0x36 '6' + { 731, 14, 23, 18, 1, -22 }, // 0x37 '7' + { 772, 12, 25, 18, 2, -24 }, // 0x38 '8' + { 810, 16, 26, 17, 1, -24 }, // 0x39 '9' + { 862, 4, 17, 9, 2, -16 }, // 0x3A ':' + { 871, 5, 22, 9, 2, -16 }, // 0x3B ';' + { 885, 18, 18, 20, 1, -17 }, // 0x3C '<' + { 926, 18, 9, 20, 1, -12 }, // 0x3D '=' + { 947, 18, 18, 20, 1, -17 }, // 0x3E '>' + { 988, 13, 25, 16, 2, -24 }, // 0x3F '?' + { 1029, 24, 25, 30, 3, -24 }, // 0x40 '@' + { 1104, 24, 23, 25, 1, -22 }, // 0x41 'A' + { 1173, 20, 23, 22, 1, -22 }, // 0x42 'B' + { 1231, 22, 24, 23, 1, -23 }, // 0x43 'C' + { 1297, 23, 23, 25, 1, -22 }, // 0x44 'D' + { 1364, 20, 23, 21, 2, -22 }, // 0x45 'E' + { 1422, 17, 23, 20, 2, -22 }, // 0x46 'F' + { 1471, 23, 24, 25, 1, -23 }, // 0x47 'G' + { 1540, 22, 23, 25, 2, -22 }, // 0x48 'H' + { 1604, 9, 23, 11, 2, -22 }, // 0x49 'I' + { 1630, 12, 23, 13, 0, -22 }, // 0x4A 'J' + { 1665, 23, 23, 25, 2, -22 }, // 0x4B 'K' + { 1732, 19, 23, 21, 2, -22 }, // 0x4C 'L' + { 1787, 29, 23, 31, 1, -22 }, // 0x4D 'M' + { 1871, 23, 23, 25, 1, -22 }, // 0x4E 'N' + { 1938, 23, 24, 25, 1, -23 }, // 0x4F 'O' + { 2007, 18, 23, 20, 1, -22 }, // 0x50 'P' + { 2059, 23, 30, 25, 1, -23 }, // 0x51 'Q' + { 2146, 21, 23, 23, 2, -22 }, // 0x52 'R' + { 2207, 16, 24, 19, 1, -23 }, // 0x53 'S' + { 2255, 20, 23, 21, 1, -22 }, // 0x54 'T' + { 2313, 22, 23, 25, 2, -22 }, // 0x55 'U' + { 2377, 24, 23, 25, 0, -22 }, // 0x56 'V' + { 2446, 33, 23, 33, 0, -22 }, // 0x57 'W' + { 2541, 25, 23, 25, 0, -22 }, // 0x58 'X' + { 2613, 24, 23, 25, 1, -22 }, // 0x59 'Y' + { 2682, 21, 23, 21, 0, -22 }, // 0x5A 'Z' + { 2743, 7, 28, 12, 3, -22 }, // 0x5B '[' + { 2768, 10, 24, 10, 0, -23 }, // 0x5C '\' + { 2798, 7, 28, 12, 2, -22 }, // 0x5D ']' + { 2823, 15, 13, 16, 1, -22 }, // 0x5E '^' + { 2848, 18, 2, 17, 0, 3 }, // 0x5F '_' + { 2853, 8, 6, 9, 1, -23 }, // 0x60 '`' + { 2859, 13, 16, 15, 2, -15 }, // 0x61 'a' + { 2885, 16, 25, 17, 1, -24 }, // 0x62 'b' + { 2935, 14, 16, 16, 1, -15 }, // 0x63 'c' + { 2963, 16, 25, 17, 1, -24 }, // 0x64 'd' + { 3013, 13, 16, 16, 1, -15 }, // 0x65 'e' + { 3039, 13, 25, 13, 0, -24 }, // 0x66 'f' + { 3080, 16, 24, 16, 1, -15 }, // 0x67 'g' + { 3128, 16, 25, 17, 1, -24 }, // 0x68 'h' + { 3178, 8, 24, 10, 0, -23 }, // 0x69 'i' + { 3202, 9, 32, 12, 0, -23 }, // 0x6A 'j' + { 3238, 17, 25, 18, 1, -24 }, // 0x6B 'k' + { 3292, 8, 25, 9, 0, -24 }, // 0x6C 'l' + { 3317, 26, 16, 27, 1, -15 }, // 0x6D 'm' + { 3369, 16, 16, 17, 1, -15 }, // 0x6E 'n' + { 3401, 16, 16, 17, 1, -15 }, // 0x6F 'o' + { 3433, 16, 24, 17, 1, -15 }, // 0x70 'p' + { 3481, 16, 24, 17, 1, -15 }, // 0x71 'q' + { 3529, 11, 16, 12, 1, -15 }, // 0x72 'r' + { 3551, 10, 16, 13, 1, -15 }, // 0x73 's' + { 3571, 8, 19, 10, 2, -18 }, // 0x74 't' + { 3590, 16, 16, 17, 1, -15 }, // 0x75 'u' + { 3622, 16, 16, 16, 0, -15 }, // 0x76 'v' + { 3654, 24, 16, 24, 0, -15 }, // 0x77 'w' + { 3702, 17, 16, 17, 0, -15 }, // 0x78 'x' + { 3736, 16, 24, 16, 0, -15 }, // 0x79 'y' + { 3784, 14, 16, 15, 0, -15 }, // 0x7A 'z' + { 3812, 8, 30, 17, 3, -23 }, // 0x7B '{' + { 3842, 2, 24, 7, 2, -23 }, // 0x7C '|' + { 3848, 8, 30, 17, 6, -22 }, // 0x7D '}' + { 3878, 16, 4, 17, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSerif18pt7b PROGMEM = { + (uint8_t *)FreeSerif18pt7bBitmaps, + (GFXglyph *)FreeSerif18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4558 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h new file mode 100644 index 000000000..99ff3f497 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h @@ -0,0 +1,690 @@ +const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { + 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, + 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, + 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, + 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, + 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, + 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, + 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, + 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, + 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, + 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, + 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, + 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, + 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, + 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, + 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, + 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, + 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, + 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, + 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, + 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, + 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, + 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, + 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, + 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, + 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, + 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, + 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, + 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, + 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, + 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, + 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, + 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, + 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, + 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, + 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, + 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, + 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, + 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, + 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, + 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, + 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, + 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, + 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, + 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, + 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, + 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, + 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, + 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, + 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, + 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, + 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, + 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, + 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, + 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, + 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, + 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, + 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, + 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, + 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, + 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, + 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, + 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, + 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, + 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, + 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, + 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, + 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, + 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, + 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, + 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, + 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, + 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, + 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, + 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, + 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, + 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, + 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, + 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, + 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, + 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, + 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, + 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, + 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, + 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, + 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, + 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, + 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, + 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, + 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, + 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, + 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, + 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, + 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, + 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, + 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, + 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, + 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, + 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, + 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, + 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, + 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, + 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, + 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, + 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, + 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, + 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, + 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, + 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, + 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, + 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, + 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, + 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, + 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, + 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, + 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, + 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, + 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, + 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, + 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, + 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, + 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, + 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, + 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, + 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, + 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, + 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, + 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, + 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, + 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, + 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, + 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, + 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, + 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, + 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, + 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, + 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, + 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, + 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, + 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, + 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, + 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, + 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, + 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, + 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, + 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, + 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, + 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, + 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, + 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, + 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, + 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, + 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, + 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, + 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, + 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, + 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, + 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, + 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, + 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, + 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, + 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, + 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, + 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, + 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, + 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, + 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, + 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, + 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, + 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, + 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, + 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, + 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, + 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, + 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, + 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, + 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, + 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, + 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, + 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, + 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, + 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, + 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, + 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, + 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, + 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, + 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, + 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, + 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, + 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, + 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, + 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, + 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, + 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, + 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, + 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, + 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, + 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, + 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, + 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, + 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, + 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, + 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, + 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, + 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, + 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, + 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, + 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, + 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, + 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, + 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, + 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, + 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, + 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, + 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, + 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, + 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, + 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, + 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, + 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, + 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, + 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, + 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, + 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, + 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, + 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, + 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, + 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, + 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, + 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, + 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, + 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, + 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, + 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, + 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, + 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, + 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, + 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, + 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, + 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, + 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, + 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, + 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, + 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, + 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, + 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, + 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, + 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, + 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, + 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, + 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, + 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, + 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, + 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, + 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, + 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, + 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, + 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, + 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, + 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, + 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, + 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, + 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, + 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, + 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, + 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, + 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, + 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, + 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, + 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, + 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, + 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, + 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, + 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, + 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, + 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, + 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, + 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, + 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, + 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, + 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, + 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, + 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, + 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, + 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, + 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, + 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, + 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, + 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, + 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, + 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, + 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, + 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, + 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, + 0x07, 0xC0 }; + +const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 5, 32, 16, 6, -31 }, // 0x21 '!' + { 20, 12, 12, 19, 4, -31 }, // 0x22 '"' + { 38, 23, 31, 23, 0, -30 }, // 0x23 '#' + { 128, 19, 37, 24, 2, -33 }, // 0x24 '$' + { 216, 33, 32, 39, 3, -30 }, // 0x25 '%' + { 348, 32, 33, 37, 2, -31 }, // 0x26 '&' + { 480, 4, 12, 9, 3, -31 }, // 0x27 ''' + { 486, 12, 40, 16, 2, -31 }, // 0x28 '(' + { 546, 12, 40, 16, 2, -30 }, // 0x29 ')' + { 606, 16, 19, 24, 4, -30 }, // 0x2A '*' + { 644, 23, 23, 27, 2, -22 }, // 0x2B '+' + { 711, 6, 11, 12, 2, -4 }, // 0x2C ',' + { 720, 11, 2, 16, 2, -10 }, // 0x2D '-' + { 723, 5, 5, 12, 3, -3 }, // 0x2E '.' + { 727, 14, 32, 14, 0, -30 }, // 0x2F '/' + { 783, 22, 33, 23, 1, -31 }, // 0x30 '0' + { 874, 13, 32, 24, 5, -31 }, // 0x31 '1' + { 926, 21, 31, 23, 1, -30 }, // 0x32 '2' + { 1008, 18, 32, 23, 2, -30 }, // 0x33 '3' + { 1080, 21, 31, 24, 1, -30 }, // 0x34 '4' + { 1162, 19, 33, 24, 2, -31 }, // 0x35 '5' + { 1241, 21, 33, 23, 2, -31 }, // 0x36 '6' + { 1328, 20, 31, 24, 1, -30 }, // 0x37 '7' + { 1406, 18, 33, 23, 3, -31 }, // 0x38 '8' + { 1481, 21, 33, 24, 1, -31 }, // 0x39 '9' + { 1568, 5, 22, 12, 4, -20 }, // 0x3A ':' + { 1582, 6, 27, 12, 3, -20 }, // 0x3B ';' + { 1603, 24, 25, 27, 1, -24 }, // 0x3C '<' + { 1678, 24, 11, 27, 1, -16 }, // 0x3D '=' + { 1711, 24, 25, 27, 2, -23 }, // 0x3E '>' + { 1786, 17, 32, 21, 3, -31 }, // 0x3F '?' + { 1854, 32, 33, 41, 4, -31 }, // 0x40 '@' + { 1986, 32, 32, 34, 1, -31 }, // 0x41 'A' + { 2114, 27, 31, 30, 0, -30 }, // 0x42 'B' + { 2219, 28, 33, 31, 2, -31 }, // 0x43 'C' + { 2335, 31, 31, 34, 1, -30 }, // 0x44 'D' + { 2456, 27, 31, 29, 2, -30 }, // 0x45 'E' + { 2561, 24, 31, 27, 2, -30 }, // 0x46 'F' + { 2654, 31, 33, 35, 2, -31 }, // 0x47 'G' + { 2782, 30, 31, 34, 2, -30 }, // 0x48 'H' + { 2899, 13, 31, 15, 1, -30 }, // 0x49 'I' + { 2950, 17, 32, 18, 0, -30 }, // 0x4A 'J' + { 3018, 32, 31, 33, 1, -30 }, // 0x4B 'K' + { 3142, 26, 31, 29, 2, -30 }, // 0x4C 'L' + { 3243, 39, 31, 41, 1, -30 }, // 0x4D 'M' + { 3395, 32, 32, 34, 1, -30 }, // 0x4E 'N' + { 3523, 30, 33, 34, 2, -31 }, // 0x4F 'O' + { 3647, 23, 31, 27, 2, -30 }, // 0x50 'P' + { 3737, 31, 40, 34, 2, -31 }, // 0x51 'Q' + { 3892, 28, 31, 31, 2, -30 }, // 0x52 'R' + { 4001, 21, 33, 25, 2, -31 }, // 0x53 'S' + { 4088, 27, 31, 28, 1, -30 }, // 0x54 'T' + { 4193, 32, 32, 34, 1, -30 }, // 0x55 'U' + { 4321, 32, 32, 33, 0, -30 }, // 0x56 'V' + { 4449, 44, 32, 45, 0, -30 }, // 0x57 'W' + { 4625, 33, 31, 34, 0, -30 }, // 0x58 'X' + { 4753, 32, 31, 33, 0, -30 }, // 0x59 'Y' + { 4877, 27, 31, 29, 1, -30 }, // 0x5A 'Z' + { 4982, 9, 38, 16, 4, -30 }, // 0x5B '[' + { 5025, 14, 32, 14, 0, -30 }, // 0x5C '\' + { 5081, 9, 38, 16, 3, -30 }, // 0x5D ']' + { 5124, 20, 17, 22, 1, -30 }, // 0x5E '^' + { 5167, 24, 2, 23, 0, 5 }, // 0x5F '_' + { 5173, 10, 8, 12, 1, -31 }, // 0x60 '`' + { 5183, 18, 21, 20, 1, -20 }, // 0x61 'a' + { 5231, 21, 32, 24, 1, -31 }, // 0x62 'b' + { 5315, 19, 21, 21, 1, -20 }, // 0x63 'c' + { 5365, 22, 32, 23, 1, -31 }, // 0x64 'd' + { 5453, 18, 21, 21, 1, -20 }, // 0x65 'e' + { 5501, 17, 33, 18, 0, -32 }, // 0x66 'f' + { 5572, 21, 31, 22, 1, -20 }, // 0x67 'g' + { 5654, 22, 32, 23, 0, -31 }, // 0x68 'h' + { 5742, 11, 32, 13, 0, -31 }, // 0x69 'i' + { 5786, 12, 42, 16, 0, -31 }, // 0x6A 'j' + { 5849, 23, 32, 24, 1, -31 }, // 0x6B 'k' + { 5941, 11, 32, 12, 0, -31 }, // 0x6C 'l' + { 5985, 35, 21, 37, 1, -20 }, // 0x6D 'm' + { 6077, 22, 21, 23, 0, -20 }, // 0x6E 'n' + { 6135, 22, 21, 23, 1, -20 }, // 0x6F 'o' + { 6193, 21, 31, 24, 1, -20 }, // 0x70 'p' + { 6275, 21, 31, 23, 1, -20 }, // 0x71 'q' + { 6357, 15, 21, 16, 1, -20 }, // 0x72 'r' + { 6397, 13, 21, 17, 2, -20 }, // 0x73 's' + { 6432, 12, 26, 13, 1, -25 }, // 0x74 't' + { 6471, 22, 21, 23, 1, -20 }, // 0x75 'u' + { 6529, 22, 22, 22, 0, -20 }, // 0x76 'v' + { 6590, 32, 22, 32, 0, -20 }, // 0x77 'w' + { 6678, 22, 21, 23, 0, -20 }, // 0x78 'x' + { 6736, 22, 31, 22, 0, -20 }, // 0x79 'y' + { 6822, 18, 21, 20, 1, -20 }, // 0x7A 'z' + { 6870, 11, 41, 23, 5, -31 }, // 0x7B '{' + { 6927, 3, 32, 9, 3, -30 }, // 0x7C '|' + { 6939, 11, 41, 23, 7, -31 }, // 0x7D '}' + { 6996, 22, 5, 23, 1, -13 } }; // 0x7E '~' + +const GFXfont FreeSerif24pt7b PROGMEM = { + (uint8_t *)FreeSerif24pt7bBitmaps, + (GFXglyph *)FreeSerif24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 7682 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h new file mode 100644 index 000000000..cdb20c77b --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h @@ -0,0 +1,195 @@ +const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, + 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, + 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, + 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, + 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, + 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, + 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, + 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, + 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, + 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, + 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, + 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, + 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, + 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, + 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, + 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, + 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, + 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, + 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, + 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, + 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, + 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, + 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, + 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, + 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, + 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, + 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, + 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, + 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, + 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, + 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, + 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, + 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, + 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, + 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, + 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, + 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, + 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, + 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, + 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, + 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, + 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, + 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, + 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, + 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, + 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, + 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, + 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, + 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, + 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, + 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, + 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, + 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, + 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, + 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, + 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, + 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, + 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, + 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, + 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, + 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, + 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, + 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, + 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, + 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, + 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, + 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, + 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, + 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, + 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, + 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, + 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, + 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, + 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, + 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0 }; + +const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 2, 12, 6, 2, -11 }, // 0x21 '!' + { 3, 5, 4, 7, 1, -11 }, // 0x22 '"' + { 6, 9, 12, 9, 0, -11 }, // 0x23 '#' + { 20, 8, 14, 9, 1, -12 }, // 0x24 '$' + { 34, 13, 12, 15, 1, -11 }, // 0x25 '%' + { 54, 13, 13, 14, 1, -12 }, // 0x26 '&' + { 76, 2, 4, 4, 1, -11 }, // 0x27 ''' + { 77, 5, 15, 6, 1, -11 }, // 0x28 '(' + { 87, 5, 15, 6, 0, -11 }, // 0x29 ')' + { 97, 6, 8, 9, 3, -11 }, // 0x2A '*' + { 103, 9, 9, 10, 0, -8 }, // 0x2B '+' + { 114, 2, 3, 4, 2, 0 }, // 0x2C ',' + { 115, 4, 1, 6, 1, -3 }, // 0x2D '-' + { 116, 2, 2, 5, 1, -1 }, // 0x2E '.' + { 117, 5, 12, 5, 0, -11 }, // 0x2F '/' + { 125, 9, 13, 9, 0, -12 }, // 0x30 '0' + { 140, 5, 13, 9, 2, -12 }, // 0x31 '1' + { 149, 8, 12, 9, 1, -11 }, // 0x32 '2' + { 161, 8, 12, 9, 0, -11 }, // 0x33 '3' + { 173, 7, 12, 9, 1, -11 }, // 0x34 '4' + { 184, 8, 12, 9, 0, -11 }, // 0x35 '5' + { 196, 8, 13, 9, 1, -12 }, // 0x36 '6' + { 209, 8, 12, 9, 0, -11 }, // 0x37 '7' + { 221, 7, 13, 9, 1, -12 }, // 0x38 '8' + { 233, 8, 14, 9, 1, -12 }, // 0x39 '9' + { 247, 2, 8, 5, 1, -7 }, // 0x3A ':' + { 249, 3, 10, 5, 1, -7 }, // 0x3B ';' + { 253, 9, 9, 10, 1, -8 }, // 0x3C '<' + { 264, 9, 5, 10, 1, -6 }, // 0x3D '=' + { 270, 10, 9, 10, 0, -8 }, // 0x3E '>' + { 282, 7, 13, 8, 1, -12 }, // 0x3F '?' + { 294, 12, 13, 16, 2, -12 }, // 0x40 '@' + { 314, 13, 12, 13, 0, -11 }, // 0x41 'A' + { 334, 11, 12, 11, 0, -11 }, // 0x42 'B' + { 351, 11, 12, 12, 1, -11 }, // 0x43 'C' + { 368, 12, 12, 13, 0, -11 }, // 0x44 'D' + { 386, 10, 12, 11, 1, -11 }, // 0x45 'E' + { 401, 9, 12, 10, 1, -11 }, // 0x46 'F' + { 415, 12, 12, 13, 1, -11 }, // 0x47 'G' + { 433, 11, 12, 13, 1, -11 }, // 0x48 'H' + { 450, 4, 12, 6, 1, -11 }, // 0x49 'I' + { 456, 6, 12, 7, 0, -11 }, // 0x4A 'J' + { 465, 12, 12, 13, 1, -11 }, // 0x4B 'K' + { 483, 10, 12, 11, 1, -11 }, // 0x4C 'L' + { 498, 15, 12, 16, 0, -11 }, // 0x4D 'M' + { 521, 11, 12, 13, 1, -11 }, // 0x4E 'N' + { 538, 11, 13, 13, 1, -12 }, // 0x4F 'O' + { 556, 9, 12, 10, 1, -11 }, // 0x50 'P' + { 570, 11, 16, 13, 1, -12 }, // 0x51 'Q' + { 592, 11, 12, 12, 1, -11 }, // 0x52 'R' + { 609, 9, 12, 10, 0, -11 }, // 0x53 'S' + { 623, 11, 12, 11, 0, -11 }, // 0x54 'T' + { 640, 11, 12, 13, 1, -11 }, // 0x55 'U' + { 657, 12, 12, 13, 0, -11 }, // 0x56 'V' + { 675, 17, 12, 17, 0, -11 }, // 0x57 'W' + { 701, 13, 12, 13, 0, -11 }, // 0x58 'X' + { 721, 12, 12, 13, 0, -11 }, // 0x59 'Y' + { 739, 11, 12, 11, 0, -11 }, // 0x5A 'Z' + { 756, 3, 15, 6, 2, -11 }, // 0x5B '[' + { 762, 5, 12, 5, 0, -11 }, // 0x5C '\' + { 770, 3, 15, 6, 1, -11 }, // 0x5D ']' + { 776, 8, 7, 8, 0, -11 }, // 0x5E '^' + { 783, 9, 1, 9, 0, 2 }, // 0x5F '_' + { 785, 4, 3, 5, 0, -11 }, // 0x60 '`' + { 787, 7, 8, 8, 1, -7 }, // 0x61 'a' + { 794, 9, 13, 9, 0, -12 }, // 0x62 'b' + { 809, 7, 8, 8, 0, -7 }, // 0x63 'c' + { 816, 9, 13, 9, 0, -12 }, // 0x64 'd' + { 831, 8, 8, 8, 0, -7 }, // 0x65 'e' + { 839, 7, 13, 7, 1, -12 }, // 0x66 'f' + { 851, 10, 12, 8, 0, -7 }, // 0x67 'g' + { 866, 9, 13, 9, 0, -12 }, // 0x68 'h' + { 881, 4, 11, 5, 1, -10 }, // 0x69 'i' + { 887, 5, 15, 6, 0, -10 }, // 0x6A 'j' + { 897, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 912, 4, 13, 5, 1, -12 }, // 0x6C 'l' + { 919, 14, 8, 14, 0, -7 }, // 0x6D 'm' + { 933, 9, 8, 9, 0, -7 }, // 0x6E 'n' + { 942, 9, 8, 9, 0, -7 }, // 0x6F 'o' + { 951, 9, 12, 9, 0, -7 }, // 0x70 'p' + { 965, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 979, 6, 8, 6, 0, -7 }, // 0x72 'r' + { 985, 6, 8, 7, 1, -7 }, // 0x73 's' + { 991, 5, 9, 5, 0, -8 }, // 0x74 't' + { 997, 9, 8, 9, 0, -7 }, // 0x75 'u' + { 1006, 8, 8, 8, 0, -7 }, // 0x76 'v' + { 1014, 12, 8, 12, 0, -7 }, // 0x77 'w' + { 1026, 9, 8, 9, 0, -7 }, // 0x78 'x' + { 1035, 8, 12, 8, 0, -7 }, // 0x79 'y' + { 1047, 7, 8, 7, 1, -7 }, // 0x7A 'z' + { 1054, 5, 16, 9, 1, -12 }, // 0x7B '{' + { 1064, 1, 12, 4, 1, -11 }, // 0x7C '|' + { 1066, 5, 16, 9, 3, -11 }, // 0x7D '}' + { 1076, 9, 3, 9, 0, -5 } }; // 0x7E '~' + +const GFXfont FreeSerif9pt7b PROGMEM = { + (uint8_t *)FreeSerif9pt7bBitmaps, + (GFXglyph *)FreeSerif9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1752 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h new file mode 100644 index 000000000..1d499811f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h @@ -0,0 +1,271 @@ +const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { + 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, + 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, + 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, + 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, + 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, + 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, + 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, + 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, + 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, + 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, + 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, + 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, + 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, + 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, + 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, + 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, + 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, + 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, + 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, + 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, + 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, + 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, + 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, + 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, + 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, + 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, + 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, + 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, + 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, + 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, + 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, + 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, + 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, + 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, + 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, + 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, + 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, + 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, + 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, + 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, + 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, + 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, + 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, + 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, + 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, + 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, + 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, + 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, + 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, + 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, + 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, + 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, + 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, + 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, + 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, + 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, + 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, + 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, + 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, + 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, + 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, + 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, + 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, + 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, + 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, + 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, + 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, + 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, + 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, + 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, + 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, + 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, + 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, + 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, + 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, + 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, + 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, + 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, + 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, + 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, + 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, + 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, + 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, + 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, + 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, + 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, + 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, + 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, + 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, + 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, + 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, + 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, + 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, + 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, + 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, + 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, + 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, + 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, + 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, + 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, + 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, + 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, + 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, + 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, + 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, + 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, + 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, + 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, + 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, + 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, + 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, + 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, + 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, + 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, + 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, + 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, + 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, + 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, + 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, + 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, + 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, + 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, + 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0 }; + +const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 4, 16, 8, 2, -15 }, // 0x21 '!' + { 8, 9, 7, 13, 2, -15 }, // 0x22 '"' + { 16, 12, 16, 12, 0, -15 }, // 0x23 '#' + { 40, 11, 20, 12, 1, -17 }, // 0x24 '$' + { 68, 18, 16, 24, 3, -15 }, // 0x25 '%' + { 104, 18, 16, 20, 1, -15 }, // 0x26 '&' + { 140, 3, 7, 7, 2, -15 }, // 0x27 ''' + { 143, 6, 21, 8, 1, -16 }, // 0x28 '(' + { 159, 6, 21, 8, 1, -16 }, // 0x29 ')' + { 175, 9, 10, 12, 2, -15 }, // 0x2A '*' + { 187, 12, 12, 16, 2, -11 }, // 0x2B '+' + { 205, 4, 8, 6, 1, -3 }, // 0x2C ',' + { 209, 6, 3, 8, 1, -6 }, // 0x2D '-' + { 212, 4, 4, 6, 1, -3 }, // 0x2E '.' + { 214, 8, 17, 7, -1, -15 }, // 0x2F '/' + { 231, 11, 16, 12, 1, -15 }, // 0x30 '0' + { 253, 9, 16, 12, 1, -15 }, // 0x31 '1' + { 271, 12, 16, 12, 0, -15 }, // 0x32 '2' + { 295, 11, 16, 12, 1, -15 }, // 0x33 '3' + { 317, 10, 16, 12, 1, -15 }, // 0x34 '4' + { 337, 11, 16, 12, 1, -15 }, // 0x35 '5' + { 359, 11, 16, 12, 1, -15 }, // 0x36 '6' + { 381, 11, 16, 12, 0, -15 }, // 0x37 '7' + { 403, 11, 16, 12, 1, -15 }, // 0x38 '8' + { 425, 11, 16, 12, 1, -15 }, // 0x39 '9' + { 447, 4, 11, 8, 2, -10 }, // 0x3A ':' + { 453, 4, 15, 8, 2, -10 }, // 0x3B ';' + { 461, 14, 14, 16, 1, -12 }, // 0x3C '<' + { 486, 14, 8, 16, 1, -9 }, // 0x3D '=' + { 500, 14, 14, 16, 1, -12 }, // 0x3E '>' + { 525, 10, 16, 12, 1, -15 }, // 0x3F '?' + { 545, 16, 16, 22, 3, -15 }, // 0x40 '@' + { 577, 17, 16, 17, 0, -15 }, // 0x41 'A' + { 611, 14, 16, 16, 1, -15 }, // 0x42 'B' + { 639, 15, 16, 17, 1, -15 }, // 0x43 'C' + { 669, 17, 16, 18, 0, -15 }, // 0x44 'D' + { 703, 15, 16, 16, 1, -15 }, // 0x45 'E' + { 733, 14, 16, 15, 1, -15 }, // 0x46 'F' + { 761, 16, 16, 19, 1, -15 }, // 0x47 'G' + { 793, 16, 16, 19, 2, -15 }, // 0x48 'H' + { 825, 8, 16, 9, 1, -15 }, // 0x49 'I' + { 841, 12, 18, 12, 0, -15 }, // 0x4A 'J' + { 868, 17, 16, 19, 2, -15 }, // 0x4B 'K' + { 902, 14, 16, 16, 2, -15 }, // 0x4C 'L' + { 930, 20, 16, 23, 1, -15 }, // 0x4D 'M' + { 970, 15, 16, 17, 1, -15 }, // 0x4E 'N' + { 1000, 17, 16, 19, 1, -15 }, // 0x4F 'O' + { 1034, 12, 16, 15, 2, -15 }, // 0x50 'P' + { 1058, 17, 20, 19, 1, -15 }, // 0x51 'Q' + { 1101, 16, 16, 17, 1, -15 }, // 0x52 'R' + { 1133, 12, 16, 14, 1, -15 }, // 0x53 'S' + { 1157, 15, 16, 15, 0, -15 }, // 0x54 'T' + { 1187, 15, 16, 17, 1, -15 }, // 0x55 'U' + { 1217, 17, 17, 17, 0, -15 }, // 0x56 'V' + { 1254, 23, 16, 24, 0, -15 }, // 0x57 'W' + { 1300, 17, 16, 17, 0, -15 }, // 0x58 'X' + { 1334, 16, 16, 17, 1, -15 }, // 0x59 'Y' + { 1366, 15, 16, 16, 0, -15 }, // 0x5A 'Z' + { 1396, 5, 20, 8, 2, -15 }, // 0x5B '[' + { 1409, 8, 17, 7, -1, -15 }, // 0x5C '\' + { 1426, 5, 20, 8, 2, -15 }, // 0x5D ']' + { 1439, 10, 9, 14, 2, -15 }, // 0x5E '^' + { 1451, 12, 1, 12, 0, 4 }, // 0x5F '_' + { 1453, 5, 4, 8, 0, -16 }, // 0x60 '`' + { 1456, 11, 11, 12, 1, -10 }, // 0x61 'a' + { 1472, 12, 16, 13, 1, -15 }, // 0x62 'b' + { 1496, 9, 11, 10, 1, -10 }, // 0x63 'c' + { 1509, 12, 16, 13, 1, -15 }, // 0x64 'd' + { 1533, 10, 11, 11, 1, -10 }, // 0x65 'e' + { 1547, 8, 16, 9, 1, -15 }, // 0x66 'f' + { 1563, 11, 16, 12, 1, -10 }, // 0x67 'g' + { 1585, 12, 16, 13, 1, -15 }, // 0x68 'h' + { 1609, 6, 16, 7, 1, -15 }, // 0x69 'i' + { 1621, 8, 21, 10, 0, -15 }, // 0x6A 'j' + { 1642, 13, 16, 13, 1, -15 }, // 0x6B 'k' + { 1668, 6, 16, 7, 1, -15 }, // 0x6C 'l' + { 1680, 19, 11, 20, 1, -10 }, // 0x6D 'm' + { 1707, 12, 11, 13, 1, -10 }, // 0x6E 'n' + { 1724, 11, 11, 12, 1, -10 }, // 0x6F 'o' + { 1740, 12, 16, 13, 1, -10 }, // 0x70 'p' + { 1764, 12, 16, 13, 1, -10 }, // 0x71 'q' + { 1788, 10, 11, 10, 1, -10 }, // 0x72 'r' + { 1802, 8, 11, 10, 1, -10 }, // 0x73 's' + { 1813, 8, 15, 8, 1, -14 }, // 0x74 't' + { 1828, 12, 11, 14, 1, -10 }, // 0x75 'u' + { 1845, 11, 11, 12, 0, -10 }, // 0x76 'v' + { 1861, 17, 11, 17, 0, -10 }, // 0x77 'w' + { 1885, 12, 11, 12, 0, -10 }, // 0x78 'x' + { 1902, 11, 16, 12, 0, -10 }, // 0x79 'y' + { 1924, 10, 11, 11, 1, -10 }, // 0x7A 'z' + { 1938, 8, 21, 9, 0, -16 }, // 0x7B '{' + { 1959, 2, 17, 5, 2, -15 }, // 0x7C '|' + { 1964, 8, 21, 9, 2, -16 }, // 0x7D '}' + { 1985, 11, 4, 12, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSerifBold12pt7b PROGMEM = { + (uint8_t *)FreeSerifBold12pt7bBitmaps, + (GFXglyph *)FreeSerifBold12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2663 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h new file mode 100644 index 000000000..11d3c7ea2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h @@ -0,0 +1,462 @@ +const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { + 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, + 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, + 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, + 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, + 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, + 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, + 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, + 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, + 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, + 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, + 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, + 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, + 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, + 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, + 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, + 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, + 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, + 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, + 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, + 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, + 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, + 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, + 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, + 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, + 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, + 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, + 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, + 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, + 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, + 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, + 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, + 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, + 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, + 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, + 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, + 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, + 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, + 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, + 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, + 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, + 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, + 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, + 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, + 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, + 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, + 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, + 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, + 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, + 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, + 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, + 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, + 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, + 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, + 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, + 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, + 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, + 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, + 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, + 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, + 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, + 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, + 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, + 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, + 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, + 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, + 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, + 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, + 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, + 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, + 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, + 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, + 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, + 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, + 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, + 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, + 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, + 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, + 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, + 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, + 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, + 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, + 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, + 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, + 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, + 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, + 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, + 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, + 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, + 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, + 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, + 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, + 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, + 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, + 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, + 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, + 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, + 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, + 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, + 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, + 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, + 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, + 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, + 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, + 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, + 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, + 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, + 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, + 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, + 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, + 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, + 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, + 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, + 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, + 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, + 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, + 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, + 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, + 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, + 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, + 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, + 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, + 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, + 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, + 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, + 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, + 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, + 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, + 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, + 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, + 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, + 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, + 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, + 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, + 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, + 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, + 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, + 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, + 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, + 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, + 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, + 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, + 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, + 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, + 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, + 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, + 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, + 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, + 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, + 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, + 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, + 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, + 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, + 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, + 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, + 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, + 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, + 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, + 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, + 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, + 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, + 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, + 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, + 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, + 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, + 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, + 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, + 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, + 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, + 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, + 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, + 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, + 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, + 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, + 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, + 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, + 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, + 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, + 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, + 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, + 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, + 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, + 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, + 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, + 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, + 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, + 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, + 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, + 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, + 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, + 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, + 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, + 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, + 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, + 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, + 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, + 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, + 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, + 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, + 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, + 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, + 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, + 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, + 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, + 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, + 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, + 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, + 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, + 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, + 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, + 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, + 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, + 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, + 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, + 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, + 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, + 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, + 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, + 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, + 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, + 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, + 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, + 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, + 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, + 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, + 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, + 0x7C }; + +const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 6, 24, 12, 3, -23 }, // 0x21 '!' + { 18, 13, 10, 19, 3, -23 }, // 0x22 '"' + { 35, 18, 24, 17, 0, -23 }, // 0x23 '#' + { 89, 15, 28, 17, 1, -25 }, // 0x24 '$' + { 142, 27, 24, 35, 4, -23 }, // 0x25 '%' + { 223, 26, 25, 29, 2, -23 }, // 0x26 '&' + { 305, 4, 10, 10, 3, -23 }, // 0x27 ''' + { 310, 9, 30, 12, 2, -23 }, // 0x28 '(' + { 344, 9, 30, 12, 1, -23 }, // 0x29 ')' + { 378, 14, 15, 18, 2, -23 }, // 0x2A '*' + { 405, 19, 19, 24, 2, -17 }, // 0x2B '+' + { 451, 6, 12, 9, 1, -5 }, // 0x2C ',' + { 460, 8, 4, 12, 2, -9 }, // 0x2D '-' + { 464, 6, 6, 9, 1, -5 }, // 0x2E '.' + { 469, 11, 25, 10, -1, -23 }, // 0x2F '/' + { 504, 16, 24, 18, 1, -23 }, // 0x30 '0' + { 552, 12, 24, 18, 3, -23 }, // 0x31 '1' + { 588, 16, 24, 17, 1, -23 }, // 0x32 '2' + { 636, 16, 24, 18, 0, -23 }, // 0x33 '3' + { 684, 15, 24, 18, 1, -23 }, // 0x34 '4' + { 729, 15, 24, 18, 1, -23 }, // 0x35 '5' + { 774, 16, 24, 18, 1, -23 }, // 0x36 '6' + { 822, 16, 24, 17, 1, -23 }, // 0x37 '7' + { 870, 16, 24, 17, 1, -23 }, // 0x38 '8' + { 918, 16, 24, 18, 1, -23 }, // 0x39 '9' + { 966, 6, 16, 12, 3, -15 }, // 0x3A ':' + { 978, 7, 22, 12, 2, -15 }, // 0x3B ';' + { 998, 19, 20, 24, 2, -18 }, // 0x3C '<' + { 1046, 19, 12, 24, 2, -14 }, // 0x3D '=' + { 1075, 19, 20, 24, 3, -18 }, // 0x3E '>' + { 1123, 14, 24, 18, 2, -23 }, // 0x3F '?' + { 1165, 24, 25, 33, 4, -23 }, // 0x40 '@' + { 1240, 24, 24, 25, 1, -23 }, // 0x41 'A' + { 1312, 21, 24, 23, 1, -23 }, // 0x42 'B' + { 1375, 23, 25, 25, 1, -23 }, // 0x43 'C' + { 1447, 23, 24, 26, 1, -23 }, // 0x44 'D' + { 1516, 21, 24, 23, 2, -23 }, // 0x45 'E' + { 1579, 19, 24, 22, 2, -23 }, // 0x46 'F' + { 1636, 25, 25, 27, 1, -23 }, // 0x47 'G' + { 1715, 24, 24, 27, 2, -23 }, // 0x48 'H' + { 1787, 11, 24, 14, 2, -23 }, // 0x49 'I' + { 1820, 16, 27, 18, 0, -23 }, // 0x4A 'J' + { 1874, 25, 24, 27, 2, -23 }, // 0x4B 'K' + { 1949, 21, 24, 23, 2, -23 }, // 0x4C 'L' + { 2012, 31, 24, 33, 1, -23 }, // 0x4D 'M' + { 2105, 23, 24, 25, 1, -23 }, // 0x4E 'N' + { 2174, 25, 25, 27, 1, -23 }, // 0x4F 'O' + { 2253, 19, 24, 22, 2, -23 }, // 0x50 'P' + { 2310, 25, 30, 27, 1, -23 }, // 0x51 'Q' + { 2404, 23, 24, 25, 2, -23 }, // 0x52 'R' + { 2473, 16, 25, 20, 2, -23 }, // 0x53 'S' + { 2523, 21, 24, 23, 1, -23 }, // 0x54 'T' + { 2586, 22, 25, 25, 2, -23 }, // 0x55 'U' + { 2655, 24, 24, 25, 0, -23 }, // 0x56 'V' + { 2727, 34, 25, 34, 0, -23 }, // 0x57 'W' + { 2834, 24, 24, 25, 1, -23 }, // 0x58 'X' + { 2906, 24, 24, 25, 1, -23 }, // 0x59 'Y' + { 2978, 21, 24, 23, 1, -23 }, // 0x5A 'Z' + { 3041, 8, 29, 12, 2, -23 }, // 0x5B '[' + { 3070, 11, 25, 10, -1, -23 }, // 0x5C '\' + { 3105, 8, 29, 12, 2, -23 }, // 0x5D ']' + { 3134, 15, 13, 20, 3, -23 }, // 0x5E '^' + { 3159, 18, 3, 17, 0, 3 }, // 0x5F '_' + { 3166, 8, 6, 12, 0, -23 }, // 0x60 '`' + { 3172, 16, 16, 18, 1, -15 }, // 0x61 'a' + { 3204, 18, 24, 19, 1, -23 }, // 0x62 'b' + { 3258, 14, 16, 15, 1, -15 }, // 0x63 'c' + { 3286, 18, 24, 19, 1, -23 }, // 0x64 'd' + { 3340, 14, 16, 16, 1, -15 }, // 0x65 'e' + { 3368, 11, 24, 14, 2, -23 }, // 0x66 'f' + { 3401, 17, 23, 17, 1, -15 }, // 0x67 'g' + { 3450, 17, 24, 19, 1, -23 }, // 0x68 'h' + { 3501, 7, 24, 10, 2, -23 }, // 0x69 'i' + { 3522, 11, 31, 14, 0, -23 }, // 0x6A 'j' + { 3565, 18, 24, 19, 1, -23 }, // 0x6B 'k' + { 3619, 7, 24, 10, 1, -23 }, // 0x6C 'l' + { 3640, 27, 16, 29, 1, -15 }, // 0x6D 'm' + { 3694, 17, 16, 19, 1, -15 }, // 0x6E 'n' + { 3728, 17, 16, 18, 1, -15 }, // 0x6F 'o' + { 3762, 19, 23, 19, 0, -15 }, // 0x70 'p' + { 3817, 17, 23, 19, 1, -15 }, // 0x71 'q' + { 3866, 13, 16, 15, 1, -15 }, // 0x72 'r' + { 3892, 12, 16, 14, 1, -15 }, // 0x73 's' + { 3916, 10, 21, 12, 1, -20 }, // 0x74 't' + { 3943, 18, 16, 20, 1, -15 }, // 0x75 'u' + { 3979, 17, 16, 17, 0, -15 }, // 0x76 'v' + { 4013, 24, 16, 25, 0, -15 }, // 0x77 'w' + { 4061, 16, 16, 18, 1, -15 }, // 0x78 'x' + { 4093, 16, 23, 17, 0, -15 }, // 0x79 'y' + { 4139, 14, 16, 16, 0, -15 }, // 0x7A 'z' + { 4167, 11, 31, 14, 1, -24 }, // 0x7B '{' + { 4210, 3, 25, 8, 2, -23 }, // 0x7C '|' + { 4220, 11, 31, 14, 3, -24 }, // 0x7D '}' + { 4263, 16, 5, 18, 1, -11 } }; // 0x7E '~' + +const GFXfont FreeSerifBold18pt7b PROGMEM = { + (uint8_t *)FreeSerifBold18pt7bBitmaps, + (GFXglyph *)FreeSerifBold18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4945 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h new file mode 100644 index 000000000..0eb2d0b1a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h @@ -0,0 +1,759 @@ +const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { + 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, + 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, + 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, + 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, + 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, + 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, + 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, + 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, + 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, + 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, + 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, + 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, + 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, + 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, + 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, + 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, + 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, + 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, + 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, + 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, + 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, + 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, + 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, + 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, + 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, + 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, + 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, + 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, + 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, + 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, + 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, + 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, + 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, + 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, + 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, + 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, + 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, + 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, + 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, + 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, + 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, + 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, + 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, + 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, + 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, + 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, + 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, + 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, + 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, + 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, + 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, + 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, + 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, + 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, + 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, + 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, + 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, + 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, + 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, + 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, + 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, + 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, + 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, + 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, + 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, + 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, + 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, + 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, + 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, + 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, + 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, + 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, + 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, + 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, + 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, + 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, + 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, + 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, + 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, + 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, + 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, + 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, + 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, + 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, + 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, + 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, + 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, + 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, + 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, + 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, + 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, + 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, + 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, + 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, + 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, + 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, + 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, + 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, + 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, + 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, + 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, + 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, + 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, + 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, + 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, + 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, + 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, + 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, + 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, + 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, + 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, + 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, + 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, + 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, + 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, + 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, + 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, + 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, + 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, + 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, + 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, + 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, + 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, + 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, + 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, + 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, + 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, + 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, + 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, + 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, + 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, + 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, + 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, + 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, + 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, + 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, + 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, + 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, + 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, + 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, + 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, + 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, + 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, + 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, + 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, + 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, + 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, + 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, + 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, + 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, + 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, + 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, + 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, + 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, + 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, + 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, + 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, + 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, + 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, + 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, + 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, + 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, + 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, + 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, + 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, + 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, + 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, + 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, + 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, + 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, + 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, + 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, + 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, + 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, + 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, + 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, + 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, + 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, + 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, + 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, + 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, + 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, + 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, + 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, + 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, + 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, + 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, + 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, + 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, + 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, + 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, + 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, + 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, + 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, + 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, + 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, + 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, + 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, + 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, + 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, + 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, + 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, + 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, + 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, + 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, + 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, + 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, + 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, + 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, + 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, + 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, + 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, + 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, + 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, + 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, + 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, + 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, + 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, + 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, + 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, + 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, + 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, + 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, + 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, + 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, + 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, + 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, + 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, + 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, + 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, + 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, + 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, + 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, + 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, + 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, + 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, + 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, + 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, + 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, + 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, + 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, + 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, + 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, + 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, + 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, + 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, + 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, + 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, + 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, + 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, + 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, + 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, + 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, + 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, + 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, + 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, + 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, + 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, + 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, + 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, + 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, + 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, + 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, + 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, + 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, + 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, + 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, + 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, + 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, + 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, + 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, + 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, + 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, + 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, + 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, + 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, + 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, + 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, + 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, + 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, + 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, + 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, + 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, + 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, + 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, + 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, + 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, + 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, + 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, + 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, + 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, + 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, + 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, + 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, + 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, + 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, + 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, + 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, + 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, + 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, + 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, + 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, + 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, + 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, + 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, + 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, + 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, + 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, + 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, + 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, + 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, + 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, + 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, + 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, + 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, + 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, + 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, + 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, + 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, + 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, + 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, + 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, + 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, + 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, + 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, + 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, + 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, + 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, + 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, + 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, + 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, + 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, + 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, + 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, + 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, + 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, + 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, + 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, + 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00 }; + +const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 8, 34, 16, 4, -32 }, // 0x21 '!' + { 34, 17, 13, 26, 4, -32 }, // 0x22 '"' + { 62, 23, 33, 23, 0, -32 }, // 0x23 '#' + { 157, 21, 39, 24, 1, -34 }, // 0x24 '$' + { 260, 35, 34, 47, 6, -32 }, // 0x25 '%' + { 409, 34, 34, 39, 3, -32 }, // 0x26 '&' + { 554, 5, 13, 13, 4, -32 }, // 0x27 ''' + { 563, 12, 41, 16, 2, -32 }, // 0x28 '(' + { 625, 12, 41, 16, 1, -32 }, // 0x29 ')' + { 687, 18, 21, 24, 3, -32 }, // 0x2A '*' + { 735, 26, 25, 32, 3, -24 }, // 0x2B '+' + { 817, 8, 15, 12, 2, -6 }, // 0x2C ',' + { 832, 11, 5, 16, 2, -12 }, // 0x2D '-' + { 839, 8, 8, 12, 2, -6 }, // 0x2E '.' + { 847, 15, 33, 13, -1, -32 }, // 0x2F '/' + { 909, 22, 34, 23, 1, -32 }, // 0x30 '0' + { 1003, 18, 33, 23, 3, -32 }, // 0x31 '1' + { 1078, 21, 33, 24, 1, -32 }, // 0x32 '2' + { 1165, 21, 34, 24, 1, -32 }, // 0x33 '3' + { 1255, 21, 33, 24, 1, -32 }, // 0x34 '4' + { 1342, 20, 32, 23, 2, -31 }, // 0x35 '5' + { 1422, 21, 34, 24, 1, -32 }, // 0x36 '6' + { 1512, 21, 32, 23, 1, -31 }, // 0x37 '7' + { 1596, 21, 34, 23, 1, -32 }, // 0x38 '8' + { 1686, 22, 34, 23, 1, -32 }, // 0x39 '9' + { 1780, 8, 24, 16, 4, -22 }, // 0x3A ':' + { 1804, 9, 31, 16, 3, -22 }, // 0x3B ';' + { 1839, 26, 26, 32, 3, -24 }, // 0x3C '<' + { 1924, 26, 17, 32, 3, -20 }, // 0x3D '=' + { 1980, 26, 26, 32, 3, -24 }, // 0x3E '>' + { 2065, 18, 34, 24, 3, -32 }, // 0x3F '?' + { 2142, 33, 34, 44, 5, -32 }, // 0x40 '@' + { 2283, 32, 33, 34, 1, -32 }, // 0x41 'A' + { 2415, 28, 32, 31, 1, -31 }, // 0x42 'B' + { 2527, 30, 34, 33, 2, -32 }, // 0x43 'C' + { 2655, 32, 32, 34, 1, -31 }, // 0x44 'D' + { 2783, 28, 32, 32, 2, -31 }, // 0x45 'E' + { 2895, 25, 32, 29, 2, -31 }, // 0x46 'F' + { 2995, 33, 34, 36, 2, -32 }, // 0x47 'G' + { 3136, 33, 32, 37, 2, -31 }, // 0x48 'H' + { 3268, 15, 32, 18, 2, -31 }, // 0x49 'I' + { 3328, 22, 37, 24, 0, -31 }, // 0x4A 'J' + { 3430, 34, 32, 36, 2, -31 }, // 0x4B 'K' + { 3566, 28, 32, 31, 2, -31 }, // 0x4C 'L' + { 3678, 43, 32, 45, 0, -31 }, // 0x4D 'M' + { 3850, 31, 32, 34, 1, -31 }, // 0x4E 'N' + { 3974, 33, 34, 37, 2, -32 }, // 0x4F 'O' + { 4115, 26, 32, 30, 2, -31 }, // 0x50 'P' + { 4219, 33, 41, 37, 2, -32 }, // 0x51 'Q' + { 4389, 31, 32, 34, 2, -31 }, // 0x52 'R' + { 4513, 21, 34, 27, 3, -32 }, // 0x53 'S' + { 4603, 28, 32, 30, 1, -31 }, // 0x54 'T' + { 4715, 30, 33, 34, 2, -31 }, // 0x55 'U' + { 4839, 33, 32, 33, 0, -31 }, // 0x56 'V' + { 4971, 45, 33, 46, 1, -31 }, // 0x57 'W' + { 5157, 32, 32, 34, 1, -31 }, // 0x58 'X' + { 5285, 32, 32, 33, 1, -31 }, // 0x59 'Y' + { 5413, 28, 32, 30, 1, -31 }, // 0x5A 'Z' + { 5525, 11, 39, 16, 3, -31 }, // 0x5B '[' + { 5579, 15, 33, 13, -1, -32 }, // 0x5C '\' + { 5641, 11, 39, 16, 2, -31 }, // 0x5D ']' + { 5695, 21, 17, 27, 3, -31 }, // 0x5E '^' + { 5740, 24, 3, 23, 0, 5 }, // 0x5F '_' + { 5749, 11, 9, 16, 0, -33 }, // 0x60 '`' + { 5762, 22, 24, 23, 1, -22 }, // 0x61 'a' + { 5828, 25, 33, 26, 0, -31 }, // 0x62 'b' + { 5932, 19, 24, 20, 1, -22 }, // 0x63 'c' + { 5989, 24, 33, 26, 1, -31 }, // 0x64 'd' + { 6088, 18, 24, 21, 1, -22 }, // 0x65 'e' + { 6142, 17, 33, 18, 1, -32 }, // 0x66 'f' + { 6213, 19, 32, 24, 2, -22 }, // 0x67 'g' + { 6289, 24, 32, 26, 0, -31 }, // 0x68 'h' + { 6385, 11, 33, 14, 1, -32 }, // 0x69 'i' + { 6431, 14, 42, 18, 0, -32 }, // 0x6A 'j' + { 6505, 25, 32, 26, 0, -31 }, // 0x6B 'k' + { 6605, 11, 32, 13, 0, -31 }, // 0x6C 'l' + { 6649, 37, 23, 39, 0, -22 }, // 0x6D 'm' + { 6756, 24, 23, 26, 0, -22 }, // 0x6E 'n' + { 6825, 21, 24, 24, 1, -22 }, // 0x6F 'o' + { 6888, 24, 32, 26, 0, -22 }, // 0x70 'p' + { 6984, 24, 32, 26, 1, -22 }, // 0x71 'q' + { 7080, 19, 23, 20, 0, -22 }, // 0x72 'r' + { 7135, 15, 24, 19, 2, -22 }, // 0x73 's' + { 7180, 14, 31, 16, 1, -29 }, // 0x74 't' + { 7235, 25, 23, 27, 0, -21 }, // 0x75 'u' + { 7307, 22, 23, 23, 0, -21 }, // 0x76 'v' + { 7371, 33, 23, 33, 0, -21 }, // 0x77 'w' + { 7466, 22, 22, 24, 1, -21 }, // 0x78 'x' + { 7527, 21, 31, 23, 0, -21 }, // 0x79 'y' + { 7609, 19, 22, 21, 1, -21 }, // 0x7A 'z' + { 7662, 14, 42, 19, 1, -33 }, // 0x7B '{' + { 7736, 4, 33, 10, 3, -32 }, // 0x7C '|' + { 7753, 14, 42, 19, 4, -33 }, // 0x7D '}' + { 7827, 22, 7, 24, 1, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifBold24pt7b PROGMEM = { + (uint8_t *)FreeSerifBold24pt7bBitmaps, + (GFXglyph *)FreeSerifBold24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8519 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h new file mode 100644 index 000000000..52dbe36e1 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h @@ -0,0 +1,202 @@ +const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, + 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, + 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, + 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, + 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, + 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, + 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, + 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, + 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, + 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, + 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, + 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, + 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, + 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, + 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, + 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, + 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, + 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, + 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, + 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, + 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, + 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, + 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, + 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, + 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, + 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, + 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, + 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, + 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, + 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, + 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, + 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, + 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, + 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, + 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, + 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, + 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, + 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, + 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, + 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, + 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, + 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, + 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, + 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, + 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, + 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, + 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, + 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, + 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, + 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, + 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, + 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, + 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, + 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, + 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, + 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, + 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, + 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, + 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, + 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, + 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, + 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, + 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, + 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, + 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, + 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, + 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, + 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, + 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, + 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, + 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, + 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, + 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, + 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, + 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, + 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, + 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, + 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, + 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, + 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, + 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, + 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E }; + +const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 3, 12, 6, 1, -11 }, // 0x21 '!' + { 5, 6, 5, 10, 2, -11 }, // 0x22 '"' + { 9, 9, 13, 9, 0, -12 }, // 0x23 '#' + { 24, 8, 14, 9, 1, -12 }, // 0x24 '$' + { 38, 14, 12, 18, 2, -11 }, // 0x25 '%' + { 59, 13, 12, 15, 1, -11 }, // 0x26 '&' + { 79, 2, 5, 5, 1, -11 }, // 0x27 ''' + { 81, 4, 15, 6, 1, -11 }, // 0x28 '(' + { 89, 4, 15, 6, 1, -11 }, // 0x29 ')' + { 97, 7, 7, 9, 2, -11 }, // 0x2A '*' + { 104, 9, 9, 12, 1, -8 }, // 0x2B '+' + { 115, 3, 6, 4, 1, -2 }, // 0x2C ',' + { 118, 4, 2, 6, 1, -4 }, // 0x2D '-' + { 119, 3, 3, 4, 1, -2 }, // 0x2E '.' + { 121, 6, 13, 5, 0, -11 }, // 0x2F '/' + { 131, 9, 12, 9, 0, -11 }, // 0x30 '0' + { 145, 6, 12, 9, 1, -11 }, // 0x31 '1' + { 154, 9, 12, 9, 0, -11 }, // 0x32 '2' + { 168, 8, 12, 9, 0, -11 }, // 0x33 '3' + { 180, 8, 12, 9, 1, -11 }, // 0x34 '4' + { 192, 8, 12, 9, 1, -11 }, // 0x35 '5' + { 204, 8, 12, 9, 1, -11 }, // 0x36 '6' + { 216, 9, 12, 9, 0, -11 }, // 0x37 '7' + { 230, 8, 12, 9, 1, -11 }, // 0x38 '8' + { 242, 9, 12, 9, 0, -11 }, // 0x39 '9' + { 256, 3, 9, 6, 1, -8 }, // 0x3A ':' + { 260, 3, 12, 6, 2, -8 }, // 0x3B ';' + { 265, 10, 10, 12, 1, -9 }, // 0x3C '<' + { 278, 10, 5, 12, 1, -6 }, // 0x3D '=' + { 285, 10, 10, 12, 1, -8 }, // 0x3E '>' + { 298, 7, 12, 9, 1, -11 }, // 0x3F '?' + { 309, 13, 12, 17, 2, -11 }, // 0x40 '@' + { 329, 13, 12, 13, 0, -11 }, // 0x41 'A' + { 349, 11, 12, 12, 0, -11 }, // 0x42 'B' + { 366, 11, 12, 13, 1, -11 }, // 0x43 'C' + { 383, 11, 12, 13, 1, -11 }, // 0x44 'D' + { 400, 11, 12, 12, 1, -11 }, // 0x45 'E' + { 417, 10, 12, 11, 1, -11 }, // 0x46 'F' + { 432, 12, 12, 14, 1, -11 }, // 0x47 'G' + { 450, 12, 12, 14, 1, -11 }, // 0x48 'H' + { 468, 5, 12, 7, 1, -11 }, // 0x49 'I' + { 476, 8, 14, 9, 0, -11 }, // 0x4A 'J' + { 490, 13, 12, 14, 1, -11 }, // 0x4B 'K' + { 510, 11, 12, 12, 1, -11 }, // 0x4C 'L' + { 527, 16, 12, 17, 0, -11 }, // 0x4D 'M' + { 551, 11, 12, 13, 1, -11 }, // 0x4E 'N' + { 568, 12, 12, 14, 1, -11 }, // 0x4F 'O' + { 586, 10, 12, 11, 1, -11 }, // 0x50 'P' + { 601, 12, 15, 14, 1, -11 }, // 0x51 'Q' + { 624, 12, 12, 13, 1, -11 }, // 0x52 'R' + { 642, 8, 12, 10, 1, -11 }, // 0x53 'S' + { 654, 12, 12, 12, 0, -11 }, // 0x54 'T' + { 672, 11, 12, 13, 1, -11 }, // 0x55 'U' + { 689, 13, 13, 13, 0, -11 }, // 0x56 'V' + { 711, 18, 12, 18, 0, -11 }, // 0x57 'W' + { 738, 13, 12, 13, 0, -11 }, // 0x58 'X' + { 758, 13, 12, 13, 0, -11 }, // 0x59 'Y' + { 778, 11, 12, 12, 1, -11 }, // 0x5A 'Z' + { 795, 4, 15, 6, 1, -11 }, // 0x5B '[' + { 803, 6, 13, 5, 0, -11 }, // 0x5C '\' + { 813, 4, 15, 6, 1, -11 }, // 0x5D ']' + { 821, 8, 7, 10, 1, -11 }, // 0x5E '^' + { 828, 9, 1, 9, 0, 3 }, // 0x5F '_' + { 830, 4, 3, 6, 0, -12 }, // 0x60 '`' + { 832, 9, 9, 9, 0, -8 }, // 0x61 'a' + { 843, 10, 12, 10, 0, -11 }, // 0x62 'b' + { 858, 7, 9, 8, 0, -8 }, // 0x63 'c' + { 866, 10, 12, 10, 0, -11 }, // 0x64 'd' + { 881, 8, 9, 8, 0, -8 }, // 0x65 'e' + { 890, 7, 12, 7, 0, -11 }, // 0x66 'f' + { 901, 7, 13, 9, 1, -8 }, // 0x67 'g' + { 913, 10, 12, 10, 0, -11 }, // 0x68 'h' + { 928, 5, 12, 5, 0, -11 }, // 0x69 'i' + { 936, 6, 16, 7, 0, -11 }, // 0x6A 'j' + { 948, 10, 12, 10, 0, -11 }, // 0x6B 'k' + { 963, 5, 12, 5, 0, -11 }, // 0x6C 'l' + { 971, 15, 9, 15, 0, -8 }, // 0x6D 'm' + { 988, 10, 9, 10, 0, -8 }, // 0x6E 'n' + { 1000, 9, 9, 9, 0, -8 }, // 0x6F 'o' + { 1011, 10, 13, 10, 0, -8 }, // 0x70 'p' + { 1028, 10, 13, 10, 0, -8 }, // 0x71 'q' + { 1045, 8, 9, 8, 0, -8 }, // 0x72 'r' + { 1054, 5, 9, 7, 1, -8 }, // 0x73 's' + { 1060, 6, 11, 6, 0, -10 }, // 0x74 't' + { 1069, 10, 9, 10, 0, -8 }, // 0x75 'u' + { 1081, 9, 9, 9, 0, -8 }, // 0x76 'v' + { 1092, 12, 9, 13, 0, -8 }, // 0x77 'w' + { 1106, 9, 9, 9, 0, -8 }, // 0x78 'x' + { 1117, 8, 13, 9, 0, -8 }, // 0x79 'y' + { 1130, 7, 9, 8, 1, -8 }, // 0x7A 'z' + { 1138, 5, 16, 7, 0, -12 }, // 0x7B '{' + { 1148, 1, 13, 4, 1, -11 }, // 0x7C '|' + { 1150, 5, 16, 7, 2, -12 }, // 0x7D '}' + { 1160, 8, 2, 9, 1, -4 } }; // 0x7E '~' + +const GFXfont FreeSerifBold9pt7b PROGMEM = { + (uint8_t *)FreeSerifBold9pt7bBitmaps, + (GFXglyph *)FreeSerifBold9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1834 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h new file mode 100644 index 000000000..1f674e98d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h @@ -0,0 +1,292 @@ +const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { + 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, + 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, + 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, + 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, + 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, + 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, + 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, + 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, + 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, + 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, + 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, + 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, + 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, + 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, + 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, + 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, + 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, + 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, + 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, + 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, + 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, + 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, + 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, + 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, + 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, + 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, + 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, + 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, + 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, + 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, + 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, + 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, + 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, + 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, + 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, + 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, + 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, + 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, + 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, + 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, + 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, + 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, + 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, + 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, + 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, + 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, + 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, + 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, + 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, + 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, + 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, + 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, + 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, + 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, + 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, + 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, + 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, + 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, + 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, + 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, + 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, + 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, + 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, + 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, + 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, + 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, + 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, + 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, + 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, + 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, + 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, + 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, + 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, + 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, + 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, + 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, + 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, + 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, + 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, + 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, + 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, + 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, + 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, + 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, + 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, + 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, + 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, + 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, + 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, + 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, + 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, + 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, + 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, + 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, + 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, + 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, + 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, + 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, + 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, + 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, + 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, + 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, + 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, + 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, + 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, + 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, + 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, + 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, + 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, + 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, + 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, + 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, + 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, + 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, + 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, + 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, + 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, + 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, + 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, + 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, + 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, + 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, + 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, + 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, + 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, + 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, + 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, + 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, + 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, + 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, + 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, + 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, + 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, + 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, + 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, + 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, + 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, + 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, + 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, + 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, + 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, + 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, + 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, + 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, + 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, + 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, + 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, + 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, + 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, + 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, + 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, + 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0 }; + +const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 8, 17, 9, 2, -15 }, // 0x21 '!' + { 17, 9, 7, 13, 4, -15 }, // 0x22 '"' + { 25, 14, 16, 12, -1, -15 }, // 0x23 '#' + { 53, 12, 20, 12, 0, -17 }, // 0x24 '$' + { 83, 18, 18, 20, 1, -16 }, // 0x25 '%' + { 124, 16, 17, 19, 0, -15 }, // 0x26 '&' + { 158, 3, 7, 7, 3, -15 }, // 0x27 ''' + { 161, 7, 21, 8, 1, -15 }, // 0x28 '(' + { 180, 7, 21, 8, -1, -15 }, // 0x29 ')' + { 199, 10, 10, 12, 1, -15 }, // 0x2A '*' + { 212, 12, 12, 14, 1, -11 }, // 0x2B '+' + { 230, 5, 8, 6, -2, -3 }, // 0x2C ',' + { 235, 6, 3, 8, 0, -6 }, // 0x2D '-' + { 238, 4, 4, 6, 0, -2 }, // 0x2E '.' + { 240, 10, 16, 8, 0, -15 }, // 0x2F '/' + { 260, 11, 17, 12, 0, -15 }, // 0x30 '0' + { 284, 10, 17, 12, 0, -15 }, // 0x31 '1' + { 306, 11, 17, 12, 0, -15 }, // 0x32 '2' + { 330, 11, 17, 12, 0, -15 }, // 0x33 '3' + { 354, 13, 16, 12, 0, -15 }, // 0x34 '4' + { 380, 12, 17, 12, 0, -15 }, // 0x35 '5' + { 406, 11, 17, 12, 1, -15 }, // 0x36 '6' + { 430, 11, 16, 12, 2, -15 }, // 0x37 '7' + { 452, 11, 17, 12, 0, -15 }, // 0x38 '8' + { 476, 11, 17, 12, 0, -15 }, // 0x39 '9' + { 500, 7, 12, 6, 0, -10 }, // 0x3A ':' + { 511, 8, 15, 6, -1, -10 }, // 0x3B ';' + { 526, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 546, 12, 6, 14, 2, -8 }, // 0x3D '=' + { 555, 13, 13, 14, 1, -12 }, // 0x3E '>' + { 577, 9, 17, 12, 2, -15 }, // 0x3F '?' + { 597, 17, 16, 20, 1, -15 }, // 0x40 '@' + { 631, 16, 17, 17, 0, -15 }, // 0x41 'A' + { 665, 16, 17, 15, 0, -15 }, // 0x42 'B' + { 699, 15, 17, 15, 1, -15 }, // 0x43 'C' + { 731, 18, 17, 17, 0, -15 }, // 0x44 'D' + { 770, 17, 17, 15, 0, -15 }, // 0x45 'E' + { 807, 16, 17, 15, 0, -15 }, // 0x46 'F' + { 841, 17, 17, 17, 1, -15 }, // 0x47 'G' + { 878, 20, 17, 18, 0, -15 }, // 0x48 'H' + { 921, 10, 17, 9, 0, -15 }, // 0x49 'I' + { 943, 14, 18, 12, 0, -15 }, // 0x4A 'J' + { 975, 17, 17, 16, 0, -15 }, // 0x4B 'K' + { 1012, 15, 17, 15, 0, -15 }, // 0x4C 'L' + { 1044, 23, 17, 21, 0, -15 }, // 0x4D 'M' + { 1093, 19, 17, 17, 0, -15 }, // 0x4E 'N' + { 1134, 16, 17, 16, 1, -15 }, // 0x4F 'O' + { 1168, 16, 17, 14, 0, -15 }, // 0x50 'P' + { 1202, 16, 21, 16, 1, -15 }, // 0x51 'Q' + { 1244, 16, 17, 16, 0, -15 }, // 0x52 'R' + { 1278, 12, 17, 12, 0, -15 }, // 0x53 'S' + { 1304, 15, 17, 14, 2, -15 }, // 0x54 'T' + { 1336, 16, 17, 17, 3, -15 }, // 0x55 'U' + { 1370, 16, 16, 17, 3, -15 }, // 0x56 'V' + { 1402, 21, 16, 22, 3, -15 }, // 0x57 'W' + { 1444, 17, 17, 17, 0, -15 }, // 0x58 'X' + { 1481, 14, 17, 15, 3, -15 }, // 0x59 'Y' + { 1511, 15, 17, 13, 0, -15 }, // 0x5A 'Z' + { 1543, 10, 20, 8, -1, -15 }, // 0x5B '[' + { 1568, 6, 16, 10, 3, -15 }, // 0x5C '\' + { 1580, 9, 20, 8, -1, -15 }, // 0x5D ']' + { 1603, 10, 9, 14, 2, -15 }, // 0x5E '^' + { 1615, 12, 1, 12, 0, 4 }, // 0x5F '_' + { 1617, 5, 4, 8, 2, -15 }, // 0x60 '`' + { 1620, 12, 12, 12, 0, -10 }, // 0x61 'a' + { 1638, 11, 18, 12, 1, -16 }, // 0x62 'b' + { 1663, 9, 12, 10, 1, -10 }, // 0x63 'c' + { 1677, 14, 18, 12, 0, -16 }, // 0x64 'd' + { 1709, 9, 12, 10, 1, -10 }, // 0x65 'e' + { 1723, 14, 22, 12, -2, -16 }, // 0x66 'f' + { 1762, 13, 16, 12, -1, -10 }, // 0x67 'g' + { 1788, 13, 18, 13, 0, -16 }, // 0x68 'h' + { 1818, 6, 17, 7, 1, -15 }, // 0x69 'i' + { 1831, 11, 21, 8, -2, -15 }, // 0x6A 'j' + { 1860, 13, 18, 12, 0, -16 }, // 0x6B 'k' + { 1890, 7, 18, 7, 1, -16 }, // 0x6C 'l' + { 1906, 18, 12, 18, 0, -10 }, // 0x6D 'm' + { 1933, 12, 12, 13, 0, -10 }, // 0x6E 'n' + { 1951, 10, 12, 11, 1, -10 }, // 0x6F 'o' + { 1966, 14, 16, 12, -2, -10 }, // 0x70 'p' + { 1994, 12, 16, 12, 0, -10 }, // 0x71 'q' + { 2018, 10, 11, 10, 0, -10 }, // 0x72 'r' + { 2032, 9, 12, 9, 0, -10 }, // 0x73 's' + { 2046, 7, 15, 7, 1, -13 }, // 0x74 't' + { 2060, 12, 12, 13, 1, -10 }, // 0x75 'u' + { 2078, 10, 11, 11, 1, -10 }, // 0x76 'v' + { 2092, 15, 11, 16, 1, -10 }, // 0x77 'w' + { 2113, 13, 12, 11, -1, -10 }, // 0x78 'x' + { 2133, 11, 16, 10, -1, -10 }, // 0x79 'y' + { 2155, 10, 13, 10, 0, -10 }, // 0x7A 'z' + { 2172, 11, 21, 8, 0, -16 }, // 0x7B '{' + { 2201, 2, 16, 6, 3, -15 }, // 0x7C '|' + { 2205, 10, 21, 8, -3, -16 }, // 0x7D '}' + { 2232, 11, 4, 14, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2910 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h new file mode 100644 index 000000000..e24eea61f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h @@ -0,0 +1,500 @@ +const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, + 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, + 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, + 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, + 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, + 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, + 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, + 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, + 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, + 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, + 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, + 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, + 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, + 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, + 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, + 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, + 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, + 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, + 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, + 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, + 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, + 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, + 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, + 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, + 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, + 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, + 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, + 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, + 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, + 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, + 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, + 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, + 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, + 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, + 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, + 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, + 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, + 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, + 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, + 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, + 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, + 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, + 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, + 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, + 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, + 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, + 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, + 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, + 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, + 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, + 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, + 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, + 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, + 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, + 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, + 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, + 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, + 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, + 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, + 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, + 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, + 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, + 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, + 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, + 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, + 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, + 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, + 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, + 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, + 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, + 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, + 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, + 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, + 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, + 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, + 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, + 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, + 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, + 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, + 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, + 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, + 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, + 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, + 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, + 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, + 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, + 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, + 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, + 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, + 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, + 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, + 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, + 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, + 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, + 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, + 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, + 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, + 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, + 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, + 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, + 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, + 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, + 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, + 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, + 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, + 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, + 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, + 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, + 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, + 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, + 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, + 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, + 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, + 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, + 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, + 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, + 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, + 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, + 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, + 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, + 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, + 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, + 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, + 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, + 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, + 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, + 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, + 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, + 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, + 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, + 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, + 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, + 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, + 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, + 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, + 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, + 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, + 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, + 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, + 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, + 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, + 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, + 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, + 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, + 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, + 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, + 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, + 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, + 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, + 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, + 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, + 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, + 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, + 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, + 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, + 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, + 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, + 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, + 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, + 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, + 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, + 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, + 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, + 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, + 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, + 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, + 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, + 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, + 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, + 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, + 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, + 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, + 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, + 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, + 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, + 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, + 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, + 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, + 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, + 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, + 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, + 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, + 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, + 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, + 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, + 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, + 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, + 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, + 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, + 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, + 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, + 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, + 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, + 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, + 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, + 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, + 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, + 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, + 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, + 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, + 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, + 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, + 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, + 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, + 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, + 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, + 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, + 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, + 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, + 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, + 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, + 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, + 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, + 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, + 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, + 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, + 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, + 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, + 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, + 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, + 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, + 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, + 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, + 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, + 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, + 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, + 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, + 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, + 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, + 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, + 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, + 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, + 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C }; + +const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 11, 25, 14, 2, -23 }, // 0x21 '!' + { 35, 14, 10, 19, 4, -23 }, // 0x22 '"' + { 53, 20, 25, 17, -1, -24 }, // 0x23 '#' + { 116, 17, 29, 18, 0, -25 }, // 0x24 '$' + { 178, 27, 25, 29, 1, -23 }, // 0x25 '%' + { 263, 25, 25, 27, 0, -23 }, // 0x26 '&' + { 342, 5, 10, 10, 4, -23 }, // 0x27 ''' + { 349, 11, 30, 12, 1, -23 }, // 0x28 '(' + { 391, 11, 30, 12, -2, -23 }, // 0x29 ')' + { 433, 13, 15, 18, 2, -23 }, // 0x2A '*' + { 458, 17, 17, 20, 1, -16 }, // 0x2B '+' + { 495, 7, 11, 9, -2, -4 }, // 0x2C ',' + { 505, 9, 4, 12, 0, -9 }, // 0x2D '-' + { 510, 6, 5, 9, 0, -3 }, // 0x2E '.' + { 514, 14, 25, 12, 0, -23 }, // 0x2F '/' + { 558, 15, 25, 18, 1, -23 }, // 0x30 '0' + { 605, 15, 25, 17, 0, -23 }, // 0x31 '1' + { 652, 16, 25, 18, 0, -23 }, // 0x32 '2' + { 702, 15, 25, 17, 1, -23 }, // 0x33 '3' + { 749, 18, 24, 17, 0, -23 }, // 0x34 '4' + { 803, 17, 25, 18, 0, -23 }, // 0x35 '5' + { 857, 17, 25, 18, 1, -23 }, // 0x36 '6' + { 911, 16, 24, 17, 3, -23 }, // 0x37 '7' + { 959, 17, 25, 18, 0, -23 }, // 0x38 '8' + { 1013, 17, 25, 18, 0, -23 }, // 0x39 '9' + { 1067, 10, 17, 9, 0, -15 }, // 0x3A ':' + { 1089, 11, 22, 9, -1, -15 }, // 0x3B ';' + { 1120, 18, 19, 20, 1, -18 }, // 0x3C '<' + { 1163, 18, 10, 20, 2, -13 }, // 0x3D '=' + { 1186, 18, 19, 20, 2, -18 }, // 0x3E '>' + { 1229, 13, 25, 17, 3, -23 }, // 0x3F '?' + { 1270, 25, 25, 29, 2, -23 }, // 0x40 '@' + { 1349, 23, 25, 24, 0, -23 }, // 0x41 'A' + { 1421, 24, 25, 22, 0, -23 }, // 0x42 'B' + { 1496, 23, 25, 22, 1, -23 }, // 0x43 'C' + { 1568, 26, 25, 25, 0, -23 }, // 0x44 'D' + { 1650, 23, 25, 22, 0, -23 }, // 0x45 'E' + { 1722, 23, 25, 21, 0, -23 }, // 0x46 'F' + { 1794, 24, 25, 25, 2, -23 }, // 0x47 'G' + { 1869, 29, 25, 26, 0, -23 }, // 0x48 'H' + { 1960, 15, 25, 13, 0, -23 }, // 0x49 'I' + { 2007, 20, 27, 17, 0, -23 }, // 0x4A 'J' + { 2075, 25, 25, 23, 0, -23 }, // 0x4B 'K' + { 2154, 22, 25, 21, 0, -23 }, // 0x4C 'L' + { 2223, 33, 25, 31, 0, -23 }, // 0x4D 'M' + { 2327, 27, 25, 25, 0, -23 }, // 0x4E 'N' + { 2412, 23, 25, 24, 1, -23 }, // 0x4F 'O' + { 2484, 23, 25, 21, 0, -23 }, // 0x50 'P' + { 2556, 23, 31, 24, 1, -23 }, // 0x51 'Q' + { 2646, 24, 25, 23, 0, -23 }, // 0x52 'R' + { 2721, 18, 25, 18, 0, -23 }, // 0x53 'S' + { 2778, 21, 25, 21, 3, -23 }, // 0x54 'T' + { 2844, 24, 25, 25, 4, -23 }, // 0x55 'U' + { 2919, 24, 25, 25, 4, -23 }, // 0x56 'V' + { 2994, 31, 25, 32, 4, -23 }, // 0x57 'W' + { 3091, 25, 25, 24, 0, -23 }, // 0x58 'X' + { 3170, 21, 25, 22, 4, -23 }, // 0x59 'Y' + { 3236, 21, 25, 20, 0, -23 }, // 0x5A 'Z' + { 3302, 14, 30, 12, -1, -23 }, // 0x5B '[' + { 3355, 10, 25, 14, 4, -23 }, // 0x5C '\' + { 3387, 14, 30, 12, -2, -23 }, // 0x5D ']' + { 3440, 16, 13, 20, 2, -23 }, // 0x5E '^' + { 3466, 18, 3, 17, 0, 3 }, // 0x5F '_' + { 3473, 7, 6, 12, 3, -23 }, // 0x60 '`' + { 3479, 18, 17, 18, 0, -15 }, // 0x61 'a' + { 3518, 16, 26, 17, 1, -24 }, // 0x62 'b' + { 3570, 13, 17, 15, 1, -15 }, // 0x63 'c' + { 3598, 19, 25, 18, 1, -23 }, // 0x64 'd' + { 3658, 13, 17, 15, 1, -15 }, // 0x65 'e' + { 3686, 21, 32, 17, -3, -24 }, // 0x66 'f' + { 3770, 19, 23, 17, -1, -15 }, // 0x67 'g' + { 3825, 17, 25, 19, 1, -23 }, // 0x68 'h' + { 3879, 9, 25, 10, 1, -23 }, // 0x69 'i' + { 3908, 16, 31, 12, -3, -23 }, // 0x6A 'j' + { 3970, 17, 25, 18, 1, -23 }, // 0x6B 'k' + { 4024, 11, 25, 10, 1, -23 }, // 0x6C 'l' + { 4059, 26, 17, 27, 0, -15 }, // 0x6D 'm' + { 4115, 18, 17, 18, 0, -15 }, // 0x6E 'n' + { 4154, 15, 17, 17, 1, -15 }, // 0x6F 'o' + { 4186, 19, 23, 17, -2, -15 }, // 0x70 'p' + { 4241, 16, 23, 17, 1, -15 }, // 0x71 'q' + { 4287, 15, 16, 14, 0, -15 }, // 0x72 'r' + { 4317, 13, 17, 12, 0, -15 }, // 0x73 's' + { 4345, 10, 22, 10, 1, -20 }, // 0x74 't' + { 4373, 17, 17, 19, 1, -15 }, // 0x75 'u' + { 4410, 13, 16, 15, 2, -15 }, // 0x76 'v' + { 4436, 19, 16, 23, 3, -15 }, // 0x77 'w' + { 4474, 18, 17, 17, -1, -15 }, // 0x78 'x' + { 4513, 17, 23, 15, -2, -15 }, // 0x79 'y' + { 4562, 15, 19, 14, 0, -15 }, // 0x7A 'z' + { 4598, 15, 32, 12, 0, -24 }, // 0x7B '{' + { 4658, 3, 25, 9, 4, -23 }, // 0x7C '|' + { 4668, 15, 32, 12, -5, -24 }, // 0x7D '}' + { 4728, 16, 5, 20, 2, -11 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5410 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h new file mode 100644 index 000000000..fcb857ef9 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h @@ -0,0 +1,793 @@ +const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, + 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, + 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, + 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, + 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, + 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, + 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, + 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, + 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, + 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, + 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, + 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, + 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, + 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, + 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, + 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, + 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, + 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, + 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, + 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, + 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, + 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, + 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, + 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, + 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, + 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, + 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, + 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, + 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, + 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, + 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, + 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, + 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, + 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, + 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, + 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, + 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, + 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, + 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, + 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, + 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, + 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, + 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, + 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, + 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, + 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, + 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, + 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, + 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, + 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, + 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, + 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, + 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, + 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, + 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, + 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, + 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, + 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, + 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, + 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, + 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, + 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, + 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, + 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, + 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, + 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, + 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, + 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, + 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, + 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, + 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, + 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, + 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, + 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, + 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, + 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, + 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, + 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, + 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, + 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, + 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, + 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, + 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, + 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, + 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, + 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, + 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, + 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, + 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, + 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, + 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, + 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, + 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, + 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, + 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, + 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, + 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, + 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, + 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, + 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, + 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, + 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, + 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, + 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, + 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, + 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, + 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, + 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, + 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, + 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, + 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, + 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, + 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, + 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, + 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, + 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, + 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, + 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, + 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, + 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, + 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, + 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, + 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, + 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, + 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, + 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, + 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, + 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, + 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, + 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, + 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, + 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, + 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, + 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, + 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, + 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, + 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, + 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, + 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, + 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, + 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, + 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, + 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, + 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, + 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, + 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, + 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, + 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, + 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, + 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, + 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, + 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, + 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, + 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, + 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, + 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, + 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, + 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, + 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, + 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, + 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, + 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, + 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, + 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, + 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, + 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, + 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, + 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, + 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, + 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, + 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, + 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, + 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, + 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, + 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, + 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, + 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, + 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, + 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, + 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, + 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, + 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, + 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, + 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, + 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, + 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, + 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, + 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, + 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, + 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, + 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, + 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, + 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, + 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, + 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, + 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, + 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, + 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, + 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, + 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, + 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, + 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, + 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, + 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, + 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, + 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, + 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, + 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, + 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, + 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, + 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, + 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, + 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, + 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, + 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, + 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, + 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, + 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, + 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, + 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, + 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, + 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, + 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, + 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, + 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, + 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, + 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, + 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, + 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, + 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, + 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, + 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, + 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, + 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, + 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, + 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, + 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, + 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, + 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, + 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, + 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, + 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, + 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, + 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, + 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, + 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, + 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, + 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, + 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, + 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, + 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, + 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, + 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, + 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, + 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, + 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, + 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, + 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, + 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, + 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, + 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, + 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, + 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, + 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, + 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, + 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, + 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, + 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, + 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, + 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, + 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, + 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, + 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, + 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, + 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, + 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, + 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, + 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, + 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, + 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, + 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, + 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, + 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, + 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, + 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, + 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, + 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, + 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, + 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, + 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, + 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, + 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, + 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, + 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, + 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, + 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, + 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, + 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, + 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, + 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, + 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, + 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, + 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, + 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, + 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, + 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, + 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, + 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, + 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, + 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, + 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, + 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, + 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, + 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, + 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, + 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, + 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, + 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, + 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, + 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, + 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, + 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, + 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, + 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, + 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, + 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, + 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, + 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, + 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, + 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, + 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, + 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, + 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, + 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, + 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, + 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, + 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, + 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, + 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, + 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, + 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, + 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, + 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, + 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, + 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, + 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, + 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, + 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, + 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, + 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, + 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, + 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, + 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, + 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, + 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, + 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, + 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, + 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, + 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, + 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, + 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, + 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, + 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, + 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, + 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, + 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, + 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, + 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, + 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, + 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, + 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, + 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, + 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, + 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0x00 }; + +const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 15, 33, 18, 3, -31 }, // 0x21 '!' + { 62, 19, 13, 26, 6, -31 }, // 0x22 '"' + { 93, 27, 33, 23, -2, -32 }, // 0x23 '#' + { 205, 24, 39, 24, -1, -33 }, // 0x24 '$' + { 322, 35, 32, 39, 2, -30 }, // 0x25 '%' + { 462, 33, 33, 37, 0, -31 }, // 0x26 '&' + { 599, 7, 13, 13, 6, -31 }, // 0x27 ''' + { 611, 14, 41, 16, 1, -31 }, // 0x28 '(' + { 683, 14, 41, 16, -2, -31 }, // 0x29 ')' + { 755, 19, 20, 23, 3, -31 }, // 0x2A '*' + { 803, 22, 23, 27, 2, -22 }, // 0x2B '+' + { 867, 10, 15, 12, -3, -5 }, // 0x2C ',' + { 886, 12, 5, 16, 0, -12 }, // 0x2D '-' + { 894, 8, 7, 12, 0, -5 }, // 0x2E '.' + { 901, 19, 33, 16, 0, -31 }, // 0x2F '/' + { 980, 22, 33, 23, 1, -31 }, // 0x30 '0' + { 1071, 20, 32, 23, 0, -31 }, // 0x31 '1' + { 1151, 22, 32, 23, 1, -31 }, // 0x32 '2' + { 1239, 22, 33, 24, 0, -31 }, // 0x33 '3' + { 1330, 25, 32, 23, 0, -31 }, // 0x34 '4' + { 1430, 24, 32, 24, 0, -30 }, // 0x35 '5' + { 1526, 23, 32, 24, 1, -30 }, // 0x36 '6' + { 1618, 23, 31, 23, 3, -30 }, // 0x37 '7' + { 1708, 21, 33, 23, 1, -31 }, // 0x38 '8' + { 1795, 23, 33, 23, 0, -31 }, // 0x39 '9' + { 1890, 13, 22, 12, 0, -20 }, // 0x3A ':' + { 1926, 15, 30, 12, -2, -20 }, // 0x3B ';' + { 1983, 24, 25, 27, 1, -23 }, // 0x3C '<' + { 2058, 24, 14, 27, 3, -18 }, // 0x3D '=' + { 2100, 24, 25, 27, 3, -23 }, // 0x3E '>' + { 2175, 18, 33, 24, 4, -31 }, // 0x3F '?' + { 2250, 33, 33, 39, 3, -31 }, // 0x40 '@' + { 2387, 31, 32, 33, 0, -31 }, // 0x41 'A' + { 2511, 31, 31, 30, 0, -30 }, // 0x42 'B' + { 2632, 29, 33, 29, 2, -31 }, // 0x43 'C' + { 2752, 35, 31, 34, 0, -30 }, // 0x44 'D' + { 2888, 32, 31, 30, 0, -30 }, // 0x45 'E' + { 3012, 31, 31, 29, 0, -30 }, // 0x46 'F' + { 3133, 32, 33, 33, 2, -31 }, // 0x47 'G' + { 3265, 39, 31, 35, 0, -30 }, // 0x48 'H' + { 3417, 21, 31, 18, 0, -30 }, // 0x49 'I' + { 3499, 27, 36, 23, 0, -30 }, // 0x4A 'J' + { 3621, 34, 31, 31, 0, -30 }, // 0x4B 'K' + { 3753, 29, 31, 29, 0, -30 }, // 0x4C 'L' + { 3866, 44, 32, 41, 0, -30 }, // 0x4D 'M' + { 4042, 37, 32, 33, 0, -30 }, // 0x4E 'N' + { 4190, 31, 33, 32, 2, -31 }, // 0x4F 'O' + { 4318, 31, 31, 28, 0, -30 }, // 0x50 'P' + { 4439, 31, 42, 32, 2, -31 }, // 0x51 'Q' + { 4602, 32, 31, 31, 0, -30 }, // 0x52 'R' + { 4726, 24, 33, 24, 0, -31 }, // 0x53 'S' + { 4825, 27, 31, 28, 4, -30 }, // 0x54 'T' + { 4930, 32, 32, 34, 5, -30 }, // 0x55 'U' + { 5058, 31, 32, 33, 6, -30 }, // 0x56 'V' + { 5182, 41, 32, 44, 6, -30 }, // 0x57 'W' + { 5346, 34, 31, 33, 0, -30 }, // 0x58 'X' + { 5478, 28, 31, 30, 6, -30 }, // 0x59 'Y' + { 5587, 28, 31, 26, 0, -30 }, // 0x5A 'Z' + { 5696, 19, 38, 16, -2, -30 }, // 0x5B '[' + { 5787, 13, 33, 19, 6, -31 }, // 0x5C '\' + { 5841, 19, 38, 16, -3, -30 }, // 0x5D ']' + { 5932, 21, 17, 27, 3, -30 }, // 0x5E '^' + { 5977, 24, 3, 23, 0, 5 }, // 0x5F '_' + { 5986, 10, 9, 16, 4, -32 }, // 0x60 '`' + { 5998, 22, 23, 24, 1, -21 }, // 0x61 'a' + { 6062, 22, 33, 23, 1, -31 }, // 0x62 'b' + { 6153, 18, 23, 20, 1, -21 }, // 0x63 'c' + { 6205, 25, 34, 24, 1, -32 }, // 0x64 'd' + { 6312, 18, 23, 20, 1, -21 }, // 0x65 'e' + { 6364, 28, 41, 23, -4, -31 }, // 0x66 'f' + { 6508, 25, 31, 23, -1, -21 }, // 0x67 'g' + { 6605, 23, 34, 26, 1, -32 }, // 0x68 'h' + { 6703, 12, 33, 14, 2, -31 }, // 0x69 'i' + { 6753, 22, 42, 16, -4, -31 }, // 0x6A 'j' + { 6869, 24, 34, 24, 1, -32 }, // 0x6B 'k' + { 6971, 13, 34, 14, 2, -32 }, // 0x6C 'l' + { 7027, 35, 23, 36, 0, -21 }, // 0x6D 'm' + { 7128, 23, 23, 25, 0, -21 }, // 0x6E 'n' + { 7195, 20, 23, 22, 1, -21 }, // 0x6F 'o' + { 7253, 27, 31, 23, -4, -21 }, // 0x70 'p' + { 7358, 22, 31, 23, 1, -21 }, // 0x71 'q' + { 7444, 20, 22, 19, 0, -21 }, // 0x72 'r' + { 7499, 16, 23, 17, 0, -21 }, // 0x73 's' + { 7545, 13, 29, 13, 2, -27 }, // 0x74 't' + { 7593, 22, 23, 25, 2, -21 }, // 0x75 'u' + { 7657, 17, 23, 21, 3, -21 }, // 0x76 'v' + { 7706, 27, 23, 31, 3, -21 }, // 0x77 'w' + { 7784, 24, 23, 22, -1, -21 }, // 0x78 'x' + { 7853, 23, 31, 20, -3, -21 }, // 0x79 'y' + { 7943, 19, 25, 19, 0, -20 }, // 0x7A 'z' + { 8003, 20, 41, 16, 0, -31 }, // 0x7B '{' + { 8106, 4, 33, 13, 5, -31 }, // 0x7C '|' + { 8123, 20, 41, 16, -6, -31 }, // 0x7D '}' + { 8226, 21, 7, 27, 3, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8917 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h new file mode 100644 index 000000000..47711ee7c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h @@ -0,0 +1,215 @@ +const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, + 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, + 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, + 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, + 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, + 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, + 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, + 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, + 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, + 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, + 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, + 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, + 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, + 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, + 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, + 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, + 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, + 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, + 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, + 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, + 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, + 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, + 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, + 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, + 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, + 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, + 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, + 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, + 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, + 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, + 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, + 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, + 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, + 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, + 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, + 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, + 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, + 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, + 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, + 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, + 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, + 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, + 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, + 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, + 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, + 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, + 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, + 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, + 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, + 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, + 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, + 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, + 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, + 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, + 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, + 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, + 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, + 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, + 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, + 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, + 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, + 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, + 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, + 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, + 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, + 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, + 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, + 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, + 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, + 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, + 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, + 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, + 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, + 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, + 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, + 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, + 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, + 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, + 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, + 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, + 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, + 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, + 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, + 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, + 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, + 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, + 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, + 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, + 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, + 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, + 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, + 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, + 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, + 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, + 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, + 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, + 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, + 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, + 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, + 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, + 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, + 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, + 0x71, 0x8F }; + +const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 6, 13, 7, 1, -11 }, // 0x21 '!' + { 10, 6, 5, 10, 3, -11 }, // 0x22 '"' + { 14, 11, 13, 9, -1, -12 }, // 0x23 '#' + { 32, 11, 15, 9, -1, -12 }, // 0x24 '$' + { 53, 14, 13, 15, 1, -11 }, // 0x25 '%' + { 76, 13, 13, 14, 0, -11 }, // 0x26 '&' + { 98, 2, 5, 5, 3, -11 }, // 0x27 ''' + { 100, 5, 16, 6, 1, -11 }, // 0x28 '(' + { 110, 5, 16, 6, -1, -11 }, // 0x29 ')' + { 120, 8, 8, 9, 1, -11 }, // 0x2A '*' + { 128, 9, 9, 10, 0, -8 }, // 0x2B '+' + { 139, 3, 6, 5, -1, -2 }, // 0x2C ',' + { 142, 5, 2, 6, 0, -4 }, // 0x2D '-' + { 144, 3, 3, 4, 0, -1 }, // 0x2E '.' + { 146, 7, 12, 6, 0, -11 }, // 0x2F '/' + { 157, 9, 13, 9, 0, -11 }, // 0x30 '0' + { 172, 8, 13, 9, 0, -11 }, // 0x31 '1' + { 185, 9, 13, 9, 0, -11 }, // 0x32 '2' + { 200, 9, 13, 9, 0, -11 }, // 0x33 '3' + { 215, 9, 12, 9, 0, -11 }, // 0x34 '4' + { 229, 9, 13, 9, 0, -11 }, // 0x35 '5' + { 244, 9, 13, 9, 1, -11 }, // 0x36 '6' + { 259, 9, 12, 9, 1, -11 }, // 0x37 '7' + { 273, 8, 13, 9, 0, -11 }, // 0x38 '8' + { 286, 9, 13, 9, 0, -11 }, // 0x39 '9' + { 301, 5, 9, 5, 0, -7 }, // 0x3A ':' + { 307, 5, 11, 5, 0, -7 }, // 0x3B ';' + { 314, 9, 10, 10, 1, -9 }, // 0x3C '<' + { 326, 9, 5, 10, 1, -6 }, // 0x3D '=' + { 332, 9, 10, 10, 1, -9 }, // 0x3E '>' + { 344, 8, 13, 9, 1, -11 }, // 0x3F '?' + { 357, 13, 13, 15, 1, -12 }, // 0x40 '@' + { 379, 12, 13, 13, 0, -11 }, // 0x41 'A' + { 399, 12, 13, 12, 0, -11 }, // 0x42 'B' + { 419, 12, 13, 11, 1, -11 }, // 0x43 'C' + { 439, 14, 13, 13, 0, -11 }, // 0x44 'D' + { 462, 13, 13, 11, 0, -11 }, // 0x45 'E' + { 484, 13, 13, 11, 0, -11 }, // 0x46 'F' + { 506, 12, 13, 13, 1, -11 }, // 0x47 'G' + { 526, 15, 13, 14, 0, -11 }, // 0x48 'H' + { 551, 8, 13, 7, 0, -11 }, // 0x49 'I' + { 564, 10, 14, 9, 0, -11 }, // 0x4A 'J' + { 582, 13, 13, 12, 0, -11 }, // 0x4B 'K' + { 604, 12, 13, 11, 0, -11 }, // 0x4C 'L' + { 624, 17, 13, 16, 0, -11 }, // 0x4D 'M' + { 652, 14, 13, 13, 0, -11 }, // 0x4E 'N' + { 675, 12, 13, 12, 1, -11 }, // 0x4F 'O' + { 695, 12, 13, 11, 0, -11 }, // 0x50 'P' + { 715, 12, 16, 12, 1, -11 }, // 0x51 'Q' + { 739, 12, 13, 12, 0, -11 }, // 0x52 'R' + { 759, 9, 13, 9, 0, -11 }, // 0x53 'S' + { 774, 11, 13, 11, 2, -11 }, // 0x54 'T' + { 792, 12, 13, 13, 2, -11 }, // 0x55 'U' + { 812, 12, 12, 13, 2, -11 }, // 0x56 'V' + { 830, 16, 12, 17, 2, -11 }, // 0x57 'W' + { 854, 13, 13, 13, 0, -11 }, // 0x58 'X' + { 876, 11, 13, 11, 2, -11 }, // 0x59 'Y' + { 894, 11, 13, 10, 0, -11 }, // 0x5A 'Z' + { 912, 8, 15, 6, -1, -11 }, // 0x5B '[' + { 927, 5, 12, 7, 2, -11 }, // 0x5C '\' + { 935, 7, 15, 6, -1, -11 }, // 0x5D ']' + { 949, 8, 7, 10, 1, -11 }, // 0x5E '^' + { 956, 9, 1, 9, 0, 3 }, // 0x5F '_' + { 958, 4, 3, 6, 2, -11 }, // 0x60 '`' + { 960, 9, 9, 9, 0, -7 }, // 0x61 'a' + { 971, 8, 14, 9, 0, -12 }, // 0x62 'b' + { 985, 8, 9, 8, 0, -7 }, // 0x63 'c' + { 994, 10, 14, 9, 0, -12 }, // 0x64 'd' + { 1012, 7, 9, 7, 0, -7 }, // 0x65 'e' + { 1020, 11, 17, 9, -2, -12 }, // 0x66 'f' + { 1044, 9, 12, 9, 0, -7 }, // 0x67 'g' + { 1058, 9, 14, 10, 0, -12 }, // 0x68 'h' + { 1074, 5, 13, 5, 1, -11 }, // 0x69 'i' + { 1083, 9, 16, 6, -1, -11 }, // 0x6A 'j' + { 1101, 10, 14, 9, 0, -12 }, // 0x6B 'k' + { 1119, 5, 14, 5, 1, -12 }, // 0x6C 'l' + { 1128, 13, 9, 14, 0, -7 }, // 0x6D 'm' + { 1143, 8, 9, 9, 0, -7 }, // 0x6E 'n' + { 1152, 8, 9, 9, 0, -7 }, // 0x6F 'o' + { 1161, 10, 12, 9, -2, -7 }, // 0x70 'p' + { 1176, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 1190, 8, 8, 7, 0, -7 }, // 0x72 'r' + { 1198, 6, 9, 6, 0, -7 }, // 0x73 's' + { 1205, 5, 12, 5, 1, -10 }, // 0x74 't' + { 1213, 8, 9, 10, 1, -7 }, // 0x75 'u' + { 1222, 7, 8, 8, 1, -7 }, // 0x76 'v' + { 1229, 10, 8, 12, 1, -7 }, // 0x77 'w' + { 1239, 10, 9, 9, -1, -7 }, // 0x78 'x' + { 1251, 9, 12, 8, -1, -7 }, // 0x79 'y' + { 1265, 8, 9, 7, 0, -7 }, // 0x7A 'z' + { 1274, 8, 16, 6, 0, -12 }, // 0x7B '{' + { 1290, 1, 12, 5, 2, -11 }, // 0x7C '|' + { 1292, 8, 16, 6, -2, -12 }, // 0x7D '}' + { 1308, 8, 2, 10, 1, -4 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1982 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h new file mode 100644 index 000000000..52332a7ad --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h @@ -0,0 +1,271 @@ +const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, + 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, + 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, + 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, + 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, + 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, + 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, + 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, + 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, + 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, + 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, + 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, + 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, + 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, + 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, + 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, + 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, + 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, + 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, + 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, + 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, + 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, + 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, + 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, + 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, + 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, + 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, + 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, + 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, + 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, + 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, + 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, + 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, + 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, + 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, + 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, + 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, + 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, + 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, + 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, + 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, + 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, + 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, + 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, + 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, + 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, + 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, + 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, + 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, + 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, + 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, + 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, + 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, + 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, + 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, + 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, + 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, + 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, + 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, + 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, + 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, + 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, + 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, + 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, + 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, + 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, + 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, + 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, + 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, + 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, + 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, + 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, + 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, + 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, + 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, + 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, + 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, + 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, + 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, + 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, + 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, + 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, + 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, + 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, + 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, + 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, + 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, + 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, + 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, + 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, + 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, + 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, + 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, + 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, + 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, + 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, + 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, + 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, + 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, + 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, + 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, + 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, + 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, + 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, + 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, + 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, + 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, + 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, + 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, + 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, + 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, + 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, + 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, + 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, + 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, + 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, + 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, + 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, + 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, + 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, + 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, + 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, + 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, + 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, + 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, + 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, + 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, + 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, + 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, + 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, + 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, + 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, + 0x18, 0x8C, 0x0F, 0x00 }; + +const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 6, 16, 8, 1, -15 }, // 0x21 '!' + { 12, 7, 6, 8, 3, -15 }, // 0x22 '"' + { 18, 13, 16, 12, 0, -15 }, // 0x23 '#' + { 44, 12, 20, 12, 0, -17 }, // 0x24 '$' + { 74, 17, 17, 20, 2, -16 }, // 0x25 '%' + { 111, 15, 16, 19, 2, -15 }, // 0x26 '&' + { 141, 2, 6, 5, 4, -15 }, // 0x27 ''' + { 143, 7, 20, 8, 1, -15 }, // 0x28 '(' + { 161, 7, 20, 8, 0, -15 }, // 0x29 ')' + { 179, 8, 10, 12, 4, -15 }, // 0x2A '*' + { 189, 11, 11, 16, 2, -10 }, // 0x2B '+' + { 205, 3, 6, 6, 0, -2 }, // 0x2C ',' + { 208, 5, 1, 8, 1, -5 }, // 0x2D '-' + { 209, 2, 3, 6, 1, -2 }, // 0x2E '.' + { 210, 11, 16, 7, 0, -15 }, // 0x2F '/' + { 232, 11, 17, 12, 1, -16 }, // 0x30 '0' + { 256, 9, 17, 12, 1, -16 }, // 0x31 '1' + { 276, 10, 15, 12, 1, -14 }, // 0x32 '2' + { 295, 10, 16, 12, 1, -15 }, // 0x33 '3' + { 315, 11, 16, 12, 0, -15 }, // 0x34 '4' + { 337, 11, 16, 12, 0, -15 }, // 0x35 '5' + { 359, 12, 17, 12, 1, -16 }, // 0x36 '6' + { 385, 11, 16, 12, 2, -15 }, // 0x37 '7' + { 407, 11, 17, 12, 1, -16 }, // 0x38 '8' + { 431, 11, 17, 12, 1, -16 }, // 0x39 '9' + { 455, 4, 11, 6, 1, -10 }, // 0x3A ':' + { 461, 5, 14, 6, 0, -10 }, // 0x3B ';' + { 470, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 490, 12, 6, 16, 2, -8 }, // 0x3D '=' + { 499, 12, 13, 14, 2, -12 }, // 0x3E '>' + { 519, 9, 16, 11, 3, -15 }, // 0x3F '?' + { 537, 16, 16, 19, 2, -15 }, // 0x40 '@' + { 569, 15, 15, 16, 0, -14 }, // 0x41 'A' + { 598, 14, 16, 14, 0, -15 }, // 0x42 'B' + { 626, 16, 16, 15, 1, -15 }, // 0x43 'C' + { 658, 16, 16, 17, 0, -15 }, // 0x44 'D' + { 690, 16, 16, 14, 0, -15 }, // 0x45 'E' + { 722, 16, 16, 14, 0, -15 }, // 0x46 'F' + { 754, 16, 16, 17, 1, -15 }, // 0x47 'G' + { 786, 19, 16, 17, 0, -15 }, // 0x48 'H' + { 824, 9, 16, 8, 0, -15 }, // 0x49 'I' + { 842, 12, 16, 10, 0, -15 }, // 0x4A 'J' + { 866, 17, 16, 15, 0, -15 }, // 0x4B 'K' + { 900, 14, 16, 14, 0, -15 }, // 0x4C 'L' + { 928, 21, 16, 20, 0, -15 }, // 0x4D 'M' + { 970, 18, 16, 16, 0, -15 }, // 0x4E 'N' + { 1006, 15, 16, 16, 1, -15 }, // 0x4F 'O' + { 1036, 14, 16, 14, 0, -15 }, // 0x50 'P' + { 1064, 15, 20, 16, 1, -15 }, // 0x51 'Q' + { 1102, 14, 16, 15, 0, -15 }, // 0x52 'R' + { 1130, 12, 16, 11, 0, -15 }, // 0x53 'S' + { 1154, 15, 16, 14, 2, -15 }, // 0x54 'T' + { 1184, 16, 16, 17, 3, -15 }, // 0x55 'U' + { 1216, 15, 16, 16, 3, -15 }, // 0x56 'V' + { 1246, 20, 16, 21, 3, -15 }, // 0x57 'W' + { 1286, 16, 16, 16, 0, -15 }, // 0x58 'X' + { 1318, 13, 16, 14, 3, -15 }, // 0x59 'Y' + { 1344, 15, 16, 14, 0, -15 }, // 0x5A 'Z' + { 1374, 8, 20, 9, 1, -15 }, // 0x5B '[' + { 1394, 8, 16, 12, 3, -15 }, // 0x5C '\' + { 1410, 7, 20, 9, 1, -15 }, // 0x5D ']' + { 1428, 10, 9, 10, 0, -15 }, // 0x5E '^' + { 1440, 12, 1, 12, 0, 3 }, // 0x5F '_' + { 1442, 4, 4, 6, 3, -15 }, // 0x60 '`' + { 1444, 12, 11, 12, 0, -10 }, // 0x61 'a' + { 1461, 10, 16, 11, 1, -15 }, // 0x62 'b' + { 1481, 9, 11, 10, 1, -10 }, // 0x63 'c' + { 1494, 13, 16, 12, 0, -15 }, // 0x64 'd' + { 1520, 8, 11, 10, 1, -10 }, // 0x65 'e' + { 1531, 14, 22, 10, -2, -16 }, // 0x66 'f' + { 1570, 12, 16, 11, -1, -10 }, // 0x67 'g' + { 1594, 12, 16, 12, 0, -15 }, // 0x68 'h' + { 1618, 5, 16, 6, 1, -15 }, // 0x69 'i' + { 1628, 9, 21, 7, -2, -15 }, // 0x6A 'j' + { 1652, 11, 16, 11, 0, -15 }, // 0x6B 'k' + { 1674, 6, 16, 6, 1, -15 }, // 0x6C 'l' + { 1686, 17, 11, 17, 0, -10 }, // 0x6D 'm' + { 1710, 12, 11, 12, 0, -10 }, // 0x6E 'n' + { 1727, 10, 11, 11, 1, -10 }, // 0x6F 'o' + { 1741, 13, 16, 11, -2, -10 }, // 0x70 'p' + { 1767, 11, 16, 12, 0, -10 }, // 0x71 'q' + { 1789, 9, 11, 9, 0, -10 }, // 0x72 'r' + { 1802, 9, 11, 8, 0, -10 }, // 0x73 's' + { 1815, 6, 13, 6, 1, -12 }, // 0x74 't' + { 1825, 11, 11, 12, 1, -10 }, // 0x75 'u' + { 1841, 10, 11, 11, 1, -10 }, // 0x76 'v' + { 1855, 14, 11, 16, 2, -10 }, // 0x77 'w' + { 1875, 12, 11, 10, -1, -10 }, // 0x78 'x' + { 1892, 11, 16, 11, 0, -10 }, // 0x79 'y' + { 1914, 9, 13, 9, 0, -10 }, // 0x7A 'z' + { 1929, 9, 21, 10, 1, -16 }, // 0x7B '{' + { 1953, 1, 16, 7, 3, -15 }, // 0x7C '|' + { 1955, 9, 21, 10, 0, -16 }, // 0x7D '}' + { 1979, 11, 3, 13, 1, -6 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifItalic12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2656 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h new file mode 100644 index 000000000..666ae7eb2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h @@ -0,0 +1,450 @@ +const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, + 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, + 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, + 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, + 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, + 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, + 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, + 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, + 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, + 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, + 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, + 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, + 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, + 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, + 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, + 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, + 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, + 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, + 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, + 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, + 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, + 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, + 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, + 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, + 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, + 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, + 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, + 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, + 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, + 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, + 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, + 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, + 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, + 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, + 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, + 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, + 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, + 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, + 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, + 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, + 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, + 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, + 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, + 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, + 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, + 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, + 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, + 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, + 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, + 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, + 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, + 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, + 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, + 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, + 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, + 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, + 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, + 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, + 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, + 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, + 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, + 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, + 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, + 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, + 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, + 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, + 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, + 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, + 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, + 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, + 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, + 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, + 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, + 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, + 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, + 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, + 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, + 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, + 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, + 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, + 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, + 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, + 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, + 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, + 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, + 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, + 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, + 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, + 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, + 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, + 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, + 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, + 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, + 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, + 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, + 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, + 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, + 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, + 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, + 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, + 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, + 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, + 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, + 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, + 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, + 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, + 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, + 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, + 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, + 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, + 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, + 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, + 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, + 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, + 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, + 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, + 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, + 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, + 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, + 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, + 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, + 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, + 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, + 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, + 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, + 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, + 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, + 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, + 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, + 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, + 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, + 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, + 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, + 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, + 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, + 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, + 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, + 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, + 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, + 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, + 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, + 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, + 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, + 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, + 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, + 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, + 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, + 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, + 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, + 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, + 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, + 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, + 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, + 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, + 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, + 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, + 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, + 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, + 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, + 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, + 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, + 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, + 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, + 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, + 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, + 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, + 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, + 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, + 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, + 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, + 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, + 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, + 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, + 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, + 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, + 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, + 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, + 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, + 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, + 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, + 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, + 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, + 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, + 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, + 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, + 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, + 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, + 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, + 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, + 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, + 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, + 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, + 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, + 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, + 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, + 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, + 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, + 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, + 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, + 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, + 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, + 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, + 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, + 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, + 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, + 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, + 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, + 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, + 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, + 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, + 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, + 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, + 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, + 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, + 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, + 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, + 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, + 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, + 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, + 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, + 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, + 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, + 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, + 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, + 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, + 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, + 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, + 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, + 0xF8, 0x7F, 0xC0, 0x07, 0x80 }; + +const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 10, 23, 12, 1, -22 }, // 0x21 '!' + { 29, 12, 9, 12, 4, -22 }, // 0x22 '"' + { 43, 19, 23, 17, 0, -22 }, // 0x23 '#' + { 98, 15, 29, 17, 1, -25 }, // 0x24 '$' + { 153, 25, 23, 29, 3, -22 }, // 0x25 '%' + { 225, 22, 23, 27, 3, -22 }, // 0x26 '&' + { 289, 5, 9, 7, 4, -22 }, // 0x27 ''' + { 295, 9, 29, 12, 1, -22 }, // 0x28 '(' + { 328, 9, 29, 12, 1, -22 }, // 0x29 ')' + { 361, 12, 14, 18, 5, -22 }, // 0x2A '*' + { 382, 16, 18, 24, 4, -17 }, // 0x2B '+' + { 418, 5, 8, 9, -1, -2 }, // 0x2C ',' + { 423, 8, 2, 12, 2, -8 }, // 0x2D '-' + { 425, 4, 4, 9, 1, -3 }, // 0x2E '.' + { 427, 16, 23, 10, 0, -22 }, // 0x2F '/' + { 473, 17, 24, 17, 1, -23 }, // 0x30 '0' + { 524, 12, 24, 17, 2, -23 }, // 0x31 '1' + { 560, 16, 23, 17, 1, -22 }, // 0x32 '2' + { 606, 17, 24, 18, 0, -23 }, // 0x33 '3' + { 657, 17, 24, 17, 0, -23 }, // 0x34 '4' + { 708, 16, 23, 18, 0, -22 }, // 0x35 '5' + { 754, 17, 24, 18, 1, -23 }, // 0x36 '6' + { 805, 16, 23, 17, 3, -22 }, // 0x37 '7' + { 851, 16, 24, 18, 1, -23 }, // 0x38 '8' + { 899, 16, 24, 17, 1, -23 }, // 0x39 '9' + { 947, 7, 15, 9, 2, -14 }, // 0x3A ':' + { 961, 9, 20, 9, 1, -14 }, // 0x3B ';' + { 984, 18, 18, 20, 2, -17 }, // 0x3C '<' + { 1025, 18, 9, 23, 3, -12 }, // 0x3D '=' + { 1046, 18, 18, 20, 2, -17 }, // 0x3E '>' + { 1087, 12, 23, 16, 4, -22 }, // 0x3F '?' + { 1122, 24, 23, 27, 2, -22 }, // 0x40 '@' + { 1191, 21, 23, 23, 0, -22 }, // 0x41 'A' + { 1252, 21, 23, 21, 0, -22 }, // 0x42 'B' + { 1313, 21, 23, 21, 2, -22 }, // 0x43 'C' + { 1374, 25, 23, 25, 0, -22 }, // 0x44 'D' + { 1446, 22, 23, 20, 0, -22 }, // 0x45 'E' + { 1510, 22, 23, 20, 0, -22 }, // 0x46 'F' + { 1574, 23, 23, 24, 2, -22 }, // 0x47 'G' + { 1641, 27, 23, 25, 0, -22 }, // 0x48 'H' + { 1719, 14, 23, 11, 0, -22 }, // 0x49 'I' + { 1760, 17, 23, 15, 0, -22 }, // 0x4A 'J' + { 1809, 25, 23, 22, 0, -22 }, // 0x4B 'K' + { 1881, 20, 23, 20, 0, -22 }, // 0x4C 'L' + { 1939, 31, 23, 29, 0, -22 }, // 0x4D 'M' + { 2029, 26, 23, 24, 0, -22 }, // 0x4E 'N' + { 2104, 23, 23, 23, 1, -22 }, // 0x4F 'O' + { 2171, 22, 23, 20, 0, -22 }, // 0x50 'P' + { 2235, 23, 29, 23, 1, -22 }, // 0x51 'Q' + { 2319, 21, 23, 22, 0, -22 }, // 0x52 'R' + { 2380, 17, 23, 16, 0, -22 }, // 0x53 'S' + { 2429, 20, 23, 21, 3, -22 }, // 0x54 'T' + { 2487, 23, 23, 25, 4, -22 }, // 0x55 'U' + { 2554, 21, 23, 23, 5, -22 }, // 0x56 'V' + { 2615, 29, 23, 31, 5, -22 }, // 0x57 'W' + { 2699, 24, 23, 23, 0, -22 }, // 0x58 'X' + { 2768, 19, 23, 21, 4, -22 }, // 0x59 'Y' + { 2823, 22, 23, 20, 0, -22 }, // 0x5A 'Z' + { 2887, 13, 28, 14, 1, -22 }, // 0x5B '[' + { 2933, 12, 23, 17, 4, -22 }, // 0x5C '\' + { 2968, 12, 28, 14, 1, -22 }, // 0x5D ']' + { 3010, 15, 13, 15, 0, -22 }, // 0x5E '^' + { 3035, 18, 2, 17, 0, 3 }, // 0x5F '_' + { 3040, 6, 6, 9, 5, -22 }, // 0x60 '`' + { 3045, 15, 15, 17, 1, -14 }, // 0x61 'a' + { 3074, 16, 24, 17, 1, -23 }, // 0x62 'b' + { 3122, 13, 15, 14, 1, -14 }, // 0x63 'c' + { 3147, 17, 24, 18, 1, -23 }, // 0x64 'd' + { 3198, 13, 15, 14, 1, -14 }, // 0x65 'e' + { 3223, 20, 31, 15, -3, -23 }, // 0x66 'f' + { 3301, 16, 22, 15, -1, -14 }, // 0x67 'g' + { 3345, 16, 24, 17, 1, -23 }, // 0x68 'h' + { 3393, 9, 23, 9, 1, -22 }, // 0x69 'i' + { 3419, 15, 30, 10, -3, -22 }, // 0x6A 'j' + { 3476, 15, 24, 16, 1, -23 }, // 0x6B 'k' + { 3521, 8, 25, 9, 1, -23 }, // 0x6C 'l' + { 3546, 24, 15, 25, 0, -14 }, // 0x6D 'm' + { 3591, 17, 15, 17, 0, -14 }, // 0x6E 'n' + { 3623, 15, 15, 17, 1, -14 }, // 0x6F 'o' + { 3652, 20, 22, 16, -3, -14 }, // 0x70 'p' + { 3707, 16, 22, 17, 1, -14 }, // 0x71 'q' + { 3751, 13, 15, 13, 1, -14 }, // 0x72 'r' + { 3776, 13, 15, 12, 0, -14 }, // 0x73 's' + { 3801, 9, 18, 8, 1, -17 }, // 0x74 't' + { 3822, 15, 15, 17, 1, -14 }, // 0x75 'u' + { 3851, 14, 15, 16, 2, -14 }, // 0x76 'v' + { 3878, 22, 15, 24, 1, -14 }, // 0x77 'w' + { 3920, 16, 15, 15, -1, -14 }, // 0x78 'x' + { 3950, 16, 22, 16, 0, -14 }, // 0x79 'y' + { 3994, 14, 18, 14, 0, -14 }, // 0x7A 'z' + { 4026, 12, 30, 14, 2, -23 }, // 0x7B '{' + { 4071, 2, 23, 10, 4, -22 }, // 0x7C '|' + { 4077, 12, 31, 14, 0, -24 }, // 0x7D '}' + { 4124, 17, 4, 19, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifItalic18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4805 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h new file mode 100644 index 000000000..75da1e057 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h @@ -0,0 +1,737 @@ +const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, + 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, + 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, + 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, + 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, + 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, + 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, + 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, + 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, + 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, + 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, + 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, + 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, + 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, + 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, + 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, + 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, + 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, + 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, + 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, + 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, + 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, + 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, + 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, + 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, + 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, + 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, + 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, + 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, + 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, + 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, + 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, + 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, + 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, + 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, + 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, + 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, + 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, + 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, + 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, + 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, + 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, + 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, + 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, + 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, + 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, + 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, + 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, + 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, + 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, + 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, + 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, + 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, + 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, + 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, + 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, + 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, + 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, + 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, + 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, + 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, + 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, + 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, + 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, + 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, + 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, + 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, + 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, + 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, + 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, + 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, + 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, + 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, + 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, + 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, + 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 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, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, + 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, + 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, + 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, + 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, + 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, + 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, + 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, + 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, + 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, + 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, + 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, + 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, + 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, + 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, + 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, + 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, + 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, + 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, + 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, + 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, + 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, + 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, + 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, + 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, + 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, + 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, + 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, + 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, + 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, + 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, + 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, + 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, + 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, + 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, + 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, + 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, + 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, + 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, + 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, + 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, + 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, + 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, + 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, + 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, + 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, + 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, + 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, + 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, + 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, + 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, + 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, + 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, + 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, + 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, + 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, + 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, + 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, + 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, + 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, + 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, + 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, + 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, + 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, + 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, + 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, + 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, + 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, + 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, + 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, + 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, + 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, + 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, + 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, + 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, + 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, + 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, + 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, + 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, + 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, + 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, + 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, + 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, + 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, + 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, + 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, + 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, + 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, + 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, + 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, + 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, + 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, + 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, + 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, + 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, + 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, + 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, + 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, + 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, + 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, + 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, + 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, + 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, + 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, + 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, + 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, + 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, + 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, + 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, + 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, + 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, + 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, + 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, + 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, + 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, + 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, + 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, + 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, + 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, + 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, + 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, + 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, + 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, + 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, + 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, + 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, + 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, + 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, + 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, + 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, + 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, + 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, + 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, + 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, + 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, + 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, + 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, + 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, + 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, + 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, + 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, + 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, + 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, + 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, + 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, + 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, + 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, + 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, + 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, + 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, + 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, + 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, + 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, + 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, + 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, + 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, + 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, + 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, + 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, + 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, + 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, + 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, + 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, + 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, + 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, + 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, + 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, + 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, + 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, + 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, + 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, + 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, + 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, + 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, + 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, + 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, + 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, + 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, + 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, + 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, + 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, + 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, + 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, + 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, + 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, + 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, + 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, + 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, + 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, + 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, + 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, + 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, + 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, + 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, + 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, + 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, + 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, + 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, + 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, + 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, + 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, + 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, + 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, + 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, + 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, + 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, + 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, + 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, + 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, + 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, + 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, + 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, + 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, + 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, + 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, + 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, + 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, + 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, + 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, + 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, + 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, + 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, + 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, + 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, + 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, + 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, + 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, + 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, + 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, + 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, + 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, + 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, + 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, + 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, + 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, + 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, + 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, + 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, + 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, + 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, + 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, + 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, + 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, + 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00 }; + +const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 12, 32, 16, 2, -30 }, // 0x21 '!' + { 48, 14, 12, 16, 6, -31 }, // 0x22 '"' + { 69, 25, 31, 23, 0, -30 }, // 0x23 '#' + { 166, 21, 38, 24, 2, -33 }, // 0x24 '$' + { 266, 33, 32, 39, 4, -30 }, // 0x25 '%' + { 398, 30, 33, 37, 4, -31 }, // 0x26 '&' + { 522, 5, 12, 9, 6, -31 }, // 0x27 ''' + { 530, 13, 39, 16, 2, -30 }, // 0x28 '(' + { 594, 13, 39, 16, 0, -30 }, // 0x29 ')' + { 658, 16, 20, 23, 7, -31 }, // 0x2A '*' + { 698, 23, 23, 32, 4, -22 }, // 0x2B '+' + { 765, 7, 11, 12, -1, -4 }, // 0x2C ',' + { 775, 11, 3, 16, 2, -11 }, // 0x2D '-' + { 780, 5, 5, 12, 1, -3 }, // 0x2E '.' + { 784, 21, 33, 14, 0, -31 }, // 0x2F '/' + { 871, 21, 31, 23, 2, -30 }, // 0x30 '0' + { 953, 17, 32, 23, 2, -31 }, // 0x31 '1' + { 1021, 21, 31, 24, 0, -30 }, // 0x32 '2' + { 1103, 22, 32, 23, 0, -31 }, // 0x33 '3' + { 1191, 22, 32, 23, 0, -31 }, // 0x34 '4' + { 1279, 22, 32, 24, 0, -31 }, // 0x35 '5' + { 1367, 23, 32, 23, 1, -31 }, // 0x36 '6' + { 1459, 21, 32, 23, 4, -31 }, // 0x37 '7' + { 1543, 22, 32, 23, 1, -31 }, // 0x38 '8' + { 1631, 22, 33, 23, 1, -31 }, // 0x39 '9' + { 1722, 9, 22, 12, 2, -20 }, // 0x3A ':' + { 1747, 11, 27, 12, 1, -20 }, // 0x3B ';' + { 1785, 23, 25, 27, 3, -24 }, // 0x3C '<' + { 1857, 24, 12, 31, 4, -17 }, // 0x3D '=' + { 1893, 24, 25, 27, 3, -24 }, // 0x3E '>' + { 1968, 16, 33, 21, 6, -31 }, // 0x3F '?' + { 2034, 33, 33, 37, 3, -31 }, // 0x40 '@' + { 2171, 29, 31, 31, 0, -30 }, // 0x41 'A' + { 2284, 28, 31, 28, 0, -30 }, // 0x42 'B' + { 2393, 30, 33, 29, 2, -31 }, // 0x43 'C' + { 2517, 33, 31, 33, 0, -30 }, // 0x44 'D' + { 2645, 29, 31, 27, 0, -30 }, // 0x45 'E' + { 2758, 29, 31, 27, 0, -30 }, // 0x46 'F' + { 2871, 31, 33, 32, 2, -31 }, // 0x47 'G' + { 2999, 36, 31, 33, 0, -30 }, // 0x48 'H' + { 3139, 18, 31, 15, 0, -30 }, // 0x49 'I' + { 3209, 23, 32, 20, 0, -30 }, // 0x4A 'J' + { 3301, 33, 31, 30, 0, -30 }, // 0x4B 'K' + { 3429, 27, 31, 27, 0, -30 }, // 0x4C 'L' + { 3534, 42, 31, 39, 0, -30 }, // 0x4D 'M' + { 3697, 35, 32, 32, 0, -30 }, // 0x4E 'N' + { 3837, 30, 33, 31, 2, -31 }, // 0x4F 'O' + { 3961, 29, 31, 27, 0, -30 }, // 0x50 'P' + { 4074, 30, 41, 31, 2, -31 }, // 0x51 'Q' + { 4228, 28, 31, 29, 0, -30 }, // 0x52 'R' + { 4337, 23, 33, 21, 0, -31 }, // 0x53 'S' + { 4432, 27, 31, 28, 4, -30 }, // 0x54 'T' + { 4537, 31, 32, 33, 5, -30 }, // 0x55 'U' + { 4661, 29, 32, 31, 6, -30 }, // 0x56 'V' + { 4777, 39, 32, 42, 6, -30 }, // 0x57 'W' + { 4933, 32, 31, 31, 0, -30 }, // 0x58 'X' + { 5057, 26, 31, 28, 5, -30 }, // 0x59 'Y' + { 5158, 29, 31, 26, 0, -30 }, // 0x5A 'Z' + { 5271, 17, 39, 18, 1, -31 }, // 0x5B '[' + { 5354, 17, 33, 23, 5, -31 }, // 0x5C '\' + { 5425, 17, 39, 18, 1, -31 }, // 0x5D ']' + { 5508, 20, 17, 20, 0, -31 }, // 0x5E '^' + { 5551, 24, 2, 23, 0, 5 }, // 0x5F '_' + { 5557, 8, 8, 12, 6, -31 }, // 0x60 '`' + { 5565, 21, 21, 23, 1, -20 }, // 0x61 'a' + { 5621, 21, 33, 22, 1, -31 }, // 0x62 'b' + { 5708, 18, 22, 19, 1, -20 }, // 0x63 'c' + { 5758, 24, 33, 23, 1, -31 }, // 0x64 'd' + { 5857, 18, 22, 19, 1, -20 }, // 0x65 'e' + { 5907, 27, 42, 20, -4, -31 }, // 0x66 'f' + { 6049, 21, 31, 21, -1, -20 }, // 0x67 'g' + { 6131, 21, 32, 23, 1, -31 }, // 0x68 'h' + { 6215, 10, 32, 12, 2, -30 }, // 0x69 'i' + { 6255, 19, 41, 13, -3, -30 }, // 0x6A 'j' + { 6353, 21, 33, 21, 1, -31 }, // 0x6B 'k' + { 6440, 11, 33, 12, 2, -31 }, // 0x6C 'l' + { 6486, 31, 21, 34, 1, -20 }, // 0x6D 'm' + { 6568, 21, 21, 23, 1, -20 }, // 0x6E 'n' + { 6624, 21, 22, 22, 1, -20 }, // 0x6F 'o' + { 6682, 27, 31, 22, -4, -20 }, // 0x70 'p' + { 6787, 21, 31, 23, 1, -20 }, // 0x71 'q' + { 6869, 17, 21, 17, 1, -20 }, // 0x72 'r' + { 6914, 17, 22, 16, 0, -20 }, // 0x73 's' + { 6961, 12, 26, 11, 1, -24 }, // 0x74 't' + { 7000, 20, 22, 23, 1, -20 }, // 0x75 'u' + { 7055, 18, 22, 21, 3, -20 }, // 0x76 'v' + { 7105, 30, 22, 32, 2, -20 }, // 0x77 'w' + { 7188, 22, 22, 20, -1, -20 }, // 0x78 'x' + { 7249, 21, 31, 22, 1, -20 }, // 0x79 'y' + { 7331, 17, 24, 18, 0, -19 }, // 0x7A 'z' + { 7382, 17, 40, 19, 2, -31 }, // 0x7B '{' + { 7467, 3, 33, 13, 5, -31 }, // 0x7C '|' + { 7480, 16, 41, 19, 0, -32 }, // 0x7D '}' + { 7562, 22, 6, 25, 2, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifItalic24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8251 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h new file mode 100644 index 000000000..34e6b8df2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h @@ -0,0 +1,202 @@ +const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { + 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, + 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, + 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, + 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, + 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, + 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, + 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, + 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, + 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, + 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, + 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, + 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, + 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, + 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, + 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, + 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, + 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, + 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, + 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, + 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, + 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, + 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, + 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, + 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, + 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, + 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, + 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, + 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, + 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, + 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, + 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, + 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, + 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, + 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, + 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, + 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, + 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, + 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, + 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, + 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, + 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, + 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, + 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, + 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, + 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, + 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, + 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, + 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, + 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, + 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, + 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, + 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, + 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, + 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, + 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, + 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, + 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, + 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, + 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, + 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, + 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, + 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, + 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, + 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, + 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, + 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, + 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, + 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, + 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, + 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, + 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, + 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, + 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, + 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, + 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, + 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, + 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, + 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, + 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, + 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, + 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, + 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, + 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, + 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, + 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, + 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, + 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, + 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, + 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E }; + +const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 4, 12, 6, 1, -11 }, // 0x21 '!' + { 6, 5, 4, 6, 3, -11 }, // 0x22 '"' + { 9, 10, 12, 9, 0, -11 }, // 0x23 '#' + { 24, 9, 15, 9, 1, -12 }, // 0x24 '$' + { 41, 14, 12, 15, 1, -11 }, // 0x25 '%' + { 62, 12, 12, 14, 1, -11 }, // 0x26 '&' + { 80, 2, 4, 4, 3, -11 }, // 0x27 ''' + { 81, 6, 15, 6, 1, -11 }, // 0x28 '(' + { 93, 6, 15, 6, 0, -11 }, // 0x29 ')' + { 105, 6, 8, 9, 3, -11 }, // 0x2A '*' + { 111, 9, 9, 12, 1, -8 }, // 0x2B '+' + { 122, 2, 4, 5, 0, -1 }, // 0x2C ',' + { 123, 4, 1, 6, 1, -3 }, // 0x2D '-' + { 124, 2, 2, 5, 0, -1 }, // 0x2E '.' + { 125, 8, 12, 5, 0, -11 }, // 0x2F '/' + { 137, 9, 13, 9, 1, -12 }, // 0x30 '0' + { 152, 6, 13, 9, 1, -12 }, // 0x31 '1' + { 162, 8, 12, 9, 1, -11 }, // 0x32 '2' + { 174, 9, 12, 9, 0, -11 }, // 0x33 '3' + { 188, 9, 12, 9, 0, -11 }, // 0x34 '4' + { 202, 9, 12, 9, 0, -11 }, // 0x35 '5' + { 216, 9, 13, 9, 1, -12 }, // 0x36 '6' + { 231, 9, 12, 9, 1, -11 }, // 0x37 '7' + { 245, 9, 13, 9, 1, -12 }, // 0x38 '8' + { 260, 9, 13, 9, 0, -12 }, // 0x39 '9' + { 275, 4, 8, 4, 1, -7 }, // 0x3A ':' + { 279, 4, 10, 4, 1, -7 }, // 0x3B ';' + { 284, 9, 9, 10, 1, -8 }, // 0x3C '<' + { 295, 9, 5, 12, 2, -6 }, // 0x3D '=' + { 301, 9, 9, 10, 1, -8 }, // 0x3E '>' + { 312, 7, 12, 8, 2, -11 }, // 0x3F '?' + { 323, 13, 12, 14, 1, -11 }, // 0x40 '@' + { 343, 11, 11, 12, 0, -10 }, // 0x41 'A' + { 359, 11, 12, 11, 0, -11 }, // 0x42 'B' + { 376, 12, 12, 11, 1, -11 }, // 0x43 'C' + { 394, 13, 12, 13, 0, -11 }, // 0x44 'D' + { 414, 12, 12, 10, 0, -11 }, // 0x45 'E' + { 432, 12, 12, 10, 0, -11 }, // 0x46 'F' + { 450, 12, 12, 12, 1, -11 }, // 0x47 'G' + { 468, 14, 12, 13, 0, -11 }, // 0x48 'H' + { 489, 7, 12, 6, 0, -11 }, // 0x49 'I' + { 500, 9, 12, 8, 0, -11 }, // 0x4A 'J' + { 514, 13, 12, 12, 0, -11 }, // 0x4B 'K' + { 534, 11, 12, 10, 0, -11 }, // 0x4C 'L' + { 551, 16, 12, 15, 0, -11 }, // 0x4D 'M' + { 575, 13, 12, 12, 0, -11 }, // 0x4E 'N' + { 595, 11, 12, 12, 1, -11 }, // 0x4F 'O' + { 612, 11, 12, 10, 0, -11 }, // 0x50 'P' + { 629, 11, 15, 12, 1, -11 }, // 0x51 'Q' + { 650, 11, 12, 11, 0, -11 }, // 0x52 'R' + { 667, 10, 12, 8, 0, -11 }, // 0x53 'S' + { 682, 11, 12, 11, 2, -11 }, // 0x54 'T' + { 699, 12, 12, 13, 2, -11 }, // 0x55 'U' + { 717, 11, 12, 12, 2, -11 }, // 0x56 'V' + { 734, 15, 12, 16, 2, -11 }, // 0x57 'W' + { 757, 12, 12, 12, 0, -11 }, // 0x58 'X' + { 775, 10, 12, 11, 2, -11 }, // 0x59 'Y' + { 790, 11, 12, 10, 0, -11 }, // 0x5A 'Z' + { 807, 7, 15, 7, 0, -11 }, // 0x5B '[' + { 821, 6, 12, 9, 2, -11 }, // 0x5C '\' + { 830, 6, 15, 7, 1, -11 }, // 0x5D ']' + { 842, 8, 7, 8, 0, -11 }, // 0x5E '^' + { 849, 9, 1, 9, 0, 2 }, // 0x5F '_' + { 851, 3, 3, 5, 2, -11 }, // 0x60 '`' + { 853, 9, 8, 9, 0, -7 }, // 0x61 'a' + { 862, 9, 12, 9, 0, -11 }, // 0x62 'b' + { 876, 8, 8, 7, 0, -7 }, // 0x63 'c' + { 884, 9, 12, 9, 0, -11 }, // 0x64 'd' + { 898, 7, 8, 7, 0, -7 }, // 0x65 'e' + { 905, 11, 17, 8, -1, -12 }, // 0x66 'f' + { 929, 9, 12, 8, 0, -7 }, // 0x67 'g' + { 943, 9, 12, 9, 0, -11 }, // 0x68 'h' + { 957, 4, 12, 4, 1, -11 }, // 0x69 'i' + { 963, 7, 16, 5, -1, -11 }, // 0x6A 'j' + { 977, 8, 12, 8, 0, -11 }, // 0x6B 'k' + { 989, 4, 12, 5, 1, -11 }, // 0x6C 'l' + { 995, 13, 8, 13, 0, -7 }, // 0x6D 'm' + { 1008, 8, 8, 9, 0, -7 }, // 0x6E 'n' + { 1016, 9, 8, 9, 0, -7 }, // 0x6F 'o' + { 1025, 10, 12, 8, -1, -7 }, // 0x70 'p' + { 1040, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 1054, 7, 8, 7, 0, -7 }, // 0x72 'r' + { 1061, 7, 8, 6, 0, -7 }, // 0x73 's' + { 1068, 5, 9, 4, 0, -8 }, // 0x74 't' + { 1074, 8, 8, 9, 1, -7 }, // 0x75 'u' + { 1082, 7, 8, 8, 1, -7 }, // 0x76 'v' + { 1089, 11, 8, 12, 1, -7 }, // 0x77 'w' + { 1100, 9, 8, 8, -1, -7 }, // 0x78 'x' + { 1109, 9, 12, 9, 0, -7 }, // 0x79 'y' + { 1123, 8, 9, 7, 0, -7 }, // 0x7A 'z' + { 1132, 6, 15, 7, 1, -11 }, // 0x7B '{' + { 1144, 1, 12, 5, 2, -11 }, // 0x7C '|' + { 1146, 7, 16, 7, 0, -12 }, // 0x7D '}' + { 1160, 8, 3, 10, 1, -5 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifItalic9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1835 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h new file mode 100644 index 000000000..ac41f31cd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h @@ -0,0 +1,131 @@ +// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, +// stylized font with all characters within a 6 pixel height. + +const uint8_t Org_01Bitmaps[] PROGMEM = { + 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, + 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, + 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, + 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, + 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, + 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, + 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, + 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, + 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, + 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, + 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, + 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, + 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, + 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, + 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, + 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, + 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, + 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, + 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, + 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, + 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, + 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, + 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0 }; + +const GFXglyph Org_01Glyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' + { 1, 3, 1, 4, 0, -4 }, // 0x22 '"' + { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' + { 6, 5, 5, 6, 0, -4 }, // 0x24 '$' + { 10, 5, 5, 6, 0, -4 }, // 0x25 '%' + { 14, 5, 5, 6, 0, -4 }, // 0x26 '&' + { 18, 1, 1, 2, 0, -4 }, // 0x27 ''' + { 19, 2, 5, 3, 0, -4 }, // 0x28 '(' + { 21, 2, 5, 3, 0, -4 }, // 0x29 ')' + { 23, 3, 3, 4, 0, -3 }, // 0x2A '*' + { 25, 3, 3, 4, 0, -3 }, // 0x2B '+' + { 27, 1, 2, 2, 0, 0 }, // 0x2C ',' + { 28, 4, 1, 5, 0, -2 }, // 0x2D '-' + { 29, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 30, 5, 5, 6, 0, -4 }, // 0x2F '/' + { 34, 5, 5, 6, 0, -4 }, // 0x30 '0' + { 38, 1, 5, 2, 0, -4 }, // 0x31 '1' + { 39, 5, 5, 6, 0, -4 }, // 0x32 '2' + { 43, 5, 5, 6, 0, -4 }, // 0x33 '3' + { 47, 5, 5, 6, 0, -4 }, // 0x34 '4' + { 51, 5, 5, 6, 0, -4 }, // 0x35 '5' + { 55, 5, 5, 6, 0, -4 }, // 0x36 '6' + { 59, 5, 5, 6, 0, -4 }, // 0x37 '7' + { 63, 5, 5, 6, 0, -4 }, // 0x38 '8' + { 67, 5, 5, 6, 0, -4 }, // 0x39 '9' + { 71, 1, 4, 2, 0, -3 }, // 0x3A ':' + { 72, 1, 4, 2, 0, -3 }, // 0x3B ';' + { 73, 3, 5, 4, 0, -4 }, // 0x3C '<' + { 75, 4, 3, 5, 0, -3 }, // 0x3D '=' + { 77, 3, 5, 4, 0, -4 }, // 0x3E '>' + { 79, 5, 5, 6, 0, -4 }, // 0x3F '?' + { 83, 5, 5, 6, 0, -4 }, // 0x40 '@' + { 87, 5, 5, 6, 0, -4 }, // 0x41 'A' + { 91, 5, 5, 6, 0, -4 }, // 0x42 'B' + { 95, 5, 5, 6, 0, -4 }, // 0x43 'C' + { 99, 5, 5, 6, 0, -4 }, // 0x44 'D' + { 103, 5, 5, 6, 0, -4 }, // 0x45 'E' + { 107, 5, 5, 6, 0, -4 }, // 0x46 'F' + { 111, 5, 5, 6, 0, -4 }, // 0x47 'G' + { 115, 5, 5, 6, 0, -4 }, // 0x48 'H' + { 119, 5, 5, 6, 0, -4 }, // 0x49 'I' + { 123, 5, 5, 6, 0, -4 }, // 0x4A 'J' + { 127, 5, 5, 6, 0, -4 }, // 0x4B 'K' + { 131, 5, 5, 6, 0, -4 }, // 0x4C 'L' + { 135, 5, 5, 6, 0, -4 }, // 0x4D 'M' + { 139, 5, 5, 6, 0, -4 }, // 0x4E 'N' + { 143, 5, 5, 6, 0, -4 }, // 0x4F 'O' + { 147, 5, 5, 6, 0, -4 }, // 0x50 'P' + { 151, 5, 5, 6, 0, -4 }, // 0x51 'Q' + { 155, 5, 5, 6, 0, -4 }, // 0x52 'R' + { 159, 5, 5, 6, 0, -4 }, // 0x53 'S' + { 163, 5, 5, 6, 0, -4 }, // 0x54 'T' + { 167, 5, 5, 6, 0, -4 }, // 0x55 'U' + { 171, 5, 5, 6, 0, -4 }, // 0x56 'V' + { 175, 5, 5, 6, 0, -4 }, // 0x57 'W' + { 179, 5, 5, 6, 0, -4 }, // 0x58 'X' + { 183, 5, 5, 6, 0, -4 }, // 0x59 'Y' + { 187, 5, 5, 6, 0, -4 }, // 0x5A 'Z' + { 191, 2, 5, 3, 0, -4 }, // 0x5B '[' + { 193, 5, 5, 6, 0, -4 }, // 0x5C '\' + { 197, 2, 5, 3, 0, -4 }, // 0x5D ']' + { 199, 3, 2, 4, 0, -4 }, // 0x5E '^' + { 200, 5, 1, 6, 0, 1 }, // 0x5F '_' + { 201, 1, 1, 2, 0, -4 }, // 0x60 '`' + { 202, 4, 4, 5, 0, -3 }, // 0x61 'a' + { 204, 4, 5, 5, 0, -4 }, // 0x62 'b' + { 207, 4, 4, 5, 0, -3 }, // 0x63 'c' + { 209, 4, 5, 5, 0, -4 }, // 0x64 'd' + { 212, 4, 4, 5, 0, -3 }, // 0x65 'e' + { 214, 3, 5, 4, 0, -4 }, // 0x66 'f' + { 216, 4, 5, 5, 0, -3 }, // 0x67 'g' + { 219, 4, 5, 5, 0, -4 }, // 0x68 'h' + { 222, 1, 4, 2, 0, -3 }, // 0x69 'i' + { 223, 2, 5, 3, 0, -3 }, // 0x6A 'j' + { 225, 4, 5, 5, 0, -4 }, // 0x6B 'k' + { 228, 1, 5, 2, 0, -4 }, // 0x6C 'l' + { 229, 5, 4, 6, 0, -3 }, // 0x6D 'm' + { 232, 4, 4, 5, 0, -3 }, // 0x6E 'n' + { 234, 4, 4, 5, 0, -3 }, // 0x6F 'o' + { 236, 4, 5, 5, 0, -3 }, // 0x70 'p' + { 239, 4, 5, 5, 0, -3 }, // 0x71 'q' + { 242, 4, 4, 5, 0, -3 }, // 0x72 'r' + { 244, 4, 4, 5, 0, -3 }, // 0x73 's' + { 246, 5, 5, 6, 0, -4 }, // 0x74 't' + { 250, 4, 4, 5, 0, -3 }, // 0x75 'u' + { 252, 4, 4, 5, 0, -3 }, // 0x76 'v' + { 254, 5, 4, 6, 0, -3 }, // 0x77 'w' + { 257, 4, 4, 5, 0, -3 }, // 0x78 'x' + { 259, 4, 5, 5, 0, -3 }, // 0x79 'y' + { 262, 4, 4, 5, 0, -3 }, // 0x7A 'z' + { 264, 3, 5, 4, 0, -4 }, // 0x7B '{' + { 266, 1, 5, 2, 0, -4 }, // 0x7C '|' + { 267, 3, 5, 4, 0, -4 }, // 0x7D '}' + { 269, 5, 3, 6, 0, -3 } }; // 0x7E '~' + +const GFXfont Org_01 PROGMEM = { + (uint8_t *)Org_01Bitmaps, + (GFXglyph *)Org_01Glyphs, + 0x20, 0x7E, 7 }; + +// Approx. 943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h new file mode 100644 index 000000000..0ed654374 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h @@ -0,0 +1,123 @@ +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A }; + +const GFXglyph PicopixelGlyphs[] PROGMEM = { + { 0, 0, 0, 2, 0, 1 }, // 0x20 ' ' + { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' + { 1, 3, 2, 4, 0, -4 }, // 0x22 '"' + { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' + { 6, 3, 6, 4, 0, -4 }, // 0x24 '$' + { 9, 3, 5, 4, 0, -4 }, // 0x25 '%' + { 11, 4, 5, 5, 0, -4 }, // 0x26 '&' + { 14, 1, 2, 2, 0, -4 }, // 0x27 ''' + { 15, 2, 5, 3, 0, -4 }, // 0x28 '(' + { 17, 2, 5, 3, 0, -4 }, // 0x29 ')' + { 19, 3, 3, 4, 0, -3 }, // 0x2A '*' + { 21, 3, 3, 4, 0, -3 }, // 0x2B '+' + { 23, 2, 2, 3, 0, 0 }, // 0x2C ',' + { 24, 3, 1, 4, 0, -2 }, // 0x2D '-' + { 25, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 26, 3, 5, 4, 0, -4 }, // 0x2F '/' + { 28, 3, 5, 4, 0, -4 }, // 0x30 '0' + { 30, 2, 5, 3, 0, -4 }, // 0x31 '1' + { 32, 3, 5, 4, 0, -4 }, // 0x32 '2' + { 34, 3, 5, 4, 0, -4 }, // 0x33 '3' + { 36, 3, 5, 4, 0, -4 }, // 0x34 '4' + { 38, 3, 5, 4, 0, -4 }, // 0x35 '5' + { 40, 3, 5, 4, 0, -4 }, // 0x36 '6' + { 42, 3, 5, 4, 0, -4 }, // 0x37 '7' + { 44, 3, 5, 4, 0, -4 }, // 0x38 '8' + { 46, 3, 5, 4, 0, -4 }, // 0x39 '9' + { 48, 1, 3, 2, 0, -3 }, // 0x3A ':' + { 49, 2, 4, 3, 0, -3 }, // 0x3B ';' + { 50, 2, 3, 3, 0, -3 }, // 0x3C '<' + { 51, 3, 3, 4, 0, -3 }, // 0x3D '=' + { 53, 2, 3, 3, 0, -3 }, // 0x3E '>' + { 54, 3, 5, 4, 0, -4 }, // 0x3F '?' + { 56, 3, 5, 4, 0, -4 }, // 0x40 '@' + { 58, 3, 5, 4, 0, -4 }, // 0x41 'A' + { 60, 3, 5, 4, 0, -4 }, // 0x42 'B' + { 62, 3, 5, 4, 0, -4 }, // 0x43 'C' + { 64, 3, 5, 4, 0, -4 }, // 0x44 'D' + { 66, 3, 5, 4, 0, -4 }, // 0x45 'E' + { 68, 3, 5, 4, 0, -4 }, // 0x46 'F' + { 70, 3, 5, 4, 0, -4 }, // 0x47 'G' + { 72, 3, 5, 4, 0, -4 }, // 0x48 'H' + { 74, 1, 5, 2, 0, -4 }, // 0x49 'I' + { 75, 3, 5, 4, 0, -4 }, // 0x4A 'J' + { 77, 3, 5, 4, 0, -4 }, // 0x4B 'K' + { 79, 3, 5, 4, 0, -4 }, // 0x4C 'L' + { 81, 5, 5, 6, 0, -4 }, // 0x4D 'M' + { 85, 4, 5, 5, 0, -4 }, // 0x4E 'N' + { 88, 3, 5, 4, 0, -4 }, // 0x4F 'O' + { 90, 3, 5, 4, 0, -4 }, // 0x50 'P' + { 92, 3, 6, 4, 0, -4 }, // 0x51 'Q' + { 95, 3, 5, 4, 0, -4 }, // 0x52 'R' + { 97, 3, 5, 4, 0, -4 }, // 0x53 'S' + { 99, 3, 5, 4, 0, -4 }, // 0x54 'T' + { 101, 3, 5, 4, 0, -4 }, // 0x55 'U' + { 103, 3, 5, 4, 0, -4 }, // 0x56 'V' + { 105, 5, 5, 6, 0, -4 }, // 0x57 'W' + { 109, 3, 5, 4, 0, -4 }, // 0x58 'X' + { 111, 3, 5, 4, 0, -4 }, // 0x59 'Y' + { 113, 3, 5, 4, 0, -4 }, // 0x5A 'Z' + { 115, 2, 5, 3, 0, -4 }, // 0x5B '[' + { 117, 3, 5, 4, 0, -4 }, // 0x5C '\' + { 119, 2, 5, 3, 0, -4 }, // 0x5D ']' + { 121, 3, 2, 4, 0, -4 }, // 0x5E '^' + { 122, 4, 1, 4, 0, 1 }, // 0x5F '_' + { 123, 2, 2, 3, 0, -4 }, // 0x60 '`' + { 124, 3, 4, 4, 0, -3 }, // 0x61 'a' + { 126, 3, 5, 4, 0, -4 }, // 0x62 'b' + { 128, 3, 3, 4, 0, -2 }, // 0x63 'c' + { 130, 3, 5, 4, 0, -4 }, // 0x64 'd' + { 132, 3, 4, 4, 0, -3 }, // 0x65 'e' + { 134, 2, 5, 3, 0, -4 }, // 0x66 'f' + { 136, 3, 5, 4, 0, -3 }, // 0x67 'g' + { 138, 3, 5, 4, 0, -4 }, // 0x68 'h' + { 140, 1, 5, 2, 0, -4 }, // 0x69 'i' + { 141, 2, 6, 3, 0, -4 }, // 0x6A 'j' + { 143, 3, 5, 4, 0, -4 }, // 0x6B 'k' + { 145, 2, 5, 3, 0, -4 }, // 0x6C 'l' + { 147, 5, 3, 6, 0, -2 }, // 0x6D 'm' + { 149, 3, 3, 4, 0, -2 }, // 0x6E 'n' + { 151, 3, 3, 4, 0, -2 }, // 0x6F 'o' + { 153, 3, 4, 4, 0, -2 }, // 0x70 'p' + { 155, 3, 4, 4, 0, -2 }, // 0x71 'q' + { 157, 2, 3, 3, 0, -2 }, // 0x72 'r' + { 158, 3, 4, 4, 0, -3 }, // 0x73 's' + { 160, 2, 5, 3, 0, -4 }, // 0x74 't' + { 162, 3, 3, 4, 0, -2 }, // 0x75 'u' + { 164, 3, 3, 4, 0, -2 }, // 0x76 'v' + { 166, 5, 3, 6, 0, -2 }, // 0x77 'w' + { 168, 3, 3, 4, 0, -2 }, // 0x78 'x' + { 170, 3, 4, 4, 0, -2 }, // 0x79 'y' + { 172, 3, 4, 4, 0, -3 }, // 0x7A 'z' + { 174, 3, 5, 4, 0, -4 }, // 0x7B '{' + { 176, 1, 6, 2, 0, -4 }, // 0x7C '|' + { 177, 3, 5, 4, 0, -4 }, // 0x7D '}' + { 179, 4, 2, 5, 0, -3 } }; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = { + (uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, + 0x20, 0x7E, 7 }; + +// Approx. 852 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b new file mode 100644 index 000000000..d77676c21 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b @@ -0,0 +1,130 @@ +/** +** The FontStruction “Tiny3x3a” +** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is +** licensed under a Creative Commons Attribution Non-commercial Share Alike license +** (http://creativecommons.org/licenses/by-nc-sa/3.0/). +** “Tiny3x3a” was originally cloned (copied) from the FontStruction +** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant +** Grant, which is licensed under a Creative Commons Attribution Non-commercial +** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). +* +* Converted by eadmaster with fontconvert +**/ + +const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { + 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, + 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, + 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, + 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, + 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, + 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, + 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, + 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, + 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, + 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, + 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, + 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78 }; + +const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 4, 0, 1 }, // 0x20 ' ' + { 0, 1, 2, 3, 1, -2 }, // 0x21 '!' + { 1, 3, 2, 4, 0, -2 }, // 0x22 '"' + { 2, 3, 3, 4, 0, -2 }, // 0x23 '#' + { 4, 3, 3, 4, 0, -2 }, // 0x24 '$' + { 6, 3, 3, 4, 0, -2 }, // 0x25 '%' + { 8, 3, 3, 4, 0, -2 }, // 0x26 '&' + { 10, 1, 1, 3, 1, -2 }, // 0x27 ''' + { 11, 2, 3, 3, 0, -2 }, // 0x28 '(' + { 12, 2, 3, 4, 1, -2 }, // 0x29 ')' + { 13, 2, 2, 4, 1, -2 }, // 0x2A '*' + { 14, 3, 3, 4, 0, -2 }, // 0x2B '+' + { 16, 1, 2, 2, 0, 0 }, // 0x2C ',' + { 17, 3, 1, 4, 0, -1 }, // 0x2D '-' + { 18, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 19, 3, 3, 4, 0, -2 }, // 0x2F '/' + { 21, 3, 3, 4, 0, -2 }, // 0x30 '0' + { 23, 2, 3, 3, 0, -2 }, // 0x31 '1' + { 24, 3, 3, 4, 0, -2 }, // 0x32 '2' + { 26, 3, 3, 4, 0, -2 }, // 0x33 '3' + { 28, 3, 3, 4, 0, -2 }, // 0x34 '4' + { 30, 3, 3, 4, 0, -2 }, // 0x35 '5' + { 32, 3, 3, 4, 0, -2 }, // 0x36 '6' + { 34, 3, 3, 4, 0, -2 }, // 0x37 '7' + { 36, 3, 3, 4, 0, -2 }, // 0x38 '8' + { 38, 3, 3, 4, 0, -2 }, // 0x39 '9' + { 40, 1, 3, 3, 1, -2 }, // 0x3A ':' + { 41, 2, 3, 3, 0, -1 }, // 0x3B ';' + { 42, 2, 3, 3, 0, -2 }, // 0x3C '<' + { 43, 3, 3, 4, 0, -2 }, // 0x3D '=' + { 45, 2, 3, 4, 1, -2 }, // 0x3E '>' + { 46, 2, 3, 4, 1, -2 }, // 0x3F '?' + { 47, 3, 3, 4, 0, -2 }, // 0x40 '@' + { 49, 3, 3, 4, 0, -2 }, // 0x41 'A' + { 51, 3, 3, 4, 0, -2 }, // 0x42 'B' + { 53, 3, 3, 4, 0, -2 }, // 0x43 'C' + { 55, 3, 3, 4, 0, -2 }, // 0x44 'D' + { 57, 3, 3, 4, 0, -2 }, // 0x45 'E' + { 59, 3, 3, 4, 0, -2 }, // 0x46 'F' + { 61, 3, 3, 4, 0, -2 }, // 0x47 'G' + { 63, 3, 3, 4, 0, -2 }, // 0x48 'H' + { 65, 1, 3, 3, 1, -2 }, // 0x49 'I' + { 66, 3, 3, 4, 0, -2 }, // 0x4A 'J' + { 68, 3, 3, 4, 0, -2 }, // 0x4B 'K' + { 70, 3, 3, 4, 0, -2 }, // 0x4C 'L' + { 72, 3, 3, 4, 0, -2 }, // 0x4D 'M' + { 74, 3, 3, 4, 0, -2 }, // 0x4E 'N' + { 76, 3, 3, 4, 0, -2 }, // 0x4F 'O' + { 78, 3, 3, 4, 0, -2 }, // 0x50 'P' + { 80, 3, 3, 4, 0, -2 }, // 0x51 'Q' + { 82, 3, 3, 4, 0, -2 }, // 0x52 'R' + { 84, 3, 3, 4, 0, -2 }, // 0x53 'S' + { 86, 3, 3, 4, 0, -2 }, // 0x54 'T' + { 88, 3, 3, 4, 0, -2 }, // 0x55 'U' + { 90, 3, 3, 4, 0, -2 }, // 0x56 'V' + { 92, 3, 3, 4, 0, -2 }, // 0x57 'W' + { 94, 3, 3, 4, 0, -2 }, // 0x58 'X' + { 96, 3, 3, 4, 0, -2 }, // 0x59 'Y' + { 98, 3, 3, 4, 0, -2 }, // 0x5A 'Z' + { 100, 2, 3, 3, 0, -2 }, // 0x5B '[' + { 101, 3, 3, 4, 0, -2 }, // 0x5C '\' + { 103, 2, 3, 4, 1, -2 }, // 0x5D ']' + { 104, 3, 2, 4, 0, -2 }, // 0x5E '^' + { 105, 3, 1, 4, 0, 0 }, // 0x5F '_' + { 106, 2, 2, 3, 0, -2 }, // 0x60 '`' + { 107, 2, 2, 3, 0, -1 }, // 0x61 'a' + { 108, 2, 3, 3, 0, -2 }, // 0x62 'b' + { 109, 2, 2, 3, 0, -1 }, // 0x63 'c' + { 110, 2, 3, 3, 0, -2 }, // 0x64 'd' + { 111, 2, 2, 3, 0, -1 }, // 0x65 'e' + { 112, 2, 3, 3, 0, -2 }, // 0x66 'f' + { 113, 2, 3, 3, 0, -1 }, // 0x67 'g' + { 114, 2, 3, 3, 0, -2 }, // 0x68 'h' + { 115, 1, 2, 2, 0, -1 }, // 0x69 'i' + { 116, 2, 3, 3, 0, -1 }, // 0x6A 'j' + { 117, 3, 3, 4, 0, -2 }, // 0x6B 'k' + { 119, 2, 3, 3, 0, -2 }, // 0x6C 'l' + { 120, 3, 2, 4, 0, -1 }, // 0x6D 'm' + { 121, 3, 2, 4, 0, -1 }, // 0x6E 'n' + { 122, 2, 2, 3, 0, -1 }, // 0x6F 'o' + { 123, 2, 3, 3, 0, -1 }, // 0x70 'p' + { 124, 2, 3, 3, 0, -1 }, // 0x71 'q' + { 125, 2, 2, 3, 0, -1 }, // 0x72 'r' + { 126, 2, 2, 3, 0, -1 }, // 0x73 's' + { 127, 3, 3, 4, 0, -2 }, // 0x74 't' + { 129, 3, 2, 4, 0, -1 }, // 0x75 'u' + { 130, 3, 2, 4, 0, -1 }, // 0x76 'v' + { 131, 3, 2, 4, 0, -1 }, // 0x77 'w' + { 132, 2, 2, 3, 0, -1 }, // 0x78 'x' + { 133, 3, 3, 4, 0, -1 }, // 0x79 'y' + { 135, 2, 2, 3, 0, -1 }, // 0x7A 'z' + { 136, 3, 3, 4, 0, -2 }, // 0x7B '{' + { 138, 1, 4, 3, 1, -2 }, // 0x7C '|' + { 139, 3, 3, 4, 0, -2 }, // 0x7D '}' + { 141, 3, 2, 4, 0, -2 } }; // 0x7E '~' + +const GFXfont Tiny3x3a2pt7b PROGMEM = { + (uint8_t *)Tiny3x3a2pt7bBitmaps, + (GFXglyph *)Tiny3x3a2pt7bGlyphs, + 0x20, 0x7E, 4 }; + +// Approx. 814 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h new file mode 100644 index 000000000..dad420dcd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h @@ -0,0 +1,474 @@ +/** +** The original 3x5 font is licensed under the 3-clause BSD license: +** +** Copyright 1999 Brian J. Swetland +** Copyright 1999 Vassilii Khachaturov +** Portions (of vt100.c/vt100.h) copyright Dan Marks +** +** 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. +** 3. The name of the authors may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +** +** Modifications to Tom Thumb for improved readability are from Robey Pointer, +** see: +** http://robey.lag.net/2010/01/23/tiny-monospace-font.html +** +** The original author does not have any objection to relicensing of Robey +** Pointer's modifications (in this file) in a more permissive license. See +** the discussion at the above blog, and also here: +** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license +** +** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, +** with the help of this Python script: +** https://gist.github.com/skelliam/322d421f028545f16f6d +** William Skellenger (williamj@skellenger.net) +** Twitter: @skelliam +** +*/ + +#define TOMTHUMB_USE_EXTENDED 0 + +const uint8_t TomThumbBitmaps[] PROGMEM = { + 0x00, /* 0x20 space */ + 0x80, 0x80, 0x80, 0x00, 0x80, /* 0x21 exclam */ + 0xA0, 0xA0, /* 0x22 quotedbl */ + 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /* 0x23 numbersign */ + 0x60, 0xC0, 0x60, 0xC0, 0x40, /* 0x24 dollar */ + 0x80, 0x20, 0x40, 0x80, 0x20, /* 0x25 percent */ + 0xC0, 0xC0, 0xE0, 0xA0, 0x60, /* 0x26 ampersand */ + 0x80, 0x80, /* 0x27 quotesingle */ + 0x40, 0x80, 0x80, 0x80, 0x40, /* 0x28 parenleft */ + 0x80, 0x40, 0x40, 0x40, 0x80, /* 0x29 parenright */ + 0xA0, 0x40, 0xA0, /* 0x2A asterisk */ + 0x40, 0xE0, 0x40, /* 0x2B plus */ + 0x40, 0x80, /* 0x2C comma */ + 0xE0, /* 0x2D hyphen */ + 0x80, /* 0x2E period */ + 0x20, 0x20, 0x40, 0x80, 0x80, /* 0x2F slash */ + 0x60, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x30 zero */ + 0x40, 0xC0, 0x40, 0x40, 0x40, /* 0x31 one */ + 0xC0, 0x20, 0x40, 0x80, 0xE0, /* 0x32 two */ + 0xC0, 0x20, 0x40, 0x20, 0xC0, /* 0x33 three */ + 0xA0, 0xA0, 0xE0, 0x20, 0x20, /* 0x34 four */ + 0xE0, 0x80, 0xC0, 0x20, 0xC0, /* 0x35 five */ + 0x60, 0x80, 0xE0, 0xA0, 0xE0, /* 0x36 six */ + 0xE0, 0x20, 0x40, 0x80, 0x80, /* 0x37 seven */ + 0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /* 0x38 eight */ + 0xE0, 0xA0, 0xE0, 0x20, 0xC0, /* 0x39 nine */ + 0x80, 0x00, 0x80, /* 0x3A colon */ + 0x40, 0x00, 0x40, 0x80, /* 0x3B semicolon */ + 0x20, 0x40, 0x80, 0x40, 0x20, /* 0x3C less */ + 0xE0, 0x00, 0xE0, /* 0x3D equal */ + 0x80, 0x40, 0x20, 0x40, 0x80, /* 0x3E greater */ + 0xE0, 0x20, 0x40, 0x00, 0x40, /* 0x3F question */ + 0x40, 0xA0, 0xE0, 0x80, 0x60, /* 0x40 at */ + 0x40, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x41 A */ + 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /* 0x42 B */ + 0x60, 0x80, 0x80, 0x80, 0x60, /* 0x43 C */ + 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x44 D */ + 0xE0, 0x80, 0xE0, 0x80, 0xE0, /* 0x45 E */ + 0xE0, 0x80, 0xE0, 0x80, 0x80, /* 0x46 F */ + 0x60, 0x80, 0xE0, 0xA0, 0x60, /* 0x47 G */ + 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x48 H */ + 0xE0, 0x40, 0x40, 0x40, 0xE0, /* 0x49 I */ + 0x20, 0x20, 0x20, 0xA0, 0x40, /* 0x4A J */ + 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /* 0x4B K */ + 0x80, 0x80, 0x80, 0x80, 0xE0, /* 0x4C L */ + 0xA0, 0xE0, 0xE0, 0xA0, 0xA0, /* 0x4D M */ + 0xA0, 0xE0, 0xE0, 0xE0, 0xA0, /* 0x4E N */ + 0x40, 0xA0, 0xA0, 0xA0, 0x40, /* 0x4F O */ + 0xC0, 0xA0, 0xC0, 0x80, 0x80, /* 0x50 P */ + 0x40, 0xA0, 0xA0, 0xE0, 0x60, /* 0x51 Q */ + 0xC0, 0xA0, 0xE0, 0xC0, 0xA0, /* 0x52 R */ + 0x60, 0x80, 0x40, 0x20, 0xC0, /* 0x53 S */ + 0xE0, 0x40, 0x40, 0x40, 0x40, /* 0x54 T */ + 0xA0, 0xA0, 0xA0, 0xA0, 0x60, /* 0x55 U */ + 0xA0, 0xA0, 0xA0, 0x40, 0x40, /* 0x56 V */ + 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, /* 0x57 W */ + 0xA0, 0xA0, 0x40, 0xA0, 0xA0, /* 0x58 X */ + 0xA0, 0xA0, 0x40, 0x40, 0x40, /* 0x59 Y */ + 0xE0, 0x20, 0x40, 0x80, 0xE0, /* 0x5A Z */ + 0xE0, 0x80, 0x80, 0x80, 0xE0, /* 0x5B bracketleft */ + 0x80, 0x40, 0x20, /* 0x5C backslash */ + 0xE0, 0x20, 0x20, 0x20, 0xE0, /* 0x5D bracketright */ + 0x40, 0xA0, /* 0x5E asciicircum */ + 0xE0, /* 0x5F underscore */ + 0x80, 0x40, /* 0x60 grave */ + 0xC0, 0x60, 0xA0, 0xE0, /* 0x61 a */ + 0x80, 0xC0, 0xA0, 0xA0, 0xC0, /* 0x62 b */ + 0x60, 0x80, 0x80, 0x60, /* 0x63 c */ + 0x20, 0x60, 0xA0, 0xA0, 0x60, /* 0x64 d */ + 0x60, 0xA0, 0xC0, 0x60, /* 0x65 e */ + 0x20, 0x40, 0xE0, 0x40, 0x40, /* 0x66 f */ + 0x60, 0xA0, 0xE0, 0x20, 0x40, /* 0x67 g */ + 0x80, 0xC0, 0xA0, 0xA0, 0xA0, /* 0x68 h */ + 0x80, 0x00, 0x80, 0x80, 0x80, /* 0x69 i */ + 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /* 0x6A j */ + 0x80, 0xA0, 0xC0, 0xC0, 0xA0, /* 0x6B k */ + 0xC0, 0x40, 0x40, 0x40, 0xE0, /* 0x6C l */ + 0xE0, 0xE0, 0xE0, 0xA0, /* 0x6D m */ + 0xC0, 0xA0, 0xA0, 0xA0, /* 0x6E n */ + 0x40, 0xA0, 0xA0, 0x40, /* 0x6F o */ + 0xC0, 0xA0, 0xA0, 0xC0, 0x80, /* 0x70 p */ + 0x60, 0xA0, 0xA0, 0x60, 0x20, /* 0x71 q */ + 0x60, 0x80, 0x80, 0x80, /* 0x72 r */ + 0x60, 0xC0, 0x60, 0xC0, /* 0x73 s */ + 0x40, 0xE0, 0x40, 0x40, 0x60, /* 0x74 t */ + 0xA0, 0xA0, 0xA0, 0x60, /* 0x75 u */ + 0xA0, 0xA0, 0xE0, 0x40, /* 0x76 v */ + 0xA0, 0xE0, 0xE0, 0xE0, /* 0x77 w */ + 0xA0, 0x40, 0x40, 0xA0, /* 0x78 x */ + 0xA0, 0xA0, 0x60, 0x20, 0x40, /* 0x79 y */ + 0xE0, 0x60, 0xC0, 0xE0, /* 0x7A z */ + 0x60, 0x40, 0x80, 0x40, 0x60, /* 0x7B braceleft */ + 0x80, 0x80, 0x00, 0x80, 0x80, /* 0x7C bar */ + 0xC0, 0x40, 0x20, 0x40, 0xC0, /* 0x7D braceright */ + 0x60, 0xC0, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + 0x80, 0x00, 0x80, 0x80, 0x80, /* 0xA1 exclamdown */ + 0x40, 0xE0, 0x80, 0xE0, 0x40, /* 0xA2 cent */ + 0x60, 0x40, 0xE0, 0x40, 0xE0, /* 0xA3 sterling */ + 0xA0, 0x40, 0xE0, 0x40, 0xA0, /* 0xA4 currency */ + 0xA0, 0xA0, 0x40, 0xE0, 0x40, /* 0xA5 yen */ + 0x80, 0x80, 0x00, 0x80, 0x80, /* 0xA6 brokenbar */ + 0x60, 0x40, 0xA0, 0x40, 0xC0, /* 0xA7 section */ + 0xA0, /* 0xA8 dieresis */ + 0x60, 0x80, 0x60, /* 0xA9 copyright */ + 0x60, 0xA0, 0xE0, 0x00, 0xE0, /* 0xAA ordfeminine */ + 0x40, 0x80, 0x40, /* 0xAB guillemotleft */ + 0xE0, 0x20, /* 0xAC logicalnot */ + 0xC0, /* 0xAD softhyphen */ + 0xC0, 0xC0, 0xA0, /* 0xAE registered */ + 0xE0, /* 0xAF macron */ + 0x40, 0xA0, 0x40, /* 0xB0 degree */ + 0x40, 0xE0, 0x40, 0x00, 0xE0, /* 0xB1 plusminus */ + 0xC0, 0x40, 0x60, /* 0xB2 twosuperior */ + 0xE0, 0x60, 0xE0, /* 0xB3 threesuperior */ + 0x40, 0x80, /* 0xB4 acute */ + 0xA0, 0xA0, 0xA0, 0xC0, 0x80, /* 0xB5 mu */ + 0x60, 0xA0, 0x60, 0x60, 0x60, /* 0xB6 paragraph */ + 0xE0, 0xE0, 0xE0, /* 0xB7 periodcentered */ + 0x40, 0x20, 0xC0, /* 0xB8 cedilla */ + 0x80, 0x80, 0x80, /* 0xB9 onesuperior */ + 0x40, 0xA0, 0x40, 0x00, 0xE0, /* 0xBA ordmasculine */ + 0x80, 0x40, 0x80, /* 0xBB guillemotright */ + 0x80, 0x80, 0x00, 0x60, 0x20, /* 0xBC onequarter */ + 0x80, 0x80, 0x00, 0xC0, 0x60, /* 0xBD onehalf */ + 0xC0, 0xC0, 0x00, 0x60, 0x20, /* 0xBE threequarters */ + 0x40, 0x00, 0x40, 0x80, 0xE0, /* 0xBF questiondown */ + 0x40, 0x20, 0x40, 0xE0, 0xA0, /* 0xC0 Agrave */ + 0x40, 0x80, 0x40, 0xE0, 0xA0, /* 0xC1 Aacute */ + 0xE0, 0x00, 0x40, 0xE0, 0xA0, /* 0xC2 Acircumflex */ + 0x60, 0xC0, 0x40, 0xE0, 0xA0, /* 0xC3 Atilde */ + 0xA0, 0x40, 0xA0, 0xE0, 0xA0, /* 0xC4 Adieresis */ + 0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /* 0xC5 Aring */ + 0x60, 0xC0, 0xE0, 0xC0, 0xE0, /* 0xC6 AE */ + 0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /* 0xC7 Ccedilla */ + 0x40, 0x20, 0xE0, 0xC0, 0xE0, /* 0xC8 Egrave */ + 0x40, 0x80, 0xE0, 0xC0, 0xE0, /* 0xC9 Eacute */ + 0xE0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCA Ecircumflex */ + 0xA0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCB Edieresis */ + 0x40, 0x20, 0xE0, 0x40, 0xE0, /* 0xCC Igrave */ + 0x40, 0x80, 0xE0, 0x40, 0xE0, /* 0xCD Iacute */ + 0xE0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCE Icircumflex */ + 0xA0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCF Idieresis */ + 0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD0 Eth */ + 0xC0, 0x60, 0xA0, 0xE0, 0xA0, /* 0xD1 Ntilde */ + 0x40, 0x20, 0xE0, 0xA0, 0xE0, /* 0xD2 Ograve */ + 0x40, 0x80, 0xE0, 0xA0, 0xE0, /* 0xD3 Oacute */ + 0xE0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD4 Ocircumflex */ + 0xC0, 0x60, 0xE0, 0xA0, 0xE0, /* 0xD5 Otilde */ + 0xA0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD6 Odieresis */ + 0xA0, 0x40, 0xA0, /* 0xD7 multiply */ + 0x60, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD8 Oslash */ + 0x80, 0x40, 0xA0, 0xA0, 0xE0, /* 0xD9 Ugrave */ + 0x20, 0x40, 0xA0, 0xA0, 0xE0, /* 0xDA Uacute */ + 0xE0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDB Ucircumflex */ + 0xA0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDC Udieresis */ + 0x20, 0x40, 0xA0, 0xE0, 0x40, /* 0xDD Yacute */ + 0x80, 0xE0, 0xA0, 0xE0, 0x80, /* 0xDE Thorn */ + 0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /* 0xDF germandbls */ + 0x40, 0x20, 0x60, 0xA0, 0xE0, /* 0xE0 agrave */ + 0x40, 0x80, 0x60, 0xA0, 0xE0, /* 0xE1 aacute */ + 0xE0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE2 acircumflex */ + 0x60, 0xC0, 0x60, 0xA0, 0xE0, /* 0xE3 atilde */ + 0xA0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE4 adieresis */ + 0x60, 0x60, 0x60, 0xA0, 0xE0, /* 0xE5 aring */ + 0x60, 0xE0, 0xE0, 0xC0, /* 0xE6 ae */ + 0x60, 0x80, 0x60, 0x20, 0x40, /* 0xE7 ccedilla */ + 0x40, 0x20, 0x60, 0xE0, 0x60, /* 0xE8 egrave */ + 0x40, 0x80, 0x60, 0xE0, 0x60, /* 0xE9 eacute */ + 0xE0, 0x00, 0x60, 0xE0, 0x60, /* 0xEA ecircumflex */ + 0xA0, 0x00, 0x60, 0xE0, 0x60, /* 0xEB edieresis */ + 0x80, 0x40, 0x80, 0x80, 0x80, /* 0xEC igrave */ + 0x40, 0x80, 0x40, 0x40, 0x40, /* 0xED iacute */ + 0xE0, 0x00, 0x40, 0x40, 0x40, /* 0xEE icircumflex */ + 0xA0, 0x00, 0x40, 0x40, 0x40, /* 0xEF idieresis */ + 0x60, 0xC0, 0x60, 0xA0, 0x60, /* 0xF0 eth */ + 0xC0, 0x60, 0xC0, 0xA0, 0xA0, /* 0xF1 ntilde */ + 0x40, 0x20, 0x40, 0xA0, 0x40, /* 0xF2 ograve */ + 0x40, 0x80, 0x40, 0xA0, 0x40, /* 0xF3 oacute */ + 0xE0, 0x00, 0x40, 0xA0, 0x40, /* 0xF4 ocircumflex */ + 0xC0, 0x60, 0x40, 0xA0, 0x40, /* 0xF5 otilde */ + 0xA0, 0x00, 0x40, 0xA0, 0x40, /* 0xF6 odieresis */ + 0x40, 0x00, 0xE0, 0x00, 0x40, /* 0xF7 divide */ + 0x60, 0xE0, 0xA0, 0xC0, /* 0xF8 oslash */ + 0x80, 0x40, 0xA0, 0xA0, 0x60, /* 0xF9 ugrave */ + 0x20, 0x40, 0xA0, 0xA0, 0x60, /* 0xFA uacute */ + 0xE0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFB ucircumflex */ + 0xA0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFC udieresis */ + 0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /* 0xFD yacute */ + 0x80, 0xC0, 0xA0, 0xC0, 0x80, /* 0xFE thorn */ + 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /* 0xFF ydieresis */ + 0x00, /* 0x11D gcircumflex */ + 0x60, 0xC0, 0xE0, 0xC0, 0x60, /* 0x152 OE */ + 0x60, 0xE0, 0xC0, 0xE0, /* 0x153 oe */ + 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x160 Scaron */ + 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x161 scaron */ + 0xA0, 0x00, 0xA0, 0x40, 0x40, /* 0x178 Ydieresis */ + 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17D Zcaron */ + 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17E zcaron */ + 0x00, /* 0xEA4 uni0EA4 */ + 0x00, /* 0x13A0 uni13A0 */ + 0x80, /* 0x2022 bullet */ + 0xA0, /* 0x2026 ellipsis */ + 0x60, 0xE0, 0xE0, 0xC0, 0x60, /* 0x20AC Euro */ + 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ + }; + + +/* {offset, width, height, advance cursor, x offset, y offset} */ +const GFXglyph TomThumbGlyphs[] PROGMEM = { + { 0, 8, 1, 2, 0, -5 }, /* 0x20 space */ + { 1, 8, 5, 2, 0, -5 }, /* 0x21 exclam */ + { 6, 8, 2, 4, 0, -5 }, /* 0x22 quotedbl */ + { 8, 8, 5, 4, 0, -5 }, /* 0x23 numbersign */ + { 13, 8, 5, 4, 0, -5 }, /* 0x24 dollar */ + { 18, 8, 5, 4, 0, -5 }, /* 0x25 percent */ + { 23, 8, 5, 4, 0, -5 }, /* 0x26 ampersand */ + { 28, 8, 2, 2, 0, -5 }, /* 0x27 quotesingle */ + { 30, 8, 5, 3, 0, -5 }, /* 0x28 parenleft */ + { 35, 8, 5, 3, 0, -5 }, /* 0x29 parenright */ + { 40, 8, 3, 4, 0, -5 }, /* 0x2A asterisk */ + { 43, 8, 3, 4, 0, -4 }, /* 0x2B plus */ + { 46, 8, 2, 3, 0, -2 }, /* 0x2C comma */ + { 48, 8, 1, 4, 0, -3 }, /* 0x2D hyphen */ + { 49, 8, 1, 2, 0, -1 }, /* 0x2E period */ + { 50, 8, 5, 4, 0, -5 }, /* 0x2F slash */ + { 55, 8, 5, 4, 0, -5 }, /* 0x30 zero */ + { 60, 8, 5, 3, 0, -5 }, /* 0x31 one */ + { 65, 8, 5, 4, 0, -5 }, /* 0x32 two */ + { 70, 8, 5, 4, 0, -5 }, /* 0x33 three */ + { 75, 8, 5, 4, 0, -5 }, /* 0x34 four */ + { 80, 8, 5, 4, 0, -5 }, /* 0x35 five */ + { 85, 8, 5, 4, 0, -5 }, /* 0x36 six */ + { 90, 8, 5, 4, 0, -5 }, /* 0x37 seven */ + { 95, 8, 5, 4, 0, -5 }, /* 0x38 eight */ + { 100, 8, 5, 4, 0, -5 }, /* 0x39 nine */ + { 105, 8, 3, 2, 0, -4 }, /* 0x3A colon */ + { 108, 8, 4, 3, 0, -4 }, /* 0x3B semicolon */ + { 112, 8, 5, 4, 0, -5 }, /* 0x3C less */ + { 117, 8, 3, 4, 0, -4 }, /* 0x3D equal */ + { 120, 8, 5, 4, 0, -5 }, /* 0x3E greater */ + { 125, 8, 5, 4, 0, -5 }, /* 0x3F question */ + { 130, 8, 5, 4, 0, -5 }, /* 0x40 at */ + { 135, 8, 5, 4, 0, -5 }, /* 0x41 A */ + { 140, 8, 5, 4, 0, -5 }, /* 0x42 B */ + { 145, 8, 5, 4, 0, -5 }, /* 0x43 C */ + { 150, 8, 5, 4, 0, -5 }, /* 0x44 D */ + { 155, 8, 5, 4, 0, -5 }, /* 0x45 E */ + { 160, 8, 5, 4, 0, -5 }, /* 0x46 F */ + { 165, 8, 5, 4, 0, -5 }, /* 0x47 G */ + { 170, 8, 5, 4, 0, -5 }, /* 0x48 H */ + { 175, 8, 5, 4, 0, -5 }, /* 0x49 I */ + { 180, 8, 5, 4, 0, -5 }, /* 0x4A J */ + { 185, 8, 5, 4, 0, -5 }, /* 0x4B K */ + { 190, 8, 5, 4, 0, -5 }, /* 0x4C L */ + { 195, 8, 5, 4, 0, -5 }, /* 0x4D M */ + { 200, 8, 5, 4, 0, -5 }, /* 0x4E N */ + { 205, 8, 5, 4, 0, -5 }, /* 0x4F O */ + { 210, 8, 5, 4, 0, -5 }, /* 0x50 P */ + { 215, 8, 5, 4, 0, -5 }, /* 0x51 Q */ + { 220, 8, 5, 4, 0, -5 }, /* 0x52 R */ + { 225, 8, 5, 4, 0, -5 }, /* 0x53 S */ + { 230, 8, 5, 4, 0, -5 }, /* 0x54 T */ + { 235, 8, 5, 4, 0, -5 }, /* 0x55 U */ + { 240, 8, 5, 4, 0, -5 }, /* 0x56 V */ + { 245, 8, 5, 4, 0, -5 }, /* 0x57 W */ + { 250, 8, 5, 4, 0, -5 }, /* 0x58 X */ + { 255, 8, 5, 4, 0, -5 }, /* 0x59 Y */ + { 260, 8, 5, 4, 0, -5 }, /* 0x5A Z */ + { 265, 8, 5, 4, 0, -5 }, /* 0x5B bracketleft */ + { 270, 8, 3, 4, 0, -4 }, /* 0x5C backslash */ + { 273, 8, 5, 4, 0, -5 }, /* 0x5D bracketright */ + { 278, 8, 2, 4, 0, -5 }, /* 0x5E asciicircum */ + { 280, 8, 1, 4, 0, -1 }, /* 0x5F underscore */ + { 281, 8, 2, 3, 0, -5 }, /* 0x60 grave */ + { 283, 8, 4, 4, 0, -4 }, /* 0x61 a */ + { 287, 8, 5, 4, 0, -5 }, /* 0x62 b */ + { 292, 8, 4, 4, 0, -4 }, /* 0x63 c */ + { 296, 8, 5, 4, 0, -5 }, /* 0x64 d */ + { 301, 8, 4, 4, 0, -4 }, /* 0x65 e */ + { 305, 8, 5, 4, 0, -5 }, /* 0x66 f */ + { 310, 8, 5, 4, 0, -4 }, /* 0x67 g */ + { 315, 8, 5, 4, 0, -5 }, /* 0x68 h */ + { 320, 8, 5, 2, 0, -5 }, /* 0x69 i */ + { 325, 8, 6, 4, 0, -5 }, /* 0x6A j */ + { 331, 8, 5, 4, 0, -5 }, /* 0x6B k */ + { 336, 8, 5, 4, 0, -5 }, /* 0x6C l */ + { 341, 8, 4, 4, 0, -4 }, /* 0x6D m */ + { 345, 8, 4, 4, 0, -4 }, /* 0x6E n */ + { 349, 8, 4, 4, 0, -4 }, /* 0x6F o */ + { 353, 8, 5, 4, 0, -4 }, /* 0x70 p */ + { 358, 8, 5, 4, 0, -4 }, /* 0x71 q */ + { 363, 8, 4, 4, 0, -4 }, /* 0x72 r */ + { 367, 8, 4, 4, 0, -4 }, /* 0x73 s */ + { 371, 8, 5, 4, 0, -5 }, /* 0x74 t */ + { 376, 8, 4, 4, 0, -4 }, /* 0x75 u */ + { 380, 8, 4, 4, 0, -4 }, /* 0x76 v */ + { 384, 8, 4, 4, 0, -4 }, /* 0x77 w */ + { 388, 8, 4, 4, 0, -4 }, /* 0x78 x */ + { 392, 8, 5, 4, 0, -4 }, /* 0x79 y */ + { 397, 8, 4, 4, 0, -4 }, /* 0x7A z */ + { 401, 8, 5, 4, 0, -5 }, /* 0x7B braceleft */ + { 406, 8, 5, 2, 0, -5 }, /* 0x7C bar */ + { 411, 8, 5, 4, 0, -5 }, /* 0x7D braceright */ + { 416, 8, 2, 4, 0, -5 }, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + { 418, 8, 5, 2, 0, -5 }, /* 0xA1 exclamdown */ + { 423, 8, 5, 4, 0, -5 }, /* 0xA2 cent */ + { 428, 8, 5, 4, 0, -5 }, /* 0xA3 sterling */ + { 433, 8, 5, 4, 0, -5 }, /* 0xA4 currency */ + { 438, 8, 5, 4, 0, -5 }, /* 0xA5 yen */ + { 443, 8, 5, 2, 0, -5 }, /* 0xA6 brokenbar */ + { 448, 8, 5, 4, 0, -5 }, /* 0xA7 section */ + { 453, 8, 1, 4, 0, -5 }, /* 0xA8 dieresis */ + { 454, 8, 3, 4, 0, -5 }, /* 0xA9 copyright */ + { 457, 8, 5, 4, 0, -5 }, /* 0xAA ordfeminine */ + { 462, 8, 3, 3, 0, -5 }, /* 0xAB guillemotleft */ + { 465, 8, 2, 4, 0, -4 }, /* 0xAC logicalnot */ + { 467, 8, 1, 3, 0, -3 }, /* 0xAD softhyphen */ + { 468, 8, 3, 4, 0, -5 }, /* 0xAE registered */ + { 471, 8, 1, 4, 0, -5 }, /* 0xAF macron */ + { 472, 8, 3, 4, 0, -5 }, /* 0xB0 degree */ + { 475, 8, 5, 4, 0, -5 }, /* 0xB1 plusminus */ + { 480, 8, 3, 4, 0, -5 }, /* 0xB2 twosuperior */ + { 483, 8, 3, 4, 0, -5 }, /* 0xB3 threesuperior */ + { 486, 8, 2, 3, 0, -5 }, /* 0xB4 acute */ + { 488, 8, 5, 4, 0, -5 }, /* 0xB5 mu */ + { 493, 8, 5, 4, 0, -5 }, /* 0xB6 paragraph */ + { 498, 8, 3, 4, 0, -4 }, /* 0xB7 periodcentered */ + { 501, 8, 3, 4, 0, -3 }, /* 0xB8 cedilla */ + { 504, 8, 3, 2, 0, -5 }, /* 0xB9 onesuperior */ + { 507, 8, 5, 4, 0, -5 }, /* 0xBA ordmasculine */ + { 512, 8, 3, 3, 0, -5 }, /* 0xBB guillemotright */ + { 515, 8, 5, 4, 0, -5 }, /* 0xBC onequarter */ + { 520, 8, 5, 4, 0, -5 }, /* 0xBD onehalf */ + { 525, 8, 5, 4, 0, -5 }, /* 0xBE threequarters */ + { 530, 8, 5, 4, 0, -5 }, /* 0xBF questiondown */ + { 535, 8, 5, 4, 0, -5 }, /* 0xC0 Agrave */ + { 540, 8, 5, 4, 0, -5 }, /* 0xC1 Aacute */ + { 545, 8, 5, 4, 0, -5 }, /* 0xC2 Acircumflex */ + { 550, 8, 5, 4, 0, -5 }, /* 0xC3 Atilde */ + { 555, 8, 5, 4, 0, -5 }, /* 0xC4 Adieresis */ + { 560, 8, 5, 4, 0, -5 }, /* 0xC5 Aring */ + { 565, 8, 5, 4, 0, -5 }, /* 0xC6 AE */ + { 570, 8, 6, 4, 0, -5 }, /* 0xC7 Ccedilla */ + { 576, 8, 5, 4, 0, -5 }, /* 0xC8 Egrave */ + { 581, 8, 5, 4, 0, -5 }, /* 0xC9 Eacute */ + { 586, 8, 5, 4, 0, -5 }, /* 0xCA Ecircumflex */ + { 591, 8, 5, 4, 0, -5 }, /* 0xCB Edieresis */ + { 596, 8, 5, 4, 0, -5 }, /* 0xCC Igrave */ + { 601, 8, 5, 4, 0, -5 }, /* 0xCD Iacute */ + { 606, 8, 5, 4, 0, -5 }, /* 0xCE Icircumflex */ + { 611, 8, 5, 4, 0, -5 }, /* 0xCF Idieresis */ + { 616, 8, 5, 4, 0, -5 }, /* 0xD0 Eth */ + { 621, 8, 5, 4, 0, -5 }, /* 0xD1 Ntilde */ + { 626, 8, 5, 4, 0, -5 }, /* 0xD2 Ograve */ + { 631, 8, 5, 4, 0, -5 }, /* 0xD3 Oacute */ + { 636, 8, 5, 4, 0, -5 }, /* 0xD4 Ocircumflex */ + { 641, 8, 5, 4, 0, -5 }, /* 0xD5 Otilde */ + { 646, 8, 5, 4, 0, -5 }, /* 0xD6 Odieresis */ + { 651, 8, 3, 4, 0, -4 }, /* 0xD7 multiply */ + { 654, 8, 5, 4, 0, -5 }, /* 0xD8 Oslash */ + { 659, 8, 5, 4, 0, -5 }, /* 0xD9 Ugrave */ + { 664, 8, 5, 4, 0, -5 }, /* 0xDA Uacute */ + { 669, 8, 5, 4, 0, -5 }, /* 0xDB Ucircumflex */ + { 674, 8, 5, 4, 0, -5 }, /* 0xDC Udieresis */ + { 679, 8, 5, 4, 0, -5 }, /* 0xDD Yacute */ + { 684, 8, 5, 4, 0, -5 }, /* 0xDE Thorn */ + { 689, 8, 6, 4, 0, -5 }, /* 0xDF germandbls */ + { 695, 8, 5, 4, 0, -5 }, /* 0xE0 agrave */ + { 700, 8, 5, 4, 0, -5 }, /* 0xE1 aacute */ + { 705, 8, 5, 4, 0, -5 }, /* 0xE2 acircumflex */ + { 710, 8, 5, 4, 0, -5 }, /* 0xE3 atilde */ + { 715, 8, 5, 4, 0, -5 }, /* 0xE4 adieresis */ + { 720, 8, 5, 4, 0, -5 }, /* 0xE5 aring */ + { 725, 8, 4, 4, 0, -4 }, /* 0xE6 ae */ + { 729, 8, 5, 4, 0, -4 }, /* 0xE7 ccedilla */ + { 734, 8, 5, 4, 0, -5 }, /* 0xE8 egrave */ + { 739, 8, 5, 4, 0, -5 }, /* 0xE9 eacute */ + { 744, 8, 5, 4, 0, -5 }, /* 0xEA ecircumflex */ + { 749, 8, 5, 4, 0, -5 }, /* 0xEB edieresis */ + { 754, 8, 5, 3, 0, -5 }, /* 0xEC igrave */ + { 759, 8, 5, 3, 0, -5 }, /* 0xED iacute */ + { 764, 8, 5, 4, 0, -5 }, /* 0xEE icircumflex */ + { 769, 8, 5, 4, 0, -5 }, /* 0xEF idieresis */ + { 774, 8, 5, 4, 0, -5 }, /* 0xF0 eth */ + { 779, 8, 5, 4, 0, -5 }, /* 0xF1 ntilde */ + { 784, 8, 5, 4, 0, -5 }, /* 0xF2 ograve */ + { 789, 8, 5, 4, 0, -5 }, /* 0xF3 oacute */ + { 794, 8, 5, 4, 0, -5 }, /* 0xF4 ocircumflex */ + { 799, 8, 5, 4, 0, -5 }, /* 0xF5 otilde */ + { 804, 8, 5, 4, 0, -5 }, /* 0xF6 odieresis */ + { 809, 8, 5, 4, 0, -5 }, /* 0xF7 divide */ + { 814, 8, 4, 4, 0, -4 }, /* 0xF8 oslash */ + { 818, 8, 5, 4, 0, -5 }, /* 0xF9 ugrave */ + { 823, 8, 5, 4, 0, -5 }, /* 0xFA uacute */ + { 828, 8, 5, 4, 0, -5 }, /* 0xFB ucircumflex */ + { 833, 8, 5, 4, 0, -5 }, /* 0xFC udieresis */ + { 838, 8, 6, 4, 0, -5 }, /* 0xFD yacute */ + { 844, 8, 5, 4, 0, -4 }, /* 0xFE thorn */ + { 849, 8, 6, 4, 0, -5 }, /* 0xFF ydieresis */ + { 855, 8, 1, 2, 0, -1 }, /* 0x11D gcircumflex */ + { 856, 8, 5, 4, 0, -5 }, /* 0x152 OE */ + { 861, 8, 4, 4, 0, -4 }, /* 0x153 oe */ + { 865, 8, 5, 4, 0, -5 }, /* 0x160 Scaron */ + { 870, 8, 5, 4, 0, -5 }, /* 0x161 scaron */ + { 875, 8, 5, 4, 0, -5 }, /* 0x178 Ydieresis */ + { 880, 8, 5, 4, 0, -5 }, /* 0x17D Zcaron */ + { 885, 8, 5, 4, 0, -5 }, /* 0x17E zcaron */ + { 890, 8, 1, 2, 0, -1 }, /* 0xEA4 uni0EA4 */ + { 891, 8, 1, 2, 0, -1 }, /* 0x13A0 uni13A0 */ + { 892, 8, 1, 2, 0, -3 }, /* 0x2022 bullet */ + { 893, 8, 1, 4, 0, -1 }, /* 0x2026 ellipsis */ + { 894, 8, 5, 4, 0, -5 }, /* 0x20AC Euro */ + { 899, 8, 5, 4, 0, -5 }, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +const GFXfont TomThumb PROGMEM = { + (uint8_t *)TomThumbBitmaps, + (GFXglyph *)TomThumbGlyphs, + 0x20, 0x7E, 6 }; diff --git a/lib/Adafruit_GFX-1.2.2.07/README.md b/lib/Adafruit_GFX-1.2.2.07/README.md new file mode 100644 index 000000000..21f2bc8eb --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/README.md @@ -0,0 +1,31 @@ +# Adafruit GFX Library + +This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be 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 and open-source hardware by purchasing products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +BSD license, check license.txt for more information. +All text above must be included in any redistribution. + +Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. + +# Useful Resources + +- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code + +- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 + +- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, #include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font. + +- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX .h format. + +--- + +### Roadmap + +The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add ungainly workarounds. + +Highly unlikely to merge any changes for additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is (this also creates liabilities for tools and documentation). If you *must* have a more sophisticated font format, consider creating a fork with the features required for your project. For similar reasons, also unlikely to add any more bitmap formats, it's getting messy. + +Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile new file mode 100644 index 000000000..47f5a0e15 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile @@ -0,0 +1,12 @@ +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + strip $@ + +clean: + rm -f fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c new file mode 100644 index 000000000..bfd21103c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c @@ -0,0 +1,284 @@ +/* +TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' +Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. + +NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing +fonts to be used with the Adafruit_GFX Arduino library. + +For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: + ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h + +REQUIRES FREETYPE LIBRARY. www.freetype.org + +Currently this only extracts the printable 7-bit ASCII chars of a font. +Will eventually extend with some int'l chars a la ftGFX, not there yet. +Keep 7-bit fonts around as an option in that case, more compact. + +See notes at end for glyph nomenclature & other tidbits. +*/ + +#include +#include +#include +#include +#include FT_GLYPH_H +#include "../gfxfont.h" // Adafruit_GFX font structures + +#define DPI 141 // Approximate res. of Adafruit 2.8" TFT + +// Accumulate bits for output, with periodic hexadecimal byte write +void enbit(uint8_t value) { + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if(value) sum |= bit; // Set bit if needed + if(!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if(!firstCall) { // Format output table nicely + if(++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } +} + +int main(int argc, char *argv[]) { + int i, j, err, size, first=' ', last='~', + bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if(argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", + argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if(argc == 4) { + last = atoi(argv[3]); + } else if(argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if(last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if(ptr) ptr++; // First character of filename (path stripped) + else ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * + sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if(!ptr) ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for(i=0; (c=fontName[i]); i++) { + if(isspace(c) || ispunct(c)) fontName[i] = '_'; + } + + // Init FreeType lib, load font + if((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + if((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for(i=first, j=0; i<=last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", + err, i); + continue; + } + + if((err = FT_Render_Glyph(face->glyph, + FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", + err, i); + continue; + } + + if((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", + err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for(y=0; y < bitmap->rows; y++) { + for(x=0;x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[ + y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if(n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while(n--) enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for(i=first, j=0; i<=last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", + table[j].bitmapOffset, + table[j].width, + table[j].height, + table[j].xAdvance, + table[j].xOffset, + table[j].yOffset); + if(i < last) { + printf(", // 0x%02X", i); + if((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if((last >= ' ') && (last <= '~')) printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", + first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", + first, last, face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", + bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; +} + +/* ------------------------------------------------------------------------- + +Character metrics are slightly different from classic GFX & ftGFX. +In classic GFX: cursor position is the upper-left pixel of each 5x7 +character; lower extent of most glyphs (except those w/descenders) +is +6 pixels in Y direction. +W/new GFX fonts: cursor position is on baseline, where baseline is +'inclusive' (containing the bottom-most row of pixels in most symbols, +except those with descenders; ftGFX is one pixel lower). + +Cursor Y will be moved automatically when switching between classic +and new fonts. If you switch fonts, any print() calls will continue +along the same baseline. + + ...........#####.. -- yOffset + ..........######.. + ..........######.. + .........#######.. + ........#########. + * = Cursor pos. ........#########. + .......##########. + ......#####..####. + ......#####..####. + *.#.. .....#####...####. + .#.#. ....############## + #...# ...############### + #...# ...############### + ##### ..#####......##### + #...# .#####.......##### +====== #...# ====== #*###.........#### ======= Baseline + || xOffset + +glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space +(+Y is down), from the cursor position to the top-left pixel of the +glyph bitmap. i.e. yOffset is typically negative, xOffset is typically +zero but a few glyphs will have other values (even negative xOffsets +sometimes, totally normal). glyph->xAdvance is the distance to move +the cursor on the X axis after drawing the corresponding symbol. + +There's also some changes with regard to 'background' color and new GFX +fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. +*/ diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md new file mode 100644 index 000000000..361078b60 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md @@ -0,0 +1,88 @@ +### A short guide to use fontconvert.c to create your own fonts using MinGW. + +#### STEP 1: INSTALL MinGW + +Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). +Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). +I suggest installing with the "Graphical User Interface Installer". +To complete your initial installation you should further install some "packages". +For our purpose you should only install the "Basic Setup" packages. +To do that: + +1. Open the MinGW Installation Manager +2. From the left panel click "Basic Setup". +3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" +and click "Mark for installation" +4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". + + +#### STEP 2: INSTALL Freetype Library + +To read about the freetype project visit [freetype.org](https://www.freetype.org/). +To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) +and choose "freetype-2.7.tar.gz" file (or a newer version if available). +To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. +(I also renamed the folder to "ft27") +Before you build the library it's good to read these articles: +* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) +* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) +* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) + +Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). +Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. +To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. +Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. +Enter "ft27" directory using the cd commands: +``` +cd /c +cd ft27 +``` + +and then type one by one the commands: +``` +./configure --prefix=/mingw +make +make install +``` +Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". +That, hopefully, means that you have installed the library correctly !! + +#### STEP 3: Build fontconvert.c + +Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. +Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). +Change the commands so in the end the program looks like : +``` +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I c:/mingw/include/freetype2 +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + +clean: + rm -f fontconvert +``` +Go back in the command prompt and with a cd command enter the fontconvert directory. +``` +cd /c/adafruit_gfx_library\fontconvert +``` +Give the command: +``` +make +``` +This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. + +#### STEP 4: Create your own font header files + +Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. +So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: +``` +./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h +``` +You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). + +Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee +and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh new file mode 100644 index 000000000..35f07ea52 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Ugly little Bash script, generates a set of .h files for GFX using +# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), +# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, +# bold, oblique or italic, and bold+oblique or bold+italic; and four +# sizes: 9, 12, 18 and 24 point. No real error checking or anything, +# this just powers through all the combinations, calling the fontconvert +# utility and redirecting the output to a .h file for each combo. + +# Adafruit_GFX repository does not include the source outline fonts +# (huge zipfile, different license) but they're easily acquired: +# http://savannah.gnu.org/projects/freefont/ + +convert=./fontconvert +inpath=~/Desktop/freefont/ +outpath=../Fonts/ +fonts=(FreeMono FreeSans FreeSerif) +styles=("" Bold Italic BoldItalic Oblique BoldOblique) +sizes=(9 12 18 24) + +for f in ${fonts[*]} +do + for index in ${!styles[*]} + do + st=${styles[$index]} + for si in ${sizes[*]} + do + infile=$inpath$f$st".ttf" + if [ -f $infile ] # Does source combination exist? + then + outfile=$outpath$f$st$si"pt7b.h" +# printf "%s %s %s > %s\n" $convert $infile $si $outfile + $convert $infile $si > $outfile + fi + done + done +done diff --git a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h new file mode 100644 index 000000000..07381eddd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h @@ -0,0 +1,24 @@ +// Font structures for newer Adafruit_GFX (1.1 and later). +// Example fonts are included in 'Fonts' directory. +// To use a font in your Arduino sketch, #include the corresponding .h +// file and pass address of GFXfont struct to setFont(). Pass NULL to +// revert to 'classic' fixed-space bitmap font. + +#ifndef _GFXFONT_H_ +#define _GFXFONT_H_ + +typedef struct { // Data stored PER GLYPH + uint16_t bitmapOffset; // Pointer into GFXfont->bitmap + uint8_t width, height; // Bitmap dimensions in pixels + uint8_t xAdvance; // Distance to advance cursor (x axis) + int8_t xOffset, yOffset; // Dist from cursor pos to UL corner +} GFXglyph; + +typedef struct { // Data stored for FONT AS A WHOLE: + uint8_t *bitmap; // Glyph bitmaps, concatenated + GFXglyph *glyph; // Glyph array + uint8_t first, last; // ASCII extents + uint8_t yAdvance; // Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c new file mode 100644 index 000000000..6f88bd23a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c @@ -0,0 +1,276 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#ifndef FONT5X7_H +#define FONT5X7_H + +#ifdef __AVR__ + #include + #include +#elif defined(ESP8266) + #include +#else + #define PROGMEM +#endif + +// Standard ASCII 5x7 font + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + 0x00, 0x18, 0x3C, 0x18, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + 0x00, 0x18, 0x24, 0x18, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + 0x30, 0x48, 0x3A, 0x06, 0x0E, + 0x26, 0x29, 0x79, 0x29, 0x26, + 0x40, 0x7F, 0x05, 0x05, 0x07, + 0x40, 0x7F, 0x05, 0x25, 0x3F, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + 0x14, 0x22, 0x7F, 0x22, 0x14, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + 0x06, 0x09, 0x7F, 0x01, 0x7F, + 0x00, 0x66, 0x89, 0x95, 0x6A, + 0x60, 0x60, 0x60, 0x60, 0x60, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + 0x08, 0x04, 0x7E, 0x04, 0x08, + 0x10, 0x20, 0x7E, 0x20, 0x10, + 0x08, 0x08, 0x2A, 0x1C, 0x08, + 0x08, 0x1C, 0x2A, 0x08, 0x08, + 0x1E, 0x10, 0x10, 0x10, 0x10, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + 0x30, 0x38, 0x3E, 0x38, 0x30, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x56, 0x20, 0x50, + 0x00, 0x08, 0x07, 0x03, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + 0x08, 0x08, 0x3E, 0x08, 0x08, + 0x00, 0x80, 0x70, 0x30, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x60, 0x60, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3E, 0x51, 0x49, 0x45, 0x3E, + 0x00, 0x42, 0x7F, 0x40, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, + 0x21, 0x41, 0x49, 0x4D, 0x33, + 0x18, 0x14, 0x12, 0x7F, 0x10, + 0x27, 0x45, 0x45, 0x45, 0x39, + 0x3C, 0x4A, 0x49, 0x49, 0x31, + 0x41, 0x21, 0x11, 0x09, 0x07, + 0x36, 0x49, 0x49, 0x49, 0x36, + 0x46, 0x49, 0x49, 0x29, 0x1E, + 0x00, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x00, 0x41, 0x22, 0x14, 0x08, + 0x02, 0x01, 0x59, 0x09, 0x06, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + 0x7C, 0x12, 0x11, 0x12, 0x7C, + 0x7F, 0x49, 0x49, 0x49, 0x36, + 0x3E, 0x41, 0x41, 0x41, 0x22, + 0x7F, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x49, 0x49, 0x49, 0x41, + 0x7F, 0x09, 0x09, 0x09, 0x01, + 0x3E, 0x41, 0x41, 0x51, 0x73, + 0x7F, 0x08, 0x08, 0x08, 0x7F, + 0x00, 0x41, 0x7F, 0x41, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, + 0x7F, 0x08, 0x14, 0x22, 0x41, + 0x7F, 0x40, 0x40, 0x40, 0x40, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + 0x7F, 0x04, 0x08, 0x10, 0x7F, + 0x3E, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x09, 0x09, 0x09, 0x06, + 0x3E, 0x41, 0x51, 0x21, 0x5E, + 0x7F, 0x09, 0x19, 0x29, 0x46, + 0x26, 0x49, 0x49, 0x49, 0x32, + 0x03, 0x01, 0x7F, 0x01, 0x03, + 0x3F, 0x40, 0x40, 0x40, 0x3F, + 0x1F, 0x20, 0x40, 0x20, 0x1F, + 0x3F, 0x40, 0x38, 0x40, 0x3F, + 0x63, 0x14, 0x08, 0x14, 0x63, + 0x03, 0x04, 0x78, 0x04, 0x03, + 0x61, 0x59, 0x49, 0x4D, 0x43, + 0x00, 0x7F, 0x41, 0x41, 0x41, + 0x02, 0x04, 0x08, 0x10, 0x20, + 0x00, 0x41, 0x41, 0x41, 0x7F, + 0x04, 0x02, 0x01, 0x02, 0x04, + 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x03, 0x07, 0x08, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, + 0x7F, 0x28, 0x44, 0x44, 0x38, + 0x38, 0x44, 0x44, 0x44, 0x28, + 0x38, 0x44, 0x44, 0x28, 0x7F, + 0x38, 0x54, 0x54, 0x54, 0x18, + 0x00, 0x08, 0x7E, 0x09, 0x02, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + 0x7F, 0x08, 0x04, 0x04, 0x78, + 0x00, 0x44, 0x7D, 0x40, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, + 0x7C, 0x08, 0x04, 0x04, 0x78, + 0x38, 0x44, 0x44, 0x44, 0x38, + 0xFC, 0x18, 0x24, 0x24, 0x18, + 0x18, 0x24, 0x24, 0x18, 0xFC, + 0x7C, 0x08, 0x04, 0x04, 0x08, + 0x48, 0x54, 0x54, 0x54, 0x24, + 0x04, 0x04, 0x3F, 0x44, 0x24, + 0x3C, 0x40, 0x40, 0x20, 0x7C, + 0x1C, 0x20, 0x40, 0x20, 0x1C, + 0x3C, 0x40, 0x30, 0x40, 0x3C, + 0x44, 0x28, 0x10, 0x28, 0x44, + 0x4C, 0x90, 0x90, 0x90, 0x7C, + 0x44, 0x64, 0x54, 0x4C, 0x44, + 0x00, 0x08, 0x36, 0x41, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, + 0x3C, 0x26, 0x23, 0x26, 0x3C, + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + 0x3A, 0x40, 0x40, 0x20, 0x7A, + 0x38, 0x54, 0x54, 0x55, 0x59, + 0x21, 0x55, 0x55, 0x79, 0x41, + 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut + 0x21, 0x55, 0x54, 0x78, 0x40, + 0x20, 0x54, 0x55, 0x79, 0x40, + 0x0C, 0x1E, 0x52, 0x72, 0x12, + 0x39, 0x55, 0x55, 0x55, 0x59, + 0x39, 0x54, 0x54, 0x54, 0x59, + 0x39, 0x55, 0x54, 0x54, 0x58, + 0x00, 0x00, 0x45, 0x7C, 0x41, + 0x00, 0x02, 0x45, 0x7D, 0x42, + 0x00, 0x01, 0x45, 0x7C, 0x40, + 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut + 0xF0, 0x28, 0x25, 0x28, 0xF0, + 0x7C, 0x54, 0x55, 0x45, 0x00, + 0x20, 0x54, 0x54, 0x7C, 0x54, + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + 0x32, 0x49, 0x49, 0x49, 0x32, + 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut + 0x32, 0x4A, 0x48, 0x48, 0x30, + 0x3A, 0x41, 0x41, 0x21, 0x7A, + 0x3A, 0x42, 0x40, 0x20, 0x78, + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut + 0x3D, 0x40, 0x40, 0x40, 0x3D, + 0x3C, 0x24, 0xFF, 0x24, 0x24, + 0x48, 0x7E, 0x49, 0x43, 0x66, + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + 0xFF, 0x09, 0x29, 0xF6, 0x20, + 0xC0, 0x88, 0x7E, 0x09, 0x03, + 0x20, 0x54, 0x54, 0x79, 0x41, + 0x00, 0x00, 0x44, 0x7D, 0x41, + 0x30, 0x48, 0x48, 0x4A, 0x32, + 0x38, 0x40, 0x40, 0x22, 0x7A, + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + 0x26, 0x29, 0x29, 0x2F, 0x28, + 0x26, 0x29, 0x29, 0x29, 0x26, + 0x30, 0x48, 0x4D, 0x40, 0x20, + 0x38, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x38, + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + 0x2F, 0x10, 0x28, 0x34, 0xFA, + 0x00, 0x00, 0x7B, 0x00, 0x00, + 0x08, 0x14, 0x2A, 0x14, 0x22, + 0x22, 0x14, 0x2A, 0x14, 0x08, + 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code + 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block + 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block + 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x10, 0x10, 0x10, 0xFF, 0x00, + 0x14, 0x14, 0x14, 0xFF, 0x00, + 0x10, 0x10, 0xFF, 0x00, 0xFF, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x14, 0x14, 0x14, 0xFC, 0x00, + 0x14, 0x14, 0xF7, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x14, 0x14, 0xF4, 0x04, 0xFC, + 0x14, 0x14, 0x17, 0x10, 0x1F, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0x1F, 0x00, + 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0xF0, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0xFF, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x14, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0x10, 0x17, + 0x00, 0x00, 0xFC, 0x04, 0xF4, + 0x14, 0x14, 0x17, 0x10, 0x17, + 0x14, 0x14, 0xF4, 0x04, 0xF4, + 0x00, 0x00, 0xFF, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xF7, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x17, 0x14, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0xF4, 0x14, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x00, 0x00, 0x1F, 0x10, 0x1F, + 0x00, 0x00, 0x00, 0x1F, 0x14, + 0x00, 0x00, 0x00, 0xFC, 0x14, + 0x00, 0x00, 0xF0, 0x10, 0xF0, + 0x10, 0x10, 0xFF, 0x10, 0xFF, + 0x14, 0x14, 0x14, 0xFF, 0x14, + 0x10, 0x10, 0x10, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x38, 0x44, 0x44, 0x38, 0x44, + 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta + 0x7E, 0x02, 0x02, 0x06, 0x06, + 0x02, 0x7E, 0x02, 0x7E, 0x02, + 0x63, 0x55, 0x49, 0x41, 0x63, + 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x40, 0x7E, 0x20, 0x1E, 0x20, + 0x06, 0x02, 0x7E, 0x02, 0x02, + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + 0x4C, 0x72, 0x01, 0x72, 0x4C, + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + 0x30, 0x48, 0x78, 0x48, 0x30, + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + 0x3E, 0x49, 0x49, 0x49, 0x00, + 0x7E, 0x01, 0x01, 0x01, 0x7E, + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + 0x44, 0x44, 0x5F, 0x44, 0x44, + 0x40, 0x51, 0x4A, 0x44, 0x40, + 0x40, 0x44, 0x4A, 0x51, 0x40, + 0x00, 0x00, 0xFF, 0x01, 0x03, + 0xE0, 0x80, 0xFF, 0x00, 0x00, + 0x08, 0x08, 0x6B, 0x6B, 0x08, + 0x36, 0x12, 0x36, 0x24, 0x36, + 0x06, 0x0F, 0x09, 0x0F, 0x06, + 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, + 0x30, 0x40, 0xFF, 0x01, 0x01, + 0x00, 0x1F, 0x01, 0x01, 0x1E, + 0x00, 0x19, 0x1D, 0x17, 0x12, + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP +}; +#endif // FONT5X7_H diff --git a/lib/Adafruit_GFX-1.2.2.07/library.properties b/lib/Adafruit_GFX-1.2.2.07/library.properties new file mode 100644 index 000000000..c6b0c4751 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/library.properties @@ -0,0 +1,9 @@ +name=Adafruit GFX Library +version=1.2.2 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. +paragraph=Install this library in addition to the display library for your hardware. +category=Display +url=https://github.com/adafruit/Adafruit-GFX-Library +architectures=* diff --git a/lib/Adafruit_GFX-1.2.2.07/license.txt b/lib/Adafruit_GFX-1.2.2.07/license.txt new file mode 100644 index 000000000..7492e93a1 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/license.txt @@ -0,0 +1,24 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012 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. diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp new file mode 100644 index 000000000..fd7039173 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp @@ -0,0 +1,672 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/ + ----> http://www.adafruit.com/products/ + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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 + +#include "Adafruit_LEDBackpack.h" +#include "Adafruit_GFX.h" + +#ifndef _BV + #define _BV(bit) (1<<(bit)) +#endif + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } +#endif + +static const uint8_t numbertable[] = { + 0x3F, /* 0 */ + 0x06, /* 1 */ + 0x5B, /* 2 */ + 0x4F, /* 3 */ + 0x66, /* 4 */ + 0x6D, /* 5 */ + 0x7D, /* 6 */ + 0x07, /* 7 */ + 0x7F, /* 8 */ + 0x6F, /* 9 */ + 0x77, /* a */ + 0x7C, /* b */ + 0x39, /* C */ + 0x5E, /* d */ + 0x79, /* E */ + 0x71, /* F */ +}; + +static const uint16_t alphafonttable[] PROGMEM = { + +0b0000000000000001, +0b0000000000000010, +0b0000000000000100, +0b0000000000001000, +0b0000000000010000, +0b0000000000100000, +0b0000000001000000, +0b0000000010000000, +0b0000000100000000, +0b0000001000000000, +0b0000010000000000, +0b0000100000000000, +0b0001000000000000, +0b0010000000000000, +0b0100000000000000, +0b1000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0001001011001001, +0b0001010111000000, +0b0001001011111001, +0b0000000011100011, +0b0000010100110000, +0b0001001011001000, +0b0011101000000000, +0b0001011100000000, +0b0000000000000000, // +0b0000000000000110, // ! +0b0000001000100000, // " +0b0001001011001110, // # +0b0001001011101101, // $ +0b0000110000100100, // % +0b0010001101011101, // & +0b0000010000000000, // ' +0b0010010000000000, // ( +0b0000100100000000, // ) +0b0011111111000000, // * +0b0001001011000000, // + +0b0000100000000000, // , +0b0000000011000000, // - +0b0000000000000000, // . +0b0000110000000000, // / +0b0000110000111111, // 0 +0b0000000000000110, // 1 +0b0000000011011011, // 2 +0b0000000010001111, // 3 +0b0000000011100110, // 4 +0b0010000001101001, // 5 +0b0000000011111101, // 6 +0b0000000000000111, // 7 +0b0000000011111111, // 8 +0b0000000011101111, // 9 +0b0001001000000000, // : +0b0000101000000000, // ; +0b0010010000000000, // < +0b0000000011001000, // = +0b0000100100000000, // > +0b0001000010000011, // ? +0b0000001010111011, // @ +0b0000000011110111, // A +0b0001001010001111, // B +0b0000000000111001, // C +0b0001001000001111, // D +0b0000000011111001, // E +0b0000000001110001, // F +0b0000000010111101, // G +0b0000000011110110, // H +0b0001001000000000, // I +0b0000000000011110, // J +0b0010010001110000, // K +0b0000000000111000, // L +0b0000010100110110, // M +0b0010000100110110, // N +0b0000000000111111, // O +0b0000000011110011, // P +0b0010000000111111, // Q +0b0010000011110011, // R +0b0000000011101101, // S +0b0001001000000001, // T +0b0000000000111110, // U +0b0000110000110000, // V +0b0010100000110110, // W +0b0010110100000000, // X +0b0001010100000000, // Y +0b0000110000001001, // Z +0b0000000000111001, // [ +0b0010000100000000, // +0b0000000000001111, // ] +0b0000110000000011, // ^ +0b0000000000001000, // _ +0b0000000100000000, // ` +0b0001000001011000, // a +0b0010000001111000, // b +0b0000000011011000, // c +0b0000100010001110, // d +0b0000100001011000, // e +0b0000000001110001, // f +0b0000010010001110, // g +0b0001000001110000, // h +0b0001000000000000, // i +0b0000000000001110, // j +0b0011011000000000, // k +0b0000000000110000, // l +0b0001000011010100, // m +0b0001000001010000, // n +0b0000000011011100, // o +0b0000000101110000, // p +0b0000010010000110, // q +0b0000000001010000, // r +0b0010000010001000, // s +0b0000000001111000, // t +0b0000000000011100, // u +0b0010000000000100, // v +0b0010100000010100, // w +0b0010100011000000, // x +0b0010000000001100, // y +0b0000100001001000, // z +0b0000100101001001, // { +0b0001001000000000, // | +0b0010010010001001, // } +0b0000010100100000, // ~ +0b0011111111111111, + +}; +void Adafruit_LEDBackpack::setBrightness(uint8_t b) { + if (b > 15) b = 15; + Wire.beginTransmission(i2c_addr); + Wire.write(HT16K33_CMD_BRIGHTNESS | b); + Wire.endTransmission(); +} + +void Adafruit_LEDBackpack::blinkRate(uint8_t b) { + Wire.beginTransmission(i2c_addr); + if (b > 3) b = 0; // turn off if not sure + + Wire.write(HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1)); + Wire.endTransmission(); +} + +Adafruit_LEDBackpack::Adafruit_LEDBackpack(void) { +} + +void Adafruit_LEDBackpack::begin(uint8_t _addr = 0x70) { + i2c_addr = _addr; + + Wire.begin(); + + Wire.beginTransmission(i2c_addr); + Wire.write(0x21); // turn on oscillator + Wire.endTransmission(); + blinkRate(HT16K33_BLINK_OFF); + + setBrightness(15); // max brightness +} + +void Adafruit_LEDBackpack::writeDisplay(void) { + Wire.beginTransmission(i2c_addr); + Wire.write((uint8_t)0x00); // start at address $00 + + for (uint8_t i=0; i<8; i++) { + Wire.write(displaybuffer[i] & 0xFF); + Wire.write(displaybuffer[i] >> 8); + } + Wire.endTransmission(); +} + +void Adafruit_LEDBackpack::clear(void) { + for (uint8_t i=0; i<8; i++) { + displaybuffer[i] = 0; + } +} + +/******************************* QUAD ALPHANUM OBJECT */ + +Adafruit_AlphaNum4::Adafruit_AlphaNum4(void) { + +} + +void Adafruit_AlphaNum4::writeDigitRaw(uint8_t n, uint16_t bitmask) { + displaybuffer[n] = bitmask; +} + +void Adafruit_AlphaNum4::writeDigitAscii(uint8_t n, uint8_t a, boolean d) { + uint16_t font = pgm_read_word(alphafonttable+a); + + displaybuffer[n] = font; + + /* + Serial.print(a, DEC); + Serial.print(" / '"); Serial.write(a); + Serial.print("' = 0x"); Serial.println(font, HEX); + */ + + if (d) displaybuffer[n] |= (1<<14); +} + +/******************************* 24 BARGRAPH OBJECT */ + +Adafruit_24bargraph::Adafruit_24bargraph(void) { + +} + +void Adafruit_24bargraph::setBar(uint8_t bar, uint8_t color) { + uint16_t a, c; + + if (bar < 12) + c = bar / 4; + else + c = (bar - 12) / 4; + + a = bar % 4; + if (bar >= 12) + a += 4; + + //Serial.print("Ano = "); Serial.print(a); Serial.print(" Cath = "); Serial.println(c); + if (color == LED_RED) { + // Turn on red LED. + displaybuffer[c] |= _BV(a); + // Turn off green LED. + displaybuffer[c] &= ~_BV(a+8); + } else if (color == LED_YELLOW) { + // Turn on red and green LED. + displaybuffer[c] |= _BV(a) | _BV(a+8); + } else if (color == LED_OFF) { + // Turn off red and green LED. + displaybuffer[c] &= ~_BV(a) & ~_BV(a+8); + } else if (color == LED_GREEN) { + // Turn on green LED. + displaybuffer[c] |= _BV(a+8); + // Turn off red LED. + displaybuffer[c] &= ~_BV(a); + } +} + + +/******************************* 16x8 MATRIX OBJECT */ + +Adafruit_8x16matrix::Adafruit_8x16matrix(void) : Adafruit_GFX(8, 16) { +} + +void Adafruit_8x16matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 2: + _swap_int16_t(x, y); + x = 16 - x - 1; + break; + case 3: + x = 16 - x - 1; + y = 8 - y - 1; + break; + case 0: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + /* + Serial.print("("); Serial.print(x); + Serial.print(","); Serial.print(y); + Serial.println(")"); + */ + + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 16)) return; + + if (color) { + displaybuffer[y] |= 1 << x; + } else { + displaybuffer[y] &= ~(1 << x); + } +} + +/******************************* 16x8 MINI MATRIX OBJECT */ + +Adafruit_8x16minimatrix::Adafruit_8x16minimatrix(void) : Adafruit_GFX(8, 16) { +} + +void Adafruit_8x16minimatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + + if ((y < 0) || (x < 0)) return; + if ((getRotation() % 2 == 0) && ((y >= 16) || (x >= 8))) return; + if ((getRotation() % 2 == 1) && ((x >= 16) || (y >= 8))) return; + + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 2: + if (y >= 8) { + x += 8; + y -= 8; + } + _swap_int16_t(x, y); + break; + case 3: + x = 16 - x - 1; + if (x >= 8) { + x -= 8; + y += 8; + } + break; + case 0: + y = 16 - y - 1; + x = 8 - x - 1; + if (y >= 8) { + x += 8; + y -= 8; + } + _swap_int16_t(x, y); + break; + case 1: + y = 8 - y - 1; + if (x >= 8) { + x -= 8; + y += 8; + } + break; + } + + if (color) { + displaybuffer[x] |= 1 << y; + } else { + displaybuffer[x] &= ~(1 << y); + } +} + +/******************************* 8x8 MATRIX OBJECT */ + +Adafruit_8x8matrix::Adafruit_8x8matrix(void) : Adafruit_GFX(8, 8) { +} + +void Adafruit_8x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 8)) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 8 - x - 1; + break; + case 2: + x = 8 - x - 1; + y = 8 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + + // wrap around the x + x += 7; + x %= 8; + + + if (color) { + displaybuffer[y] |= 1 << x; + } else { + displaybuffer[y] &= ~(1 << x); + } +} + +/******************************* 8x8 BICOLOR MATRIX OBJECT */ + +Adafruit_BicolorMatrix::Adafruit_BicolorMatrix(void) : Adafruit_GFX(8, 8) { +} + +void Adafruit_BicolorMatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 8)) return; + + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 8 - x - 1; + break; + case 2: + x = 8 - x - 1; + y = 8 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + + if (color == LED_GREEN) { + // Turn on green LED. + displaybuffer[y] |= 1 << x; + // Turn off red LED. + displaybuffer[y] &= ~(1 << (x+8)); + } else if (color == LED_RED) { + // Turn on red LED. + displaybuffer[y] |= 1 << (x+8); + // Turn off green LED. + displaybuffer[y] &= ~(1 << x); + } else if (color == LED_YELLOW) { + // Turn on green and red LED. + displaybuffer[y] |= (1 << (x+8)) | (1 << x); + } else if (color == LED_OFF) { + // Turn off green and red LED. + displaybuffer[y] &= ~(1 << x) & ~(1 << (x+8)); + } +} + +/******************************* 7 SEGMENT OBJECT */ + +Adafruit_7segment::Adafruit_7segment(void) { + position = 0; +} + +void Adafruit_7segment::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Adafruit_7segment::print(char c, int base) +{ + print((long) c, base); +} + +void Adafruit_7segment::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Adafruit_7segment::print(int n, int base) +{ + print((long) n, base); +} + +void Adafruit_7segment::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Adafruit_7segment::println(void) { + position = 0; +} + +void Adafruit_7segment::println(char c, int base) +{ + print(c, base); + println(); +} + +void Adafruit_7segment::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Adafruit_7segment::println(int n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(long n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(double n, int digits) +{ + print(n, digits); + println(); +} + +void Adafruit_7segment::print(double n, int digits) +{ + printFloat(n, digits); +} + + +size_t Adafruit_7segment::write(uint8_t c) { + + uint8_t r = 0; + + if (c == '\n') position = 0; + if (c == '\r') position = 0; + + if ((c >= '0') && (c <= '9')) { + writeDigitNum(position, c-'0'); + r = 1; + } + + position++; + if (position == 2) position++; + + return r; +} + +void Adafruit_7segment::writeDigitRaw(uint8_t d, uint8_t bitmask) { + if (d > 4) return; + displaybuffer[d] = bitmask; +} + +void Adafruit_7segment::drawColon(boolean state) { + if (state) + displaybuffer[2] = 0x2; + else + displaybuffer[2] = 0; +} + +void Adafruit_7segment::writeColon(void) { + Wire.beginTransmission(i2c_addr); + Wire.write((uint8_t)0x04); // start at address $02 + + Wire.write(displaybuffer[2] & 0xFF); + Wire.write(displaybuffer[2] >> 8); + + Wire.endTransmission(); +} + +void Adafruit_7segment::writeDigitNum(uint8_t d, uint8_t num, boolean dot) { + if (d > 4) return; + + writeDigitRaw(d, numbertable[num] | (dot << 7)); +} + +void Adafruit_7segment::print(long n, int base) +{ + printNumber(n, base); +} + +void Adafruit_7segment::printNumber(long n, uint8_t base) +{ + printFloat(n, 0, base); +} + +void Adafruit_7segment::printFloat(double n, uint8_t fracDigits, uint8_t base) +{ + uint8_t numericDigits = 4; // available digits on display + boolean isNegative = false; // true if the number is negative + + // is the number negative? + if(n < 0) { + isNegative = true; // need to draw sign later + --numericDigits; // the sign will take up one digit + n *= -1; // pretend the number is positive + } + + // calculate the factor required to shift all fractional digits + // into the integer part of the number + double toIntFactor = 1.0; + for(int i = 0; i < fracDigits; ++i) toIntFactor *= base; + + // create integer containing digits to display by applying + // shifting factor and rounding adjustment + uint32_t displayNumber = n * toIntFactor + 0.5; + + // calculate upper bound on displayNumber given + // available digits on display + uint32_t tooBig = 1; + for(int i = 0; i < numericDigits; ++i) tooBig *= base; + + // if displayNumber is too large, try fewer fractional digits + while(displayNumber >= tooBig) { + --fracDigits; + toIntFactor /= base; + displayNumber = n * toIntFactor + 0.5; + } + + // did toIntFactor shift the decimal off the display? + if (toIntFactor < 1) { + printError(); + } else { + // otherwise, display the number + int8_t displayPos = 4; + + if (displayNumber) //if displayNumber is not 0 + { + for(uint8_t i = 0; displayNumber || i <= fracDigits; ++i) { + boolean displayDecimal = (fracDigits != 0 && i == fracDigits); + writeDigitNum(displayPos--, displayNumber % base, displayDecimal); + if(displayPos == 2) writeDigitRaw(displayPos--, 0x00); + displayNumber /= base; + } + } + else { + writeDigitNum(displayPos--, 0, false); + } + + // display negative sign if negative + if(isNegative) writeDigitRaw(displayPos--, 0x40); + + // clear remaining display positions + while(displayPos >= 0) writeDigitRaw(displayPos--, 0x00); + } +} + +void Adafruit_7segment::printError(void) { + for(uint8_t i = 0; i < SEVENSEG_DIGITS; ++i) { + writeDigitRaw(i, (i == 2 ? 0x00 : 0x40)); + } +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h new file mode 100644 index 000000000..7b468f305 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h @@ -0,0 +1,171 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/ + ----> http://www.adafruit.com/products/ + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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 Adafruit_LEDBackpack_h +#define Adafruit_LEDBackpack_h + +#if (ARDUINO >= 100) + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + + + #include + +#include "Adafruit_GFX.h" + +#define LED_ON 1 +#define LED_OFF 0 + +#define LED_RED 1 +#define LED_YELLOW 2 +#define LED_GREEN 3 + + + +#define HT16K33_BLINK_CMD 0x80 +#define HT16K33_BLINK_DISPLAYON 0x01 +#define HT16K33_BLINK_OFF 0 +#define HT16K33_BLINK_2HZ 1 +#define HT16K33_BLINK_1HZ 2 +#define HT16K33_BLINK_HALFHZ 3 + +#define HT16K33_CMD_BRIGHTNESS 0xE0 + +#define SEVENSEG_DIGITS 5 + + +// this is the raw HT16K33 controller +class Adafruit_LEDBackpack { + public: + Adafruit_LEDBackpack(void); + void begin(uint8_t _addr); + void setBrightness(uint8_t b); + void blinkRate(uint8_t b); + void writeDisplay(void); + void clear(void); + + uint16_t displaybuffer[8]; + + void init(uint8_t a); + protected: + uint8_t i2c_addr; +}; + +class Adafruit_AlphaNum4 : public Adafruit_LEDBackpack { + public: + Adafruit_AlphaNum4(void); + + void writeDigitRaw(uint8_t n, uint16_t bitmask); + void writeDigitAscii(uint8_t n, uint8_t ascii, boolean dot = false); + + private: + + +}; + +class Adafruit_24bargraph : public Adafruit_LEDBackpack { + public: + Adafruit_24bargraph(void); + + void setBar(uint8_t bar, uint8_t color); + + private: +}; + + +class Adafruit_8x16matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x16matrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_8x16minimatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x16minimatrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_8x8matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x8matrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_BicolorMatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_BicolorMatrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Adafruit_7segment : public Adafruit_LEDBackpack { + public: + Adafruit_7segment(void); + size_t write(uint8_t c); + + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); + + void writeDigitRaw(uint8_t x, uint8_t bitmask); + void writeDigitNum(uint8_t x, uint8_t num, boolean dot = false); + void drawColon(boolean state); + void printNumber(long, uint8_t = 2); + void printFloat(double, uint8_t = 2, uint8_t = DEC); + void printError(void); + + void writeColon(void); + + private: + uint8_t position; +}; +#endif // Adafruit_LEDBackpack_h + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.md b/lib/Adafruit_LED_Backpack-1.1.6/README.md new file mode 100644 index 000000000..3834b6e1f --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/README.md @@ -0,0 +1,30 @@ +# Adafruit-LED-Backpack-Library + + +## Compatibility + +MCU | Tested Works | Doesn't Work | Not Tested | Notes +----------------- | :----------: | :----------: | :---------: | ----- +Atmega328 @ 16MHz | X | | | +Atmega328 @ 12MHz | X | | | +Atmega32u4 @ 16MHz | X | | | +Atmega32u4 @ 8MHz | X | | | +ESP8266 | X | | | +Atmega2560 @ 16MHz | X | | | +ATSAM3X8E | X | | | Use SDA/SCL on pins 20 & 21 +ATSAM21D | X | | | +ATtiny85 @ 16MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed +ATtiny85 @ 8MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed + + * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini + * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V + * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 + * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro + * ESP8266 : Adafruit Huzzah + * ATmega2560 @ 16MHz : Arduino Mega + * ATSAM3X8E : Arduino Due + * ATSAM21D : Arduino Zero, M0 Pro + * ATtiny85 @ 16MHz : Adafruit Trinket 5V + * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V + + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.txt b/lib/Adafruit_LED_Backpack-1.1.6/README.txt new file mode 100644 index 000000000..268d96a8c --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/README.txt @@ -0,0 +1,26 @@ +This is a library for the Adafruit LED Backpacks +This library works with the Adafruit Mini 8x8 and 7-Segment LED Backpacks + ----> http://www.adafruit.com/products/881 + ----> http://www.adafruit.com/products/880 + ----> http://www.adafruit.com/products/879 + ----> http://www.adafruit.com/products/878 + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + +These displays use I2C to communicate, 2 pins are required to +interface. There are multiple selectable I2C addresses. For backpacks +with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks +with 3 Address Select pins: 0x70 thru 0x77 + + +Written by Limor Fried/Ladyada for Adafruit Industries. +MIT license, all text above must be included in any redistribution + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_LEDBackpack. Check that the Adafruit_LEDBackpack folder contains Adafruit_LEDBackpack.cpp and Adafruit_LEDBackpack. + +Place the Adafruit_LEDBackpack library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE + +**** Also requires the Adafruit_GFX library for Arduino. **** +Download it from here: + https://github.com/adafruit/Adafruit-GFX-Library \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino new file mode 100644 index 000000000..faf8247dd --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino @@ -0,0 +1,55 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +#ifndef _BV + #define _BV(bit) (1<<(bit)) +#endif + + +Adafruit_LEDBackpack matrix = Adafruit_LEDBackpack(); + +uint8_t counter = 0; + +void setup() { + Serial.begin(9600); + Serial.println("HT16K33 test"); + + matrix.begin(0x70); // pass in the address +} + +void loop() { + // paint one LED per row. The HT16K33 internal memory looks like + // a 8x16 bit matrix (8 rows, 16 columns) + for (uint8_t i=0; i<8; i++) { + // draw a diagonal row of pixels + matrix.displaybuffer[i] = _BV((counter+i) % 16) | _BV((counter+i+8) % 16) ; + } + // write the changes we just made to the display + matrix.writeDisplay(); + delay(100); + + counter++; + if (counter >= 16) counter = 0; +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino new file mode 100644 index 000000000..d9ed552e3 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino @@ -0,0 +1,65 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED 24 Bargraph Backpack + ----> http://www.adafruit.com/products/721 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_24bargraph bar = Adafruit_24bargraph(); + +void setup() { + Serial.begin(9600); + Serial.println("HT16K33 Bi-Color Bargraph test"); + + bar.begin(0x70); // pass in the address + + for (uint8_t b=0; b<24; b++ ){ + if ((b % 3) == 0) bar.setBar(b, LED_RED); + if ((b % 3) == 1) bar.setBar(b, LED_YELLOW); + if ((b % 3) == 2) bar.setBar(b, LED_GREEN); + } + bar.writeDisplay(); + delay(2000); +} + + +void loop() { + for (uint8_t b=0; b<24; b++) { + bar.setBar(b, LED_RED); + bar.writeDisplay(); + delay(50); + bar.setBar(b, LED_OFF); + bar.writeDisplay(); + } + for (uint8_t b=0; b<24; b++) { + bar.setBar(b, LED_GREEN); + bar.writeDisplay(); + delay(50); + bar.setBar(b, LED_OFF); + bar.writeDisplay(); + } + + for (uint8_t b=0; b<24; b++) { + bar.setBar(23-b, LED_YELLOW); + bar.writeDisplay(); + delay(50); + bar.setBar(23-b, LED_OFF); + bar.writeDisplay(); + } +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde new file mode 100644 index 000000000..01088032a --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde @@ -0,0 +1,122 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); + +void setup() { + Serial.begin(9600); + Serial.println("8x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_YELLOW); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_RED); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_GREEN); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,7, LED_YELLOW); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,8, LED_RED); + matrix.fillRect(2,2, 4,4, LED_GREEN); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,3, 3, LED_YELLOW); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextSize(1); + matrix.setTextColor(LED_GREEN); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(3); + matrix.setTextColor(LED_RED); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino new file mode 100644 index 000000000..5ffb542c2 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino @@ -0,0 +1,178 @@ +// Clock example using a seven segment display & DS1307 real-time clock. +// +// Must have the Adafruit RTClib library installed too! See: +// https://github.com/adafruit/RTClib +// +// Designed specifically to work with the Adafruit LED 7-Segment backpacks +// and DS1307 real-time clock breakout: +// ----> http://www.adafruit.com/products/881 +// ----> http://www.adafruit.com/products/880 +// ----> http://www.adafruit.com/products/879 +// ----> http://www.adafruit.com/products/878 +// ----> https://www.adafruit.com/products/264 +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by Tony DiCola for Adafruit Industries. +// Released under a MIT license: https://opensource.org/licenses/MIT + +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + + +// Set to false to display time in 12 hour format, or true to use 24 hour: +#define TIME_24_HOUR false + +// I2C address of the display. Stick with the default address of 0x70 +// unless you've changed the address jumpers on the back of the display. +#define DISPLAY_ADDRESS 0x70 + + +// Create display and DS1307 objects. These are global variables that +// can be accessed from both the setup and loop function below. +Adafruit_7segment clockDisplay = Adafruit_7segment(); +RTC_DS1307 rtc = RTC_DS1307(); + +// Keep track of the hours, minutes, seconds displayed by the clock. +// Start off at 0:00:00 as a signal that the time should be read from +// the DS1307 to initialize it. +int hours = 0; +int minutes = 0; +int seconds = 0; + +// Remember if the colon was drawn on the display so it can be blinked +// on and off every second. +bool blinkColon = false; + + +void setup() { + // Setup function runs once at startup to initialize the display + // and DS1307 clock. + + // Setup Serial port to print debug output. + Serial.begin(115200); + Serial.println("Clock starting!"); + + // Setup the display. + clockDisplay.begin(DISPLAY_ADDRESS); + + // Setup the DS1307 real-time clock. + rtc.begin(); + + // Set the DS1307 clock if it hasn't been set before. + bool setClockTime = !rtc.isrunning(); + // Alternatively you can force the clock to be set again by + // uncommenting this line: + //setClockTime = true; + if (setClockTime) { + Serial.println("Setting DS1307 time!"); + // This line sets the DS1307 time to the exact date and time the + // sketch was compiled: + rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); + // Alternatively you can set the RTC with an explicit date & time, + // for example to set January 21, 2014 at 3am you would uncomment: + //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); + } +} + +void loop() { + // Loop function runs over and over again to implement the clock logic. + + // Check if it's the top of the hour and get a new time reading + // from the DS1307. This helps keep the clock accurate by fixing + // any drift. + if (minutes == 0) { + // Get the time from the DS1307. + DateTime now = rtc.now(); + // Print out the time for debug purposes: + Serial.print("Read date & time from DS1307: "); + Serial.print(now.year(), DEC); + Serial.print('/'); + Serial.print(now.month(), DEC); + Serial.print('/'); + Serial.print(now.day(), DEC); + Serial.print(' '); + Serial.print(now.hour(), DEC); + Serial.print(':'); + Serial.print(now.minute(), DEC); + Serial.print(':'); + Serial.print(now.second(), DEC); + Serial.println(); + // Now set the hours and minutes. + hours = now.hour(); + minutes = now.minute(); + } + + // Show the time on the display by turning it into a numeric + // value, like 3:30 turns into 330, by multiplying the hour by + // 100 and then adding the minutes. + int displayValue = hours*100 + minutes; + + // Do 24 hour to 12 hour format conversion when required. + if (!TIME_24_HOUR) { + // Handle when hours are past 12 by subtracting 12 hours (1200 value). + if (hours > 12) { + displayValue -= 1200; + } + // Handle hour 0 (midnight) being shown as 12. + else if (hours == 0) { + displayValue += 1200; + } + } + + // Now print the time value to the display. + clockDisplay.print(displayValue, DEC); + + // Add zero padding when in 24 hour mode and it's midnight. + // In this case the print function above won't have leading 0's + // which can look confusing. Go in and explicitly add these zeros. + if (TIME_24_HOUR && hours == 0) { + // Pad hour 0. + clockDisplay.writeDigitNum(1, 0); + // Also pad when the 10's minute is 0 and should be padded. + if (minutes < 10) { + clockDisplay.writeDigitNum(2, 0); + } + } + + // Blink the colon by flipping its value every loop iteration + // (which happens every second). + blinkColon = !blinkColon; + clockDisplay.drawColon(blinkColon); + + // Now push out to the display the new values that were set above. + clockDisplay.writeDisplay(); + + // Pause for a second for time to elapse. This value is in milliseconds + // so 1000 milliseconds = 1 second. + delay(1000); + + // Now increase the seconds by one. + seconds += 1; + // If the seconds go above 59 then the minutes should increase and + // the seconds should wrap back to 0. + if (seconds > 59) { + seconds = 0; + minutes += 1; + // Again if the minutes go above 59 then the hour should increase and + // the minutes should wrap back to 0. + if (minutes > 59) { + minutes = 0; + hours += 1; + // Note that when the minutes are 0 (i.e. it's the top of a new hour) + // then the start of the loop will read the actual time from the DS1307 + // again. Just to be safe though we'll also increment the hour and wrap + // back to 0 if it goes above 23 (i.e. past midnight). + if (hours > 23) { + hours = 0; + } + } + } + + // Loop code is finished, it will jump back to the start of the loop + // function again! +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino new file mode 100644 index 000000000..a6054969c --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino @@ -0,0 +1,159 @@ +// Clock example using a seven segment display & GPS for time. +// +// Must have the Adafruit GPS library installed too! See: +// https://github.com/adafruit/Adafruit-GPS-Library +// +// Designed specifically to work with the Adafruit LED 7-Segment backpacks +// and ultimate GPS breakout/shield: +// ----> http://www.adafruit.com/products/881 +// ----> http://www.adafruit.com/products/880 +// ----> http://www.adafruit.com/products/879 +// ----> http://www.adafruit.com/products/878 +// ----> http://www.adafruit.com/products/746 +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by Tony DiCola for Adafruit Industries. +// Released under a MIT license: https://opensource.org/licenses/MIT + +#include +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + + +// Set to false to display time in 12 hour format, or true to use 24 hour: +#define TIME_24_HOUR false + +// Offset the hours from UTC (universal time) to your local time by changing +// this value. The GPS time will be in UTC so lookup the offset for your +// local time from a site like: +// https://en.wikipedia.org/wiki/List_of_UTC_time_offsets +// This value, -7, will set the time to UTC-7 or Pacific Standard Time during +// daylight savings time. +#define HOUR_OFFSET -7 + +// I2C address of the display. Stick with the default address of 0x70 +// unless you've changed the address jumpers on the back of the display. +#define DISPLAY_ADDRESS 0x70 + + +// Create display and GPS objects. These are global variables that +// can be accessed from both the setup and loop function below. +Adafruit_7segment clockDisplay = Adafruit_7segment(); +SoftwareSerial gpsSerial(8, 7); // GPS breakout/shield will use a + // software serial connection with + // TX = pin 8 and RX = pin 7. +Adafruit_GPS gps(&gpsSerial); + + +void setup() { + // Setup function runs once at startup to initialize the display and GPS. + + // Setup Serial port to print debug output. + Serial.begin(115200); + Serial.println("Clock starting!"); + + // Setup the display. + clockDisplay.begin(DISPLAY_ADDRESS); + + // Setup the GPS using a 9600 baud connection (the default for most + // GPS modules). + gps.begin(9600); + + // Configure GPS to onlu output minimum data (location, time, fix). + gps.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); + + // Use a 1 hz, once a second, update rate. + gps.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); + + // Enable the interrupt to parse GPS data. + enableGPSInterrupt(); +} + +void loop() { + // Loop function runs over and over again to implement the clock logic. + + // Check if GPS has new data and parse it. + if (gps.newNMEAreceived()) { + gps.parse(gps.lastNMEA()); + } + + // Grab the current hours, minutes, seconds from the GPS. + // This will only be set once the GPS has a fix! Make sure to add + // a coin cell battery so the GPS will save the time between power-up/down. + int hours = gps.hour + HOUR_OFFSET; // Add hour offset to convert from UTC + // to local time. + // Handle when UTC + offset wraps around to a negative or > 23 value. + if (hours < 0) { + hours = 24+hours; + } + if (hours > 23) { + hours = 24-hours; + } + int minutes = gps.minute; + int seconds = gps.seconds; + + // Show the time on the display by turning it into a numeric + // value, like 3:30 turns into 330, by multiplying the hour by + // 100 and then adding the minutes. + int displayValue = hours*100 + minutes; + + // Do 24 hour to 12 hour format conversion when required. + if (!TIME_24_HOUR) { + // Handle when hours are past 12 by subtracting 12 hours (1200 value). + if (hours > 12) { + displayValue -= 1200; + } + // Handle hour 0 (midnight) being shown as 12. + else if (hours == 0) { + displayValue += 1200; + } + } + + // Now print the time value to the display. + clockDisplay.print(displayValue, DEC); + + // Add zero padding when in 24 hour mode and it's midnight. + // In this case the print function above won't have leading 0's + // which can look confusing. Go in and explicitly add these zeros. + if (TIME_24_HOUR && hours == 0) { + // Pad hour 0. + clockDisplay.writeDigitNum(1, 0); + // Also pad when the 10's minute is 0 and should be padded. + if (minutes < 10) { + clockDisplay.writeDigitNum(2, 0); + } + } + + // Blink the colon by turning it on every even second and off + // every odd second. The modulus operator is very handy here to + // check if a value is even (modulus 2 equals 0) or odd (modulus 2 + // equals 1). + clockDisplay.drawColon(seconds % 2 == 0); + + // Now push out to the display the new values that were set above. + clockDisplay.writeDisplay(); + + // Loop code is finished, it will jump back to the start of the loop + // function again! Don't add any delays because the parsing needs to + // happen all the time! +} + +SIGNAL(TIMER0_COMPA_vect) { + // Use a timer interrupt once a millisecond to check for new GPS data. + // This piggybacks on Arduino's internal clock timer for the millis() + // function. + gps.read(); +} + +void enableGPSInterrupt() { + // Function to enable the timer interrupt that will parse GPS data. + // Timer0 is already used for millis() - we'll just interrupt somewhere + // in the middle and call the "Compare A" function above + OCR0A = 0xAF; + TIMSK0 |= _BV(OCIE0A); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino new file mode 100644 index 000000000..b724e1d19 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino @@ -0,0 +1,133 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit 16x8 LED Matrix backpacks + ----> http://www.adafruit.com/products/2035 + ----> http://www.adafruit.com/products/2036 + ----> http://www.adafruit.com/products/2037 + ----> http://www.adafruit.com/products/2038 + ----> http://www.adafruit.com/products/2039 + ----> http://www.adafruit.com/products/2040 + ----> http://www.adafruit.com/products/2041 + ----> http://www.adafruit.com/products/2042 + ----> http://www.adafruit.com/products/2043 + ----> http://www.adafruit.com/products/2044 + ----> http://www.adafruit.com/products/2052 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x16matrix matrix = Adafruit_8x16matrix(); + +void setup() { + Serial.begin(9600); + Serial.println("16x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,15, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,16, LED_ON); + matrix.fillRect(2,2, 4,12, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,8, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + matrix.setRotation(1); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino new file mode 100644 index 000000000..650da459e --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino @@ -0,0 +1,120 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x8matrix matrix = Adafruit_8x8matrix(); + +void setup() { + Serial.begin(9600); + Serial.println("8x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,7, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,8, LED_ON); + matrix.fillRect(2,2, 4,4, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,3, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(3); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino new file mode 100644 index 000000000..b8d29e549 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino @@ -0,0 +1,123 @@ +/*************************************************** + This is a library for our I2C LED Backpacks & FeatherWings + + Designed specifically to work with the Adafruit 16x8 LED Matrix FeatherWing + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix(); + +void setup() { + //while (!Serial); + Serial.begin(9600); + Serial.println("16x8 LED Mini Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,15, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,16, LED_ON); + matrix.fillRect(2,2, 4,12, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,8, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + matrix.setRotation(1); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino new file mode 100644 index 000000000..70cb050e4 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino @@ -0,0 +1,73 @@ +// Demo the quad alphanumeric display LED backpack kit +// scrolls through every character, then scrolls Serial +// input onto the display + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); + +void setup() { + Serial.begin(9600); + + alpha4.begin(0x70); // pass in the address + + alpha4.writeDigitRaw(3, 0x0); + alpha4.writeDigitRaw(0, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(0, 0x0); + alpha4.writeDigitRaw(1, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(1, 0x0); + alpha4.writeDigitRaw(2, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(2, 0x0); + alpha4.writeDigitRaw(3, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + + alpha4.clear(); + alpha4.writeDisplay(); + + // display every character, + for (uint8_t i='!'; i<='z'; i++) { + alpha4.writeDigitAscii(0, i); + alpha4.writeDigitAscii(1, i+1); + alpha4.writeDigitAscii(2, i+2); + alpha4.writeDigitAscii(3, i+3); + alpha4.writeDisplay(); + + delay(300); + } + Serial.println("Start typing to display!"); +} + + +char displaybuffer[4] = {' ', ' ', ' ', ' '}; + +void loop() { + while (! Serial.available()) return; + + char c = Serial.read(); + if (! isprint(c)) return; // only printable! + + // scroll down display + displaybuffer[0] = displaybuffer[1]; + displaybuffer[1] = displaybuffer[2]; + displaybuffer[2] = displaybuffer[3]; + displaybuffer[3] = c; + + // set every digit to the buffer + alpha4.writeDigitAscii(0, displaybuffer[0]); + alpha4.writeDigitAscii(1, displaybuffer[1]); + alpha4.writeDigitAscii(2, displaybuffer[2]); + alpha4.writeDigitAscii(3, displaybuffer[3]); + + // write it out! + alpha4.writeDisplay(); + delay(200); +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino new file mode 100644 index 000000000..827ea85e5 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino @@ -0,0 +1,72 @@ +// Demo the quad alphanumeric display LED backpack kit +// Displays a short message and then scrolls through every character + +// For use with Gemma or Trinket (Attiny85) + +#include +#include + + +// Connect + pins to 3-5V +// Connect GND to ground +// Connect Data to #0 +// Connect Clock to #2 + +#include +#include "Adafruit_LEDBackpack.h" + +char *message = "Hello world! "; + +Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); + +void setup() { + // This is the auto-speed doubler line, keep it in, it will + // automatically double the speed when 16Mhz is selected! + if (F_CPU == 16000000) clock_prescale_set(clock_div_1); + + alpha4.begin(0x70); // pass in the address + + alpha4.writeDigitRaw(3, 0x0); + alpha4.writeDigitRaw(0, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(0, 0x0); + alpha4.writeDigitRaw(1, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(1, 0x0); + alpha4.writeDigitRaw(2, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(2, 0x0); + alpha4.writeDigitRaw(3, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + + alpha4.clear(); + alpha4.writeDisplay(); + + // send a message! + for (uint8_t i=0; i +#include +#include +#include "Adafruit_LEDBackpack.h" + +// Because the two eye matrices share the same address, only four +// matrix objects are needed for the five displays: +#define MATRIX_EYES 0 +#define MATRIX_MOUTH_LEFT 1 +#define MATRIX_MOUTH_MIDDLE 2 +#define MATRIX_MOUTH_RIGHT 3 +Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects + Adafruit_8x8matrix(), Adafruit_8x8matrix(), + Adafruit_8x8matrix(), Adafruit_8x8matrix() }; + +// Rather than assigning matrix addresses sequentially in a loop, each +// has a spot in this array. This makes it easier if you inadvertently +// install one or more matrices in the wrong physical position -- +// re-order the addresses in this table and you can still refer to +// matrices by index above, no other code or wiring needs to change. +static const uint8_t matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; + +static const uint8_t PROGMEM // Bitmaps are stored in program memory + blinkImg[][8] = { // Eye animation frames + { B00111100, // Fully open eye + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B00000000, + B00111100, + B11111111, + B11111111, + B11111111, + B00111100, + B00000000 }, + { B00000000, + B00000000, + B00000000, + B00111100, + B11111111, + B01111110, + B00011000, + B00000000 }, + { B00000000, // Fully closed eye + B00000000, + B00000000, + B00000000, + B10000001, + B01111110, + B00000000, + B00000000 } }, + mouthImg[][24] = { // Mouth animation frames + { B00000000, B00000000, B00000000, // Mouth position A + B00000000, B00000000, B00000000, + B01111111, B11111111, B11111110, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position B + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00000111, B00000000, B11100000, + B00000000, B11111111, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position C + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00001000, B00000000, B00010000, + B00000110, B00000000, B01100000, + B00000001, B11000011, B10000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position D + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00100000, B00000000, B00000100, + B00010000, B00000000, B00001000, + B00001100, B00000000, B00110000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position E + B00000000, B00111100, B00000000, + B00011111, B11000011, B11111000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00111100, B00000000, // Mouth position F + B00000000, B11000011, B00000000, + B00001111, B00000000, B11110000, + B00000001, B00000000, B10000000, + B00000000, B11000011, B00000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 } }; + +uint8_t + blinkIndex[] = { 1, 2, 3, 4, 3, 2, 1 }, // Blink bitmap sequence + blinkCountdown = 100, // Countdown to next blink (in frames) + gazeCountdown = 75, // Countdown to next eye movement + gazeFrames = 50, // Duration of eye movement (smaller = faster) + mouthPos = 0, // Current image number for mouth + mouthCountdown = 10; // Countdown to next mouth change +int8_t + eyeX = 3, eyeY = 3, // Current eye position + newX = 3, newY = 3, // Next eye position + dX = 0, dY = 0; // Distance from prior to new position + +void setup() { + + // Seed random number generator from an unused analog input: + randomSeed(analogRead(A0)); + + // Initialize each matrix object: + for(uint8_t i=0; i<4; i++) { + matrix[i].begin(matrixAddr[i]); + // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: + // matrix[i].setRotation(3); + } +} + +void loop() { + + // Draw eyeball in current state of blinkyness (no pupil). Note that + // only one eye needs to be drawn. Because the two eye matrices share + // the same address, the same data will be received by both. + matrix[MATRIX_EYES].clear(); + // When counting down to the next blink, show the eye in the fully- + // open state. On the last few counts (during the blink), look up + // the corresponding bitmap index. + matrix[MATRIX_EYES].drawBitmap(0, 0, + blinkImg[ + (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? + blinkIndex[blinkCountdown] : // Yes, look up bitmap # + 0 // No, show bitmap 0 + ], 8, 8, LED_ON); + // Decrement blink counter. At end, set random time for next blink. + if(--blinkCountdown == 0) blinkCountdown = random(5, 180); + + // Add a pupil (2x2 black square) atop the blinky eyeball bitmap. + // Periodically, the pupil moves to a new position... + if(--gazeCountdown <= gazeFrames) { + // Eyes are in motion - draw pupil at interim position + matrix[MATRIX_EYES].fillRect( + newX - (dX * gazeCountdown / gazeFrames), + newY - (dY * gazeCountdown / gazeFrames), + 2, 2, LED_OFF); + if(gazeCountdown == 0) { // Last frame? + eyeX = newX; eyeY = newY; // Yes. What's new is old, then... + do { // Pick random positions until one is within the eye circle + newX = random(7); newY = random(7); + dX = newX - 3; dY = newY - 3; + } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras + dX = newX - eyeX; // Horizontal distance to move + dY = newY - eyeY; // Vertical distance to move + gazeFrames = random(3, 15); // Duration of eye movement + gazeCountdown = random(gazeFrames, 120); // Count to end of next movement + } + } else { + // Not in motion yet -- draw pupil at current static position + matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); + } + + // Draw mouth, switch to new random image periodically + drawMouth(mouthImg[mouthPos]); + if(--mouthCountdown == 0) { + mouthPos = random(6); // Random image + // If the 'neutral' position was chosen, there's a 1-in-5 chance we'll + // select a longer hold time. This gives the appearance of periodic + // pauses in speech (e.g. between sentences, etc.). + mouthCountdown = ((mouthPos == 0) && (random(5) == 0)) ? + random(10, 40) : // Longer random duration + random(2, 8); // Shorter random duration + } + + // Refresh all of the matrices in one quick pass + for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); + + delay(20); // ~50 FPS +} + +// Draw mouth image across three adjacent displays +void drawMouth(const uint8_t *img) { + for(uint8_t i=0; i<3; i++) { + matrix[MATRIX_MOUTH_LEFT + i].clear(); + matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); + } +} + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino new file mode 100644 index 000000000..0a4f70c74 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino @@ -0,0 +1,81 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED 7-Segment backpacks + ----> http://www.adafruit.com/products/881 + ----> http://www.adafruit.com/products/880 + ----> http://www.adafruit.com/products/879 + ----> http://www.adafruit.com/products/878 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include // Enable this line if using Arduino Uno, Mega, etc. +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_7segment matrix = Adafruit_7segment(); + +void setup() { +#ifndef __AVR_ATtiny85__ + Serial.begin(9600); + Serial.println("7 Segment Backpack Test"); +#endif + matrix.begin(0x70); +} + +void loop() { + // try to print a number thats too long + matrix.print(10000, DEC); + matrix.writeDisplay(); + delay(500); + + // print a hex number + matrix.print(0xBEEF, HEX); + matrix.writeDisplay(); + delay(500); + + // print a floating point + matrix.print(12.34); + matrix.writeDisplay(); + delay(500); + + // print with print/println + for (uint16_t counter = 0; counter < 9999; counter++) { + matrix.println(counter); + matrix.writeDisplay(); + delay(10); + } + + // method #2 - draw each digit + uint16_t blinkcounter = 0; + boolean drawDots = false; + for (uint16_t counter = 0; counter < 9999; counter ++) { + matrix.writeDigitNum(0, (counter / 1000), drawDots); + matrix.writeDigitNum(1, (counter / 100) % 10, drawDots); + matrix.drawColon(drawDots); + matrix.writeDigitNum(3, (counter / 10) % 10, drawDots); + matrix.writeDigitNum(4, counter % 10, drawDots); + + blinkcounter+=50; + if (blinkcounter < 500) { + drawDots = false; + } else if (blinkcounter < 1000) { + drawDots = true; + } else { + blinkcounter = 0; + } + matrix.writeDisplay(); + delay(10); + } +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde new file mode 100644 index 000000000..b3c521bcc --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde @@ -0,0 +1,336 @@ +// 'wavface' example sketch for Adafruit I2C 8x8 LED backpacks +// and Wave Shield: +// +// www.adafruit.com/products/870 www.adafruit.com/products/1049 +// www.adafruit.com/products/871 www.adafruit.com/products/1050 +// www.adafruit.com/products/872 www.adafruit.com/products/1051 +// www.adafruit.com/products/959 www.adafruit.com/products/1052 +// www.adafruit.com/products/94 +// +// Requires Adafruit_LEDBackpack, Adafruit_GFX libraries and WaveHC +// libraries. +// +// This sketch shows animation roughly synchronized to prerecorded +// speech. It's fairly complex and may be overwhelming to novice +// programmers, who may want to start with the 'matrix8x8' example +// and then 'roboface' before working through this code. Also, much +// of the comments relating to the face animation have been stripped +// here for brevity...refer to the 'roboface' sketch if you have any +// questions how that part works. +// +// Additional hardware required: sounds are triggered using three +// normally-open momentary buttons connected to Digital pins 6, 7, 8 +// and GND. (e.g. www.adafruit.com/products/1009 ) +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by P. Burgess for Adafruit Industries, parts adapted from +// 'PiSpeakHC' sketch included with WaveHC library. +// BSD license, all text above must be included in any redistribution. + +#include +#include +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + +// These WAV files should be in the root level of the SD card: +static const char PROGMEM + wav0[] = "beware_i.wav", + wav1[] = "ihunger.wav", + wav2[] = "run_cowd.wav"; +static const char * const wavname[] PROGMEM = { wav0, wav1, wav2 }; +// PROGMEM makes frequent appearances throughout this code, reason being that +// the SD card library requires gobs of precious RAM (leaving very little to +// our own sketch). PROGMEM lets us put fixed data into program flash memory, +// which is considerably more spacious. String tables are paritcularly nasty. +// See www.arduino.cc/en/Reference/PROGMEM for more info. + +SdReader card; // This object holds the information for the card +FatVolume vol; // This holds the information for the partition on the card +FatReader root; // This holds the information for the volumes root directory +FatReader file; // This object represent the WAV file for a phrase +WaveHC wave; // A single wave object -- only one sound is played at a time + +// Because the two eye matrices share the same address, only four +// matrix objects are needed for the five displays: +#define MATRIX_EYES 0 +#define MATRIX_MOUTH_LEFT 1 +#define MATRIX_MOUTH_MIDDLE 2 +#define MATRIX_MOUTH_RIGHT 3 +Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects + Adafruit_8x8matrix(), Adafruit_8x8matrix(), + Adafruit_8x8matrix(), Adafruit_8x8matrix() }; + +// Rather than assigning matrix addresses sequentially in a loop, each +// has a spot in this array. This makes it easier if you inadvertently +// install one or more matrices in the wrong physical position -- +// re-order the addresses in this table and you can still refer to +// matrices by index above, no other code or wiring needs to change. +static const uint8_t PROGMEM matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; + +static const uint8_t PROGMEM // Bitmaps are stored in program memory + blinkImg[][8] = { // Eye animation frames + { B00111100, // Fully open eye + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B00000000, + B00111100, + B11111111, + B11111111, + B11111111, + B00111100, + B00000000 }, + { B00000000, + B00000000, + B00000000, + B00111100, + B11111111, + B01111110, + B00011000, + B00000000 }, + { B00000000, // Fully closed eye + B00000000, + B00000000, + B00000000, + B10000001, + B01111110, + B00000000, + B00000000 } }, + mouthImg[][24] = { // Mouth animation frames + { B00000000, B00000000, B00000000, // Mouth position A + B00000000, B00000000, B00000000, + B01111111, B11111111, B11111110, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position B + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00000111, B00000000, B11100000, + B00000000, B11111111, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position C + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00001000, B00000000, B00010000, + B00000110, B00000000, B01100000, + B00000001, B11000011, B10000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position D + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00100000, B00000000, B00000100, + B00010000, B00000000, B00001000, + B00001100, B00000000, B00110000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position E + B00000000, B00111100, B00000000, + B00011111, B11000011, B11111000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00111100, B00000000, // Mouth position F + B00000000, B11000011, B00000000, + B00001111, B00000000, B11110000, + B00000001, B00000000, B10000000, + B00000000, B11000011, B00000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 } }; + +// Animation sequences corresponding to each WAV. First number in +// each pair is a mouth bitmap index. Second number is the hold +// time (in frames). 255 marks end of list. +// There is no 'magic' here, the software is NOT deriving mouth +// position from the sound...the tables were determined by hand, +// just as animators do it. Further explanation here: +// http://www.idleworm.com/how/anm/03t/talk1.shtml + +static const uint8_t PROGMEM + seq1[] = { 0, 2, 2, 5, 5, 3, 3, 7, // "Beware, I live!" + 4, 5, 3, 4, 2, 5, 4, 3, + 3, 4, 1, 5, 3, 5, 255 }, + seq2[] = { 0, 1, 3, 5, 1, 5, 4, 2, // "I hunger!" + 3, 2, 1, 2, 4, 4, 1, 3, + 4, 2, 255 }, + seq3[] = { 0, 1, 1, 2, 3, 6, 2, 5, // "Run, coward!" + 0, 1, 4, 4, 5, 2, 1, 5, + 3, 6, 1, 4, 255 }; +static const uint8_t * const anim[] = { seq1, seq2, seq3 }; + +const uint8_t + blinkIndex[] PROGMEM = { 1, 2, 3, 4, 3, 2, 1 }; // Blink bitmap sequence +uint8_t + blinkCountdown = 100, // Countdown to next blink (in frames) + gazeCountdown = 75, // Countdown to next eye movement + gazeFrames = 50, // Duration of eye movement (smaller = faster) + mouthPos = 0, // Current image number for mouth + mouthCountdown = 10, // Countdown to next mouth change + newPos = 255, // New mouth position for current frame + *seq, // Animation sequence currently being played back + idx, // Current array index within animation sequence + prevBtn = 99, // Button # pressed on last loop() iteration + btnCount = 0; // Number of iterations same button has been held +int8_t + eyeX = 3, eyeY = 3, // Current eye position + newX = 3, newY = 3, // Next eye position + dX = 0, dY = 0; // Distance from prior to new position + +void setup() { + + Serial.begin(9600); + + Serial.println(F("WAV face")); + + if(!card.init()) Serial.println(F("Card init. failed!")); + if(!vol.init(card)) Serial.println(F("No partition!")); + if(!root.openRoot(vol)) Serial.println(F("Couldn't open dir")); + Serial.println(F("Files found:")); + root.ls(); + + // Seed random number generator from an unused analog input: + randomSeed(analogRead(A0)); + + // Initialize each matrix object: + for(uint8_t i=0; i<4; i++) { + matrix[i].begin(pgm_read_byte(&matrixAddr[i])); + // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: + // matrix[i].setRotation(3); + } + + // Enable pull-up resistors on three button inputs. + // Other end of each button then connects to GND. + for(uint8_t i=6; i<=8; i++) { + pinMode(i, INPUT); + digitalWrite(i, HIGH); // Enable pullup + } +} + +void loop() { + + uint8_t i; + + // Draw eyeball in current state of blinkyness (no pupil). + matrix[MATRIX_EYES].clear(); + matrix[MATRIX_EYES].drawBitmap(0, 0, + blinkImg[ + (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? + pgm_read_byte(&blinkIndex[blinkCountdown]) : // Yes, look up bitmap # + 0 // No, show bitmap 0 + ], 8, 8, LED_ON); + // Decrement blink counter. At end, set random time for next blink. + if(--blinkCountdown == 0) blinkCountdown = random(5, 180); + + if(--gazeCountdown <= gazeFrames) { + // Eyes are in motion - draw pupil at interim position + matrix[MATRIX_EYES].fillRect( + newX - (dX * gazeCountdown / gazeFrames), + newY - (dY * gazeCountdown / gazeFrames), + 2, 2, LED_OFF); + if(gazeCountdown == 0) { // Last frame? + eyeX = newX; eyeY = newY; // Yes. What's new is old, then... + do { // Pick random positions until one is within the eye circle + newX = random(7); newY = random(7); + dX = newX - 3; dY = newY - 3; + } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras + dX = newX - eyeX; // Horizontal distance to move + dY = newY - eyeY; // Vertical distance to move + gazeFrames = random(3, 15); // Duration of eye movement + gazeCountdown = random(gazeFrames, 120); // Count to end of next movement + } + } else { + // Not in motion yet -- draw pupil at current static position + matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); + } + + // Scan buttons 6, 7, 8 looking for first button pressed... + for(i=0; (i<3) && (digitalRead(i+6) == HIGH); i++); + + if(i < 3) { // Anything pressed? Yes! + if(i == prevBtn) { // Same as last time we checked? Good! + if(++btnCount == 3) { // 3 passes to 'debounce' button input + playfile((char *)pgm_read_word(&wavname[i])); // Start WAV + // Look up animation sequence # corresponding to this WAV... + seq = (uint8_t *)pgm_read_word(&anim[i]); + idx = 0; // Begin at first byte of data + newPos = pgm_read_byte(&seq[idx++]); // Initial mouth pos + mouthCountdown = pgm_read_byte(&seq[idx++]); // Hold time for pos + } + } else btnCount = 0; // Different button than before - start count over + prevBtn = i; + } else prevBtn = 99; // No buttons pressed + + if(newPos != 255) { // Is the mouth in motion? + if(--mouthCountdown == 0) { // Count down frames to next position + newPos = pgm_read_byte(&seq[idx++]); // New mouth position + if(newPos == 255) { // End of list? + mouthPos = 0; // Yes, set mouth to neutral position + } else { + mouthPos = newPos; // Set mouth to new position + mouthCountdown = pgm_read_byte(&seq[idx++]); // Read hold time + } + } + } else mouthPos = 0; // Mouth not in motion -- set to neutral position + + drawMouth(mouthImg[mouthPos]); + + // Refresh all matrices in one quick pass + for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); + + delay(20); +} + +// Draw mouth image across three adjacent displays +void drawMouth(const uint8_t *img) { + for(uint8_t i=0; i<3; i++) { + matrix[MATRIX_MOUTH_LEFT + i].clear(); + matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); + } +} + +// Open and start playing a WAV file +void playfile(const char *name) { + char filename[13]; // 8.3+NUL + + if(wave.isplaying) wave.stop(); // Stop any currently-playing WAV + + strcpy_P(filename, name); // Copy name out of PROGMEM into RAM + + if(!file.open(root, filename)) { + Serial.print(F("Couldn't open file ")); + Serial.println(filename); + return; + } + if(!wave.create(file)) { + Serial.println(F("Not a valid WAV")); + return; + } + wave.play(); +} + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav new file mode 100644 index 0000000000000000000000000000000000000000..f27bd6f3bd914634ace3182349ce404c713cfdb2 GIT binary patch literal 20802 zcmeIaXLuv$l_u)_cYp4$Zpj`8S+a6gCv^^F2j)zWM9vw7P(Yzj2!$LAIVTbzK@!YO zve|*1b8dCFqOD-rTE}tR*`1lYJGuvyt?@Hs@7=xO-yXF$#y18J3^WTBy6^qRZ+zn${{jAc@wsno{Qn=m@qc`S&(U!`z!_1V95eBE*)7MY_%_qM){dk+C_0K>5%_;r|zy2?e;@>*gSEKf~Uj6_2 z_`kc+e|x~Hmx>J*okVRVw75U)v;{NCSaD``v0R)vbzyb9w!At~s2#5-1BrY*HF11x zDiJPBmi&%zA?x$!D{+zxQ#PyJVnh(DKad<>TEF(-qo4lzAO73F{Ndw^lVJnD=ipn< zJo((g=AF%4gg318vv9)^D6HQn|5!&JfB3L*?UVPG7k9(Yu$g zJh(Xa{NkOPi=$Ihl!iIjvHPX(KmB)`HtiZvkco*C zS08=$tAG0PUw-xA!r7B0r`;hRVR1Tl?`+<`t(mEDBqmla-hF)k{s#{hQVB}WIJ)Kg zn>RnPdDGu*-n?r-C_#P2>9IsJ<~=vBk5u-v7z(e)r=K zFIST}zk<%;b{{&h?b#=u+}`dw0L_)TYf(Jn`g{Pi#8U z&BMdFkT+WmYbD&ST`&CL*>7!nVb9J3LuzNDws!U5)WHg@PMFw4ByM2e)r| z^X)F7F<5{(c=XAq*A|YiRUBfjgxkL3*~aC5d*9B(93zPuf^oMm?orS>+xNZt(gE6V zzrYkK&Yiva?q|RJ{L=X7s8?&iczs=m-hAe{19ZfZo<4o!@sEH0?)AI(ZmpO7HpRff zZChXd?sIz&9_W)1Hg{^g5Y6VCDlKW`j_{a$Fkt>bx_12R^@s0YpH8JiMzhZ>WDXtM z{_3tCI#26PO)OuyedpTU_aCg}l5v9Hz4xVWZQitX+ly~?a3vadf^tTyQ*pbC5cc;R z+wt=DE(TxcPEW30y8GUp*%0X=_$(2#wY9fp`*Sbs9~cqhRB7h)jr$i@)^FchD%I*S zBW9BH9%|}n-mK-*{=y0AHwarK*c(Z#;Z( z>%rsod^n%8$(73Crfs`BJN6%;E7X`TQwj&OML*$;`E>%Zpy$|t%z%;MQhn{>&AaPM zCs!vatxzuNYaQbD9%^pgw`ErsSEw+D@{`MFuddH5oSKiKO2Q%@9HF=E+}_gNbf8bH z(pbZ}m?x5>^iq|ux1+zev#Xn-F#A)Lxs#V}-B_uWvvHrE-Ert>+ukkv+K=vS>2Ke& zx0^LQB*wkT%G}!8@~Lz6gr6jh{GtBVBm3WO>TK`fAVv*h_J=~5O2KERk{*MK%jA#r zF@;jCp76$twW;yxN;;d*CGAQEgGXy^?>V|_+x~r9-Z!&?`wo-R5}q>j-!Fx0_S*L=>?1FJTv~y>tK)>Ofx8D8a;|G^d&!>GBY5%dqyI*pR=_y}7lGulHsqPh5HM!Q+P?y?d$@wTXHT?R)!$7q)GAWiL&E;{HbXJ^bLtnTw|i z9;(J(OA}uCz@ayudh+k!1W)hnqDcud0C9Tj&ZUz}wJ@fT3?1J7LgU5F zn|Adw#HMg%`Qp6~-hXuO@(gA3*cHS5T?gNM<_S3cli&R2lbfH}-lueC=hoLR-2deB zJF6?R5ralLcxczrwgX4I+Phe&+hGZ06I3?qwb^|(wM;nN)&v>wjqQ8)9i>Y(wn%CA z^!0mp?!Nc<`pLP1M<)?7I}dDq=_$AXNLla=9ZFBOIC1*!$G`aF?>@b{c6uhP=XLMf zy8ZQ6wjXQn;;F#D^QB~db~YPJ`Efm_6VL|wTlO71)ZEE4c(e6W>u0V#di?PH$JZ9K zl+Pp?YHw}X_vZ88gD(Kv^!-=2ALZiV^3u8US06rn^uhb@-CUndI}KV?D;yf=Z#&Y_ zKf=|Tt#&F`s4ktFFIQ(PVF!uJ89hgjwD)sls5>)OnK=!4>CyY|-#I-Vu_`$tM9_b9 z&zsMEr|}gp@9PrVyz%kXYwvyW`#*g4(Zf@dm9e;0B^D019&K&w6QV{UkSpd&vn$8v zS5DQ_(V$t$>F@4s+rPhSgrjmK$5*aA`1mKE{p2Sy>|QFyYIdC=+31R^QC~@rq{rkEjVGv^|-_9as*?3Pb5KwLeX5Mm`TS2 zHdL*V%QP03KRH&PSy*12Uszb0DvuVUE)ybT^mcT09NxR_wdbGy?sMC_#Flt%?fU(D z@4o-w=G8m*Z(qH3sv5OxxP3iCj1h^=M`cTu>R7p0suqe9WBFV*9kT0X>=DLr4^65w zd#OxqY5By3E9XwF&euwDH>QwE*#kp-sYEPb^tBz@wdK_}_jQiQtntxm{nX_%s~2uu zzx(+1sm1y6m;*(W+`%ECLSv1N%`ME#uC2}2rs|bsBoeag#LWJd13R|tY3G}$;==j+ zKl=G^fA!hB*Ds%+$t8RS!N9QthxWbo%3E(d_k)+8fBMB;t%C|zwto8N2S57ZN00AZ zyRg2tT+e5!)fj2@kXkKaggjgrEtMu~*;tHn;6?+g(duD5`q~d4I?^(%w8zI5&fa?O z$G`gBFFw35TT9y!PEXUe7r(c8(|4YJb?a+en-1>lgRGpHK7H%MFTQy9@ke(ruFe*G z76LQa+%^m8a0VzUp3GOq>$6kkT-0qs1S7POVU|Q8Q)*DHR-?vTk=(@Msmr$?fBe}y zr>d!l6BY3}{l^X+K6tRHrN6JGwe`^M!#%wNe9RA-QIyF2NK zD>Jix>w}+u{`l-At#_vDyCt@G?Zk;ukA~CJHKcN9 zXV2e%eCKqnTr5tXxq0i-T-+?B9X-&)XY{eyoqOMW?(d%3OGl~di8JF~qtTU_yLkV` zT*Scb88O7B&ffp{(Q?cv;1TI+DWszx+jUsz%r9QKJ{Qt4jo3nfBa83YVl}(VWs4d z4IFswh5c+{&)%26y=l`SjuMYfp1J?yUwv{mZxQr!EIz%GEG*yn@bh=(b78Y3SqY;8 zp3<4CkB6wr-2CY)D;W}32{mRdqnm*S%EwREC)d_zXIG~}uEf;B{A|I2nxhGuWbp9z z7hgCq%ovtA(o-idF2xB;IG_~^hhPRX^)olFEU%rN_G{Vg`;PL}5~V9QbLQ5yI%PEo zyN({&`9>2s)ng zq2j^qW;2xyQ=<#@I90A^Eh3IoG|Vwr9kI%&55o!R;E}gq{K2kXmY9fCmM%a+9*zf5 zIc~>oiHVu|>iT@l$nQCDu;b`~UYXGnC{9ewpF6)Wzgi2}BXM7NbZ#ySOG|mW=u)dt z=@6aE65}q5oG%p)9NzKL_n+I>N0*pFxk4#rl`!bthgvv#PiA_yRI24|QreLnyL)IY zt$f_(j0SX4jgmenF;nG*Q>$lg-aAv9KDC-Bm11^hD?^Ns@faajtGS)~UVr+#TYKbW zd}6-fwIRcYxBlSC&D#c4&g}f9N1r@eqO>E2-`dv0lsO8MQ%g%J3nrzFXlS5HG616>9Tb?bC#*LiLy|2Bwch3

MPVIBi>ZPEZ6y{NWPHD)}|8P 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 literal 0 HcmV?d00001 diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav new file mode 100644 index 0000000000000000000000000000000000000000..babb864ecf9412bb83e60897d43a1afb59a19db9 GIT binary patch literal 16096 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 AIRF3v literal 0 HcmV?d00001 diff --git a/lib/Adafruit_LED_Backpack-1.1.6/library.properties b/lib/Adafruit_LED_Backpack-1.1.6/library.properties new file mode 100644 index 000000000..e04636907 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/library.properties @@ -0,0 +1,9 @@ +name=Adafruit LED Backpack Library +version=1.1.6 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks +paragraph=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks +category=Display +url=https://github.com/adafruit/Adafruit-LED-Backpack-Library +architectures=* diff --git a/lib/Adafruit_LED_Backpack-1.1.6/license.txt b/lib/Adafruit_LED_Backpack-1.1.6/license.txt new file mode 100644 index 000000000..fee1e9c31 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012 Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..f0e26146f --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..7b641eb86 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp new file mode 100644 index 000000000..570a33584 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp @@ -0,0 +1,729 @@ +/********************************************************************* +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen below must be included in any redistribution +*********************************************************************/ + +#ifdef __AVR__ + #include +#elif defined(ESP8266) || defined(ESP32) + #include +#else + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#endif + +#if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) && !defined(ESP32) && !defined(__arc__) + #include +#endif + +#include + +#include +#include +#include "Adafruit_GFX.h" +#include "Adafruit_SSD1306.h" + +// the memory buffer for the LCD + +static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, +#if (SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH > 96*16) +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, +0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, +0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, +0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, +0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, +0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, +0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, +0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, +0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, +0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, +0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, +0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, +0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, +0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, +0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +#if (SSD1306_LCDHEIGHT == 64) +0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, +0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, +0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, +0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, +0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, +0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, +0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, +0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, +0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, +0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, +0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, +0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, +0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#endif +#endif +}; + +#define ssd1306_swap(a, b) { int16_t t = a; a = b; b = t; } + +// the most basic function, set a single pixel +void Adafruit_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) + return; + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + ssd1306_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + // x is which column + switch (color) + { + case WHITE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] |= (1 << (y&7)); break; + case BLACK: buffer[x+ (y/8)*SSD1306_LCDWIDTH] &= ~(1 << (y&7)); break; + case INVERSE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] ^= (1 << (y&7)); break; + } + +} + +Adafruit_SSD1306::Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + cs = CS; + rst = RST; + dc = DC; + sclk = SCLK; + sid = SID; + hwSPI = false; +} + +// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset +Adafruit_SSD1306::Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + dc = DC; + rst = RST; + cs = CS; + hwSPI = true; +} + +// initializer for I2C - we only indicate the reset pin! +Adafruit_SSD1306::Adafruit_SSD1306(int8_t reset) : +Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + sclk = dc = cs = sid = -1; + rst = reset; +} + + +void Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) { + _vccstate = vccstate; + _i2caddr = i2caddr; + + // set pin directions + if (sid != -1){ + pinMode(dc, OUTPUT); + pinMode(cs, OUTPUT); +#ifdef HAVE_PORTREG + csport = portOutputRegister(digitalPinToPort(cs)); + cspinmask = digitalPinToBitMask(cs); + dcport = portOutputRegister(digitalPinToPort(dc)); + dcpinmask = digitalPinToBitMask(dc); +#endif + if (!hwSPI){ + // set pins for software-SPI + pinMode(sid, OUTPUT); + pinMode(sclk, OUTPUT); +#ifdef HAVE_PORTREG + clkport = portOutputRegister(digitalPinToPort(sclk)); + clkpinmask = digitalPinToBitMask(sclk); + mosiport = portOutputRegister(digitalPinToPort(sid)); + mosipinmask = digitalPinToBitMask(sid); +#endif + } + if (hwSPI){ + SPI.begin(); +#ifdef SPI_HAS_TRANSACTION + SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); +#else + SPI.setClockDivider (4); +#endif + } + } + else + { + // I2C Init + Wire.begin(); +#ifdef __SAM3X8E__ + // Force 400 KHz I2C, rawr! (Uses pins 20, 21 for SDA, SCL) + TWI1->TWI_CWGR = 0; + TWI1->TWI_CWGR = ((VARIANT_MCK / (2 * 400000)) - 4) * 0x101; +#endif + } + if ((reset) && (rst >= 0)) { + // Setup reset pin direction (used by both SPI and I2C) + pinMode(rst, OUTPUT); + digitalWrite(rst, HIGH); + // VDD (3.3V) goes high at start, lets just chill for a ms + delay(1); + // bring reset low + digitalWrite(rst, LOW); + // wait 10ms + delay(10); + // bring out of reset + digitalWrite(rst, HIGH); + // turn on VCC (9V?) + } + + // Init sequence + ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE + ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 + ssd1306_command(0x80); // the suggested ratio 0x80 + + ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 + ssd1306_command(SSD1306_LCDHEIGHT - 1); + + ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 + ssd1306_command(0x0); // no offset + ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 + ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x10); } + else + { ssd1306_command(0x14); } + ssd1306_command(SSD1306_MEMORYMODE); // 0x20 + ssd1306_command(0x00); // 0x0 act like ks0108 + ssd1306_command(SSD1306_SEGREMAP | 0x1); + ssd1306_command(SSD1306_COMSCANDEC); + + #if defined SSD1306_128_32 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x02); + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + ssd1306_command(0x8F); + +#elif defined SSD1306_128_64 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x12); + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x9F); } + else + { ssd1306_command(0xCF); } + +#elif defined SSD1306_96_16 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x2); //ada x12 + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x10); } + else + { ssd1306_command(0xAF); } + +#endif + + ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x22); } + else + { ssd1306_command(0xF1); } + ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB + ssd1306_command(0x40); + ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 + ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 + + ssd1306_command(SSD1306_DEACTIVATE_SCROLL); + + ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel +} + + +void Adafruit_SSD1306::invertDisplay(uint8_t i) { + if (i) { + ssd1306_command(SSD1306_INVERTDISPLAY); + } else { + ssd1306_command(SSD1306_NORMALDISPLAY); + } +} + +void Adafruit_SSD1306::ssd1306_command(uint8_t c) { + if (sid != -1) + { + // SPI +#ifdef HAVE_PORTREG + *csport |= cspinmask; + *dcport &= ~dcpinmask; + *csport &= ~cspinmask; +#else + digitalWrite(cs, HIGH); + digitalWrite(dc, LOW); + digitalWrite(cs, LOW); +#endif + fastSPIwrite(c); +#ifdef HAVE_PORTREG + *csport |= cspinmask; +#else + digitalWrite(cs, HIGH); +#endif + } + else + { + // I2C + uint8_t control = 0x00; // Co = 0, D/C = 0 + Wire.beginTransmission(_i2caddr); + Wire.write(control); + Wire.write(c); + Wire.endTransmission(); + } +} + +// startscrollright +// Activate a right handed scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X00); + ssd1306_command(0XFF); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrollleft +// Activate a right handed scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrollleft(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_LEFT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X00); + ssd1306_command(0XFF); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrolldiagright +// Activate a diagonal scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrolldiagright(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); + ssd1306_command(0X00); + ssd1306_command(SSD1306_LCDHEIGHT); + ssd1306_command(SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X01); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrolldiagleft +// Activate a diagonal scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); + ssd1306_command(0X00); + ssd1306_command(SSD1306_LCDHEIGHT); + ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X01); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +void Adafruit_SSD1306::stopscroll(void){ + ssd1306_command(SSD1306_DEACTIVATE_SCROLL); +} + +// Dim the display +// dim = true: display is dimmed +// dim = false: display is normal +void Adafruit_SSD1306::dim(boolean dim) { + uint8_t contrast; + + if (dim) { + contrast = 0; // Dimmed display + } else { + if (_vccstate == SSD1306_EXTERNALVCC) { + contrast = 0x9F; + } else { + contrast = 0xCF; + } + } + // the range of contrast to too small to be really useful + // it is useful to dim the display + ssd1306_command(SSD1306_SETCONTRAST); + ssd1306_command(contrast); +} + +void Adafruit_SSD1306::display(void) { + ssd1306_command(SSD1306_COLUMNADDR); + ssd1306_command(0); // Column start address (0 = reset) + ssd1306_command(SSD1306_LCDWIDTH-1); // Column end address (127 = reset) + + ssd1306_command(SSD1306_PAGEADDR); + ssd1306_command(0); // Page start address (0 = reset) + #if SSD1306_LCDHEIGHT == 64 + ssd1306_command(7); // Page end address + #endif + #if SSD1306_LCDHEIGHT == 32 + ssd1306_command(3); // Page end address + #endif + #if SSD1306_LCDHEIGHT == 16 + ssd1306_command(1); // Page end address + #endif + + if (sid != -1) + { + // SPI +#ifdef HAVE_PORTREG + *csport |= cspinmask; + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#else + digitalWrite(cs, HIGH); + digitalWrite(dc, HIGH); + digitalWrite(cs, LOW); +#endif + + for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { + fastSPIwrite(buffer[i]); + } +#ifdef HAVE_PORTREG + *csport |= cspinmask; +#else + digitalWrite(cs, HIGH); +#endif + } + else + { + // save I2C bitrate +#ifdef TWBR + uint8_t twbrbackup = TWBR; + TWBR = 12; // upgrade to 400KHz! +#endif + + //Serial.println(TWBR, DEC); + //Serial.println(TWSR & 0x3, DEC); + + // I2C + for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { + // send a bunch of data in one xmission + Wire.beginTransmission(_i2caddr); + WIRE_WRITE(0x40); + for (uint8_t x=0; x<16; x++) { + WIRE_WRITE(buffer[i]); + i++; + } + i--; + Wire.endTransmission(); + } +#ifdef TWBR + TWBR = twbrbackup; +#endif + } +} + +// clear everything +void Adafruit_SSD1306::clearDisplay(void) { + memset(buffer, 0, (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8)); +} + + +inline void Adafruit_SSD1306::fastSPIwrite(uint8_t d) { + + if(hwSPI) { + (void)SPI.transfer(d); + } else { + for(uint8_t bit = 0x80; bit; bit >>= 1) { +#ifdef HAVE_PORTREG + *clkport &= ~clkpinmask; + if(d & bit) *mosiport |= mosipinmask; + else *mosiport &= ~mosipinmask; + *clkport |= clkpinmask; +#else + digitalWrite(sclk, LOW); + if(d & bit) digitalWrite(sid, HIGH); + else digitalWrite(sid, LOW); + digitalWrite(sclk, HIGH); +#endif + } + } +} + +void Adafruit_SSD1306::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { + boolean bSwap = false; + switch(rotation) { + case 0: + // 0 degree rotation, do nothing + break; + case 1: + // 90 degree rotation, swap x & y for rotation, then invert x + bSwap = true; + ssd1306_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + // 180 degree rotation, invert x and y - then shift y around for height. + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + x -= (w-1); + break; + case 3: + // 270 degree rotation, swap x & y for rotation, then invert y and adjust y for w (not to become h) + bSwap = true; + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + y -= (w-1); + break; + } + + if(bSwap) { + drawFastVLineInternal(x, y, w, color); + } else { + drawFastHLineInternal(x, y, w, color); + } +} + +void Adafruit_SSD1306::drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) { + // Do bounds/limit checks + if(y < 0 || y >= HEIGHT) { return; } + + // make sure we don't try to draw below 0 + if(x < 0) { + w += x; + x = 0; + } + + // make sure we don't go off the edge of the display + if( (x + w) > WIDTH) { + w = (WIDTH - x); + } + + // if our width is now negative, punt + if(w <= 0) { return; } + + // set up the pointer for movement through the buffer + register uint8_t *pBuf = buffer; + // adjust the buffer pointer for the current row + pBuf += ((y/8) * SSD1306_LCDWIDTH); + // and offset x columns in + pBuf += x; + + register uint8_t mask = 1 << (y&7); + + switch (color) + { + case WHITE: while(w--) { *pBuf++ |= mask; }; break; + case BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; + case INVERSE: while(w--) { *pBuf++ ^= mask; }; break; + } +} + +void Adafruit_SSD1306::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { + bool bSwap = false; + switch(rotation) { + case 0: + break; + case 1: + // 90 degree rotation, swap x & y for rotation, then invert x and adjust x for h (now to become w) + bSwap = true; + ssd1306_swap(x, y); + x = WIDTH - x - 1; + x -= (h-1); + break; + case 2: + // 180 degree rotation, invert x and y - then shift y around for height. + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + y -= (h-1); + break; + case 3: + // 270 degree rotation, swap x & y for rotation, then invert y + bSwap = true; + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + if(bSwap) { + drawFastHLineInternal(x, y, h, color); + } else { + drawFastVLineInternal(x, y, h, color); + } +} + + +void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color) { + + // do nothing if we're off the left or right side of the screen + if(x < 0 || x >= WIDTH) { return; } + + // make sure we don't try to draw below 0 + if(__y < 0) { + // __y is negative, this will subtract enough from __h to account for __y being 0 + __h += __y; + __y = 0; + + } + + // make sure we don't go past the height of the display + if( (__y + __h) > HEIGHT) { + __h = (HEIGHT - __y); + } + + // if our height is now negative, punt + if(__h <= 0) { + return; + } + + // this display doesn't need ints for coordinates, use local byte registers for faster juggling + register uint8_t y = __y; + register uint8_t h = __h; + + + // set up the pointer for fast movement through the buffer + register uint8_t *pBuf = buffer; + // adjust the buffer pointer for the current row + pBuf += ((y/8) * SSD1306_LCDWIDTH); + // and offset x columns in + pBuf += x; + + // do the first partial byte, if necessary - this requires some masking + register uint8_t mod = (y&7); + if(mod) { + // mask off the high n bits we want to set + mod = 8-mod; + + // note - lookup table results in a nearly 10% performance improvement in fill* functions + // register uint8_t mask = ~(0xFF >> (mod)); + static uint8_t premask[8] = {0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; + register uint8_t mask = premask[mod]; + + // adjust the mask if we're not going to reach the end of this byte + if( h < mod) { + mask &= (0XFF >> (mod-h)); + } + + switch (color) + { + case WHITE: *pBuf |= mask; break; + case BLACK: *pBuf &= ~mask; break; + case INVERSE: *pBuf ^= mask; break; + } + + // fast exit if we're done here! + if(h= 8) { + if (color == INVERSE) { // separate copy of the code so we don't impact performance of the black/white write version with an extra comparison per loop + do { + *pBuf=~(*pBuf); + + // adjust the buffer forward 8 rows worth of data + pBuf += SSD1306_LCDWIDTH; + + // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) + h -= 8; + } while(h >= 8); + } + else { + // store a local value to work with + register uint8_t val = (color == WHITE) ? 255 : 0; + + do { + // write our value in + *pBuf = val; + + // adjust the buffer forward 8 rows worth of data + pBuf += SSD1306_LCDWIDTH; + + // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) + h -= 8; + } while(h >= 8); + } + } + + // now do the final partial byte, if necessary + if(h) { + mod = h & 7; + // this time we want to mask the low bits of the byte, vs the high bits we did above + // register uint8_t mask = (1 << mod) - 1; + // note - lookup table results in a nearly 10% performance improvement in fill* functions + static uint8_t postmask[8] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F }; + register uint8_t mask = postmask[mod]; + switch (color) + { + case WHITE: *pBuf |= mask; break; + case BLACK: *pBuf &= ~mask; break; + case INVERSE: *pBuf ^= mask; break; + } + } +} diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h new file mode 100644 index 000000000..1d43dfddf --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h @@ -0,0 +1,186 @@ +/********************************************************************* +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ +#ifndef _Adafruit_SSD1306_H_ +#define _Adafruit_SSD1306_H_ + +#if ARDUINO >= 100 + #include "Arduino.h" + #define WIRE_WRITE Wire.write +#else + #include "WProgram.h" + #define WIRE_WRITE Wire.send +#endif + +#if defined(__SAM3X8E__) + typedef volatile RwReg PortReg; + typedef uint32_t PortMask; + #define HAVE_PORTREG +#elif defined(ARDUINO_ARCH_SAMD) +// not supported +#elif defined(ESP8266) || defined(ESP32) || defined(ARDUINO_STM32_FEATHER) || defined(__arc__) + typedef volatile uint32_t PortReg; + typedef uint32_t PortMask; +#elif defined(__AVR__) + typedef volatile uint8_t PortReg; + typedef uint8_t PortMask; + #define HAVE_PORTREG +#else + // chances are its 32 bit so assume that + typedef volatile uint32_t PortReg; + typedef uint32_t PortMask; +#endif + +#include +#include + +#define BLACK 0 +#define WHITE 1 +#define INVERSE 2 + +#define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D +// Address for 128x32 is 0x3C +// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded) + +/*========================================================================= + SSD1306 Displays + ----------------------------------------------------------------------- + The driver is used in multiple displays (128x64, 128x32, etc.). + Select the appropriate display below to create an appropriately + sized framebuffer, etc. + + SSD1306_128_64 128x64 pixel display + + SSD1306_128_32 128x32 pixel display + + SSD1306_96_16 + + -----------------------------------------------------------------------*/ + #define SSD1306_128_64 +// #define SSD1306_128_32 +// #define SSD1306_96_16 +/*=========================================================================*/ + +#if defined SSD1306_128_64 && defined SSD1306_128_32 + #error "Only one SSD1306 display can be specified at once in SSD1306.h" +#endif +#if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16 + #error "At least one SSD1306 display must be specified in SSD1306.h" +#endif + +#if defined SSD1306_128_64 + #define SSD1306_LCDWIDTH 128 + #define SSD1306_LCDHEIGHT 64 +#endif +#if defined SSD1306_128_32 + #define SSD1306_LCDWIDTH 128 + #define SSD1306_LCDHEIGHT 32 +#endif +#if defined SSD1306_96_16 + #define SSD1306_LCDWIDTH 96 + #define SSD1306_LCDHEIGHT 16 +#endif + +#define SSD1306_SETCONTRAST 0x81 +#define SSD1306_DISPLAYALLON_RESUME 0xA4 +#define SSD1306_DISPLAYALLON 0xA5 +#define SSD1306_NORMALDISPLAY 0xA6 +#define SSD1306_INVERTDISPLAY 0xA7 +#define SSD1306_DISPLAYOFF 0xAE +#define SSD1306_DISPLAYON 0xAF + +#define SSD1306_SETDISPLAYOFFSET 0xD3 +#define SSD1306_SETCOMPINS 0xDA + +#define SSD1306_SETVCOMDETECT 0xDB + +#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 +#define SSD1306_SETPRECHARGE 0xD9 + +#define SSD1306_SETMULTIPLEX 0xA8 + +#define SSD1306_SETLOWCOLUMN 0x00 +#define SSD1306_SETHIGHCOLUMN 0x10 + +#define SSD1306_SETSTARTLINE 0x40 + +#define SSD1306_MEMORYMODE 0x20 +#define SSD1306_COLUMNADDR 0x21 +#define SSD1306_PAGEADDR 0x22 + +#define SSD1306_COMSCANINC 0xC0 +#define SSD1306_COMSCANDEC 0xC8 + +#define SSD1306_SEGREMAP 0xA0 + +#define SSD1306_CHARGEPUMP 0x8D + +#define SSD1306_EXTERNALVCC 0x1 +#define SSD1306_SWITCHCAPVCC 0x2 + +// Scrolling #defines +#define SSD1306_ACTIVATE_SCROLL 0x2F +#define SSD1306_DEACTIVATE_SCROLL 0x2E +#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 +#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 +#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 +#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 +#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A + +class Adafruit_SSD1306 : public Adafruit_GFX { + public: + Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); + Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS); + Adafruit_SSD1306(int8_t RST = -1); + + void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS, bool reset=true); + void ssd1306_command(uint8_t c); + + void clearDisplay(void); + void invertDisplay(uint8_t i); + void display(); + + void startscrollright(uint8_t start, uint8_t stop); + void startscrollleft(uint8_t start, uint8_t stop); + + void startscrolldiagright(uint8_t start, uint8_t stop); + void startscrolldiagleft(uint8_t start, uint8_t stop); + void stopscroll(void); + + void dim(boolean dim); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + private: + int8_t _i2caddr, _vccstate, sid, sclk, dc, rst, cs; + void fastSPIwrite(uint8_t c); + + boolean hwSPI; +#ifdef HAVE_PORTREG + PortReg *mosiport, *clkport, *csport, *dcport; + PortMask mosipinmask, clkpinmask, cspinmask, dcpinmask; +#endif + + inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); + inline void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) __attribute__((always_inline)); + +}; + +#endif /* _Adafruit_SSD1306_H_ */ diff --git a/lib/Adafruit_SSD1306-1.1.2/README.md b/lib/Adafruit_SSD1306-1.1.2/README.md new file mode 100644 index 000000000..d76bb285c --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/README.md @@ -0,0 +1,32 @@ +# Adafruit_SSD1306 + + +## Compatibility + +MCU | Tested Works | Doesn't Work | Not Tested | Notes +------------------ | :----------: | :----------: | :---------: | ----- +Atmega328 @ 16MHz | X | | | +Atmega328 @ 12MHz | X | | | +Atmega32u4 @ 16MHz | X | | | +Atmega32u4 @ 8MHz | X | | | +ESP8266 | X | | | change OLED_RESET to different pin if using default I2C pins D4/D5. +Atmega2560 @ 16MHz | X | | | +ATSAM3X8E | X | | | +ATSAM21D | X | | | +ATtiny85 @ 16MHz | | X | | +ATtiny85 @ 8MHz | | X | | +Intel Curie @ 32MHz | | | X | +STM32F2 | | | X | + + * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini + * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V + * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 + * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro + * ESP8266 : Adafruit Huzzah + * ATmega2560 @ 16MHz : Arduino Mega + * ATSAM3X8E : Arduino Due + * ATSAM21D : Arduino Zero, M0 Pro + * ATtiny85 @ 16MHz : Adafruit Trinket 5V + * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V + + diff --git a/lib/Adafruit_SSD1306-1.1.2/README.txt b/lib/Adafruit_SSD1306-1.1.2/README.txt new file mode 100644 index 000000000..420cc153c --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/README.txt @@ -0,0 +1,24 @@ +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +Scrolling code contributed by Michael Gregg +BSD license, check license.txt for more information +All text above must be included in any redistribution + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_SSD1306. Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h + +Place the Adafruit_SSD1306 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE. + +You will also have to download the Adafruit GFX Graphics core which does all the circles, text, rectangles, etc. You can get it from +https://github.com/adafruit/Adafruit-GFX-Library +and download/install that library as well \ No newline at end of file diff --git a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino new file mode 100644 index 000000000..b3b8bfa9a --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino @@ -0,0 +1,375 @@ +/********************************************************************* +This is an example for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +This example is for a 128x32 size display using I2C to communicate +3 pins are required to interface (2 I2C and one reset) + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +#define OLED_RESET 4 +Adafruit_SSD1306 display(OLED_RESET); + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 32) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + delay(1); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); + delay(1); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + delay(1); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + delay(1); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x32 size display using SPI to communicate +4 or 5 pins are required to interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +// If using software SPI (the default case): +#define OLED_MOSI 9 +#define OLED_CLK 10 +#define OLED_DC 11 +#define OLED_CS 12 +#define OLED_RESET 13 +Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); + +/* Uncomment this block to use hardware SPI +#define OLED_DC 6 +#define OLED_CS 7 +#define OLED_RESET 8 +Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); +*/ + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 32) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC); + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x64 size display using I2C to communicate +3 pins are required to interface (2 I2C and one reset) + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +#define OLED_RESET 4 +Adafruit_SSD1306 display(OLED_RESET); + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 64) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64) + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + delay(1); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); + delay(1); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + delay(1); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + delay(1); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x64 size display using SPI to communicate +4 or 5 pins are required to interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +// If using software SPI (the default case): +#define OLED_MOSI 9 +#define OLED_CLK 10 +#define OLED_DC 11 +#define OLED_CS 12 +#define OLED_RESET 13 +Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); + +/* Uncomment this block to use hardware SPI +#define OLED_DC 6 +#define OLED_CS 7 +#define OLED_RESET 8 +Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); +*/ + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 64) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC); + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i +sentence=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! +paragraph=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! +category=Display +url=https://github.com/adafruit/Adafruit_SSD1306 +architectures=* diff --git a/lib/Adafruit_SSD1306-1.1.2/license.txt b/lib/Adafruit_SSD1306-1.1.2/license.txt new file mode 100644 index 000000000..f6a0f22b8 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/license.txt @@ -0,0 +1,26 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012, 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: +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. +3. Neither the name of the copyright holders nor the +names of its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 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. diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp new file mode 100644 index 000000000..08a41f78a --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp @@ -0,0 +1,315 @@ +// Based on the work by DFRobot + +#include "LiquidCrystal_I2C.h" +#include +#if defined(ARDUINO) && ARDUINO >= 100 + +#include "Arduino.h" + +#define printIIC(args) Wire.write(args) +inline size_t LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); + return 1; +} + +#else +#include "WProgram.h" + +#define printIIC(args) Wire.send(args) +inline void LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); +} + +#endif +#include "Wire.h" + + + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that its in that state when a sketch starts (and the +// LiquidCrystal constructor is called). + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows) +{ + _Addr = lcd_Addr; + _cols = lcd_cols; + _rows = lcd_rows; + _backlightval = LCD_NOBACKLIGHT; +} + +void LiquidCrystal_I2C::init(){ + init_priv(); +} + +void LiquidCrystal_I2C::init_priv() +{ + Wire.begin(); + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + begin(_cols, _rows); +} + +void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 + delay(50); + + // Now we pull both RS and R/W low to begin commands + expanderWrite(_backlightval); // reset expanderand turn backlight off (Bit 8 =1) + delay(1000); + + //put the LCD into 4 bit mode + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + write4bits(0x03 << 4); + delayMicroseconds(150); + + // finally, set to 4-bit interface + write4bits(0x02 << 4); + + + // set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for roman languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + + home(); + +} + +/********** high level commands, for the user! */ +void LiquidCrystal_I2C::clear(){ + command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::home(){ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row > _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystal_I2C::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystal_I2C::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystal_I2C::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystal_I2C::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystal_I2C::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystal_I2C::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystal_I2C::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystal_I2C::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystal_I2C::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +// Turn the (optional) backlight off/on +void LiquidCrystal_I2C::noBacklight(void) { + _backlightval=LCD_NOBACKLIGHT; + expanderWrite(0); +} + +void LiquidCrystal_I2C::backlight(void) { + _backlightval=LCD_BACKLIGHT; + expanderWrite(0); +} + + + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystal_I2C::command(uint8_t value) { + send(value, 0); +} + + +/************ low level data pushing commands **********/ + +// write either command or data +void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { + uint8_t highnib=value&0xf0; + uint8_t lownib=(value<<4)&0xf0; + write4bits((highnib)|mode); + write4bits((lownib)|mode); +} + +void LiquidCrystal_I2C::write4bits(uint8_t value) { + expanderWrite(value); + pulseEnable(value); +} + +void LiquidCrystal_I2C::expanderWrite(uint8_t _data){ + Wire.beginTransmission(_Addr); + printIIC((int)(_data) | _backlightval); + Wire.endTransmission(); +} + +void LiquidCrystal_I2C::pulseEnable(uint8_t _data){ + expanderWrite(_data | En); // En high + delayMicroseconds(1); // enable pulse must be >450ns + + expanderWrite(_data & ~En); // En low + delayMicroseconds(50); // commands need > 37us to settle +} + + +// Alias functions + +void LiquidCrystal_I2C::cursor_on(){ + cursor(); +} + +void LiquidCrystal_I2C::cursor_off(){ + noCursor(); +} + +void LiquidCrystal_I2C::blink_on(){ + blink(); +} + +void LiquidCrystal_I2C::blink_off(){ + noBlink(); +} + +void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){ + createChar(char_num, rows); +} + +void LiquidCrystal_I2C::setBacklight(uint8_t new_val){ + if(new_val){ + backlight(); // turn backlight on + }else{ + noBacklight(); // turn backlight off + } +} + +void LiquidCrystal_I2C::printstr(const char c[]){ + //This function is not identical to the function used for "real" I2C displays + //it's here so the user sketch doesn't have to be changed + print(c); +} + + +// unsupported API functions +void LiquidCrystal_I2C::off(){} +void LiquidCrystal_I2C::on(){} +void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {} +uint8_t LiquidCrystal_I2C::status(){return 0;} +uint8_t LiquidCrystal_I2C::keypad (){return 0;} +uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;} +void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end){} +void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_row_end){} +void LiquidCrystal_I2C::setContrast(uint8_t new_val){} + + diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h new file mode 100644 index 000000000..faf19fbea --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h @@ -0,0 +1,126 @@ +//YWROBOT +#ifndef LiquidCrystal_I2C_h +#define LiquidCrystal_I2C_h + +#include +#include "Print.h" +#include + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +// flags for backlight control +#define LCD_BACKLIGHT 0x08 +#define LCD_NOBACKLIGHT 0x00 + +#define En B00000100 // Enable bit +#define Rw B00000010 // Read/Write bit +#define Rs B00000001 // Register select bit + +class LiquidCrystal_I2C : public Print { +public: + LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); + void clear(); + void home(); + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void printLeft(); + void printRight(); + void leftToRight(); + void rightToLeft(); + void shiftIncrement(); + void shiftDecrement(); + void noBacklight(); + void backlight(); + void autoscroll(); + void noAutoscroll(); + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); +#if defined(ARDUINO) && ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + void command(uint8_t); + void init(); + +////compatibility API function aliases +void blink_on(); // alias for blink() +void blink_off(); // alias for noBlink() +void cursor_on(); // alias for cursor() +void cursor_off(); // alias for noCursor() +void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() +void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() +void printstr(const char[]); + +////Unsupported API functions (not implemented in this library) +uint8_t status(); +void setContrast(uint8_t new_val); +uint8_t keypad(); +void setDelay(int,int); +void on(); +void off(); +uint8_t init_bargraph(uint8_t graphtype); +void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); +void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); + + +private: + void init_priv(); + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void expanderWrite(uint8_t); + void pulseEnable(uint8_t); + uint8_t _Addr; + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + uint8_t _numlines; + uint8_t _cols; + uint8_t _rows; + uint8_t _backlightval; +}; + +#endif diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o new file mode 100644 index 0000000000000000000000000000000000000000..bca78e0d24dfc30341ef0d5e91cf127ee829e126 GIT binary patch literal 41564 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 literal 0 HcmV?d00001 diff --git a/lib/LiquidCrystal_I2C-1.1.3/README.md b/lib/LiquidCrystal_I2C-1.1.3/README.md new file mode 100644 index 000000000..aee58d3a2 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/README.md @@ -0,0 +1,2 @@ +# LiquidCrystal_I2C +LiquidCrystal Arduino library for the DFRobot I2C LCD displays diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde new file mode 100644 index 000000000..492612d71 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde @@ -0,0 +1,70 @@ +//YWROBOT +//Compatible with the Arduino IDE 1.0 +//Library version:1.1 +#include +#include + +#if defined(ARDUINO) && ARDUINO >= 100 +#define printByte(args) write(args); +#else +#define printByte(args) print(args,BYTE); +#endif + +uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; +uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; +uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; +uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0}; +uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0}; +uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0}; +uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0}; +uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4}; + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.backlight(); + + lcd.createChar(0, bell); + lcd.createChar(1, note); + lcd.createChar(2, clock); + lcd.createChar(3, heart); + lcd.createChar(4, duck); + lcd.createChar(5, check); + lcd.createChar(6, cross); + lcd.createChar(7, retarrow); + lcd.home(); + + lcd.print("Hello world..."); + lcd.setCursor(0, 1); + lcd.print(" i "); + lcd.printByte(3); + lcd.print(" arduinos!"); + delay(5000); + displayKeyCodes(); + +} + +// display all keycodes +void displayKeyCodes(void) { + uint8_t i = 0; + while (1) { + lcd.clear(); + lcd.print("Codes 0x"); lcd.print(i, HEX); + lcd.print("-0x"); lcd.print(i+16, HEX); + lcd.setCursor(0, 1); + for (int j=0; j<16; j++) { + lcd.printByte(i+j); + } + i+=16; + + delay(4000); + } +} + +void loop() +{ + +} + diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde new file mode 100644 index 000000000..6dfdee8f8 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde @@ -0,0 +1,28 @@ +//YWROBOT +//Compatible with the Arduino IDE 1.0 +//Library version:1.1 +#include +#include + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.init(); + // Print a message to the LCD. + lcd.backlight(); + lcd.setCursor(3,0); + lcd.print("Hello, world!"); + lcd.setCursor(2,1); + lcd.print("Ywrobot Arduino!"); + lcd.setCursor(0,2); + lcd.print("Arduino LCM IIC 2004"); + lcd.setCursor(2,3); + lcd.print("Power By Ec-yuan!"); +} + + +void loop() +{ +} diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde new file mode 100644 index 000000000..fdbbc64eb --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde @@ -0,0 +1,34 @@ +/* + * Displays text sent over the serial port (e.g. from the Serial Monitor) on + * an attached LCD. + * YWROBOT + *Compatible with the Arduino IDE 1.0 + *Library version:1.1 + */ +#include +#include + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.backlight(); + Serial.begin(9600); +} + +void loop() +{ + // when characters arrive over the serial port... + if (Serial.available()) { + // wait a bit for the entire message to arrive + delay(100); + // clear the screen + lcd.clear(); + // read all the available characters + while (Serial.available() > 0) { + // display each character to the LCD + lcd.write(Serial.read()); + } + } +} diff --git a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt new file mode 100644 index 000000000..8c450a9e9 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt @@ -0,0 +1,46 @@ +########################################### +# Syntax Coloring Map For LiquidCrystal_I2C +########################################### + +########################################### +# Datatypes (KEYWORD1) +########################################### + +LiquidCrystal_I2C KEYWORD1 + +########################################### +# Methods and Functions (KEYWORD2) +########################################### +init KEYWORD2 +begin KEYWORD2 +clear KEYWORD2 +home KEYWORD2 +noDisplay KEYWORD2 +display KEYWORD2 +noBlink KEYWORD2 +blink KEYWORD2 +noCursor KEYWORD2 +cursor KEYWORD2 +scrollDisplayLeft KEYWORD2 +scrollDisplayRight KEYWORD2 +leftToRight KEYWORD2 +rightToLeft KEYWORD2 +shiftIncrement KEYWORD2 +shiftDecrement KEYWORD2 +noBacklight KEYWORD2 +backlight KEYWORD2 +autoscroll KEYWORD2 +noAutoscroll KEYWORD2 +createChar KEYWORD2 +setCursor KEYWORD2 +print KEYWORD2 +blink_on KEYWORD2 +blink_off KEYWORD2 +cursor_on KEYWORD2 +cursor_off KEYWORD2 +setBacklight KEYWORD2 +load_custom_character KEYWORD2 +printstr KEYWORD2 +########################################### +# Constants (LITERAL1) +########################################### diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.json b/lib/LiquidCrystal_I2C-1.1.3/library.json new file mode 100644 index 000000000..5a23a3989 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/library.json @@ -0,0 +1,15 @@ +{ + "name": "LiquidCrystal_I2C", + "keywords": "LCD, liquidcrystal, I2C", + "description": "A library for DFRobot I2C LCD displays", + "repository": + { + "type": "git", + "url": "https://github.com/marcoschwartz/LiquidCrystal_I2C.git" + }, + "frameworks": "arduino", + "platforms": + [ + "atmelavr" + ] +} \ No newline at end of file diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.properties b/lib/LiquidCrystal_I2C-1.1.3/library.properties new file mode 100644 index 000000000..ad8b02c15 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/library.properties @@ -0,0 +1,9 @@ +name=LiquidCrystal_I2C +version=1.1.2 +author=Frank de Brabander +maintainer=Marco Schwartz +sentence=A library for I2C LCD displays. +paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES. +category=Display +url=https://github.com/marcoschwartz/LiquidCrystal_I2C +architectures=* diff --git a/lib/TasmotaTFT-1.0.1/README.txt b/lib/TasmotaTFT-1.0.1/README.txt new file mode 100644 index 000000000..7c5905014 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/README.txt @@ -0,0 +1,21 @@ +This is a library for the Adafruit ILI9341 display products + +This library works with the Adafruit 2.8" Touch Shield V2 (SPI) + ----> 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 + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341. + +Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE + +Also requires the Adafruit_GFX library for Arduino. diff --git a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino new file mode 100644 index 000000000..e523a92d5 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino @@ -0,0 +1,360 @@ +/*************************************************** + This is our GFX example 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 "SPI.h" +#include "Adafruit_GFX.h" +#include "TasmotaTFT.h" + +#define TFT_DC 16 +#define TFT_CS 15 + +TasmotaTFT tft = TasmotaTFT(ILI9341, TFT_CS, TFT_DC); + +void setup() { + Serial.begin(115200); + Serial.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(TFT_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(TFT_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(TFT_RED, TFT_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(TFT_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(TFT_YELLOW, TFT_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, TFT_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, TFT_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(TFT_BLACK); + yield(); + tft.fillScreen(TFT_RED); + yield(); + tft.fillScreen(TFT_GREEN); + yield(); + tft.fillScreen(TFT_BLUE); + yield(); + tft.fillScreen(TFT_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(TFT_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(TFT_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(TFT_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(TFT_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(TFT_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(TFT_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(TFT_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(TFT_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} \ No newline at end of file diff --git a/lib/TasmotaTFT-1.0.1/keywords.txt b/lib/TasmotaTFT-1.0.1/keywords.txt new file mode 100644 index 000000000..50ac35436 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/keywords.txt @@ -0,0 +1,41 @@ +####################################### +# Syntax Coloring Map for TasmotaTFT +# (esp8266) +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +TasmotaTFT KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +setScrollStart KEYWORD2 +setScrollMargins KEYWORD2 +setAddrWindow KEYWORD2 +pushColor KEYWORD2 +fillScreen KEYWORD2 +drawPixel KEYWORD2 +drawFastVLine KEYWORD2 +drawFastHLine KEYWORD2 +fillRect KEYWORD2 +setRotation KEYWORD2 +invertDisplay KEYWORD2 +showDisplay KEYWORD2 +color565 KEYWORD2 +readdata KEYWORD2 +readcommand8 KEYWORD2 +spiwrite KEYWORD2 +writecommand KEYWORD2 +writedata KEYWORD2 +commandList KEYWORD2 +spiread KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/lib/TasmotaTFT-1.0.1/library.json b/lib/TasmotaTFT-1.0.1/library.json new file mode 100644 index 000000000..f5cd5216f --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/library.json @@ -0,0 +1,15 @@ +{ + "name": "TasmotaTFT", + "version": "1.0.1", + "keywords": [ + "spi", "io", "tft", "TasmotaTFT" + ], + "description": "Library for ILI9341, ILI9481 and ILI9486 displays", + "repository": + { + "type": "git", + "url": "https://github.com/arendst/Sonoff-Tasmota/lib/TasmotaTFT" + }, + "frameworks": "arduino", + "platforms": "espressif8266" +} diff --git a/lib/TasmotaTFT-1.0.1/library.properties b/lib/TasmotaTFT-1.0.1/library.properties new file mode 100644 index 000000000..f012244b3 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/library.properties @@ -0,0 +1,9 @@ +name=TasmotaTFT +version=1.0.1 +author=Theo Arends +maintainer=Theo Arends +sentence=Library for ILI9341, ILI9481 and ILI9486 displays +paragraph= +category=Display +url= +architectures=esp8266 diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp new file mode 100644 index 000000000..ad6ebc9be --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp @@ -0,0 +1,616 @@ +/* + TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota + + Copyright (C) 2018 Adafruit and Theo Arends + + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/*********************************************************************************************\ + * See original Adafruit ILI9341 license text below + * + * Based in Adafruit_ILI9341 v1.0.11 + * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD using hardware SPI only + * + * These displays use hardware SPI to communicate, 4 or 5 pins are required to interface (RST is optional) +\*********************************************************************************************/ + +#include "TasmotaTFT.h" +#include +#include "pins_arduino.h" +#include "wiring_private.h" +#include + +static inline void spi_begin(void) __attribute__((always_inline)); +static inline void spi_begin(void) { + SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0)); +} +static inline void spi_end(void) __attribute__((always_inline)); +static inline void spi_end(void) { + SPI.endTransaction(); +} + +struct _sSize +{ + int16_t width; + int16_t height; +}; +_sSize _size[TFT_MAX] = { + {240, 320}, // ILI9340 / ILI9341 + {320, 480}, // ILI9481 / HX8357B + {320, 480} // ILI9486 +}; + +TasmotaTFT::TasmotaTFT(int8_t m, int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(_size[m].width, _size[m].height) { + _mod = m; + _w = _size[m].width; + _h = _size[m].height; + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = _sclk = 0; +} + +void TasmotaTFT::writecommand(uint8_t c) +{ + digitalWrite(_dc, LOW); + digitalWrite(_sclk, LOW); + digitalWrite(_cs, LOW); + SPI.transfer(c); + digitalWrite(_cs, HIGH); +} + +void TasmotaTFT::writedata(uint8_t c) +{ + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(c); + digitalWrite(_cs, HIGH); +} + +void TasmotaTFT::begin(void) +{ + pinMode(_dc, OUTPUT); + digitalWrite(_dc, LOW); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + + SPI.begin(); + + // toggle RST low to reset + if (_rst > 0) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } + + spi_begin(); + + if (_mod == ILI9341) { // 320 x 240 + writecommand(0xEF); // Display Supplier dependant + writedata(0x03); + writedata(0x80); + writedata(0x02); + + writecommand(0xCF); // Display Supplier dependant + writedata(0x00); + writedata(0XC1); + writedata(0X30); + + writecommand(0xED); // Display Supplier dependant + writedata(0x64); + writedata(0x03); + writedata(0X12); + writedata(0X81); + + writecommand(0xE8); // Display Supplier dependant + writedata(0x85); + writedata(0x00); + writedata(0x78); + + writecommand(0xCB); // Display Supplier dependant + writedata(0x39); + writedata(0x2C); + writedata(0x00); + writedata(0x34); + writedata(0x02); + + writecommand(0xF7); // Display Supplier dependant + writedata(0x20); + + writecommand(0xEA); // Display Supplier dependant + writedata(0x00); + writedata(0x00); + + writecommand(0xC0); // Power control 1 + writedata(0x23); // VRH[5:0] + + writecommand(0xC1); // Power control 2 + writedata(0x10); // SAP[2:0];BT[3:0] + + writecommand(0xC5); // VCM control 1 + writedata(0x3e); // Contrast + writedata(0x28); + + writecommand(0xC7); // VCM control 2 + writedata(0x86); // -- + + writecommand(0x36); // Memory Access Control + writedata(0x48); + + writecommand(0x3A); // Pixel Format + writedata(0x55); + + writecommand(0xB1); // Frame Control in Normal Mode + writedata(0x00); + writedata(0x18); + + writecommand(0xB6); // Display Function Control + writedata(0x08); + writedata(0x82); + writedata(0x27); + + writecommand(0xF2); // 3Gamma Function Disable + writedata(0x00); + + writecommand(0x26); // Gamma curve selected + writedata(0x01); + + writecommand(0xE0); // Positive Gamma + writedata(0x0F); + writedata(0x31); + writedata(0x2B); + writedata(0x0C); + writedata(0x0E); + writedata(0x08); + writedata(0x4E); + writedata(0xF1); + writedata(0x37); + writedata(0x07); + writedata(0x10); + writedata(0x03); + writedata(0x0E); + writedata(0x09); + writedata(0x00); + + writecommand(0xE1); // Negative Gamma + writedata(0x00); + writedata(0x0E); + writedata(0x14); + writedata(0x03); + writedata(0x11); + writedata(0x07); + writedata(0x31); + writedata(0xC1); + writedata(0x48); + writedata(0x08); + writedata(0x0F); + writedata(0x0C); + writedata(0x31); + writedata(0x36); + writedata(0x0F); + + writecommand(0x11); // Exit Sleep + spi_end(); + delay(120); + spi_begin(); + writecommand(0x29); // Display on + } + + else if (_mod == ILI9481) { // 480 x 320 + writecommand(0x11); // Exit Sleep + + spi_end(); + delay(20); + spi_begin(); + + writecommand(0xD0); // Power Setting + writedata(0x07); + writedata(0x42); + writedata(0x18); + + writecommand(0xD1); // VCOM Control + writedata(0x00); + writedata(0x07); + writedata(0x10); + + writecommand(0xD2); // Power Setting for Normal Mode + writedata(0x01); + writedata(0x02); + + writecommand(0xC0); // Panel Driving Setting + writedata(0x10); + writedata(0x3B); + writedata(0x00); + writedata(0x02); + writedata(0x11); + + writecommand(0xC5); // Frame Rate and Inversion Control + writedata(0x08); // 0x03 + + writecommand(0xC8); // Gamma Setting + writedata(0x00); + writedata(0x32); + writedata(0x36); + writedata(0x45); + writedata(0x06); + writedata(0x16); + writedata(0x37); + writedata(0x75); + writedata(0x77); + writedata(0x54); + writedata(0x0C); + writedata(0x00); + + writecommand(0x36); // Address Mode + writedata(0x0A); + + writecommand(0x3A); // Pixel Format + writedata(0x55); + + writecommand(0x2A); // Column Address + writedata(0x00); + writedata(0x00); + writedata(0x01); + writedata(0x3F); + + writecommand(0x2B); // Page Address + writedata(0x00); + writedata(0x00); + writedata(0x01); + writedata(0xDF); // 0xE0 + + spi_end(); + delay(120); + spi_begin(); + writecommand(0x29); // Display on + } + + else if (_mod == ILI9486) { // 480 x 320 + writecommand(0x01); // Soft reset +// writedata(0x00); + + spi_end(); + delay(50); + spi_begin(); + + writecommand(0x28); // Display off +// writedata(0x00); + + writecommand(0xC0); // Power Control 1 + writedata(0x0d); + writedata(0x0d); + + writecommand(0xC1); // Power Control 2 + writedata(0x43); + writedata(0x00); + + writecommand(0xC2); // Power Control 3 + writedata(0x00); + + writecommand(0xC5); // VCOM Control + writedata(0x00); + writedata(0x48); + + writecommand(0xB6); // Display Function Control + writedata(0x00); + writedata(0x22); // 0x42 = Rotate display 180 deg. + writedata(0x3B); + + writecommand(0xE0); // PGAMCTRL (Positive Gamma Control) + writedata(0x0f); + writedata(0x24); + writedata(0x1c); + writedata(0x0a); + writedata(0x0f); + writedata(0x08); + writedata(0x43); + writedata(0x88); + writedata(0x32); + writedata(0x0f); + writedata(0x10); + writedata(0x06); + writedata(0x0f); + writedata(0x07); + writedata(0x00); + + writecommand(0xE1); // NGAMCTRL (Negative Gamma Control) + writedata(0x0F); + writedata(0x38); + writedata(0x30); + writedata(0x09); + writedata(0x0f); + writedata(0x0f); + writedata(0x4e); + writedata(0x77); + writedata(0x3c); + writedata(0x07); + writedata(0x10); + writedata(0x05); + writedata(0x23); + writedata(0x1b); + writedata(0x00); + + writecommand(0x20); // Display Inversion OFF, 0x21 = ON + + writecommand(0x36); // Memory Access Control + writedata(0x0A); + + writecommand(0x3A); // Interface Pixel Format + writedata(0x55); + + writecommand(0x11); // Exit Sleep + spi_end(); + delay(150); + spi_begin(); + writecommand(0x29); // Display on + } + + spi_end(); +} + +void TasmotaTFT::setScrollStart(uint16_t start) +{ + spi_begin(); + writecommand(0x37); + writedata(start>>8); + writedata(start); + spi_end(); +} + +void TasmotaTFT::setScrollMargins(uint16_t top, uint16_t bottom) +{ + uint16_t height = _height - (top + bottom); + + spi_begin(); + writecommand(0x33); + writedata(top>>8); + writedata(top); + writedata(height>>8); + writedata(height); + writedata(bottom>>8); + writedata(bottom); + spi_end(); +} + +void TasmotaTFT::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) +{ + writecommand(TFT_CASET); // Column addr set + writedata(x0 >> 8); + writedata(x0 & 0xFF); // XSTART + writedata(x1 >> 8); + writedata(x1 & 0xFF); // XEND + + writecommand(TFT_PASET); // Row addr set + writedata(y0>>8); + writedata(y0); // YSTART + writedata(y1>>8); + writedata(y1); // YEND + + writecommand(TFT_RAMWR); // write to RAM +} + +void TasmotaTFT::pushColor(uint16_t color) +{ + spi_begin(); + + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(color >> 8); + SPI.transfer(color); + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawPixel(int16_t x, int16_t y, uint16_t color) +{ + if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; + + spi_begin(); + + setAddrWindow(x,y,x+1,y+1); + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(color >> 8); + SPI.transfer(color); + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawFastVLine(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; + + spi_begin(); + + setAddrWindow(x, y, x, y+h-1); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + while (h--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) +{ + // Rudimentary clipping + if((x >= _width) || (y >= _height)) return; + if((x+w-1) >= _width) w = _width-x; + + spi_begin(); + + setAddrWindow(x, y, x+w-1, y); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + while (w--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::fillScreen(uint16_t color) +{ + fillRect(0, 0, _width, _height, color); +} + +// fill a rectangle +void TasmotaTFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) +{ + // rudimentary clipping (drawChar w/big text requires this) + if((x >= _width) || (y >= _height)) return; + if((x + w - 1) >= _width) w = _width - x; + if((y + h - 1) >= _height) h = _height - y; + + spi_begin(); + + setAddrWindow(x, y, x+w-1, y+h-1); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + for(y=h; y>0; y--) { + for(x=w; x>0; x--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +// Pass 8-bit (each) R,G,B, get back 16-bit packed color +uint16_t TasmotaTFT::color565(uint8_t r, uint8_t g, uint8_t b) +{ + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); +} + +#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 TasmotaTFT::setRotation(uint8_t m) +{ + rotation = m % 4; // can't be higher than 3 + switch (rotation) { + case 0: + m = (MADCTL_MX | MADCTL_BGR); + _width = _w; + _height = _h; + break; + case 1: + m = (MADCTL_MV | MADCTL_BGR); + _width = _h; + _height = _w; + break; + case 2: + m = (MADCTL_MY | MADCTL_BGR); + _width = _w; + _height = _h; + break; + case 3: + m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); + _width = _h; + _height = _w; + break; + } + + spi_begin(); + writecommand(TFT_MADCTL); + writedata(m); + spi_end(); +} + +void TasmotaTFT::invertDisplay(boolean i) +{ + spi_begin(); + writecommand(i ? TFT_INVON : TFT_INVOFF); + spi_end(); +} + +void TasmotaTFT::showDisplay(boolean i) +{ + spi_begin(); + writecommand(i ? TFT_DISPON : TFT_DISPOFF); + spi_end(); +} + +uint8_t TasmotaTFT::readdata(void) +{ + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + uint8_t r = SPI.transfer(0x00); + digitalWrite(_cs, HIGH); + + return r; +} + +uint8_t TasmotaTFT::readcommand8(uint8_t c, uint8_t index) +{ + spi_begin(); + + digitalWrite(_dc, LOW); // command + digitalWrite(_cs, LOW); + SPI.transfer(0xD9); // woo sekret command? + digitalWrite(_dc, HIGH); // data + SPI.transfer(0x10 + index); + digitalWrite(_cs, HIGH); + + digitalWrite(_dc, LOW); // command + digitalWrite(_sclk, LOW); + digitalWrite(_cs, LOW); + SPI.transfer(c); + + digitalWrite(_dc, HIGH); // data + uint8_t r = SPI.transfer(0x00); + digitalWrite(_cs, HIGH); + + spi_end(); + return r; +} + +/*************************************************** + 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 + ****************************************************/ diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h new file mode 100644 index 000000000..2577bb08d --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h @@ -0,0 +1,137 @@ +/* + TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota + + Copyright (C) 2018 Adafruit and Theo Arends + + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _TasmotaTFT_h +#define _TasmotaTFT_h +/*********************************************************************************************\ + * See original Adafruit ILI9341 license text below + * + * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD + * + * These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional) +\*********************************************************************************************/ + +#include "Arduino.h" +#include "Print.h" +#include + +// Supported TFT LCD drivers +#define ILI9340 0 // 320 x 240 +#define ILI9341 0 // 320 x 240 +#define ILI9481 1 // 480 x 320 +#define HX8357B 1 // 480 x 320 +#define ILI9486 2 // 480 x 320 +#define TFT_MAX 3 + +// Common driver registers +#define TFT_RDMODE 0x0A // Get Power Mode +#define TFT_RDMADCTL 0x0B // Get Address Mode +#define TFT_RDPIXFMT 0x0C // Get Pixel Format +#define TFT_RDIMGFMT 0x0D // Get Display Mode +#define TFT_RDSELFDIAG 0x0F // Get Diagnostic Result + +#define TFT_INVOFF 0x20 // Exit Invert Mode +#define TFT_INVON 0x21 // Enter Invert Mode +#define TFT_DISPOFF 0x28 // Set Display Off +#define TFT_DISPON 0x29 // Set Display on + +#define TFT_CASET 0x2A // Set Column Address +#define TFT_PASET 0x2B // Set Page Address +#define TFT_RAMWR 0x2C // Write Memory Start + +#define TFT_MADCTL 0x36 // Set Address Mode + +// Color definitions +#define TFT_BLACK 0x0000 /* 0, 0, 0 */ +#define TFT_NAVY 0x000F /* 0, 0, 128 */ +#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ +#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ +#define TFT_MAROON 0x7800 /* 128, 0, 0 */ +#define TFT_PURPLE 0x780F /* 128, 0, 128 */ +#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ +#define TFT_LIGHTGREY 0xC618 /* 192, 192, 192 */ +#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ +#define TFT_BLUE 0x001F /* 0, 0, 255 */ +#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ +#define TFT_CYAN 0x07FF /* 0, 255, 255 */ +#define TFT_RED 0xF800 /* 255, 0, 0 */ +#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ +#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ +#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ +#define TFT_ORANGE 0xFD20 /* 255, 165, 0 */ +#define TFT_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ +#define TFT_PINK 0xF81F + +class TasmotaTFT : public Adafruit_GFX { + public: + TasmotaTFT(int8_t _MODEL, int8_t _CS, int8_t _DC, int8_t _RST = -1); + void begin(void); + void setScrollStart(uint16_t start); + void setScrollMargins(uint16_t top, uint16_t bottom); + void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); + void pushColor(uint16_t color); + void fillScreen(uint16_t color); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void setRotation(uint8_t r); + void invertDisplay(boolean i); + void showDisplay(boolean i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + /* These are not for current use, 8-bit protocol only! */ + uint8_t readdata(void); + uint8_t readcommand8(uint8_t reg, uint8_t index = 0); + + void spiwrite(uint8_t); + void writecommand(uint8_t c); + void writedata(uint8_t d); + void commandList(uint8_t *addr); + uint8_t spiread(void); + + private: + uint8_t tabcolor; + uint8_t _mod; + int16_t _w; + int16_t _h; + int32_t _cs; + int32_t _dc; + int32_t _rst; + int32_t _mosi; + int32_t _miso; + int32_t _sclk; +}; + +#endif // _TasmotaTFT_h + +/*************************************************** + 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 + ****************************************************/ diff --git a/platformio.ini b/platformio.ini index 5ac5a1941..6b18f1efb 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,15 +11,15 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff +;env_default = sonoff-DE_4MB +;env_default = sonoff-EN_4MB +;env_default = sonoff-ES_4MB ;env_default = sonoff-minimal -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE +;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -33,11 +33,11 @@ src_dir = sonoff [common] ; ************************************************************ ; *** Esp8266 core for Arduino version -;platform = espressif8266@1.5.0 ; v2.3.0 +platform = espressif8266@1.5.0 ; v2.3.0 ;platform = espressif8266@1.6.0 ; v2.4.0 ;platform = espressif8266@1.7.0 ; v2.4.1 ;platform = https://github.com/platformio/platform-espressif8266.git#feature/stage -platform = espressif8266 +;platform = espressif8266 framework = arduino board = esp01_1m @@ -49,7 +49,17 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH + ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY + ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH + ; -DUSE_CONFIG_OVERRIDE + +build_flags_4MB = + -Wl,-Tesp8266.flash.4m1m.ld + -DVTABLES_IN_FLASH + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes @@ -59,11 +69,14 @@ extra_scripts = pio/strip-floats.py monitor_baud = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -;upload_speed = 115200 -upload_speed = 512000 +upload_speed = 115200 +;upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 +;command to erase flash on command line: +; esptool.py --port COM5 erase_flash + ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -74,13 +87,38 @@ upload_port = COM5 ; ********************************************************************* -[env:sonoff] +[env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-EN_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-ES_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR monitor_baud = ${common.monitor_baud} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -99,42 +137,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-classic] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_CLASSIC -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-knx] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-allsensors] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_ALL_SENSORS -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -183,6 +185,19 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-EN] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} diff --git a/sonoff/settings.h b/sonoff/settings.h index 466da6091..313ca3c6f 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -319,4 +319,4 @@ struct XDRVMAILBOX { ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif -#endif // _SETTINGS_H_ +#endif // _SETTINGS_H_ \ No newline at end of file diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 9ab47e8f0..a2eecea4f 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -180,4 +180,4 @@ const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, extern uint8_t light_device; // Light device number -#endif // _SONOFF_H_ +#endif // _SONOFF_H_ \ No newline at end of file diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 554a4858e..9b835cc4a 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,7 +25,7 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050D0001 // 5.13.0a +#define VERSION 0x050D0100 // 5.13.1a // Location specific includes #include // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 4777d256a..fc850ba83 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,6 +48,7 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter + #define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) @@ -55,15 +56,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -186,9 +187,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -201,7 +202,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -209,7 +210,7 @@ //#define USE_MQTT_TLS // Use TLS for MQTT connection (+53k code, +15k mem) // -- KNX IP Protocol ----------------------------- -#define USE_KNX // Enable KNX IP Protocol Support (+23k code, +3k3 mem) +//#define USE_KNX // Enable KNX IP Protocol Support (+23k code, +3k3 mem) // -- HTTP ---------------------------------------- #define USE_WEBSERVER // Enable web server and wifi manager (+66k code, +8k mem) @@ -218,7 +219,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -281,9 +282,9 @@ #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) // -- Low level interface devices ----------------- -#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) - #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) +// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) @@ -293,6 +294,31 @@ #define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + +//#define DISPLAY_CONFIG // Display Support for LCD, Oled +#ifdef DISPLAY_CONFIG + +#ifdef USE_I2C + #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module + #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module + #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module + #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module + #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module + #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module + #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module + #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module +#endif // USE_I2C + +#ifdef USE_SPI // SPI using library TasmotaTFT + #ifndef USE_DISPLAY + #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT + #endif +#endif // USE_SPI + +#endif // DISPLAY_CONFIG + /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space \*********************************************************************************************/ @@ -309,7 +335,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/xdrv_06_display.ino b/sonoff/xdrv_06_display.ino new file mode 100644 index 000000000..5ac8c3727 --- /dev/null +++ b/sonoff/xdrv_06_display.ino @@ -0,0 +1,1096 @@ +/* + xdrv_06_display.ino - display support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#if defined(USE_I2C) || defined(USE_SPI) +#ifdef USE_DISPLAY +/*********************************************************************************************\ + * Display Libraries needed + * --------------- ---------------------------------------- + * I2C LCD LiquidCrystal_I2C + * I2C SSD 1306 Adafruit_SSD1306 and Adafruit_GFX + * I2C 8x8 Matrix Adafruit_LED_Backpack and Adafruit_GFX + * SPI TFT ILI9341 TasmotaTFT and Adafruit_GFX + * SPI TFT ILI9481 TasmotaTFT and Adafruit_GFX +\*********************************************************************************************/ + +#define LCD_ADDRESS1 0x27 // LCD I2C address option 1 +#define LCD_ADDRESS2 0x3F // LCD I2C address option 2 + +#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address +#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address + +#define DISPLAY_BUFFER_COLS 40 // Max number of columns in log buffer and display shadow buffer (needed for LCD and Oled) +#define DISPLAY_BUFFER_ROWS 8 // Max number of lines in display shadow buffer (needed for LCD and Oled) + +#define DISPLAY_LOG_ROWS 32 // Number of lines in display log buffer + +enum display_types { DISP_NONE, DISP_LCD, DISP_OLED, DISP_MATRIX, DISP_TFT, DISP_TFT4, DISP_MAX }; + +enum DisplayCommands { CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, + CMND_DISP_SIZE, CMND_DISP_TEXT, CMND_DISP_ADDRESS }; +const char kDisplayCommands[] PROGMEM = + D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" + D_CMND_DISP_SIZE "|" D_CMND_DISP_TEXT "|" D_CMND_DISP_ADDRESS ; + +const char S_JSON_DISPLAY_COMMAND_VALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":\"%s\"}"; +const char S_JSON_DISPLAY_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":%d}"; +const char S_JSON_DISPLAY_COMMAND_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s%d\":%d}"; + +#define DISPLAY_LOG_COLS DISPLAY_BUFFER_COLS +1 // Number of characters in display log buffer line +1 + +#ifdef USE_I2C // --------------------------------------------------------------------------- +#include // 8x8 Matrix +#include // LCD +#include // Oled + +LiquidCrystal_I2C *lcd; +Adafruit_SSD1306 *oled; + +//char disp_screen_buffer[Settings.display_rows][Settings.display_cols[0] +1]; +char disp_screen_buffer[DISPLAY_BUFFER_ROWS][DISPLAY_BUFFER_COLS +1]; + +Adafruit_8x8matrix *matrix[8]; +uint8_t mtx_matrices = 0; +uint8_t mtx_state = 0; +uint8_t mtx_counter = 0; +int16_t mtx_x = 0; +int16_t mtx_y = 0; + +#endif // USE_I2C --------------------------------------------------------------------------- + +#ifdef USE_SPI // --------------------------------------------------------------------------- +#define TFT_TOP 16 +#define TFT_BOTTOM 16 +#define TFT_FONT_WIDTH 6 +#define TFT_FONT_HEIGTH 8 // Adafruit minimal font heigth pixels + +#include // TFT 320x240 and 480x320 +TasmotaTFT *tft; + +//#include +//Adafruit_ILI9341 *tft; + +uint16_t tft_scroll; + +#endif // USE_SPI --------------------------------------------------------------------------- + +char disp_log_buffer[DISPLAY_LOG_ROWS][DISPLAY_LOG_COLS]; +char disp_temp[2]; // C or F +char disp_time[9]; // 13:45:43 +uint8_t disp_log_buffer_idx = 0; +uint8_t disp_log_buffer_ptr = 0; +bool disp_log_buffer_active = false; +uint8_t disp_model = DISP_NONE; +uint8_t disp_refresh = 1; +uint8_t disp_second = 0; +uint8_t disp_mode = 1; +uint8_t disp_power = 0; +uint8_t disp_device = 0; +uint8_t disp_subscribed = 0; + +void DisplayLogBufferIdxInc() +{ + char *pch = strchr(disp_log_buffer[disp_log_buffer_idx],'~'); // = 0x7E (~) Replace degrees character (276 octal) + if (pch != NULL) { + switch (disp_model) { + case DISP_LCD: + disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\337'; // = 0xDF + break; + case DISP_OLED: + case DISP_MATRIX: + case DISP_TFT: + case DISP_TFT4: + disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\370'; // = 0xF8 + break; + } + } + + disp_log_buffer_idx++; + if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { + disp_log_buffer_idx = 0; + } +} + +void DisplayLogBufferPtrInc() +{ + disp_log_buffer_ptr++; + if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { + disp_log_buffer_ptr = 0; + } +} + +#ifdef USE_I2C // --------------------------------------------------------------------------- +void DisplayScreenBuffer() +{ + uint8_t last_row = Settings.display_rows -1; + + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); + if (disp_log_buffer_active) { + if (DISP_OLED == disp_model) { + oled->clearDisplay(); + oled->setTextSize(Settings.display_size); + oled->setCursor(0,0); + } + for (byte i = 0; i < last_row; i++) { + strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], sizeof(disp_screen_buffer[i])); + if (DISP_LCD == disp_model) { + lcd->setCursor(0, i); // Col 0, Row i + lcd->print(disp_screen_buffer[i +1]); + } + else if (DISP_OLED == disp_model) { + oled->println(disp_screen_buffer[i]); + } + } + strlcpy(disp_screen_buffer[last_row], disp_log_buffer[disp_log_buffer_ptr], sizeof(disp_screen_buffer[last_row])); + + // Fill with spaces + byte len = sizeof(disp_screen_buffer[last_row]) - strlen(disp_screen_buffer[last_row]); + if (len) { + memset(disp_screen_buffer[last_row] + strlen(disp_screen_buffer[last_row]), 0x20, len); + disp_screen_buffer[last_row][sizeof(disp_screen_buffer[last_row])-1] = 0; + } + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog(LOG_LEVEL_DEBUG); + + if (DISP_LCD == disp_model) { + lcd->setCursor(0, last_row); + lcd->print(disp_screen_buffer[last_row]); + } + else if (DISP_OLED == disp_model) { + oled->println(disp_screen_buffer[last_row]); + oled->display(); + } + DisplayLogBufferPtrInc(); + } + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayMatrixInit() +{ + mtx_state = 1; + for (mtx_matrices = 0; mtx_matrices < 8; mtx_matrices++) { + if (Settings.display_address[mtx_matrices]) { + matrix[mtx_matrices] = new Adafruit_8x8matrix(); + matrix[mtx_matrices]->begin(Settings.display_address[mtx_matrices]); + matrix[mtx_matrices]->setRotation(1); + matrix[mtx_matrices]->setBrightness(Settings.display_dimmer); + matrix[mtx_matrices]->blinkRate(0); // 0 - 3 + matrix[mtx_matrices]->setTextWrap(false); // Allow text to run off edges +// matrix[mtx_matrices]->setTextSize(Settings.display_size); +// matrix[mtx_matrices]->setTextColor(LED_RED); + matrix[mtx_matrices]->cp437(true); + } else { + break; + } + } + DisplayMatrixClear(); +} + +void DisplayMatrixWrite() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->writeDisplay(); + } +} + +void DisplayMatrixClear() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + } + DisplayMatrixWrite(); +} +/* +void DisplayMatrixAll() // On based on Text value (1 - 6) +{ + int value = atoi(Settings.text); + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + if (i < value) { + matrix[i]->fillRect(0,0, 8,8, LED_ON); + } + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixAllOn() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->fillRect(0,0, 8,8, LED_ON); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} +*/ +void DisplayMatrixFixed(char* txt) +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(-i *8, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixCenter(char* txt) +{ + int offset; + + int len = strlen(txt); + offset = (len < 8) ? offset = ((mtx_matrices *8) - (len *6)) / 2 : 0; + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(-(i *8)+offset, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixScrollLeft(char* txt, int loop) +{ + switch (mtx_state) { + case 1: + mtx_state = 2; + // Horiz. position of text -- starts off right edge + mtx_x = 8 * mtx_matrices; + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), txt); + AddLog(LOG_LEVEL_DEBUG); + + disp_refresh = Settings.display_refresh; + case 2: + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(mtx_x - i *8, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); + // Move text position left by 1 pixel. + mtx_x--; + int16_t len = strlen(txt); + if (mtx_x < -(len *6)) { + mtx_state = loop; + } + } + break; + } +} + +void DisplayMatrixScrollUp(char* txt, int loop) +{ + int wordcounter = 0; + char tmpbuf[200]; + char *words[100]; +// char separators[] = " ,.;:!?"; +// char separators[] = " "; +// char separators[] = " /|"; + char separators[] = " /"; + + switch (mtx_state) { + case 1: + mtx_state = 2; + // Vertical position of text -- starts off left bottom edge + mtx_y = 8; + mtx_counter = 0; + disp_refresh = Settings.display_refresh; + case 2: + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + strlcpy(tmpbuf, txt, sizeof(tmpbuf)); + char *p = strtok(tmpbuf, separators); + while (p != NULL && wordcounter < 40) { + words[wordcounter++] = p; + p = strtok(NULL, separators); + } + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + for (byte j = 0; j < wordcounter; j++) { + matrix[i]->setCursor(-i *8, mtx_y + (j *8)); + matrix[i]->println(words[j]); + } + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); + if (((mtx_y %8) == 0) && mtx_counter) { + mtx_counter--; + } else { + mtx_y--; // Move text position up by 1 pixel. + mtx_counter = STATES * 1; // Hold text for 1 seconds + } + if (mtx_y < -(wordcounter *8)) { + mtx_state = loop; + } + } + break; + } +} + +void DisplayMatrixBufferScroll(uint8_t direction) +{ + if (disp_log_buffer_idx != disp_log_buffer_ptr) { + if (!mtx_state) { + mtx_state = 1; + } + if (direction) { + DisplayMatrixScrollUp(disp_log_buffer[disp_log_buffer_ptr], 0); + } else { + DisplayMatrixScrollLeft(disp_log_buffer[disp_log_buffer_ptr], 0); + } + if (!mtx_state) { + DisplayLogBufferPtrInc(); + } + } else { + DisplayMatrixFixed(disp_time); + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayLcdInit() +{ + lcd = new LiquidCrystal_I2C(Settings.display_address[0], Settings.display_cols[0], Settings.display_rows); + lcd->init(); + lcd->clear(); + memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols[0]); + disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; +} + +void DisplayLcdCenter(byte row, char* txt) +{ + int offset; + int len; + char line[Settings.display_cols[0] +2]; + + memset(line, 0x20, Settings.display_cols[0]); + line[Settings.display_cols[0]] = 0; + len = strlen(txt); + offset = (len < Settings.display_cols[0]) ? offset = (Settings.display_cols[0] - len) / 2 : 0; + strncpy(line +offset, txt, len); + lcd->setCursor(0, row); + lcd->print(line); +} + +void DisplayLcdTime() +{ + char line[Settings.display_cols[0] +1]; + + snprintf_P(line, sizeof(line), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); + DisplayLcdCenter(0, line); + snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); + DisplayLcdCenter(1, line); +} + +void DisplayLcdBufferOrTime() +{ + DisplayScreenBuffer(); + if (!disp_log_buffer_active) { + DisplayLcdTime(); + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayOledInit() +{ + oled = new Adafruit_SSD1306(); + oled->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0]); + oled->invertDisplay(false); + oled->clearDisplay(); + oled->setTextWrap(false); // Allow text to run off edges + oled->cp437(true); + + oled->setTextSize(Settings.display_size); + oled->setTextColor(WHITE); + oled->setCursor(0,0); + oled->display(); + +// memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols); +// disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; +} + +void DisplayOledDisplayOnOff(byte state) +{ + if (state) { + oled->ssd1306_command(SSD1306_DISPLAYON); + } else { + oled->ssd1306_command(SSD1306_DISPLAYOFF); + } + oled->display(); +} + +void DisplayOledTime() +{ + char line[12]; + + oled->clearDisplay(); + oled->setTextSize(2); + oled->setCursor(0, 0); + snprintf_P(line, sizeof(line), PSTR(" %02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); // [ 12:34:56 ] + oled->println(line); + snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); // [01-02-2018] + oled->println(line); + oled->display(); +} + +#endif // USE_I2C --------------------------------------------------------------------------- +#ifdef USE_SPI // --------------------------------------------------------------------------- +void DisplayTftInit() +{ + if (DISP_TFT == disp_model) { + tft = new TasmotaTFT(ILI9341, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); +// tft = new Adafruit_ILI9341(pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); + } + else if (DISP_TFT4 == disp_model) { + tft = new TasmotaTFT(ILI9481, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); + } + tft->begin(); + tft->setRotation(0); + tft->invertDisplay(0); + tft->fillScreen(TFT_BLACK); + tft->setTextWrap(false); // Allow text to run off edges + tft->cp437(true); + + tft->setScrollMargins(TFT_TOP, TFT_BOTTOM); + tft->setCursor(0, 0); + tft->setTextColor(TFT_YELLOW, TFT_BLACK); + tft->setTextSize(2); + tft->println("HEADER"); + + tft_scroll = TFT_TOP; +} + +void DisplayTftDisplayOnOff(byte state) +{ +// tft->showDisplay(state); +// tft->invertDisplay(state); + if (pin[GPIO_BACKLIGHT] < 99) { + pinMode(pin[GPIO_BACKLIGHT], OUTPUT); + digitalWrite(pin[GPIO_BACKLIGHT], state); + } +} + +void DisplayTftPrint(byte size, char *txt) +{ + uint16_t theight; + + tft->setCursor(0, tft_scroll); + tft->setTextSize(size); + theight = size * TFT_FONT_HEIGTH; + tft->fillRect(0, tft_scroll, tft->width(), theight, TFT_BLACK); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), txt); + AddLog(LOG_LEVEL_DEBUG); + + tft->print(txt); + tft_scroll += theight; + if (tft_scroll >= (tft->height() - TFT_BOTTOM)) { + tft_scroll = TFT_TOP; + } + tft->setScrollStart(tft_scroll); +} + +void DisplayTftBuffer() +{ + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); + if (disp_log_buffer_active) { + DisplayTftPrint(Settings.display_size, disp_log_buffer[disp_log_buffer_ptr]); + DisplayLogBufferPtrInc(); + } + } +} +#endif // USE_SPI --------------------------------------------------------------------------- + +/*********************************************************************************************\ + * Sensors +\*********************************************************************************************/ + +enum SensorQuantity { + JSON_TEMPERATURE, + JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, + JSON_PRESSURE, JSON_PRESSUREATSEALEVEL, + JSON_ILLUMINANCE, + JSON_GAS, + JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY, + JSON_PERIOD, + JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, + JSON_CURRENT, + JSON_VOLTAGE, + JSON_POWERUSAGE, + JSON_CO2 }; +const char kSensorQuantity[] PROGMEM = + D_JSON_TEMPERATURE "|" // degrees + D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage + D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa + D_JSON_ILLUMINANCE "|" // lx + D_JSON_GAS "|" // kOhm + D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh + D_JSON_PERIOD "|" // Wh + D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit + D_JSON_CURRENT "|" // Ampere + D_JSON_VOLTAGE "|" // Volt + D_JSON_POWERUSAGE "|" // Watt + D_JSON_CO2 ; // ppm + +void DisplayJsonValue(const char *topic, const char* device, const char* mkey, const char* value) +{ + char quantity[TOPSZ]; + char spaces[Settings.display_cols[0]]; + char source[Settings.display_cols[0] - Settings.display_cols[1]]; + char svalue[Settings.display_cols[1] +1]; + + memset(spaces, 0x20, sizeof(spaces)); + spaces[sizeof(spaces) -1] = '\0'; + snprintf_P(source, sizeof(source), PSTR("%s/%s%s"), topic, mkey, (DISP_MATRIX == Settings.display_model) ? "" : spaces); // pow1/Voltage + + int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity); + if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER + return; + } + if (JSON_TEMPERATURE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); + } + else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value); + } + else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PRESSURE), value); + } + else if (JSON_ILLUMINANCE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value); + } + else if (JSON_GAS == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value); + } + else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value); + } + else if (JSON_PERIOD == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value); + } + else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value); + } + else if (JSON_CURRENT == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value); + } + else if (JSON_VOLTAGE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value); + } + else if (JSON_POWERUSAGE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value); + } + else if (JSON_CO2 == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); + } + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("%s %s"), source, svalue); + +// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, disp_log_buffer[disp_log_buffer_idx]); +// AddLog(LOG_LEVEL_DEBUG); + + DisplayLogBufferIdxInc(); +} + +void DisplayAnalyzeJson(char *topic, char *json) +{ +// //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}} +// //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102} + +// tele/pow1/SENSOR = {"Time":"2018-01-02T17:13:17","ENERGY":{"Total":13.091,"Yesterday":0.060,"Today":0.046,"Period":0.2,"Power":9.8,"Factor":0.49,"Voltage":206.8,"Current":0.096}} +// tele/dual/STATE {"Time":"2017-09-20T11:53:03","Uptime":25,"Vcc":3.178,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":2,"SSId":"indebuurt2","RSSI":100,"APMac":"00:22:6B:FE:8E:20"}} +// tele/sc/SENSOR {"Time":"2017-09-20T11:53:09","Temperature":24.0,"Humidity":16.0,"Light":30,"Noise":20,"AirQuality":100,"TempUnit":"C"} +// tele/rf1/SENSOR {"Time":"2017-09-20T11:53:23","BH1750":{"Illuminance":57}} +// tele/wemos5/SENSOR {"Time":"2017-09-20T11:53:53","SHT1X":{"Temperature":20.1,"Humidity":58.9},"HTU21":{"Temperature":20.7,"Humidity":58.5},"BMP280":{"Temperature":21.6,"Pressure":1020.3},"TempUnit":"C"} +// tele/th1/SENSOR {"Time":"2017-09-20T11:54:48","DS18B20":{"Temperature":49.7},"TempUnit":"C"} + + char jsonStr[MESSZ]; + const char *tempunit; + + strlcpy(jsonStr, json, sizeof(jsonStr)); // Save original before destruction by JsonObject + StaticJsonBuffer<400> jsonBuf; + JsonObject &root = jsonBuf.parseObject(jsonStr); + if (root.success()) { + + tempunit = root[D_JSON_TEMPERATURE_UNIT]; + if (tempunit) { + snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%s"), tempunit); +// snprintf_P(log_data, sizeof(log_data), disp_temp); +// AddLog(LOG_LEVEL_DEBUG); + } + + for (JsonObject::iterator it = root.begin(); it != root.end(); ++it) { + JsonVariant value = it->value; + if (value.is()) { + JsonObject& Object2 = value; + for (JsonObject::iterator it2 = Object2.begin(); it2 != Object2.end(); ++it2) { + JsonVariant value2 = it2->value; + if (value2.is()) { + JsonObject& Object3 = value2; + for (JsonObject::iterator it3 = Object3.begin(); it3 != Object3.end(); ++it3) { + DisplayJsonValue(topic, it->key, it3->key, it3->value.as()); // Sensor 56% + } + } else { + DisplayJsonValue(topic, it->key, it2->key, it2->value.as()); // Sensor 56% + } + } + } else { + DisplayJsonValue(topic, it->key, it->key, it->value.as()); // Topic 56% + } + } + } +} + +/*********************************************************************************************\ + * Public +\*********************************************************************************************/ + +void DisplayInit() +{ + if (!Settings.display_model) { +#ifdef USE_I2C + if (i2c_flg) { + if (I2cDevice(LCD_ADDRESS1)) { + Settings.display_address[0] = LCD_ADDRESS1; + Settings.display_model = DISP_LCD; + } + else if (I2cDevice(LCD_ADDRESS2)) { + Settings.display_address[0] = LCD_ADDRESS2; + Settings.display_model = DISP_LCD; + } + else if (I2cDevice(OLED_ADDRESS1)) { + Settings.display_address[0] = OLED_ADDRESS1; + Settings.display_model = DISP_OLED; + } + else if (I2cDevice(OLED_ADDRESS2)) { + Settings.display_address[0] = OLED_ADDRESS2; + Settings.display_model = DISP_OLED; + } + else if (I2cDevice(Settings.display_address[1])) { + Settings.display_model = DISP_MATRIX; + } + } +#endif // USE_I2C +#ifdef USE_SPI + if (spi_flg) { + Settings.display_model = DISP_TFT; + } +#endif // USE_SPI + } + disp_model = Settings.display_model; + +// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "Display model %d"), disp_model); +// AddLog(LOG_LEVEL_DEBUG); + + if (disp_model) { + devices_present++; + disp_device = devices_present; + snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%c"), TempUnit()); + disp_log_buffer_idx = 0; + disp_log_buffer_ptr = 0; + disp_log_buffer_active = false; + disp_refresh = Settings.display_refresh; + disp_mode = Settings.display_mode; + +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + DisplayLcdInit(); + } + else if (DISP_OLED == disp_model) { + DisplayOledInit(); + } + else if (DISP_MATRIX == disp_model) { + DisplayMatrixInit(); + } +#endif // USE_I2C +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftInit(); + } +#endif + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR(D_VERSION " %s"), my_version); + DisplayLogBufferIdxInc(); + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("Display mode %d"), disp_mode); + DisplayLogBufferIdxInc(); + } +} + +void DisplaySetPower() +{ +// disp_power = XdrvMailbox.index; + disp_power = bitRead(XdrvMailbox.index, disp_device -1); + if (disp_model) { + if (disp_power) { +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + lcd->backlight(); + } + else if (DISP_OLED == disp_model) { + DisplayOledDisplayOnOff(1); + } +#endif +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftDisplayOnOff(1); + } +#endif + } else { +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + lcd->noBacklight(); + } + else if (DISP_OLED == disp_model) { + DisplayOledDisplayOnOff(0); + } +#endif +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftDisplayOnOff(0); + } +#endif + } + } +} + +void DisplayMqttSubscribe() +{ +/* Subscribe to tele messages only + * Supports the following FullTopic formats + * - %prefix%/%topic% + * - home/%prefix%/%topic% + * - home/level2/%prefix%/%topic% etc. + */ +// if (Settings.display_mode &0x04) { + if (Settings.display_model) { + + char stopic[TOPSZ]; + char ntopic[TOPSZ]; + + ntopic[0] = '\0'; + strlcpy(stopic, Settings.mqtt_fulltopic, sizeof(stopic)); + char *tp = strtok(stopic, "/"); + while (tp != NULL) { + if (!strcmp_P(tp, PSTR(MQTT_TOKEN_PREFIX))) { + break; + } + strncat_P(ntopic, PSTR("+/"), sizeof(ntopic)); // Add single-level wildcards + tp = strtok(NULL, "/"); + } + strncat(ntopic, Settings.mqtt_prefix[2], sizeof(ntopic)); // Subscribe to tele messages + strncat_P(ntopic, PSTR("/#"), sizeof(ntopic)); // Add multi-level wildcard + MqttSubscribe(ntopic); + disp_subscribed = 1; + } else { + disp_subscribed = 0; + } +} + +boolean DisplayMqttData() +{ + if (disp_subscribed) { + char stopic[TOPSZ]; + + snprintf_P(stopic, sizeof(stopic) , PSTR("%s/"), Settings.mqtt_prefix[2]); // tele/ + char *tp = strstr(XdrvMailbox.topic, stopic); + if (tp) { // tele/sonoff/SENSOR + if (Settings.display_mode &0x04) { + tp = tp + strlen(stopic); // sonoff/SENSOR + char *topic = strtok(tp, "/"); // sonoff + DisplayAnalyzeJson(topic, XdrvMailbox.data); + } + return true; + } + } + return false; +} + +void DisplayLocalSensor() +{ + if ((Settings.display_mode &0x02) && (0 == tele_period)) { + DisplayAnalyzeJson(mqtt_topic, mqtt_data); + } +} + +void DisplayRefresh() // Every 0.05 second +{ + snprintf_P(disp_time, sizeof(disp_time), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); + + disp_second++; + if (disp_second >= STATES) { + disp_second = 0; + +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + switch (disp_mode) { + case 0: + lcd->clear(); + break; + case 1: + DisplayLcdTime(); + break; + case 2: + case 4: + DisplayScreenBuffer(); + break; + case 3: + case 5: + DisplayLcdBufferOrTime(); + break; + } + } + else if (DISP_OLED == disp_model) { + switch (disp_mode) { + // case 0: + // oled->clearDisplay(); + // oled->display(); + // break; + case 1: + DisplayOledTime(); + break; + case 0: // Text only + case 2: // Local + case 3: // Local + case 4: // Mqtt + case 5: // Mqtt + DisplayScreenBuffer(); + break; + } + } +#endif +#ifdef USE_SPI + if (DISP_TFT == disp_model) { + char tftdt[21]; + char disp_date4[11]; // 24-04-2017 + + snprintf_P(disp_date4, sizeof(disp_date4), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); + + tft->setTextSize(2); + tft->setTextColor(TFT_YELLOW, TFT_BLACK); // Add background color to solve flicker + tft->setCursor(0, 0); + snprintf_P(tftdt, sizeof(tftdt), PSTR("%s %s"), disp_date4, disp_time); + tft->print(tftdt); + switch (disp_mode) { + case 0: // Text + case 2: // Local + case 3: // Local + case 4: // Mqtt + case 5: // Mqtt + tft->setTextColor(TFT_CYAN, TFT_BLACK); // Add background color to solve flicker + DisplayTftBuffer(); + break; + } + } +#endif + } + +#ifdef USE_I2C + if (DISP_MATRIX == disp_model) { + if (!disp_power) { + DisplayMatrixClear(); + } else { + char disp_date[9]; // 24-04-17 + char disp_day[10]; // Mon + + snprintf_P(disp_date, sizeof(disp_date), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%02d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year -2000); + snprintf_P(disp_day, sizeof(disp_day), PSTR("%d %s"), RtcTime.day_of_month, RtcTime.name_of_month); + + switch (disp_mode) { + case 0: +// DisplayMatrixScrollLeft(Settings.text, Settings.loop); + case 2: + DisplayMatrixFixed(disp_date); + break; + case 3: + DisplayMatrixCenter(disp_day); + break; + case 4: + DisplayMatrixBufferScroll(0); + break; + case 1: // Time and user text + case 5: // Time, user text and MQTT + DisplayMatrixBufferScroll(1); + break; +// case 8: +// DisplayMatrixAllOn(); +// break; +// case 9: +// DisplayMatrixAll(); +// break; + } + } + } +#endif +} + +/*********************************************************************************************\ + * Commands +\*********************************************************************************************/ + +boolean DisplayCommand() +{ + char command [CMDSZ]; + boolean serviced = true; + uint8_t disp_len = strlen(D_CMND_DISPLAY); // Prep for string length change + + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_DISPLAY), disp_len)) { // Prefix + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic +disp_len, kDisplayCommands); + if (CMND_DISP_MODEL == command_code) { + if ((XdrvMailbox.payload >= DISP_NONE) && (XdrvMailbox.payload < DISP_MAX)) { + Settings.display_model = XdrvMailbox.payload; + restart_flag = 2; // Restart to re-init interface and add/Remove MQTT subscribe + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model); + } + else if (CMND_DISP_MODE == command_code) { +/* + * Matrix LCD / Oled TFT + * 0 = Clear display + * 1 = Text up and time Time + * 2 = Date Local sensors Local sensors + * 3 = Day Local sensors and time Local sensors and time + * 4 = Mqtt left and time Mqtt (incl local) sensors Mqtt (incl local) sensors + * 5 = Mqtt up and time Mqtt (incl local) sensors and time Mqtt (incl local) sensors and time +*/ + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) { + Settings.display_mode = XdrvMailbox.payload; +// if ((disp_mode &0x04) != (Settings.display_mode &0x04)) { + if (!disp_subscribed) { + restart_flag = 2; // Restart to Add/Remove MQTT subscribe + } + disp_mode = Settings.display_mode; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode); + } + else if (CMND_DISP_REFRESH == command_code) { + if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) { + Settings.display_refresh = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh); + } + else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_COLS)) { + Settings.display_cols[XdrvMailbox.index -1] = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]); + } + else if (CMND_DISP_DIMMER == command_code) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { + Settings.display_dimmer = ((XdrvMailbox.payload +1) * 100) / 666; // Correction for Domoticz (0 - 15) + if (Settings.display_dimmer && !(disp_power)) { + ExecuteCommandPower(disp_device, POWER_ON); + } + else if (!Settings.display_dimmer && disp_power) { + ExecuteCommandPower(disp_device, POWER_OFF); + } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer); + } + else if (CMND_DISP_ROWS == command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_ROWS)) { + Settings.display_rows = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows); + } + else if (CMND_DISP_SIZE == command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) { + Settings.display_size = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size); + } + else if (CMND_DISP_TEXT == command_code) { + if (XdrvMailbox.data_len > 0) { + + // Here display command manipulation could take place like textsize, color, position etc. using intext parameters + // Currently just adds to the logbuffer + + strlcpy(disp_log_buffer[disp_log_buffer_idx], XdrvMailbox.data, sizeof(disp_log_buffer[disp_log_buffer_idx])); + DisplayLogBufferIdxInc(); + } else { + snprintf_P(XdrvMailbox.data, XdrvMailbox.data_len, PSTR("Text too long")); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data); + } + else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) { + Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]); + } + else serviced = false; + } + else serviced = false; + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_06 + +boolean Xdrv06(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + if (i2c_flg || spi_flg) { + DisplayInit(); + } + break; + case FUNC_EVERY_50_MSECOND: + DisplayRefresh(); + break; + case FUNC_COMMAND: + result = DisplayCommand(); + break; + case FUNC_MQTT_SUBSCRIBE: + DisplayMqttSubscribe(); + break; + case FUNC_MQTT_DATA: + result = DisplayMqttData(); + break; + case FUNC_SET_POWER: + DisplaySetPower(); + break; + case FUNC_SHOW_SENSOR: + DisplayLocalSensor(); + break; + } + return result; +} + +#endif // USE_DISPLAY +#endif // USE_I2C or USE_SPI diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index a5e40add6..e85349da7 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -728,4 +728,4 @@ boolean Xdrv09(byte function) return result; } -#endif // USE_TIMERS +#endif // USE_TIMERS \ No newline at end of file diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index ccae68f0a..4c3c8b19f 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -347,7 +347,7 @@ void KNX_DEL_CB( byte CBnum ) bool KNX_CONFIG_NOT_MATCH() { - for (int i = 0; i < KNX_MAX_device_param; ++i) + for (byte i = 0; i < KNX_MAX_device_param; ++i) { if ( !device_param[i].show ) { // device has this parameter ? // if not, search for all registered group address to this parameter for deletion @@ -732,6 +732,7 @@ void HandleKNXConfiguration() page.replace(F("GAfdef"), String(KNX_addr.ga.member)); } } + page += FPSTR(HTTP_FORM_KNX3); page += FPSTR(HTTP_FORM_KNX_GA); page.replace(F("GAfnum"), F("CB_FNUM")); @@ -765,6 +766,7 @@ void HandleKNXConfiguration() page.replace(F("btndis"), F("disabled")); } page.replace(F("fncbtnadd"), F("CBwarning")); + for (byte i = 0; i < Settings.knx_CB_registered ; ++i) { if ( Settings.knx_CB_param[i] ) @@ -812,7 +814,6 @@ void KNX_Save_Settings() { String stmp; address_t KNX_addr; - byte i; Settings.flag.knx_enabled = WebServer->hasArg("b1"); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ENABLED ": %d "), @@ -834,7 +835,7 @@ void KNX_Save_Settings() snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA: %d"), Settings.knx_GA_registered ); AddLog(LOG_LEVEL_DEBUG); - for (i = 0; i < Settings.knx_GA_registered ; ++i) + for (byte i = 0; i < Settings.knx_GA_registered ; ++i) { KNX_addr.value = Settings.knx_GA_addr[i]; snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "GA #%d: %s " D_TO " %d/%d/%d"), @@ -846,7 +847,7 @@ void KNX_Save_Settings() snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB: %d"), Settings.knx_CB_registered ); AddLog(LOG_LEVEL_DEBUG); - for (i = 0; i < Settings.knx_CB_registered ; ++i) + for (byte i = 0; i < Settings.knx_CB_registered ; ++i) { KNX_addr.value = Settings.knx_CB_addr[i]; snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "CB #%d: %d/%d/%d " D_TO " %s"), diff --git a/sonoff/xsns_14_sht3x.ino b/sonoff/xsns_14_sht3x.ino index f474d6535..bef289aa3 100644 --- a/sonoff/xsns_14_sht3x.ino +++ b/sonoff/xsns_14_sht3x.ino @@ -159,4 +159,4 @@ boolean Xsns14(byte function) } #endif // USE_SHT3X -#endif // USE_I2C +#endif // USE_I2C \ No newline at end of file From 0fb862e0e90147e39dab225711bcc86c7a2d8834 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 2 May 2018 00:59:56 -0300 Subject: [PATCH 309/435] Update platformio.ini --- platformio.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 6b18f1efb..74691c38d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -49,10 +49,10 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH - ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY - ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH - ; -DUSE_CONFIG_OVERRIDE + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +; -DUSE_CONFIG_OVERRIDE build_flags_4MB = -Wl,-Tesp8266.flash.4m1m.ld From 34dc8ea5355cc6f9e67dc695aee2835ea1036349 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 2 May 2018 01:13:15 -0300 Subject: [PATCH 310/435] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c1cd1d9a7..04d70458c 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,8 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys +- [ ] Add support for Neo Pixel +- [ ] Add support for other devices supported by Tasmota - [ ] Optimize code to reduce Flash and RAM ## Modifications to Sonoff-Tasmota ## From bd09f5603f78792e98cccd5308bd93b170629830 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 2 May 2018 01:15:04 -0300 Subject: [PATCH 311/435] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 04d70458c..b3a9a2fad 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys +- [ ] Add options for increase communication reliability - [ ] Add support for Neo Pixel - [ ] Add support for other devices supported by Tasmota - [ ] Optimize code to reduce Flash and RAM From aac12c019bda21df75bc9f0e8e275faa00b6f87a Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 2 May 2018 21:21:37 -0300 Subject: [PATCH 312/435] Update sonoff.ino --- sonoff/sonoff.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 9b835cc4a..e6565c286 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,7 +25,7 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050D0100 // 5.13.1a +#define VERSION 0x050D0101 // 5.13.1a // Location specific includes #include // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) From 3fbed378ea0d3e268621ac1304fd2fe4b770a1e8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 01:15:10 -0300 Subject: [PATCH 313/435] Update webserver.ino --- sonoff/webserver.ino | 3 --- 1 file changed, 3 deletions(-) diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 0439ae509..e3475310d 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -392,9 +392,6 @@ void StartWebserver(int type, IPAddress ipweb) } #endif // USE_EMULATION WebServer->onNotFound(HandleNotFound); -#ifdef USE_KNX - KNXStart(); -#endif // USE_KNX } reset_web_log_flag = 0; WebServer->begin(); // Web server start From 48cf05caf670b1ec4e5fb3c9c67985192f113518 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 01:16:25 -0300 Subject: [PATCH 314/435] Fix KNX Reconnection Issue Fix KNX Reconnection Issue (#82) --- sonoff/support.ino | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sonoff/support.ino b/sonoff/support.ino index 1cf6713ab..020494d7b 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -821,6 +821,9 @@ void WifiCheck(uint8_t param) } #endif // USE_EMULATION #endif // USE_WEBSERVER +#ifdef USE_KNX + KNXStart(); +#endif // USE_KNX } else { #if defined(USE_WEBSERVER) && defined(USE_EMULATION) UdpDisconnect(); From 0c0fd486a0122cbeafde4be7a8f058e1508193ca Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 01:25:27 -0300 Subject: [PATCH 315/435] Update TO DO List Update TO DO List --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a337c4e9f..f40c48743 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,7 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys +- [ ] Add option for changing default Multicast KNX IP and PORT - [ ] Add options for increase communication reliability - [ ] Add support for Neo Pixel - [ ] Add support for other devices supported by Tasmota From e172f66ec46e77c5cd9ff093c1bf6b322f07af15 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 05:13:31 -0300 Subject: [PATCH 316/435] Fix KNX Reconnection Bug --- sonoff/support.ino | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 020494d7b..7b5b2e472 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -35,6 +35,10 @@ byte oswatch_blocked_loop = 0; //void OsWatchTicker() ICACHE_RAM_ATTR; #endif // USE_WS2812_DMA +#ifdef USE_KNX +bool KNX_Started = false; +#endif // USE_KNX + void OsWatchTicker() { unsigned long t = millis(); @@ -822,13 +826,19 @@ void WifiCheck(uint8_t param) #endif // USE_EMULATION #endif // USE_WEBSERVER #ifdef USE_KNX - KNXStart(); -#endif // USE_KNX + if (!KNX_Started && Settings.flag.knx_enabled) { + KNXStart(); + KNX_Started = true; + } +#endif // USE_KNX } else { #if defined(USE_WEBSERVER) && defined(USE_EMULATION) UdpDisconnect(); #endif // USE_EMULATION mdns_begun = false; +#ifdef USE_KNX + KNX_Started = false; +#endif // USE_KNX } } } From db03af1acf5b7bb0617749519aaa50eb6dfa2bda Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 06:22:28 -0300 Subject: [PATCH 317/435] Update README.md --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f40c48743..43beb2625 100644 --- a/README.md +++ b/README.md @@ -125,9 +125,13 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re ## Contributors ## -* Adrian Scillato [ascillato](https://github.com/ascillato) -* Sisamiwe [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. -* Nico Weichbrodt [envy](https://github.com/envy) - Thanks for the patience and help with the modifications to ESP_KNX_IP. +* [ascillato](https://github.com/ascillato) ( Adrian Scillato ) +* [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. +* [envy](https://github.com/envy) ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP. +* [arendst](https://github.com/arendst) ( Theo Arends ) +* [johannesbonn](https://github.com/johannesbonn) +* [RocketSience](https://github.com/RocketSience) +* [jeylites](https://github.com/jeylites) ----------------------------------------------------------------------------------------------------------------------------------- From 3a9233f0c258bead758ac2a86c92b72a79fb2ae4 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 06:24:19 -0300 Subject: [PATCH 318/435] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 43beb2625..a0a082b00 100644 --- a/README.md +++ b/README.md @@ -128,10 +128,10 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re * [ascillato](https://github.com/ascillato) ( Adrian Scillato ) * [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. * [envy](https://github.com/envy) ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP. -* [arendst](https://github.com/arendst) ( Theo Arends ) -* [johannesbonn](https://github.com/johannesbonn) -* [RocketSience](https://github.com/RocketSience) -* [jeylites](https://github.com/jeylites) +* [arendst](https://github.com/arendst) ( Theo Arends ) - Thanks for the guide on Tasmota and for the ideas. +* [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions +* [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions +* [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions ----------------------------------------------------------------------------------------------------------------------------------- From 56f781cc39fc18db979d04da5864b7761f481f6f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 14:34:20 -0300 Subject: [PATCH 319/435] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a0a082b00..7e96b7508 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,8 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Log Info - [x] Complete all the language files with keys - [ ] Add option for changing default Multicast KNX IP and PORT -- [ ] Add options for increase communication reliability +- [ ] Add options for increase communication reliability (re send telegrams, check for ack) +- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0) - [ ] Add support for Neo Pixel - [ ] Add support for other devices supported by Tasmota - [ ] Optimize code to reduce Flash and RAM From ce9246cf99267f5fa3feb2e3194577b87602bee9 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 10 May 2018 20:23:49 -0300 Subject: [PATCH 320/435] Update README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index 7e96b7508..a504df400 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,8 @@ If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Star)](https://github.com/ascillato/Sonoff-Tasmota_KNX/stargazers) [![GitHub forks](https://img.shields.io/github/forks/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Fork)](https://github.com/ascillato/Sonoff-Tasmota_KNX/network) +Any help is very welcome. + ## KNX Explanation ## [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) @@ -105,6 +107,8 @@ We can configure to send the value of temperature or humidity every teleperiod. - [ ] Add option for changing default Multicast KNX IP and PORT - [ ] Add options for increase communication reliability (re send telegrams, check for ack) - [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0) +- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNX-IP Tunneling +- [ ] Add option to support ETS Programming - [ ] Add support for Neo Pixel - [ ] Add support for other devices supported by Tasmota - [ ] Optimize code to reduce Flash and RAM @@ -117,6 +121,7 @@ We can configure to send the value of temperature or humidity every teleperiod. * Add entries to the file _/sonoff/sonoff.ino_ * Add entries to the file _/sonoff/sonoff.h_ * Add entries to the file _/sonoff/settings.h_ +* Add entries to the file _/sonoff/support.ino_ * Add entries to sensor files * Add entries to language files From 1ab0943f32b63e91d1e05cec6cc5dff2c69a46f8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 00:59:47 -0300 Subject: [PATCH 321/435] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index a504df400..7847862b5 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,17 @@ If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! Any help is very welcome. +## Table of Contents + +* [KNX Explanation](#KNX-Explanation) +* [Integration](#Integration) +* [Requirement](#Requirement) +* [Usage Examples](#Usage-Examples) +* [Development Road Map](#Development-Road-Map) +* [Modifications to Sonoff-Tasmota](#Modifications-to-Sonoff-Tasmota) +* [Contributors](#Contributors) +* [Sonoff-Tasmota](#Sonoff-Tasmota) + ## KNX Explanation ## [](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) From 6059676e435f78fb659e95043427130784520207 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 01:01:16 -0300 Subject: [PATCH 322/435] Update README.md --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 7847862b5..6f536489c 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,14 @@ Any help is very welcome. ## Table of Contents -* [KNX Explanation](#KNX-Explanation) -* [Integration](#Integration) -* [Requirement](#Requirement) -* [Usage Examples](#Usage-Examples) -* [Development Road Map](#Development-Road-Map) -* [Modifications to Sonoff-Tasmota](#Modifications-to-Sonoff-Tasmota) -* [Contributors](#Contributors) -* [Sonoff-Tasmota](#Sonoff-Tasmota) +* [KNX Explanation](#knx-explanation) +* [Integration](#integration) +* [Requirement](#requirement) +* [Usage Examples](#usage-examples) +* [Development Road Map](#development-road-map) +* [Modifications to Sonoff-Tasmota](#modifications-to-sonoff-tasmota) +* [Contributors](#contributors) +* [Sonoff-Tasmota](#sonoff-tasmota) ## KNX Explanation ## From 3a3989276dc3e55c148d2f6199a6a881845c3623 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 01:43:15 -0300 Subject: [PATCH 323/435] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6f536489c..e04e905dd 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,8 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Complete all the language files with keys - [ ] Add option for changing default Multicast KNX IP and PORT - [ ] Add options for increase communication reliability (re send telegrams, check for ack) -- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0) +- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) +- [ ] Add option to support KNX Snooping to debug KNX Network - [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNX-IP Tunneling - [ ] Add option to support ETS Programming - [ ] Add support for Neo Pixel From beda76a80f14c9d7fe1b51aa7f1e9fea060c78d1 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 12:11:08 -0300 Subject: [PATCH 324/435] Update support.ino --- sonoff/support.ino | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/support.ino b/sonoff/support.ino index 1bac8cf63..e56d7e540 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -36,8 +36,8 @@ byte oswatch_blocked_loop = 0; #endif // USE_WS2812_DMA #ifdef USE_KNX -bool KNX_Started = false; -#endif // USE_KNX +bool knx_started = false; +#endif // USE_KNX void OsWatchTicker() { @@ -827,19 +827,19 @@ void WifiCheck(uint8_t param) #endif // USE_EMULATION #endif // USE_WEBSERVER #ifdef USE_KNX - if (!KNX_Started && Settings.flag.knx_enabled) { + if (!knx_started && Settings.flag.knx_enabled) { KNXStart(); - KNX_Started = true; + knx_started = true; } -#endif // USE_KNX +#endif // USE_KNX } else { #if defined(USE_WEBSERVER) && defined(USE_EMULATION) UdpDisconnect(); #endif // USE_EMULATION mdns_begun = false; #ifdef USE_KNX - KNX_Started = false; -#endif // USE_KNX + knx_started = false; +#endif // USE_KNX } } } From 734ab8ac9280f538e0f4ef1604b19fb896392874 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 13:25:04 -0300 Subject: [PATCH 325/435] Updated Spanish Translation Updated Spanish Translation --- sonoff/language/es-AR.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 200af4e1a..e77f8ebc8 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.12.0m + * Updated until v5.13.1a \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -91,7 +91,7 @@ #define D_FALSE "Falso" #define D_FILE "Archivo" #define D_FREE_MEMORY "Memoria Libre" -#define D_FREQUENCY "Frequency" +#define D_FREQUENCY "Frecuencia" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Grupo" @@ -131,7 +131,7 @@ #define D_RESTART_REASON "Causa Reinicio" #define D_RESTORE "Restauración" #define D_RETAINED "Grabado" -#define D_RULE "Rule" +#define D_RULE "Regla" #define D_SAVE "Grabar" #define D_SENSOR "Sensor" #define D_SSID "SSId" @@ -200,7 +200,7 @@ #define D_ERASED_SECTOR "Sector borrado" // webserver.ino -#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "firmware MÍNIMO - actualice por favor" +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MÍNIMO - actualice por favor" #define D_WEBSERVER_ACTIVE_ON "Servidor web activo en" #define D_WITH_IP_ADDRESS "con dirección IP" #define D_WEBSERVER_STOPPED "Servidor web detenido" From 1697ada1a3df26853a99d63494c0d0371bc477ad Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 13:27:51 -0300 Subject: [PATCH 326/435] Update user_config.h --- sonoff/user_config.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 857ae53ef..0d3409933 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -279,9 +279,9 @@ #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) #define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) +//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) // -- Low level interface devices ----------------- //#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) From 766e76288ac182b31ea924812612d21fd76361dd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 13:34:21 -0300 Subject: [PATCH 327/435] Update platformio.ini --- platformio.ini | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 74691c38d..eefb038e0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -27,7 +27,8 @@ src_dir = sonoff ;env_default = sonoff-IT ;env_default = sonoff-NL ;env_default = sonoff-PL -;env_default = sonoff-PT +;env_default = sonoff-PT_PT +;env_default = sonoff-PT_BR ;env_default = sonoff-RU ;env_default = sonoff-TW @@ -74,8 +75,7 @@ upload_speed = 115200 upload_resetmethod = nodemcu upload_port = COM5 -;command to erase flash on command line: -; esptool.py --port COM5 erase_flash +;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path @@ -282,7 +282,7 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-PT] +[env:sonoff-PT_PT] platform = ${common.platform} framework = ${common.framework} board = ${common.board} @@ -294,6 +294,18 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-PT_BR] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-RU] platform = ${common.platform} framework = ${common.framework} From b4b03d83336a4ae6511dd88da89ce80387d083f5 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 13:55:15 -0300 Subject: [PATCH 328/435] update --- COPYFILES.BAT | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/COPYFILES.BAT b/COPYFILES.BAT index 124e7eccb..dbb0a3815 100644 --- a/COPYFILES.BAT +++ b/COPYFILES.BAT @@ -6,7 +6,7 @@ echo Copying Firmwares for Release echo: echo *************************************************************** -cd %systemdrive%\users\%username%\Desktop\Sonoff-Tasmota_KNX\.pioenvs +cd %systemdrive%\users\%username%\Desktop\Sonoff-Tasmota-development\.pioenvs copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin @@ -24,7 +24,8 @@ copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin copy sonoff-minimal\firmware.bin sonoff_minimal.bin copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin -copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin +copy sonoff-PT_PT\firmware.bin sonoff_KNX-PT_PT.bin +copy sonoff-PT_BR\firmware.bin sonoff_KNX-PT_BR.bin copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin From 7912842142ac57288c738a38007fb2b9ed87fcc2 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 14:58:06 -0300 Subject: [PATCH 329/435] . --- .github/KNX_menu.jpg | Bin 97581 -> 93534 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg index 3b4cb1b41ccd392eafdd42239ff2f3746e94ee01..efb915e87857b784647a4233d7ccea0c69f03bd0 100644 GIT binary patch literal 93534 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 *L8}!_gRyx29N(X}8Z(dMK$rC` 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 AQ2+n{ From 494453bb7aa8e193aaa1c03c8510c8fcc994f935 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 14:58:40 -0300 Subject: [PATCH 330/435] Add files via upload From 43cf714b0e5f31987b8c7e0bb7d96177349bfa82 Mon Sep 17 00:00:00 2001 From: ascillato Date: Fri, 11 May 2018 15:09:03 -0300 Subject: [PATCH 331/435] Upgraded Images --- .github/Config_Menu.jpg | Bin 82725 -> 78164 bytes .github/KNX_menu.jpg | Bin 97581 -> 93559 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg index 99f478fb62b4e7f778f80c5acb20e12c76061b10..3781adef6462a5646c9678b5cd3bfe560c750299 100644 GIT binary patch literal 78164 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¬GF@{I3+6GR!!8OrCq8NLd6$#qjA;sGw>(y;En({~=h z9Zlfxg$672@ng86vDydeqyR_4q?c?djWX)K@?bIlofPADH@1U`A7!wX6ed{As}rc)!rR^S$@6s-L`zYO=FN zH*Ih1@VS;>gi+mh);<6EWtqp>b3=-W<#x^^@S7{cc+Exi(d{2zP%`9VZIPlAeYT^a$n{fms01>H)WD#;&Z%!^+E;G2wm7NJLp( z1dX?6bRDoDvOK8^0OQ4FgaI`&*<(&Hj(2Ie6{~D`vDV^PS-!+_%SYwTZp#-7#hFjT zJV_tvX=k1r>REF~Io#RsbuCX)RUl^65hSEsbI>R**voxf#&|OrP)G4_8%9qaF z;XVAbXW3I(h28RrF&b1tg1h}oTJ6H~)9l<~jzrb>7x(GsKH9o$Z`5dZl&CwdE-lmH zR4+}6u;zMvZl3O z6OW&p{%ziaG^&J;>{CO9s#GtilUfu^@g9tgyj85YNM8Y1-K9}h7Rq+jiWY8aU$z7% zs~O*wfRPB!Ess^?e3Hil^ujv@mK)qTO$^@M-8vc?65+A-5`9ZM?CW@qWRVTWlg^nu z7EHNK0tzy1%kwgG$;}Leuq z?!kAU9gf(H75fLIF2?&OrH|Z2$(Bi!cE5tuWwIb+KoW z81+*Txi*H*u9BWE)0u<$$&jLU+3+Kze+vfT5f1R z@1?-#Bk49@RF1Kzf;|7!z}su@4W~1_X;<57*lA&F<6VGLdLMtobM%SB1SM^AU`5Ak zbvo&h*FLW|248R*1;%YfzD3bJRFP`DjgJ^#38`YuX!Xc-H)=4{O+5Qk^vHbiRW`4n zW3et|fKhMpiP>Fu8O;8bTG(e_Ga@$>o2f@Q;My@}gDHl!&zNU;*<<1-Wwqtc!0O*s zse?NIV+1b@WT=1aXVT!;{&F}!2&fWYLvJDd~}Vb7nNiNQsy;wwzF zm1i68YtZDW^i={ZnFs0ZtO_!cKCJh)LFu(TM?j-mio}yV!E$a2>zOt!=U>PKae=NY zQf3L68lJkHMD>Z ziNfMF{x$n4Ox1-_Ee#j-fF&>ArrXUgx7=PHx&Cta!HEk_rWQC&v_vI#Wz(oH;YuHZ zlEJn!5cO14(?Z7R11>_m)Ipoo`ZSH`$3t!a@PH}4C{vA+NlNvCgWlaXy$V;1U70K@ zkbybBsz9zoRcFB8jV(f{p5H2jicwQcGPG&o>g&k9~&d?O$%a`Q6 zbLGJC(C}380dKC|7{p2ljKbRrZF|w>(kT7vL54!>B4de+l^ z%c1aw)En;*VA0Q66Ye8|t{YId{wcDmGPILMsm1ELWKrl_wkZnSB5u>%P?uL*D=g8D zZ%o65(Rs7NN4uyRA@_lbZ2D8CCbdDilgULC>YWsycxv&@BKz6qQxaGOM6tW!m_irv z7W*b5vzD_l+wc&J)Mty6?K}Yt@QmUL?vCH!ZC3 z3RKyHZ}Bwn;Ik^$_&sADVYi4}`$)rOUhm`D)<8UcdRr;c@rmH5+km}M)91=2O2yW+ z9^duyv~I_neF9@CGn4OlD7lA?^ZR;K9yE1nySa5$>t&A@6A$4U5$V0%?m~@`wRh4p zBTGUazI~VyJe42F-Jga(rn>5%m`tR_y^BkJFxxL|`_?WO$+UXqa^ zueMFf5|@8geqYN(kDYB85n(@uRtn_L8?dNO&U8AcO2(>dVR7KVfmawaoqE~JAD@s`BwPye8fqf_!dyRjZPo>GYRX|%~q0`Q8^}^iiV8Ydjx~~YK z`}cl>>Xb~9##P|x`dXc0tp2CyN>w;WK9(S=pg=x;wY;U+rSXsEiA?F z<9u&}ilT(gih^rNFR`cb-U&{|XE!qapFGb`imEK~tn`48b(xg?nLTcgy+(5v_<>kq z#Qq`OX8>IVJQ5S~m56M$5+a%kM~;{sphw{|_F}RDkZ#X^^;ivur167gO_+ zG1`i5i;BardG~Wn(2=SWj0b|flg0Zju~nX&3l-6K3)N=QA5}aMM*-@)m(j`kt{e@%5?B1fPg=N(k zHH1}KDQd{h-d{7YM$kRC5oGCA6a-aW&9TnWjRlag0Aa0w;))DC6WfW4sr6=z-n!$} zXWocK(7HcSDYUe*^%79Ldxro0e$~`NTo3n6Cf+RAQ;UL~-;)ZGm{ZYu-_&9es6{{2 zxJAkbE-q+-aYyYg*=@)Y65vspA~!Xa_sh0QofJ`YB zed!Co9*jtByho7;D8J;nU|sTiq=ET>@ymKQC9=E%gjEriE389hDez5SkCv3B1p^sW zH-dl~+D^IbA3Fr#*C?FhDWaTsPmGY8(valBO~W|MGvck(#k4~)4g@h8pm~+uezaNx7O_A2~ z+MBew>h*|8JBd%c(^4JMH7L3TUI#Ckk(KZnLMetLJQx_^xHY)WO1fpR5iimWzk3p07N4;wUqFP#$cL zW(>0a2j)M`KN3M^lRmY;`J6JBF>jpLF{^w8sGJ@`8o=Z6w%a0Ve&RWE8kn+G%I=^pSZ}Lef`R|4TR#-?S0pUqZbV-0zwf!MryWvc{*AZ zMYb7Lce%?WCq>`Z#@&+fZaO$!7@dshf&orDr7ygQnnY?7Ko{ml6xG{f`Wux1K34WU zMJupm8V;t4r%g*HG~jG3wlT`*H0W7Wht%vx{p}NQ(Tyl*0IcX9AlOwi;c36?7b^X{ z)t)+tzeeBg1y^FIQ}nfBd?mUA+MwrIC4UZgP#UpwWZA*I*U~7&kBscprJ)zM^d4)D zoQeUdwZD@4fe8*AQ%X*Nm1usCWAFDYo0|PalxE@rZvE0@UZg`ln)0f=S28PYtpx-S zm4-{RR=AonCy$I_mE46W_19^R)~nUMeoNY-72<)j!hW(@#y_uTd*8zGG?<-?A6`U} zit`Y!ZaHic1_eX+6;@ikXts9^oy;ds2m6pcwm*mM%b$Xrf-#HL$x{$@88e1HeBc~E*)4gr!Wf~Jq>SE$(N{pQ(6u=n#DRu*?r5^ksC94 zY;|M4S+%XQIzhWC7L7LGd6)Dds-2U;gDElgwg*>ql)5Vn+X110&cWTs0B*D%Aou&i z?e?1)+*=*{*Ng8ZCsdy=>5m+b?o#yKUrGP|uq1=LW!B!v#j$4>_Ho7I+@A!Bj4h$&^}>cNHsh>j%Q5%IPRu;`Fz1VgvH7+yBRucM-So}5 zN=k=~(4UnMA7qKRtWhwfLnxBw0voVHzefrB^8e$N{vZ>c^N%c39n6^@TK*Z!R0GJM z`vaw((}n-{)&ILA@K=exz6A9Sdhh5pL$TWMp|}Qk@k(Gx0R>)O`JRhfyII-rn9BYS zU5X}=4C427xKgLy%I*tCYzkjv8<-IyGVm|&W~~DddjTA%mXg%nOomwCy)9id!nx0D z6}x(7bT3rE6Y;6>w~L6u>E2w4R?hh)){=Sfs{ugkV~N0=r2u?VdIK0P9y&3NWJS)o zM}zu`n`T7ID(+xX>@Q?D9yshA3IKtl77~bknTU?<9Lompg09I8kxm)mDoFuBP^_*6 zm@s=2>5q@Z?o|SOe*kpAc#ZVrJZxN(*y;MGFaLx0L;KhgNRMvq#S&JjHU?xt_I(>1 z4~_w%Bgh|G8-e!#h`~Fjz!tw&Hx9t~7aV;Zv7y8bZqbL0^AVryx^zP4L^4UhP=5fJ z5*~U@ojdGP-@cs=!D=JJUcp*`0i$?>#CN#sdIr=BeQrnVHEEL97q~mso1qNVYh8jT z30F`8A3}Bg2hZMQIvuV62$clc>XhL0iqAO_Q?FwPHjyKb(em6)nu8OzeTjKqyb_qv z)-v;qf7D?(D{RgkwDyqe-hdCF$KH=IcpvFMU5GOclZbS5gCrf^QZaw2M1C)_n3Fp4 z87n8}#g=@H+++3L(7=q`>nR#qUgC5;>(=_6^o?vP{@F{pXqzTA=V`8i9EYnTu!-p} zZ}=wCXP~>PBuQ#e+SUNapDzODO?<+olDuBdesZE}RM3bG?>S1ej&PghX}@ny3`pWWK?K?rD?hh*P z52QM`rxRvhl?p6ZdpdReZ|Kx{SRY#)EC(!1`^=`ycBc0*7A-W1M*#!XGT0y-;=`lH z)?`)oPN+g8QH@`l)J%+^fsN+?M?>gj)x zY6!5teL!`A$&dNWgG+pg_RJ0VFzkR4@RntlXr46KeWLS-M&mSNBv9DSCl->&z7E6Qv?V7|7~w$V=*zf#na2f0&WeCd^38(J4$vasu1zRnTVN9=11z7=ho%vN zuU+{^sV2UwXrX#L+X-l}WtaD5t4&G`rf!upU`%Y@9S?B6*WUKbb1NUV;S`WAt}4d6 zCNtm8I&V8~AE$?Lc7f%wDW_oMi}m8vYOE}L5J)4LQwWfuCV(FS_^{vR832@R_mzZw z`pv$m)Ax|FrjYB$s6aYHWCy9j3c1dx12$W*8LzS*1`%wnet4Yt#9qnNchhRNnC}5< zv|^xG9+Fk%5ATBfFvO;`08}qr{Wp=2?<^+6ew#vnK_E&ysnM`c{7?`izD%l^g|9RJ zorY_XvhIBC_cK`j%az?jy+AYI+sSjV@pKq#5O7_6Taz{%K7;a83WLdA^GW|FDegVm zA*S6fiw$o_HkIwBOJlWZBy?C_ae7?8dZ6~=lwK2Ji1eZP_q@kd;B@}9$S-yvMpl+q zD>jE$+@iwTqj0a50td*~ef7ly_x1NdcJ;mD-C7Vl{GMr?0MK0i$@K&ERND}pby(!KW+;4B zqm!rwAiqEW7C?T5UHSd9Ysz|LnJ0vp!L#Lv2N*+StwDIwq(r)JvDR@nQa*JvV2%5b z#7~z^MIN}LYm^HffFQBKge}#>9id0E2G}Y0iq5O$@e89c%=VJJ2XpK8?Fd=&W_~4a z3jFAW_W&z8t4i$7uw~k|heuSgo-xYB2yR{L;m>%?w4i^Qp80a46R$yOkIL$z-Kne< zd4Bx<_D1-Tn&WtfdPY=4ge>ccTqg^`yv+KkF*PTCKh%i84BwPpm_bb1?RVSZblxMe zRwhI6B&%AhrmXCfC`Js@Zr;qoE*5APVN1EBcFaDvxkwp zi%`)B1&~gDo?CM->PGiym9r3wuhm_Dzip`;7tJip`C}Nyd^5Y>Xx193Xk_^=7FCtxqts6_C!txl<)2Rz6-!vWk)d}c(p@385 z5lyBH{jz#F_#qYP5kM)OEthL8tSU@#`3Q#;^L>@IBdq=pE`P2bSW3rI^lS$0MjgDYDcDQP#9;)R;H!BmRb{l~x*uX6G6esn3>qGIK4Q_Cj18%{$oSRIxof z)nlj)7z{=d1(v~Y+zU!^w-7&|(VJJ5q^g#AO*LncPq{M9)z!S}Eh^=tP{Un8Pa8vD^q>5vbZ04Zw2E1 z#9%jDR-HS=(Zfn2C|j;HiRtCTqF~NIQ)>9gwC6clYS5L_c* zw9uZ0cdLgCJ>Zuxvq&&5Db*_BJXzWBFsj?Wb)4@UO8X766#A6tC;`uL-JyXR+hDZ;wXvC)8wb4o}PyJW~><|J;>kh4RGo|SBruVYmB+%w`WDPC2#)%wx z;t+Q{{0-BDqQsM}5X$8A9B(E(j|)M2)EiQUJ(ca?<7m?sk6P4$7Y?&tz0Yv*Wn0lx zvgHRFtCzLkiBHss@8*bE%d@FWKo8XuSLT0gB+26i|T&zOk8HYE)Mqx>I<_(X7HB(kconS`J z&4}~S+5@`W`6xBT9d`K8OY!qT@+vCtcvUVNG_B59i{;%xC#Xnl$n26g)G&7=$Kxv+ z^JbqA7hAlq?RX(K(?UqecE#+=WX&z3rHn0kTU0Zb?+3F?^DXW@i^!yA~;BS#yvt7y{(7~>e?~ zmYgEV4OVADNX44wpl3Un+O!{RVVtKala>;UTjd1$@~HHVB}}`oSUe8k zPp5nCz`9UgR@BGShUzC-_$W<~*C7MJx}u4OoN&J~c{!l5hQ~xyrzlRR{2eN!+*JI* zHcEBsBE^`b{gVK^E>@{t{w#hM=XJHJ#~UM5hcYd5%BY=fLs~_lT$GLO-|s}IFg>`u z62A@-hgQ(npa*@Kyal?Q0fvXQ{0SUSfVfpZCw9rLUfYN%m5Vpo;&icUL#b2LG4Da+ zfdi75!HHd&>p0!b0Bo6N*9y`4mWy4kNtmTUM!Z1)4foup;;Z6fj&q}`7XBZv)kyVo z9$)ymPeswYO`uaB<)&UH;4?z2hxDS2S2~*#5-J={{oKPyl|j48<))gF&ppiCW%SB% zZz(+BJ939ye}|Ptfsnl8EtjIDg#iZKpbA?8jTx_g5UU`Zr!CW}ytBw#Y&V>EAbY{k zEWl+YK=kebJp}YtA7YHj2X54x&}QZ4Uw1f41V>Y@$A?gjI(i(j8WB+=-7#qvFuL#4 zWKT^!&!b!K!ublI9RwXU4rNx$+G2a*&{CfYy#i}EpkF^RZ$^!rxEL`ZA3G}jF8tgw zLa#s5eT*V-<{XR2vto{zo6LOgW_|S~E$t#_YwDnSo8k64cG=Ys$#Mq|uDmX@4l{fH zIN6pM*k;V3BTYw5kD1632zg~bNdwv0leq=Q@O+y`tGe!BE6o58p-4sdnF>2q{gx`_ zjAP!{k3%9|x1ml+gB?cr5P}F%3U7cT-&15tmYuaa(?i8QRbl%_ca%wEj-HPcw+BOm zm>w`;?ybE)<0=_t13{cfC;$|9R(>0rWxJTxTOl&5z?=!pJ;DJ?E0sX8NfVlknK!;D)lQaL*30BbH~?PE6A?Z*|f znjD?HYwr}TTU*=5Ot(az6b&eLM`^0b=Q?@JZnGlPk2a z+uOipo@ihrVP+-i<=ePf{!_x%w$+EhQ1fGzy*F_!YlEiNy%FcDIA(La2UIoVyS>Xs z5O#utb!%^;Xm6mNmM3MNJ!JW&$5EXdQQ9iA*t^;WvinRjJKD-4S{ELy)tG>Najq!H zU4QuH2hbz^v8>Nge8{&0y7~YD@DP^n^uX40&g1Y;ND47vdn?qM+zc+ad-p$kkmGu>+j*TdWxwkR|>>?w?vp%UBL- zDeyx0DvXU8ulrnz1a1L$&w=?^U(ZRBfcG&hyjg(Wd5qz1X?$Z&lupN?JAuhZm9*K9 zF5d{=5v1)r^W5@6Q*X#~-5xbBIk9pa(XrmCQzU!bT18PkBLOwPQJRUCqu&_>Rt1R% z5u__m;dsd!;7I9()dPe`*rya866MMs&kgtrbp$VnG3gLeL2v-l3F3tNMd8~7P2j8J zT-6BP1;ir(0J{qK;I3#AS;t_w1?U8btQ{k3dMuQ1n47 zv$ak5BuQy1>01-d{);9+aLgj`?G0!Jln9WDj(kMUVxYhe(kjijQA}b7*#RWKqfo2^ zfIn=``g2pz!qd>T1(-8z8=ScVsgq!xC|JZcB+6ND(TXTd08soC;E+GM1)%t~z-ZLq zdA>HK`palE+yOubvwfPszWnG%@Bsq_e~R4ZQSb$9DFrn^GQW-%48H-vF0MR=t)Ei? zR2g1lBsnFb;>BPU);Tp{`P5XSz->&@F>v%Ms+F$KWdFP?N_Yps zEV%Hs?Ys)Uz_amHbg6ra4sI7Bf-1i8xL=7GzGwr4>A{O!#n3NLur$1q$hSLd$_ zug?tVEfSE}d>K3;{3EHo)^8zKpzvUh>w zWaD=MBL%qjuNB~b!fdR7t*#08q|t7M>^{mg5#wtWyU!c1-+3DD962+1H|o36<*gOcUFZ-u`#X^D*H<+Uu3eLmPV!bze$b>+DKQdV z6O@Le?Ljj=f{oD4&A-Pf_#TF7C>ZF2TB#qh*)Lywb@)ItRDdj6kw~!$C}KCO0S0(+ zy5X>UxNW&0Vt*Z~?W6G7hFZsW4-IbYi)_EJ*kpT8kRhMrb?OyCZLhPrQo^4Xm{c`t zxK%HNV=B2kKi=)|_5#a&65b7%yMM*rK)>>hzCqrc#6kX*xq`nd{(l7EU(B*b4#?(D z3=@B1N9ZMfqj)%V3izM1c4t2u{B3f8{|42@S9t$ThTjI-L{Bnd?yP5&)(pOp#s{amu%cbA=TmC)`3*&!BnJ@m^Y!!cdn4#a5 z`NZE-jNfQI{xiHWe?ytS84Vy@SukV&J#wCJ!u3w2x(e+ugGAu@2kPIBtqOgix3L5C zHkF-&izEuEaR`dDDH8A5=n@9GS#jJB-D}q^?0kt|mzlk3eBVVbD{|&HeApUW#l)Qc z`c_5hGP^h@Zz0w@FX9VRm1r4xWzPBl+=#hH3S?7Srqmlh!m573u!2F^fV_ zZYqlAh2ByJ4t0_xB)oxt^3~mO^~Dx^5W@4D5t9U?e<8a)jRX)^19PW<|DyG>S{F%a z+E*CXDg)Ks{*^^tAI9wW2QDSOAy^4}cp7v34qD@+=l;Z^tj!2Om7W?^KrBI&g z^IVlHx)LFtD|Y>{4pzl;vQ|ed>1=NJF_kwl*sI9JYg*-Xd*%)3w9FOQU3!g`~n|hq@m`q44H{;BMb>H>yJyE5d@orc{>LAl9Xyo%XuPLI><0^dj)*ra;6Pu#Y3=_NvVf;fvA3nohX9`$uyIB{Hm=-Ck{ z?9|glidhniZ%h1aLqveKdp2U_2;NQ6AG35P!Kjy|=gxfD6!Z+U)cAqulBpA-Wjlj0 z()Kwy@#;b~n;X?h@m)h#dG9A%GoMopQP1dGM-8ka`g(d-XBE6g zs4LY&izMrXj@H#seUiO3smVAWX&YB2&ru@DP~l7yJ$;oll)K#yS|&@6ElpZ@Kq=&%NLK{eI8+o%8)e zXU?n7In3wvdB5ME_xtsHJs%I!4jU`-&eworGE|R#?h>uXd0ZXw#t-A44-A*MR&U+ zX3cyjU~+})gb{kU5sx#HU5ycr86JD+#d!VoC*&U3EwXIXXS$v?xH&_C&*g-tyKct5 z!{0cSRBH?o;ubrlc7qtqlT%?FQnXLEIWIEDxxF~IZ#HVjF!BD^Y|WY9VQ5y<*uSnxjCyMyC|L_i^>L6O(O4 zu@*~rx@Gkr(zr>bQ3p+J`NRqeN^-}@QXE>& zKh@0EBM6UWCl7Hl->9vD#NXLct3AIJ+1{nz`AjPr_im7hlKkx`oDw3!w(p6I>m< zITlo016S`4IZR2hO!0Hb;tup%%PB4U!VWT>zLTCO_2I|Xl>oP6gDclAJ@&gDTDtqD zQ}qNCJr<;bOrV}bSx>8dwyP6>>@o`Z>St>=#@P*l^r@ClKns8pXrrRq3pUkA{tUvNnCr!S^ zAOtX7Dni33fgfL(PVD=1Fsc`ce({)Hd-w6HVT=dryqwJBo`Ajc1Q~&XC7|I!Z(ZH^ zj$qdGqAgw0wKzH_ruI}RP&3iO0tg&&KPYkGdP5t+*@GPV1NG3s~geq92ViF8GD z##98Cr#b%iLfI^AVbGhEE&*lt{AjnIOJlR#DkrA2eazGJ*=3&_Pq;IV*YWJtJ_pGaMnDyoEWf&Tixf{`uKx!3;N5r))}VGv6jv(4{8W-tpL}vM891 z;-l`^*^6ib2Mf*+*00XA?jfsw?zqUu;%MwZ?C?*W$WM*`ffM9Ssyjk|nfH?d$Saoe2?^4Vd&Skf}VEyPINZV8E@;d7&O^871{ z&+4R3?2;fC=!U0a=yt%GKMG%ebng7%K?A5H6gzRr)*wwJcX^*l(ky##V0U_1%w)NL zrvZ6)zKDy(ROf_Te~b}K5U-6_Ht&AFW=Ft;EX41HvsUH6vumM@Ua+A?rhRD5VI2dT zVclcmF@hMMlM*_@Atyf5ArgoXh|vVKiXe?15Q!@SH{D1HM%=(c=Of`hwv zO4Wnf#~JokPkk~%FWr7Ygh;ktslyiAUbIDbX&dE&%8t0iOlPN$`S*rTZR&a?UB%4` z2GYb2m1td2mcyZswyNw0ec+dbYL8K}3D2m~ZNME?{Ds?Xe5(aF6dmIz?>mw<;p&vP zNAoGwn39-G8C){xW$AnYyzPh?%~$d|3(u;s>F^|9eyQv;THseJZC7QT)d$&LyZ=FY zm$TETL9upg$W&hcWX6J`Q>l|uYgmewddqYV#&y~)qtzxsv;Vvolr&b;yuGp*6|($R z*$CY}J?(OtYL*f|t*Ug{Cz5lhcqJz|>?ha(ZkGDqIp{POc^l%m7mUnV!rNK?igz7X z@8WQC$>3^w`pYNR-39NmU=*x`;vC^Tx*VO49bsbV{VG2k8rUMcYuWh0Rtt&c`3i}KsEVhqq z7f^i10vbUXn`zQ;oK7cg7nL;!(=lZ)A#3MZQ|6=m;1>E;VaQKUPB-05eb*m+&zxUf zgX_MbNNv7t7VIP{tW~{6RMHgFA=PIolJgWa-(Ap^jqxZ_$G8s8B}M(8zol-Ce7+prdg`g#EDVO6Ik#gE~vxQH=rjuMaxE!51kqwuSlv9ln>)OZZuWUTEqh z-ut<&IaimLYO0xFhRmm2GcC42Ed#xgdV}Qxl9nKyu9v5oX60>N=Q zbuKBXe;O4Y7M@#NhJxW<5hwySB;?W|O2sG~S49&otSD-8JLd1X^bTgBllP&8a_FWr zZjN}5TTzi{G{DLL4kCxGs^T9ygGJ&|RI;^_eY_3wy2~B(#lT@M%ia;^ z?Ah0QEH2)PhGmxUIp7?7E&Xp-xRYD!lsiL6YO zFk&{VDfacmoe2X}P;sxASg5cd12f`NeN~)7jir|)Wsm^bW&_=Iw@e3`^XRyWawY|N zzBsq&im6tZd&1nP%LVQGd3*H~VEx;&LxdC5_}Ux|$1cq!bL0XG_ln_om`X#`!%MMN z=Im|Zuo--pwytTXspo{ZR1yV=jnA#9gg!LrgRfQ5#5+qZudj!v*x*@~@rlBwALA^7 zH5#}h7(+|9OR31$A=zY=2l3g2J;{9e$&D%FN*duT{SEzzXRY7Ov}CQl@xAlzhSWg0 zO+s-R=}bwiZPvx8ll@`+M-xo1NX8Ul9}*P}wb_pg*UIIVcq(JuGD_B-ba}aTpca86 zoOCJrxpI&)%5};5SOB(8EdKR#$?qXP34p<@fL z0U$cIM1CeXfCAcAjE=uZaQNk0ZxT8NN1|xo{Y6BF@m53!0svSpRw5~104(1GegUw| ze~ah4SoC**AqWFc?O&hSmWp3VJKyAW0g!gS34E34)i0!-zn15Czz_Js+Nr3Qr0)9j zu$|3B|LZgsE0E@YjmGl(Nv`-atetPiF_8L3uRMSZJ&I=s&b9Bp45`Hl{#<|RzL?7t zE3&CJSspYg9vN2MH)=nfxd5Cf4aCwKWZq50oO#3YQ_4}zBjw{l&wsoLtSCR$!UJN5 zQ*~G`B#efkbG3SA(|Ud)rTCMcJ-cDk?)Ba#qoA`Zh{Ni5NHE+ZK8qv`0;p+Qxe90r~VLrER`=Q(c-6Z9}G?66GR_1sD zdx*u&vdCWGM71W9Z>a3(T(7sjkV4CwB6H5mO*f0K^T(9*9R296d0(e_6DKsR2IeYJ z0E^mj2OOfZBeCBGIF_JfW*IP3Eme>NH+V#B;r_@tD1`~4pPCIoMqZj=`0Rj#QXXB_ z1_=GP0Y61BYS*A1td!sviqyHaXn>#kGrt+2M5H!WBmCNXWc5t~ZY-(~2gp}oisWYl zfUJAwK;ZvYG=7s>zcq095%^2hx(5J%L}(9ErTin9`8EuxD4_syvl~FFwp|5Va&`XS z1jx+bF03q-F911&!kv}TWf?%8+FSsuy)J+Xmob1;?FRGTCV~C8p@$Y5!!>{TB@jW> zW8-m>Me!*e#sE{LCIB#1^raj?R0p~+pJ@IzaFz#5%ih^#j8qLh9-6y%6IjU`UdkNlHaR2oL*Zl_){Ld$izcqCIkXwds zEXR&i#vOKmjK|MG)`86J{*q!3|EX7?hwDnW+EJ=m8&#gDDyojbbd7;K}eFxqYeRu7RN+6j1-C_x;I&2r>p6Hgy_D8PrK4ax5L~=d! zuN4P!U?i;nh%&X;o47HRTtD;)p^gF+w+nH^+?hED5Pw}Y; zT0hwWnGWiHgJ|PtAg;fH*f`Knns|wIshtcnb_hv<^T+0SNs!mY;XtHJp z8j{upEg5nCIPts$(-+_89cf%O%NwZz<6PGbXT@}mCC%wFwHQDwi5cn$ahHfnrUbT)CO$v3%RV`f zGg{^4n;$Z#*634rE8dW~7bZ=$T4R8_jtxl$P|aTAz0Q%S<@^{=pbR01JnA~xu}^j2 zMyAv-yoKTHx%536fD9h(OWw|M&@fI;LM9bofD+ZJvFnDxC;}ZdaPPp#Bbg_}_4Wq3 z73&U&=+&F|j^7!LgclcGdThk<1j$OXRHNCDlVecAWIYiNC0{x;=l6 z4KWWprN?;Zk*HcZF#q$pHBg^Sd%xUmz+CS@nC#gvkSKfxVqm6`LmJd6UC%>NT?=wG zhobXx$egDVZO%nPWK&*QIKKo-k$v3tn!$@rwgizH=USfnWskM;EWFpd#zM`>BA6IV zajh+0)TmWc*PCOp;>kQ~fR|7@MgF|08C17JHskfBC)Z0cp6&D(hRk@ACFe zUi*Q{io`oCRr)D6#$@O!)m6C`XQdns$+&t|hg<0G`5#_JM$}i4oVr;;QW|J-w1$Iv z_el1WwTJ_`6yGG%Pu)2twnluC?M7XMwyQhGd>@NQ&mP`A_x8mLW_zq8v58k*BT}G0 zO*Sh6uRE1JMl)8D*|V+ojEj}u@+$`5S(g`9f{DOwODHez{7h%TdVkfeP88~wF|5xU z&u&}r(a!yX@+~ylVpjyG#i*aNYvc+Yx8;S?J2J3TGm=Dm6%t*oCj8tEH;toc-Flz( z{ZT|qfX$A#W7?5}qbD+nJe+4>Y@5FRDzr?I4ogkHw4T&o;E9 zjbLgm&3qQ>9`e(NNdEd1<#f0aubSO>xEX0Q3oTXb;vCl0#&8Lr;d_W-Tm591U5nkP zxv8p1IiG3+3Y01}5AWmsQQTM~Yho}^7r_kPK4%oa?j-y2`A>N}A;3cQ=e(V+{4;N- z!;lldQ+FR9U#qH+f(+$2Nz>Z#I@2%|;T^l2g5cHun~21Dj#WlK$Q&dYs44~KD!3~~ zV&l`PxbRP#O>DtcUpKLR^?6V4k~1aBlH>-o=~UfRtcz+~xU!CzYXeI3{vpY2(S~uF zMjR7-`_}V75ppN>2qofW-Rp^cwg}-42Z=nLguP7MGjAWk>JTFil7hFHnfMaZRz3!< z^x^y*;j87nY#GZQpXo$l2$()Z$I7uSbSaHuMR4$^skGr#9!#+-|X#ySSDs zCW_}A2dBEX56wPOg8CyZ`MKbG>^zq`y-ug~n)l*(tYNJ;q&S&tuna4EP9%8-&J~Mh zGgVS{@9vl-YnUzuIYWaKop`Q?W`@O>PhB;N6?_UE%2QQd(x-I4_S!)Sch9u#T3(jJ z9K6)&lbmEdx9cd~@xwhDt&iMsIaz`F__hy-S~jXesD3f6Z@w8l!OZ3GL1o@))UUt7 zE&5(wR)5i0KHQt5{ShIUQ-*EvIlh7Hxfn9NQnIY*OcScRmg;SOUt2D$$Gk27Gu=^( z@w5v2eu=uJ2maMv9`M@O?1$Z0TULz0J zR=!tj#$NWVXaV>89cACpQef)?!Dwy#+Z$VDwQFV83cH^>$ z(S|L|A$w1*M{V+xryUnR z)8+kAw!~BZ0HFMbWy|m2RozkGr6gDX0mN4I2)?^I5<@>+hwPDrS6kMy!#3iY?!(F)`b2e}(0{Ems7j~vfP_RqojZQf)uM_kXr3u!_p2f z18tiaf=C4ZW?L=>2dqJav2|v1S+L28fzmXy-^i`CVg^DNu|PlkGGLtmjyc!-D?V{T zoXB8DeXb$R)BGe4B8POd!3^5{;gI*I-dW96LM-zA4>S_ke|TdD7nt}9L4joJ z#X!jnZiqX$AzZ)SkjW{Q@&)ksuRFF>d^&=JBdgVbrf)}RpBH%D-g@!x-aUpv5AY3W zg;vl7Hb^OCm>=ji>FZ|Hz|*t!R)d4EXXSjz_ccV|v;fBUh{xJ?hcfU5zTA6$GHanH z?ViOlKR?ijZ@CykXo9jrKHVS#0}edcr>lD3!wiI!FCeoHbgzG>Kg&w-?*nSLQ#os) zq2T3k%f(?H ziNGOAdJg`BXk3s*_iYALh8^cxNPbJQW9}i{2E(b#om>inH+?kVN6LNH$`=MwX1dh` z0%dF$`bF|bh~fv!Cv#dK47~_vF*=!gJt3Lv?lgL)w4PC0IH6Q#0yJ!WV`Q-L`nml; S!Z&8^UmLgoTR(6A-1C1M_q1OC literal 82725 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

T2ZJqW7^SPx5wZoX9DD5t%wtp2EH9 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

5Bgy>>CHU?q5hw>iHij~VW!8VSY9jb77{ zlzZ>E|JTzaAr_=vXdcLP#5p*Jd29s70by#ZMGKTgY-M!1QoCl|qRM^cb|1>FOn&x= zt>uQ%!3RTX!@c@S=Z6VuS2Dgjuir`-d!SHkjSU4A41I>}ORFVGxII%6!*wlEdKuL> zuMdiz9=jH4^E%HqXkW|zJBTNQ0(RzJJS8g{bDbCsxL&v_aMUB5zyrVOW@_4_Wl3&R z@$RuSWWH{aPPPO`evtG7B z+(o7lP>I3ztR8W-^&q%I0KjzK?gW)EB%lR(9CX%^cJQfSJYS!ccUyAL)eD-8II zn|X2;&iXVTZMwitHw>WjLyZh;U`wFfXgUorP9{LRBjcm1*{5M#<|f@Gxx%AYy6`f0 z#H~c+TZ8Z=iRWZH54I;gvv`c?uKC5~Slm_3R^6Vm#k6cB># z*wku@9m?9LIW!+oHZ(wrN!D9bY;7&+Vs@-z86f6<#CuMcwQKYxy5llakV=@7qmmlz z1dVq2h1VvA(`^#t!<9GFT+Q;QJI^^D!X7&QVYTDE*6NO}0;=z5;dC`Bt_jzVyG+$i z1snshnyGtoM}>wloPJ1aYEuYa%EaX(Z6@{B{EZ@>+%A#RI|#}`&yox8*OAiCj@jIv9Y{-1--+@Su~hrs3V;%^HF4a(n0{_F`3( z+g?LwtoKRRY0NrDJo$hcEDct^YIMs?iFs@|?mOFQycme6Sii#1*5+kj?BQbVn+GB7 z7kwb;LCx(ZK$KAfUHrKU>|g|97iPWE%k&y>Y0!p+624c>llMkMr;MQwe}n*j0U@IR75(;As(|YOC69w>1dw_dvgL-*W3Gdu!FnbTVJ{HDK<4e5 z_|6t9`>&rpK;kgOk`)k0f6!R}osFnej(f2oX#S1Wdw|vNraFVwV}30DuRnvOlQxzP zqY1qYSpB+kY>9)lZ&CM$941h6{vn1F;r}=#rypW?afJorq8YI6p*g;@)yU&mdg(tu zIFJ|kolU!MID{oB$n~8~t9l#_R4@>FFd(Y?{voOXr7Y_GL`M8X#$fjG;^z^*>@1Afe|whf`(iR)+R zv$J%xHGbC<%cGclrMVgPInz6@ChsmsrzBAn)VRF}4nt!@^>5{mm>s_IMtL)b=)BM* za%$FH{0Xf;-WsvV&f?Zte`i?A+P4Z=VC;m&Eh2}g9gj`>lQqksn_Wh)k3V2-aye2_ zF(ZE5>5Py&%`B}RYwT3JCOk&?yVA7lvHLsd8|CD6%-{Rz`+i1~`wKW4*Uuv-ehv;A z{T09%P#JJn|AbKYg3Bch%tyx`hIFaey6TO>kU$+1DlvS1nPcuy@A&xis9~68o|K_Db02uHiC*c=+yf}S~_S!&&0q-m+ z$=;kwhTZNj;|-QRe7?o0`Pycvb#IK%<0uVfQ>^kLQ!JwLwx_MI)pCW=B?it3UxVKQ ztOMKz%KIRQJ@a)?zUpZroODHFpxu6;-}oLcA2 z6N?RC0mtmv%oeIr%>>KgPp6#D;xoSo66q2ip%|*E2S@;$hoW1-5Dzyv{b`>z->Tid zgmdjIB|nWB0DhHzFe5=^J}1ipUrdoS3~$xdw}0j!;lQ&ul2@h^;{YExM?k_u3`QS# zA!glRmwUWL0{NndB^cK!`bwPjAZbkEzV+h=7qiu`OCg>W8QJQ#c_j|&4I z1?f%!&AIcGQ^D2=jI)*3_3r!3)WkYD#a4gRDv|v_yF8Dn9b8h0Ee!{%0^rF5Ow-@c z`oY04fjCan0^;S&#wnQmI0egdCNeVr=9_E)IQ4IzH~AMI^?njV8O$}fLt07lV`|0VBl+TL8^H=d?N_S{r~;#8 zMJ)Bxtcze@nVp=*^CH*E&-ynGF!)5Qq|bD!EnF$KcOk{l&&PaclO{AE=vz9$F{PWl z*pr%Y^JPqkog?iHy&2MBsLk}=MKmBHah%L8uUw7S(>l8v(9(sSSrt*9wzP}|NsVt? z9X2Z;y+XJN$`F`0s8`l5y`$D|fZWru&Z1dX)VB4d#7hO)ibEYOSqL6__03unk2|8C z?`?R!*-R_cd+xHon(1%!pMO+!AQNgGWe=P44m@VmqcGaBtZydY>X4%9shzTA+qLt* z=n-vrXF#m2sBg}bOc>xY>nT3&1yZzrx=q8dXvbbHIZE`=r6I(n^S;rJZ1G{!Ln-Q4 zD~jU-oMq2^Xb_%J#jYxf!@vL^@mJs3GKIY@cA&TU!TvJKL4wIn1tl@h;D0c6BOK{i z1rZn)Oex4n?HwhTy>4JU4iBXR<$mASwz3^xa^O0hBOt(|)Urja+ta@S`@C+S{b9Eb zi$cNkU(|NW)DQ?J34CZJ-t7qmVXpL#2iebG`*tsjpQcjOE53> z-De$mB$1g$WhJI9EWN#k@m6``?9dEb+&jHTzMpjj24&nL%$`X9&NlU-_oYUjhbG!; z9rTm>+uT9zq8@L>)QS8dmAUTOu@jjQ)f*tmKU9g`MzU}Rl$?i>SO@8FP}HG9=-Kt^&W!w6j`t4T&MA8PMyty8c?9)HD`#KYZ+|dwc?{F@r0s%2;Z3B5d?sIHI-ONO4(ap*)IlMKKcdO2C}nUj|>><=uat%w5&LKYc7|OzY603 ztLSny>KyWB2$YdXrbJx1-6nCbB^z#!zlUY0qTA5?)WAj}JuLV7tv-!5+Euge63u7g z<7-pFLFxwHDxIQSqpu#7E#$lAPGH(YM*3>8JEk!^s$_h<$#BjgTbrA`x7!X^IB-hk zwI6VDl8@DwiuFHOkpc0Jgu(tiWkr4DmqDs#E%Q6u$Bl^?`kmDrz1}ASF0NzU39d*i z40RFk<3L|C*DDSV3_nRRct9C?Fg24YCiYUpr#@@bzJ&LSRr4hO6z4Ww4Ff-%$^)y@XiS6&~eje$ufPoGj0N8|bGz^1|ShMy(#4fJ^S795lq2m7ha9w1C z#EfzUsTja1vMdwYAWN5zP(x4yIaqWxT9`jG2Qs=sT@OtjPX*v7Y87ezrExaaT1SU; zn~5SvHuc4P7`rX6Ll&%mgO7so7Q?x$BDC6W&=jJYk{;?=uf*DS@ZNzrs?ycx%tzLB zMwM!@qAnef`IYutEMC$%&liSjiS%~csgAn+$r3(nN4Co(eI50Pd$de@HZP!~)Z9_m zZ-wA>|MIFh&h{JWOOkeLICR-RY*(Iw+H>=Y*mncwE_8jRcj@H2@9+@9l$!j-XDu%| z@THBu@W&Y28fuG_TXGJ6jr65GJ4Pt)qG}17t6`wLRWMx3kS1wGQ^-kCPPy7Sr=pkc zR9Y6wEK9kw|AftxRa4H8nj4o$*Vi*y>@F}tf{XOq?vjX{Dlsx{>%er`Kyr?RZX#c- z?Hi%7?VfL69jKlfS;{-?EM}Y)b!AlWeK}rUQ!UX9>+93C_<6dPdj4P@f6r~Zj{fW+ zJEHYFFSEXOXpK~tnAsQZ)C;D#jCHzwwQzc8;Ec3zI9{g`l2Qc?z5_Y`&oN!KUM~n@Z21YfElV>?-KiLg=A7mYtd0gRDzQpkS%M z2eU3$g6|rimS1FN?U(}-kquvCK3Bq7j|cju7QOkI=@bML`N|w*TABCJp z2NBy*C#WoJwgr@;Ij3~7w5VK&|<^pba zXf8choyFZt6`~UQnavF60W^u8Jm_<4q0}>(QRZ1D+85VoC2p4W#*xFfjLA(9cmC^RvISIJ4Jkr+A`~qKVd?}DSV~oukr=jVVb_m^h^gZRZx=i5wdtpB zW!Sq39lIX>gzgE|XW&-v&~#b68bG}ZWx#}rajT0o^MCyO8X#FhnEKeM#>zDousbCe zqv+A=&$KKVzNcyBu$j z8`OL&^-GbIYcuGN#nqjZ8G+XlI3O9FhdODH?uF8hS^F*D>bDy3pf#_cRV7i^fY_TL zHX@*lAV7N~fh8#Lt1i?3$4Mq{oaEK>W`^GG^Gl4#uhBgf@=DSHDSu(z?a^;!AbDT}x#b@HIxbP`M;Ntd{<}%ruJR_Fi9xN96 z=ayff96F7d<^R04D~*=Y17I=$VcOd5oA+aLIRF-q1rcc+oF79z3L-XOew61Fd~t$; zXC4F*ougMI-=virK{j`dn5+N%8sIs^xN<>1@Fc)=;1}Nn`wC;1taDYvsrlD_v$hsBFP} z<^spm8GSzPr?2NXs8z=S$CgL6?FL8S1u<(=JWYG+i|?)dZzYfsD5<)Q$ofRhF|M6b)q&Wj`J?5UcmEo-i&5gcjU=SXU0E> z3Vi9M=C-(nX+HHy9xfj@K2C(X7w%1frfo0<6a2~g2$Dx#C@yj`{500AT)iT*GvRHw z>YJCJW|9WWEdeT!h>TYskG`a@z10AbnE=}Zri*d_G1nQbQSo7MUd*p@V=@Gca|kK? z=#s_=>_V>H$S;Tz-C84YBtl4Alz9=d_aKWIG}^J- z8W>b|RvEndGG%6!myoTy^O?Z6;o-03XEMdbG5TdOdis2!hed7HqX^F67*V2KOn(ZO zuv!RU;j#vh3NoYwIt}V1BBM1g!JW$r%SysrVox089_Swody*D~3OmpJ;(%@{>=BC{ zRPeO|=iN}gqYXy+$4Cz`wK-nJb46;hBYz8!FwkE|edzu)4P+CT<&g0l^$SgKJ*b$lF53;x;qc_1R$Qy`oG2 zL-o4QorEHfhgDq2S1+;I$bkUeEK&>ilfz2f_e;A9H*;)#CV6Ai*3glVHvfb=TrfdU zTbk89EC@ZJg;#?-x$)Aq{D zSiJ&s2gd^jv0(l*hlLAV8f@`|pZV`&Qn>ZC-3ipgVk+%3*&A}>Z+G+e*&VO9{P)cP z$>9v3Ai`1CM+sX7Ct3SDyph?<&m3>wnomnPcRI^1xbbR4lit3mSa4bQ*RxTuSE$?T z8E9@utT@+%2}>ijjK0GdGkBBsNp~e4ec7+lh$0-tJ3X4*uSv_A2=ZUs!5L0{p{^n@ zWXkX8@zk5}9_U>VW98mZyg3_+ckCJAIxsi|aR9`82k;?wH5mn$*&Pq`@{1@z_R@CU zY6`0Ka)$B6CG4xS=e`l~Ga2!V9w3qfGCOJsDu%^*XgsUy6-gs-0aL*y%dJ zPM4wi{?&Nbj()iwS!Kg-ncr*Je0=l5mpEusA~OL$NdyorW47i@kA(Ob=5F>!h4sG?F~F{c;f7<~Q!c zHFKi9%{B9bl8tt35Y`bxu?=V#mZgqGC{$;@1d}Gb5{%!63i;nIKU04o{Nm_7wnW;1 z{Dh~?v3reIUYYKF{JhifUFU_Cb4$}py|XJ+lzw!*X{ZKgZtyzwJ_T~?kfMdaHv_p$XU547?|pWoXWcKR9N9IJFj-~FaEF}D zpzeXkXtC~>RJ8)~ThxiyQU*L|9^voraYdZc~gTUPX4+_P8ag;9YJ@+CmUX|4xnKBcV~W@~C3 z1`SVBhEjaaR94lCj9g=T{rc%hT#M?6iV5O$oWoM#^zAJDvNlDhv2TMe3hUgIiG4k{ znmm&&GSYHl&GhXUck|OC4(ykMkw02u$p6%D5z0>>LOGYhL<21IZY*aOx@*j2EBDtPzqAHQGx zD&qvY1$o|o$uik@lRYH+He$>u*@l^j z!OYyhtNZgg-|v0j-RF1i^E=<)@0|1aoj*Jt9?bha*ZX>3*Xw#M&)4%wWe}QikERr; zf>G@o$tM!L19qcp?PP67wa1NNp(uGODu1TIf93|DneWjzsr8f^{M6+TH}<^~+Wi{) zs#j(1%cocUvk!4LR-mkG+5+cVd|;nPv@(s+l*f~+zIZ!+_1t1VLyq{BC8+?tO_K!- zqhO_jU$^8p=QA2T8K_wL7C7T^(~tsm>szomUVr(O+lW9@h?kCOTgOix7zp_j~`fzk9A?WHRsI{PX%Fw0MotSpu2w$1T ze$9!3Ev})zjxr5E3;-ormO$3TaTFfr7&8=IRoF{!v_TX4b=SXR=*%C#!FtUE&{)v; zfq})+LF5p5rxo4z5Nt;1w*8iXC!qLEzPv<(uo4}Wp*UQXso4%`M z6z69w2q)WRIvqlIC}bRZ{tK+6M^D`;=xZyW00H#QGl&nhi9RS`skos;IQ8j-CJi%+v`F$-Bylu zUYFB%%BOckq|2!}UbSf}XPA~q3m99!{EbuxfhB`NwQ$KL*dg&t+SCw7|_eL|sU|Zqit*GsjWq)6yH|%la&*kJN^% z0TTjnrP{B+@g<#)Ga>W~G&ogxODx8%6(;PR%A-dy3rkgXXQcWP^NvFd;zyU}h`BXB zFS<4B4!$hP7W7K8nOq-f_iqSPT?HA}2U}mKvG_$Iq16x%ZHMh%L+=m7l7w5fZS=|L ztJ^z2pl^lE3tbWWh-g)Yn{)8i@urOs{wci7R#= z==a5id3c9VdRj-ep67Wjdfj$AZqg=Y!bdnBecbVs`(jKpW(l+-kS@OfD@C6MA#$aF z=2+-Ebh$?J;-m+f^CsPCMEg+BU5ryQX=KeX|3c~5q`fSvTQv@s^lbCOb+6@tg(X5_ z(z2~{o_@EXtqJba`1bxLy80>Ap)+%~Ewb;3~tzeum zkB@m{YYjWMU`9$j#;V8r{F&Kfc5zW$S#SSB{cs`<6~bsVoOio}X<2!a#!IX6Eovdc z1QDLCgES|jgexQbSBKK;-R0J`{1U5nsN3)Dj(bVitMa}$SJMFHgl?)$6CTvsgGG&t zo(RveoZC7POP#SUD}DR6N+|qu^o{2N?u6V9&psNHqegAY@8b! z`G~-V0?*`)3=#HNdmj=y!h|9bRE_4?NKu<^dtfd2kt%81I>QxKv+MlniZLE{XjFWWUyJB8+WL z+tnsjzg4tc)De?BJ^@M5eB*IX{KUiizz5llQl&v>R)TL+g&)yvi5M}2kBgni_p=-~ zf=x<&FNU92J^tRxke%(B|LD$bIMN2-5>C?(fhw@@Y`?n~B&>?VX0UiA&LJMZ-I*xM z?26e~PL+;7HGKY#!>JDAZ#;A{2F0mkE3JsSxE?{x4Z8~>gzYP|48{EjbaTS4C^s?L z#y-9U=l5cc)%?2@ni6gycY0@F8f1h^EpTbc{@;&gJvVXlA;Wv#YekGd}=)M+d+`xvd2ILtA;mlgrZ%QBd`FL35mSJL!Y%?rel@qGrTQ zf(LDEmwXr-fXqYB0Au8#t+a>|VfyNZaOK1&PJ?8b-$)T^(yq#XZeh6w-dQ$z| zsoPmNqZh^T1mF3-ul0do;ttTvs3#P6(h5i`KPdRSEW%X#DqsR*1?GtoK%H0GY>&3sGTwTE&94wr+au_6M z?3Y<@%$PYU9R=2P@`W8stJ+IWzH^F8MU>?2X`ZES%Er5`#O$MGc?f7rvQMNZYT0s1 z-`!1I@t8u8uQGqHR{wR2;DkBy;%xXaYghREgC2XSC!uroib5Y?zT<@jr9TGX9Y zpEu2)*b zn}y}?>{*W(Jm#FZAaI8wY<4H(TwPGSO4K6jrV=a(O3_&fmpJ%?{cWcQqp@Ctc#uPf zf(!R*Fl~M?KJTyd#7EuS^&VEF@P6x?2rdPWT1SpEv&}Fkcr3b zbz425MVt4B_CQ84mtoWPXYDsnVqX^n>JLR$8kD#Z@*N|Lw1aU^A*%EZ%((<84Z~j( z<7H2+9(fjA94=M`kH9Idi_$}>ZFce;_QI}>KLC7pyZ}M*Gi{ z1j(K_a4F*5ZEJgecC9m27xomugtWjB7K!F!O1hv9(Vh|Z&ki2XP3zDPCicuGP91EB z_KS!FosLoGV?sXD>s21(d>c%|TzamSOLx`kR5T>GOy<_jr9idQNwbPOPffd>A8|Fg zo?$o@s}kiRTM>9-d0+{Np$1IbBV{PML25a}eA`TZgHsFgyQ{u2J2$iqCMG^?11e*# zwc=g4^V)m}l}l8e(WZh_V|Tne2XT0$;FiuWZ!Swz1pn}?3`ZT3e>#@|XiuY2>Pp8A(Z+h1?p zwBT;P@BQhy*_!oP;ezXoatBA|$vg8yPj_Vtn_M?Ity!RPG&3XGTu;7ovdElMz@^<0DalQjP+K!Uzo(^w@4L++&>W_J7wq-?v?eC#Ft(Q@l7?OTn zKs0n8f*p~h|I}8V+%1%4l|a_Mbl9<4F7tk*q4ecAKl#B!hI5?9Xc7NaLl=C1~fadJKli5nvu zQzO^r!4W3%z*|Y+|jLuK(-7H`lo9#1;3z6SbLWuDKpHrIv&Q+rwvBm>GE6rTy&8w#rMCm99MyF zED%UZvmM4df_;9(A6bT<6C*$A+!}$h-5=43{~0-v9Ws-}P9#h-oQv*3Ir}vX33`Lr z+9kw>q5`pcBWpBoF0rDg#c2*I@{;b}<_9=-o)>>?t6aHopmM0I_x{-GN(5j-Zh=Ji z5-X|j7VHk%Ynoc{9EU}pI~@1+<-Hc`&628Tx-TF~AX+lVOp3J8Qnq)~d1>P_BUGmt zZEm_e)i>%Fd(*;2ZGjTp(C#O!BCB5_vo={+Q65U|@}shuANC1ttUsioK_^|Cb?ekl z3KHM(^tiA-_2BAUWsfIzybxtFVf)_HyY&L}neH)1u6Ct1PaKFmZiBu>_6i2nk^*ZY zgf{XFmnWt!!MzMQEnPN*+|L~M6v+ycc2GX@rp81=?$JXQto1>3>LIZh@yam`Ym7YV zBa~vG4+{e9GO;nRa`PHe1l^Q`je2G^pX|kz8O=*fRi9FgUFtrRY*?Dk8*{&CY ztWVy$*v91SXG$UrP5O{JS@X5C!G$(wQ<56h!f%Ce0wN3NZ#=g z+twgUmvO&zsk#1pTlnxYbEXT$%WOuoqn&z16eH@{C~ibp5c1sHhPOj>C{dGJnR1Cn zfTZlbx^2TI|4MxCXtB{{9YO0S@9QbWNr5DrgRV0MgUf0$>U)X`SF)-u*Hnbriy4SN z%Vxgc$3FvGB7$z^gubOUT%-gW1=h-~Xow-3SEfnzkt>`P za_|-(E~OqcTaVXZ*|+E5qU3b!k_#nz-EDY9O)(tG*(gTW9#WGHt(Y7Qt5ha!x ztNFCVlIWZEWy2ple|?R}#y7lVgZeJNSM7x7NRneehfSISm7lq1avMs& zMa=;c_Cj=SnkEU$=Q^-Q(c9L($=~}sd15E0s9ttx>U$$$saGr`-2?)GJxGqqSFM=RF>ee2r$d6H1(bb9{#< z+jBN(-d4xwNoRZDxE3Y@372k$8saY;&w%ti@%b*UV~U%trOm%Q$OFXr*pqU0j$ zp*#KmP%itwQx{_~a?W_9m9!4LoCIB3TpEt@6b2ABsxN46uzEr{;Iq&^M&C_Ehb>vF z){m-27sy&){8pgHm61SBJb-QP6+uW^(gKTmau$=_*Awz=N-TmFgr1($E!(G?E-o>= z*(+}JD)qFE%U$d&+9FVNb?;dbQvPuAb*c~C#;RcK1J<4rPTr(?zDwH (m3dhS{C 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 literal 97581 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 *L8}!_gRyx29N(X}8Z(dMK$rC` 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 AQ2+n{ From 3298fe05a8671b102768264a0f8fdf5b27481cda Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 16:25:37 -0300 Subject: [PATCH 332/435] Update stale.yml --- .github/stale.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index 2ff6f786e..58b939e73 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -3,7 +3,7 @@ # Probot-stale Repository: https://github.com/probot/stale # Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 120 +daysUntilStale: 60 # Number of days of inactivity before a stale Issue or Pull Request is closed. # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. @@ -43,7 +43,7 @@ closeComment: > limitPerRun: 30 # Limit to only `issues` or `pulls` -only: issues +#only: issues # Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': # pulls: From d3be083c4dcf937caaff61f110cfe9e4b95b6bf8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 11 May 2018 16:29:46 -0300 Subject: [PATCH 333/435] Update ISSUE_TEMPLATE.md --- .github/ISSUE_TEMPLATE.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md index cb8cd1d03..f7a4e98a4 100644 --- a/.github/ISSUE_TEMPLATE.md +++ b/.github/ISSUE_TEMPLATE.md @@ -1,6 +1,7 @@ -Make sure these boxes are checked before submitting your issue - Thank you! +Make sure these boxes are checked [x] before submitting your issue - Thank you! -- [ ] What hardware you are using -- [ ] Provide the output of command ``status 0`` -- [ ] If you have a stack dump decode it: https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/stack_dump.rst -- [ ] For better debug messages: https://github.com/esp8266/Arduino/blob/master/doc/Troubleshooting/debugging.rst +- [ ] Searched the problem in issues and in the wiki + +- [ ] Hardware used : + +- [ ] Provide the output of command ``status 0`` : From 0a7981ffaee7166af2acf9dc13fc142c4f7d6c6a Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:21:35 -0300 Subject: [PATCH 334/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f9ea71b7..b0fd5ad38 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! [![GitHub stars](https://img.shields.io/github/stars/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Star)](https://github.com/ascillato/Sonoff-Tasmota_KNX/stargazers) [![GitHub forks](https://img.shields.io/github/forks/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Fork)](https://github.com/ascillato/Sonoff-Tasmota_KNX/network) -Any help is very welcome. +Any help or comment is very welcome. ## Table of Contents From 1ceeec42a88e2bb05bc86550e0f773c9ce21f0bd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:24:06 -0300 Subject: [PATCH 335/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b0fd5ad38..95f2299e9 100644 --- a/README.md +++ b/README.md @@ -115,14 +115,14 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys +- [ ] Add support for Neo Pixel +- [ ] Add support for other devices supported by Tasmota - [ ] Add option for changing default Multicast KNX IP and PORT - [ ] Add options for increase communication reliability (re send telegrams, check for ack) - [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) - [ ] Add option to support KNX Snooping to debug KNX Network - [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNX-IP Tunneling - [ ] Add option to support ETS Programming -- [ ] Add support for Neo Pixel -- [ ] Add support for other devices supported by Tasmota - [ ] Optimize code to reduce Flash and RAM ## Modifications to Sonoff-Tasmota ## From ac594aa17a2bb6017bdccc9b1683ff439c279791 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:37:08 -0300 Subject: [PATCH 336/435] Update issue templates --- .github/ISSUE_TEMPLATE/Bug_report.md | 30 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/Custom.md | 13 ++++++++++ .github/ISSUE_TEMPLATE/Feature_request.md | 17 +++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/Bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/Custom.md create mode 100644 .github/ISSUE_TEMPLATE/Feature_request.md diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md new file mode 100644 index 000000000..e3f87da54 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -0,0 +1,30 @@ +--- +name: Bug report +about: Create a report to help us improve + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +Also, make sure these boxes are checked [x] before submitting your issue - Thank you! + +- [ ] Searched the problem in issues and in the wiki +- [ ] Hardware used : +- [ ] Provide the output of command ``status 0`` : + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Additional context** +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md new file mode 100644 index 000000000..0e5eb10ae --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -0,0 +1,13 @@ +--- +name: Troubleshooting +about: Troubleshooting Help + +--- + +Make sure these boxes are checked [x] before submitting your issue - Thank you! + +- [ ] Searched the problem in issues and in the wiki + +- [ ] Hardware used : + +- [ ] Provide the output of command ``status 0`` : diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md new file mode 100644 index 000000000..375207e18 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -0,0 +1,17 @@ +--- +name: Feature request +about: Suggest an idea for this project + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. From 5fe8ffe07c35ca70b06ca8d3ea1831c42c9e8f92 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:37:45 -0300 Subject: [PATCH 337/435] update issues template --- .github/ISSUE_TEMPLATE.md | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index f7a4e98a4..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,7 +0,0 @@ -Make sure these boxes are checked [x] before submitting your issue - Thank you! - -- [ ] Searched the problem in issues and in the wiki - -- [ ] Hardware used : - -- [ ] Provide the output of command ``status 0`` : From 3dc98a3e58891bc4aff8f854e743ffbea579edd5 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:51:28 -0300 Subject: [PATCH 338/435] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index e3f87da54..848898b37 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -15,10 +15,6 @@ Also, make sure these boxes are checked [x] before submitting your issue - Thank **To Reproduce** Steps to reproduce the behavior: -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error **Expected behavior** A clear and concise description of what you expected to happen. From 2317e8b3f60ba2f6d7defcc76f0d76b69f856e60 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:53:21 -0300 Subject: [PATCH 339/435] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 848898b37..5b84f0833 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -1,6 +1,7 @@ --- name: Bug report about: Create a report to help us improve +title: BUG: --- From 7069f5be193543f46c4abd37571a71467c831633 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 13:53:50 -0300 Subject: [PATCH 340/435] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 5b84f0833..848898b37 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -1,7 +1,6 @@ --- name: Bug report about: Create a report to help us improve -title: BUG: --- From ecb9015ca2c46fae75114b29e030e232e5c9b84f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 14:01:18 -0300 Subject: [PATCH 341/435] Update Feature_request.md --- .github/ISSUE_TEMPLATE/Feature_request.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md index 375207e18..cd8281f26 100644 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -3,6 +3,7 @@ name: Feature request about: Suggest an idea for this project --- +**Have you look for the feature request in other issues and in the wiki?** **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. From d11b142f6ff5eb52436dfa5c894a077fc8558c8c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 14:02:48 -0300 Subject: [PATCH 342/435] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 0e5eb10ae..55e74b0e7 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -7,7 +7,5 @@ about: Troubleshooting Help Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in issues and in the wiki - - [ ] Hardware used : - - [ ] Provide the output of command ``status 0`` : From bb1323222cc1fbfe397abce795fa59e6268f74b6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 16:54:18 -0300 Subject: [PATCH 343/435] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 95f2299e9..66317ff67 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,6 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Complete all the language files with keys - [ ] Add support for Neo Pixel - [ ] Add support for other devices supported by Tasmota -- [ ] Add option for changing default Multicast KNX IP and PORT - [ ] Add options for increase communication reliability (re send telegrams, check for ack) - [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) - [ ] Add option to support KNX Snooping to debug KNX Network From 0f268c011a144a50a8de33700630cb4b16a54d70 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 20:11:12 -0300 Subject: [PATCH 344/435] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 55e74b0e7..195ad9c92 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -6,6 +6,6 @@ about: Troubleshooting Help Make sure these boxes are checked [x] before submitting your issue - Thank you! -- [ ] Searched the problem in issues and in the wiki +- [ ] Searched the problem in issues and in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting) - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : From 8186f4f8b302fd86c3d7380e630800e8ed63c890 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 20:24:42 -0300 Subject: [PATCH 345/435] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 195ad9c92..2a22d0e41 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -6,6 +6,11 @@ about: Troubleshooting Help Make sure these boxes are checked [x] before submitting your issue - Thank you! -- [ ] Searched the problem in issues and in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting) +- [ ] Searched the problem in issues (https://github.com/arendst/Sonoff-Tasmota/issues) +- [ ] Searched the problem in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting) +- [ ] Searched the problem in the forum (https://forum.digital-pig.com/) +- [ ] Searched the problem in the discussion group (https://groups.google.com/d/forum/sonoffusers) - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : + +**Please, remember to close the issue when the problem has been addressed.** From 5c5c0d4f95dd614fecf429bf007b3bbc416c8086 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 20:27:16 -0300 Subject: [PATCH 346/435] Update Feature_request.md --- .github/ISSUE_TEMPLATE/Feature_request.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md index cd8281f26..26a77b277 100644 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -3,7 +3,7 @@ name: Feature request about: Suggest an idea for this project --- -**Have you look for the feature request in other issues and in the wiki?** +**Have you look for this feature in other issues and in the wiki?** **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. From 61021a4a6fe7db32052b0e52d671f8f39a730417 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 12 May 2018 20:28:46 -0300 Subject: [PATCH 347/435] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 848898b37..731ecf294 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -5,6 +5,7 @@ about: Create a report to help us improve --- **Describe the bug** + A clear and concise description of what the bug is. Also, make sure these boxes are checked [x] before submitting your issue - Thank you! From 7a42e0f4b590194727b08fbac898b0057d1571ff Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:21:44 -0300 Subject: [PATCH 348/435] Update Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 731ecf294..2db5f791c 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -25,3 +25,5 @@ If applicable, add screenshots to help explain your problem. **Additional context** Add any other context about the problem here. + +**(Please, remember to close the issue when the problem has been addressed)** From 08a4ea67f30e9946d30abcfe80c1351cd5b42c3c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:22:09 -0300 Subject: [PATCH 349/435] Update Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 2a22d0e41..419e08837 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -1,6 +1,6 @@ --- name: Troubleshooting -about: Troubleshooting Help +about: Users Troubleshooting Help --- @@ -13,4 +13,4 @@ Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : -**Please, remember to close the issue when the problem has been addressed.** +**(Please, remember to close the issue when the problem has been addressed)** From 2bd8097409f18e11cd5e8da7459db34d0d4abd9c Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:22:33 -0300 Subject: [PATCH 350/435] Update Feature_request.md --- .github/ISSUE_TEMPLATE/Feature_request.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md index 26a77b277..9933cbc17 100644 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -16,3 +16,5 @@ A clear and concise description of any alternative solutions or features you've **Additional context** Add any other context or screenshots about the feature request here. + +**(Please, remember to close the issue when the problem has been addressed)** From 73407bb2aa6e3dd5778d16a40dedca2b146c5dcb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:38:12 -0300 Subject: [PATCH 351/435] Delete Bug_report.md --- .github/ISSUE_TEMPLATE/Bug_report.md | 29 ---------------------------- 1 file changed, 29 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/Bug_report.md diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md deleted file mode 100644 index 2db5f791c..000000000 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve - ---- - -**Describe the bug** - -A clear and concise description of what the bug is. - -Also, make sure these boxes are checked [x] before submitting your issue - Thank you! - -- [ ] Searched the problem in issues and in the wiki -- [ ] Hardware used : -- [ ] Provide the output of command ``status 0`` : - -**To Reproduce** -Steps to reproduce the behavior: - -**Expected behavior** -A clear and concise description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Additional context** -Add any other context about the problem here. - -**(Please, remember to close the issue when the problem has been addressed)** From e12e4d36110623b4dfc981190530b5b594df2564 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:38:20 -0300 Subject: [PATCH 352/435] Delete Custom.md --- .github/ISSUE_TEMPLATE/Custom.md | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/Custom.md diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md deleted file mode 100644 index 419e08837..000000000 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -name: Troubleshooting -about: Users Troubleshooting Help - ---- - -Make sure these boxes are checked [x] before submitting your issue - Thank you! - -- [ ] Searched the problem in issues (https://github.com/arendst/Sonoff-Tasmota/issues) -- [ ] Searched the problem in the wiki (https://github.com/arendst/Sonoff-Tasmota/wiki/Troubleshooting) -- [ ] Searched the problem in the forum (https://forum.digital-pig.com/) -- [ ] Searched the problem in the discussion group (https://groups.google.com/d/forum/sonoffusers) -- [ ] Hardware used : -- [ ] Provide the output of command ``status 0`` : - -**(Please, remember to close the issue when the problem has been addressed)** From ae439afd7eec54355aaa65835defc44366b3cb5f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 12:38:28 -0300 Subject: [PATCH 353/435] Delete Feature_request.md --- .github/ISSUE_TEMPLATE/Feature_request.md | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/Feature_request.md diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md deleted file mode 100644 index 9933cbc17..000000000 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project - ---- -**Have you look for this feature in other issues and in the wiki?** - -**Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. - -**Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. - -**(Please, remember to close the issue when the problem has been addressed)** From 629e115abc2a028d781b1e87204f85140d88fbb7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 21:13:55 -0300 Subject: [PATCH 354/435] Add control for all Tasmota Outputs Add control for all Tasmota Outputs. Before this commit, only Relays were able to be controlled by KNX. Now all Outputs can be controlled using KNX. --- sonoff/xdrv_11_knx.ino | 64 +++++++++++++++++++++++------------------- 1 file changed, 35 insertions(+), 29 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 4c3c8b19f..89959d269 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -108,14 +108,14 @@ device_parameters_t device_param[] = { // device parameters (information that can be sent) const char * device_param_ga[] = { - D_SENSOR_RELAY " 1", // Relay 1 - D_SENSOR_RELAY " 2", // Relay 2 - D_SENSOR_RELAY " 3", // Relay 3 - D_SENSOR_RELAY " 4", // Relay 4 - D_SENSOR_RELAY " 5", // Relay 5 - D_SENSOR_RELAY " 6", // Relay 6 - D_SENSOR_RELAY " 7", // Relay 7 - D_SENSOR_RELAY " 8", // Relay 8 + D_TIMER_OUTPUT " 1", // Relay 1 + D_TIMER_OUTPUT " 2", // Relay 2 + D_TIMER_OUTPUT " 3", // Relay 3 + D_TIMER_OUTPUT " 4", // Relay 4 + D_TIMER_OUTPUT " 5", // Relay 5 + D_TIMER_OUTPUT " 6", // Relay 6 + D_TIMER_OUTPUT " 7", // Relay 7 + D_TIMER_OUTPUT " 8", // Relay 8 D_SENSOR_BUTTON " 1", // Button 1 D_SENSOR_BUTTON " 2", // Button 2 D_SENSOR_BUTTON " 3", // Button 3 @@ -131,22 +131,22 @@ const char * device_param_ga[] = { // device actions (posible actions to be performed on the device) const char *device_param_cb[] = { - D_SENSOR_RELAY " 1", // Set Relay 1 (1-On or 0-OFF) - D_SENSOR_RELAY " 2", - D_SENSOR_RELAY " 3", - D_SENSOR_RELAY " 4", - D_SENSOR_RELAY " 5", - D_SENSOR_RELAY " 6", - D_SENSOR_RELAY " 7", - D_SENSOR_RELAY " 8", - D_SENSOR_RELAY " 1 " D_BUTTON_TOGGLE, // Relay 1 Toggle (1 or 0 will toggle) - D_SENSOR_RELAY " 2 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 3 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 4 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 5 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 6 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 7 " D_BUTTON_TOGGLE, - D_SENSOR_RELAY " 8 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 1", // Set Relay 1 (1-On or 0-OFF) + D_TIMER_OUTPUT " 2", + D_TIMER_OUTPUT " 3", + D_TIMER_OUTPUT " 4", + D_TIMER_OUTPUT " 5", + D_TIMER_OUTPUT " 6", + D_TIMER_OUTPUT " 7", + D_TIMER_OUTPUT " 8", + D_TIMER_OUTPUT " 1 " D_BUTTON_TOGGLE, // Relay 1 Toggle (1 or 0 will toggle) + D_TIMER_OUTPUT " 2 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 3 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 4 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 5 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 6 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 7 " D_BUTTON_TOGGLE, + D_TIMER_OUTPUT " 8 " D_BUTTON_TOGGLE, D_REPLY " " D_TEMPERATURE, // Reply Temperature D_REPLY " " D_HUMIDITY, // Reply Humidity nullptr @@ -384,13 +384,17 @@ void KNX_INIT() // Read Configuration // Check which relays, buttons and sensors where configured for this device // and activate options according to the hardware - for (int i = GPIO_REL1; i < GPIO_REL8 + 1; ++i) + /*for (int i = GPIO_REL1; i < GPIO_REL8 + 1; ++i) { if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_REL1].show = true; } } for (int i = GPIO_REL1_INV; i < GPIO_REL8_INV + 1; ++i) { if (GetUsedInModule(i, my_module.gp.io)) { device_param[i - GPIO_REL1_INV].show = true; } + }*/ + for (int i = 0; i < devices_present; ++i) + { + device_param[i].show = true; } for (int i = GPIO_SWT1; i < GPIO_SWT4 + 1; ++i) { @@ -642,8 +646,9 @@ void HandleKNXConfiguration() stmp = WebServer->arg("GA_FDEF"); byte GA_FDEF = stmp.toInt(); - KNX_ADD_GA( GAop, GA_FNUM, GA_AREA, GA_FDEF ); - + if (GAop) { + KNX_ADD_GA( GAop, GA_FNUM, GA_AREA, GA_FDEF ); + } } else { @@ -657,8 +662,9 @@ void HandleKNXConfiguration() stmp = WebServer->arg("CB_FDEF"); byte CB_FDEF = stmp.toInt(); - KNX_ADD_CB( CBop, CB_FNUM, CB_AREA, CB_FDEF ); - + if (CBop) { + KNX_ADD_CB( CBop, CB_FNUM, CB_AREA, CB_FDEF ); + } } } else if ( WebServer->hasArg("btn_del_ga") ) From 83446b5e17f543a51c7545d61a3a830f0b5b9c41 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 21:31:57 -0300 Subject: [PATCH 355/435] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 195cb77ac..75aac024a 100644 --- a/README.md +++ b/README.md @@ -115,8 +115,7 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Feature to Load Config - [x] Add Log Info - [x] Complete all the language files with keys -- [ ] Add support for Neo Pixel -- [ ] Add support for other devices supported by Tasmota +- [x] Add support for other output devices supported by Tasmota - [ ] Add options for increase communication reliability (re send telegrams, check for ack) - [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) - [ ] Add option to support KNX Snooping to debug KNX Network From ea75f69a85e7fc9d4b6e60e04f747f2f4df09d42 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 13 May 2018 21:44:50 -0300 Subject: [PATCH 356/435] Update user_config.h --- sonoff/user_config.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 7503a2338..38a705be7 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -269,7 +269,7 @@ #define USE_BH1750 // Add I2C code for BH1750 sensor (+0k5 code) // #define USE_VEML6070 // Add I2C code for VEML6070 sensor (+0k5 code) // #define USE_TSL2561 // Add I2C code for TSL2561 sensor using library Joba_Tsl2561 (+2k3 code) - #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) +// #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) @@ -284,12 +284,12 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) //#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) //#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) @@ -303,9 +303,9 @@ #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) -#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) //#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) From d67480d14ba76be3923c7bb6f16a0a95a187fb81 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 14 May 2018 00:53:48 -0300 Subject: [PATCH 357/435] Update platformio.ini --- platformio.ini | 2 ++ 1 file changed, 2 insertions(+) diff --git a/platformio.ini b/platformio.ini index eefb038e0..59c053b67 100644 --- a/platformio.ini +++ b/platformio.ini @@ -54,6 +54,7 @@ build_flags = ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION build_flags_4MB = -Wl,-Tesp8266.flash.4m1m.ld @@ -62,6 +63,7 @@ build_flags_4MB = ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py From c40e97f35443b841b0048e512809cbdf8fc2fc3e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 14 May 2018 21:36:11 -0300 Subject: [PATCH 358/435] Update user_config.h --- sonoff/user_config.h | 65 ++++++++++++++------------------------------ 1 file changed, 20 insertions(+), 45 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 38a705be7..d79735572 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,7 +48,6 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter - #define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) @@ -56,15 +55,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -204,9 +203,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -219,7 +218,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -236,7 +235,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -269,7 +268,7 @@ #define USE_BH1750 // Add I2C code for BH1750 sensor (+0k5 code) // #define USE_VEML6070 // Add I2C code for VEML6070 sensor (+0k5 code) // #define USE_TSL2561 // Add I2C code for TSL2561 sensor using library Joba_Tsl2561 (+2k3 code) -// #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) + #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) @@ -284,53 +283,29 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) +#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) + #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) // -- Low level interface devices ----------------- -//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) -// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) + #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) -//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) - -//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) - -//#define DISPLAY_CONFIG // Display Support for LCD, Oled -#ifdef DISPLAY_CONFIG - -#ifdef USE_I2C - #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) - #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module - #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module - #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module - #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module - #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module - #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module - #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module - #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module -#endif // USE_I2C - -#ifdef USE_SPI // SPI using library TasmotaTFT - #ifndef USE_DISPLAY - #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT - #endif -#endif // USE_SPI - -#endif // DISPLAY_CONFIG +#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space @@ -348,7 +323,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! From 396f46bcbfbeb8bee6df17307773ba8ff35c70f0 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 14 May 2018 21:39:56 -0300 Subject: [PATCH 359/435] Update user_config.h --- sonoff/user_config.h | 63 +++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d79735572..cde9244a0 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -55,15 +55,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -203,9 +203,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -218,7 +218,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -235,7 +235,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -268,7 +268,7 @@ #define USE_BH1750 // Add I2C code for BH1750 sensor (+0k5 code) // #define USE_VEML6070 // Add I2C code for VEML6070 sensor (+0k5 code) // #define USE_TSL2561 // Add I2C code for TSL2561 sensor using library Joba_Tsl2561 (+2k3 code) - #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) +// #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) @@ -283,29 +283,54 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) +//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) // -- Low level interface devices ----------------- -#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) - #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) +// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) -#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) + +//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + +//#define DISPLAY_CONFIG // Display Support for LCD, Oled +#ifdef DISPLAY_CONFIG + +#ifdef USE_I2C + #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module + #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module + #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module + #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module + #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module + #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module + #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module + #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module +#endif // USE_I2C + +#ifdef USE_SPI // SPI using library TasmotaTFT + #ifndef USE_DISPLAY + #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT + #endif +#endif // USE_SPI + +#endif // DISPLAY_CONFIG /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space @@ -323,7 +348,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! From 887ba2ccc44fe910041ce8959a1f53dbd60b9ddc Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 11:27:40 -0300 Subject: [PATCH 360/435] Update user_config.h --- sonoff/user_config.h | 87 ++++++++++++++++---------------------------- 1 file changed, 31 insertions(+), 56 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index cde9244a0..2323e4a16 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -55,15 +55,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -130,20 +130,20 @@ #define NTP_SERVER3 "0.nl.pool.ntp.org" // [NtpServer3] Select third NTP server by name or IP address (93.94.224.67) // -- Time - Start Daylight Saving Time and timezone offset from UTC in minutes -#define TIME_DST_HEMISPHERE North // Northern Hemisphere -#define TIME_DST_WEEK Last -#define TIME_DST_DAY Sun -#define TIME_DST_MONTH Mar // Last sunday in march -#define TIME_DST_HOUR 2 // at 02:00 -#define TIME_DST_OFFSET +120 // +120 minutes +#define TIME_DST_HEMISPHERE North // [TimeDst] Hemisphere (0 or North, 1 or South) +#define TIME_DST_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) +#define TIME_DST_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) +#define TIME_DST_MONTH Mar // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) +#define TIME_DST_HOUR 2 // Hour (0 to 23) +#define TIME_DST_OFFSET +120 // Offset from UTC in minutes (-780 to +780) // -- Time - Start Standard Time and timezone offset from UTC in minutes -#define TIME_STD_HEMISPHERE North // Northern Hemisphere -#define TIME_STD_WEEK Last -#define TIME_STD_DAY Sun -#define TIME_STD_MONTH Oct // Last sunday in october -#define TIME_STD_HOUR 3 // at 03:00 -#define TIME_STD_OFFSET +60 // +60 minutes +#define TIME_STD_HEMISPHERE North // [TimeStd] Hemisphere (0 or North, 1 or South) +#define TIME_STD_WEEK Last // Week of month (0 or Last, 1 or First, 2 or Second, 3 or Third, 4 or Fourth) +#define TIME_STD_DAY Sun // Day of week (1 or Sun, 2 or Mon, 3 or Tue, 4 or Wed, 5 or Thu, 6 or Fri, 7 or Sat) +#define TIME_STD_MONTH Oct // Month (1 or Jan, 2 or Feb, 3 or Mar, 4 or Apr, 5 or May, 6 or Jun, 7 or Jul, 8 or Aug, 9 or Sep, 10 or Oct, 11 or Nov, 12 or Dec) +#define TIME_STD_HOUR 3 // Hour (0 to 23) +#define TIME_STD_OFFSET +60 // Offset from UTC in minutes (-780 to +780) // -- Location ------------------------------------ #define LATITUDE 48.858360 // [Latitude] Your location to be used with sunrise and sunset @@ -203,9 +203,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -218,7 +218,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -235,7 +235,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -268,7 +268,7 @@ #define USE_BH1750 // Add I2C code for BH1750 sensor (+0k5 code) // #define USE_VEML6070 // Add I2C code for VEML6070 sensor (+0k5 code) // #define USE_TSL2561 // Add I2C code for TSL2561 sensor using library Joba_Tsl2561 (+2k3 code) -// #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) + #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) @@ -283,54 +283,29 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k2 code) +#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) // -- Low level interface devices ----------------- -//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) -// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) + #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) -//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) - -//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) - -//#define DISPLAY_CONFIG // Display Support for LCD, Oled -#ifdef DISPLAY_CONFIG - -#ifdef USE_I2C - #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) - #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module - #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module - #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module - #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module - #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module - #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module - #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module - #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module -#endif // USE_I2C - -#ifdef USE_SPI // SPI using library TasmotaTFT - #ifndef USE_DISPLAY - #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT - #endif -#endif // USE_SPI - -#endif // DISPLAY_CONFIG +#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space @@ -348,7 +323,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! From df93272b3b33638df2e92ae27212b3f37533d9b7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 11:30:40 -0300 Subject: [PATCH 361/435] Update user_config.h --- sonoff/user_config.h | 63 +++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 19 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 2323e4a16..26b6d8e52 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -55,15 +55,15 @@ // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -203,9 +203,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -218,7 +218,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -235,7 +235,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -268,7 +268,7 @@ #define USE_BH1750 // Add I2C code for BH1750 sensor (+0k5 code) // #define USE_VEML6070 // Add I2C code for VEML6070 sensor (+0k5 code) // #define USE_TSL2561 // Add I2C code for TSL2561 sensor using library Joba_Tsl2561 (+2k3 code) - #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) +// #define USE_SI1145 // Add I2C code for SI1145/46/47 sensor (+1k code) // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) @@ -283,29 +283,54 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) +//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) // -- Low level interface devices ----------------- -#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) - #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) +// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) -#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) + +//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + +//#define DISPLAY_CONFIG // Display Support for LCD, Oled +#ifdef DISPLAY_CONFIG + +#ifdef USE_I2C + #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) + #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module + #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module + #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module + #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module + #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module + #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module + #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module + #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module +#endif // USE_I2C + +#ifdef USE_SPI // SPI using library TasmotaTFT + #ifndef USE_DISPLAY + #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT + #endif +#endif // USE_SPI + +#endif // DISPLAY_CONFIG /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space @@ -323,7 +348,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! From 5d28dc3f6f28565734279c06d30ca0e9ea151c36 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 13:33:54 -0300 Subject: [PATCH 362/435] Update platformio.ini --- platformio.ini | 136 ++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 76 deletions(-) diff --git a/platformio.ini b/platformio.ini index 59c053b67..233f36553 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,15 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff-DE_4MB -;env_default = sonoff-EN_4MB -;env_default = sonoff-ES_4MB +env_default = sonoff ;env_default = sonoff-minimal +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG +;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE -;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -27,8 +28,7 @@ src_dir = sonoff ;env_default = sonoff-IT ;env_default = sonoff-NL ;env_default = sonoff-PL -;env_default = sonoff-PT_PT -;env_default = sonoff-PT_BR +;env_default = sonoff-PT ;env_default = sonoff-RU ;env_default = sonoff-TW @@ -50,20 +50,8 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH + -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION - -build_flags_4MB = - -Wl,-Tesp8266.flash.4m1m.ld - -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -72,13 +60,11 @@ extra_scripts = pio/strip-floats.py monitor_baud = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_speed = 115200 -;upload_speed = 512000 +;upload_speed = 115200 +upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 -;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash - ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -89,38 +75,13 @@ upload_port = COM5 ; ********************************************************************* -[env:sonoff-DE_4MB] +[env:sonoff] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-EN_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-ES_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR +build_flags = ${common.build_flags} monitor_baud = ${common.monitor_baud} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -139,6 +100,42 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-classic] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_CLASSIC +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-knx] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-allsensors] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_ALL_SENSORS +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -151,6 +148,18 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-BR] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-CN] platform = ${common.platform} framework = ${common.framework} @@ -187,19 +196,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-EN] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} @@ -284,7 +280,7 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-PT_PT] +[env:sonoff-PT] platform = ${common.platform} framework = ${common.framework} board = ${common.board} @@ -296,18 +292,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-PT_BR] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-RU] platform = ${common.platform} framework = ${common.framework} From 0b98c8a54f742c5a9ab308950fa0ccba72fe094b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 13:37:20 -0300 Subject: [PATCH 363/435] Update platformio.ini --- platformio.ini | 106 ++++++++++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 45 deletions(-) diff --git a/platformio.ini b/platformio.ini index 233f36553..bbc4f9fb5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -env_default = sonoff +;env_default = sonoff-DE_4MB +;env_default = sonoff-EN_4MB +;env_default = sonoff-ES_4MB ;env_default = sonoff-minimal -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE +;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -50,8 +50,20 @@ build_unflags = -Wall build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION + +build_flags_4MB = + -Wl,-Tesp8266.flash.4m1m.ld + -DVTABLES_IN_FLASH + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -60,11 +72,13 @@ extra_scripts = pio/strip-floats.py monitor_baud = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -;upload_speed = 115200 -upload_speed = 512000 +upload_speed = 115200 +;upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 +;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash + ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -75,13 +89,38 @@ upload_port = COM5 ; ********************************************************************* -[env:sonoff] +[env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-EN_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-ES_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR monitor_baud = ${common.monitor_baud} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -100,42 +139,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-classic] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_CLASSIC -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-knx] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-allsensors] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_ALL_SENSORS -monitor_baud = ${common.monitor_baud} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -196,6 +199,19 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-EN] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_baud = ${common.monitor_baud} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} From fb678656789f53c4f112d6695f49c10c91760273 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 13:38:17 -0300 Subject: [PATCH 364/435] Update COPYFILES.BAT --- COPYFILES.BAT | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/COPYFILES.BAT b/COPYFILES.BAT index dbb0a3815..77f04555e 100644 --- a/COPYFILES.BAT +++ b/COPYFILES.BAT @@ -9,6 +9,7 @@ echo *************************************************************** cd %systemdrive%\users\%username%\Desktop\Sonoff-Tasmota-development\.pioenvs copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin +copy sonoff-BR\firmware.bin sonoff_KNX-BR.bin copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin copy sonoff-CZ\firmware.bin sonoff_KNX-CZ.bin copy sonoff-DE\firmware.bin sonoff_KNX-DE.bin @@ -24,8 +25,7 @@ copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin copy sonoff-minimal\firmware.bin sonoff_minimal.bin copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin -copy sonoff-PT_PT\firmware.bin sonoff_KNX-PT_PT.bin -copy sonoff-PT_BR\firmware.bin sonoff_KNX-PT_BR.bin +copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin From 7fe5cf9fa8cc98f5514b637b8a9b46dd4e39c6ab Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 13:45:22 -0300 Subject: [PATCH 365/435] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index b383b57a9..6a55fb158 100644 --- a/README.md +++ b/README.md @@ -148,6 +148,8 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re * [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions * [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions * [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions +* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXD](https://github.com/knxd/knxd) use. +* And many others providing testing, bug reporting and feature requests. ----------------------------------------------------------------------------------------------------------------------------------- From 2a0cc518f632e2c2bd157a08a591a2d8cf9dff41 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 15 May 2018 13:50:26 -0300 Subject: [PATCH 366/435] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6a55fb158..0376be29c 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast re * [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions * [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions * [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions -* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXD](https://github.com/knxd/knxd) use. +* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXd](https://github.com/knxd/knxd) use. * And many others providing testing, bug reporting and feature requests. ----------------------------------------------------------------------------------------------------------------------------------- From 205481629c10230331359e8351cd7253e6af20d9 Mon Sep 17 00:00:00 2001 From: ascillato Date: Wed, 16 May 2018 04:20:35 -0300 Subject: [PATCH 367/435] Added KNX Communication Enhancement Added option to enable KNX Communication Enhancement. If activated, will make the device send 3 times the same telegram drastically reducing the telegram lost. This improves issue #78 --- sonoff/language/bg-BG.h | 1 + sonoff/language/cs-CZ.h | 1 + sonoff/language/de-DE.h | 1 + sonoff/language/el-GR.h | 1 + sonoff/language/en-GB.h | 1 + sonoff/language/es-AR.h | 1 + sonoff/language/fr-FR.h | 1 + sonoff/language/hu-HU.h | 1 + sonoff/language/it-IT.h | 1 + sonoff/language/nl-NL.h | 1 + sonoff/language/pl-PL.h | 1 + sonoff/language/pt-BR.h | 1 + sonoff/language/pt-PT.h | 1 + sonoff/language/ru-RU.h | 1 + sonoff/language/zh-CN.h | 1 + sonoff/language/zh-TW.h | 1 + sonoff/settings.h | 4 ++-- sonoff/xdrv_11_knx.ino | 52 +++++++++++++++++++++++++++++++++++++---- 18 files changed, 66 insertions(+), 6 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 4e4bbae5b..fe009b0a7 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Друго" #define D_SENT_TO "изпратен до" #define D_KNX_WARNING "Груповият адрес ( 0 / 0 / 0 ) е резервиран и не може да бъде използван." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Използвана енергия днес" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 73e2098c5..5a154ec68 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Jiné" #define D_SENT_TO "pošli" #define D_KNX_WARNING "Skupinová adresa ( 0 / 0 / 0 ) je rezervována a nemůže být použita." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Spotřeba Dnes" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 35a9f3dad..b8836f4cb 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index e23f629b0..5985028d4 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Αλλο" #define D_SENT_TO "αποστολή σε" #define D_KNX_WARNING "Η Ομάδα Διευθύνσεων ( 0 / 0 / 0 ) είναι δεσμευμένη και δεν μπορεί να χρησιμοποιηθεί." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Σήμερα" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 4f97a5eef..0bbef570f 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 15dac69ab..bdbd2ba09 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Otro" #define D_SENT_TO "enviada a" #define D_KNX_WARNING "La dirección de grupo ( 0 / 0 / 0 ) está reservada y no puede ser utilizada." +#define D_KNX_ENHANCEMENT "Mejora de Comunicación" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energía Hoy" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 26cee81e9..af25aca11 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Autre" #define D_SENT_TO "envoyé à" #define D_KNX_WARNING "L'Adresse de Groupe ( 0 / 0 / 0 ) est réservée et ne peut être utilisée." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xsns_03_energy.ino #define D_ENERGY_TODAY "Énergie aujourd'hui" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 5ecab817b..4bd62644c 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Mai Energia" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 91808c973..9684632cf 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Altro" #define D_SENT_TO "invia a" #define D_KNX_WARNING "L'indirizzo del gruppo ( 0 / 0 / 0 ) è riservato e non può essere usato." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Oggi" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 86125053e..c8c78a49e 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Overige" #define D_SENT_TO "verzend naar" #define D_KNX_WARNING "Groep adres (0/0/0) is gereserveerd en mag niet worden gebruikt." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Verbruik vandaag" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 688c3507e..3d85f0734 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Dzisiaj" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 6bf9a6211..b62105859 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Outros" #define D_SENT_TO "Enviar para" #define D_KNX_WARNING "O endereço ( 0 / 0 / 0 ) é reservado e não pode ser usado." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Consumo energético de hoje" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 68d7cd1c5..60c4bac3f 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Consumo energético de hoje" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 85540343d..42bcf0628 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "Энергия Сегодня" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 853c68389..0766a9d34 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 5986dc804..96610f7ca 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -400,6 +400,7 @@ #define D_KNX_COMMAND_OTHER "Other" #define D_SENT_TO "sent to" #define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." +#define D_KNX_ENHANCEMENT "Communication Enhancement" // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用電量" diff --git a/sonoff/settings.h b/sonoff/settings.h index ec156c85a..9faf10186 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -52,7 +52,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t rules_once : 1; // bit 24 (v5.12.0k) uint32_t knx_enabled : 1; // bit 25 (v5.12.0l) KNX uint32_t device_index_enable : 1; // bit 26 (v5.13.1a) - uint32_t spare27 : 1; + uint32_t knx_enable_enhancement : 1; // bit 27 (v5.14.1b) KNX uint32_t spare28 : 1; uint32_t spare29 : 1; uint32_t spare30 : 1; @@ -319,4 +319,4 @@ struct XDRVMAILBOX { ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif -#endif // _SETTINGS_H_ \ No newline at end of file +#endif // _SETTINGS_H_ diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 89959d269..4b249a218 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -50,6 +50,8 @@ byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, t #include +//#include + //void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library // when an action is requested by another KNX Device @@ -60,9 +62,11 @@ address_t KNX_addr; // KNX Address converter variable #define KNX_TEMPERATURE 17 #define KNX_HUMIDITY 18 #define KNX_MAX_device_param 18 +#define TOGGLE_INHIBIT_TIME 10 // 10*50mseg = 500mseg float last_temp; float last_hum; +byte toggle_inhibit; typedef struct __device_parameters { @@ -461,21 +465,38 @@ void KNX_CB_Action(message_t const &msg, void *arg) } else if (chan->type < 17) // Toggle Relays { - ExecuteCommandPower((chan->type) -8, 2); + if (!toggle_inhibit) { + ExecuteCommandPower((chan->type) -8, 2); + if (Settings.flag.knx_enable_enhancement) { + toggle_inhibit = TOGGLE_INHIBIT_TIME; + } + } } break; case KNX_CT_READ: if (chan->type < 9) // reply Relays status { knx.answer_1bit(msg.received_on, chan->last_state); + if (Settings.flag.knx_enable_enhancement) { + knx.answer_1bit(msg.received_on, chan->last_state); + knx.answer_1bit(msg.received_on, chan->last_state); + } } else if (chan->type = KNX_TEMPERATURE) // Reply Temperature { knx.answer_2byte_float(msg.received_on, last_temp); + if (Settings.flag.knx_enable_enhancement) { + knx.answer_2byte_float(msg.received_on, last_temp); + knx.answer_2byte_float(msg.received_on, last_temp); + } } else if (chan->type = KNX_HUMIDITY) // Reply Humidity { knx.answer_2byte_float(msg.received_on, last_hum); + if (Settings.flag.knx_enable_enhancement) { + knx.answer_2byte_float(msg.received_on, last_hum); + knx.answer_2byte_float(msg.received_on, last_hum); + } } break; } @@ -493,6 +514,10 @@ void KnxUpdatePowerState(byte device, power_t state) while ( i != KNX_Empty ) { KNX_addr.value = Settings.knx_GA_addr[i]; knx.write_1bit(KNX_addr, device_param[device -1].last_state); + if (Settings.flag.knx_enable_enhancement) { + knx.write_1bit(KNX_addr, device_param[device -1].last_state); + knx.write_1bit(KNX_addr, device_param[device -1].last_state); + } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), device_param_ga[device -1], device_param[device -1].last_state, @@ -522,6 +547,10 @@ void KnxSendButtonPower(byte key, byte device, byte state) while ( i != KNX_Empty ) { KNX_addr.value = Settings.knx_GA_addr[i]; knx.write_1bit(KNX_addr, !(state == 0)); + if (Settings.flag.knx_enable_enhancement) { + knx.write_1bit(KNX_addr, !(state == 0)); + knx.write_1bit(KNX_addr, !(state == 0)); + } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s = %d " D_SENT_TO " %d.%d.%d"), device_param_ga[device + 7], !(state == 0), @@ -550,6 +579,10 @@ void KnxSensor(byte sensor_type, float value) while ( i != KNX_Empty ) { KNX_addr.value = Settings.knx_GA_addr[i]; knx.write_2byte_float(KNX_addr, value); + if (Settings.flag.knx_enable_enhancement) { + knx.write_2byte_float(KNX_addr, value); + knx.write_2byte_float(KNX_addr, value); + } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX "%s " D_SENT_TO " %d.%d.%d "), device_param_ga[sensor_type -1], @@ -578,8 +611,11 @@ const char HTTP_FORM_KNX[] PROGMEM = "

" D_KNX_PHYSICAL_ADDRESS_NOTE "

" "" D_KNX_ENABLE " " D_KNX_ENABLE "

" + ">" D_KNX_ENHANCEMENT "

" "

" "" D_KNX_GROUP_ADDRESS_TO_WRITE "
" @@ -696,6 +732,8 @@ void HandleKNXConfiguration() page.replace(F("{knl"), String(KNX_physs_addr.pa.line)); page.replace(F("{knm"), String(KNX_physs_addr.pa.member)); if ( Settings.flag.knx_enabled ) { page += F(" checked"); } + page += FPSTR(HTTP_FORM_KNX1); + if ( Settings.flag.knx_enable_enhancement ) { page += F(" checked"); } page += FPSTR(HTTP_FORM_KNX2); for (byte i = 0; i < KNX_MAX_device_param ; i++) @@ -822,8 +860,9 @@ void KNX_Save_Settings() address_t KNX_addr; Settings.flag.knx_enabled = WebServer->hasArg("b1"); - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ENABLED ": %d "), - Settings.flag.knx_enabled); + Settings.flag.knx_enable_enhancement = WebServer->hasArg("b2"); + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_KNX D_ENABLED ": %d, " D_KNX_ENHANCEMENT ": %d"), + Settings.flag.knx_enabled, Settings.flag.knx_enable_enhancement ); AddLog(LOG_LEVEL_DEBUG); stmp = WebServer->arg("area"); @@ -883,6 +922,11 @@ boolean Xdrv11(byte function) case FUNC_LOOP: knx.loop(); // Process knx events break; + case FUNC_EVERY_50_MSECOND: + if (toggle_inhibit) { + toggle_inhibit--; + } + break; // case FUNC_COMMAND: // result = KNXCommand(); // break; From d8b57db15db934e672adf11616f915e29379b5c9 Mon Sep 17 00:00:00 2001 From: ascillato Date: Wed, 16 May 2018 04:52:24 -0300 Subject: [PATCH 368/435] Upgrade Figures --- .github/KNX_menu.jpg | Bin 93559 -> 77343 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg index 8260994e0d208c9abf3a448f88137fb043d3d43b..1fea0abf6b3cbd49f4d8487e5497311527f46991 100644 GIT binary patch literal 77343 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%0Dc= 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 diff --git a/.github/4.jpg b/.github/4.jpg deleted file mode 100644 index d81e3854c3d408c40fb000b8f4a2e3942e81ebb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80450 zcmeFZ2{_d6`!7C{w2)*AF_pD!WsPK#>>-2@Qb6vl4&h`8Mum5$OH_vR|@AusI^W4w>TWWj|2PnvvY7B;N<+<4jwvk=-|P_ z2RS(pb00o@gbO@44;|&<<~sWK_1~NPz5MT0;4jxf&Vzr?_@6uWzC(Bq?z^^6ft~FP zWFIdZJ1^T_3j_**uyKIW{uTJY9&G#A_j4QoMLK*0JfZR!C_X#;K2TVW{rkbQL&3j8 z_VaQaKYc;>0H5Vu&NC1Bm7l)-bWq}IX`_HuA5~Jt29-as<-^YIb0f9lm5ziu@N45X0>H-3yPxCqg#*WREjjN#5z&|TAP>vSFOo0*=_g$ogoHQpcW_8_Bl9Pv!5Rhd$X@5#3xUMt&4lnV5| zXfcT4pPi61UyqMwIyV?3E><_#jN+>`cA$Qi@Z>$n!9B=SChP?GShxql`6NtXN9WrH z0`;aWnnGmZBv^|#%y?k)0L?s?R-omRG4jClAX@~Fx~hceq?GnsrCy8(W~vS*hIfMj ziiRz*oUJ<*HCro1Q}E-94Wc8IwwL#^n%;V;zwln;{(0k7LYZ4q+`HA7+5|Sj8LceQ z;m89k^WDgmL5Jut6Eg;`Dz#QRZ9d7=I?3^p!N_Ww8FBb*NXPv@c8DCtd;PG-tmete zyw+Z#A-#XMMn|}vX5y`(Pvstt^PsNX{Mz@YqxX61cs+4@v1UA(VxRT0^x@pTkCAd8 zMt-Pcskfno?}7JFziEGRFvM(t$l?t|n-iQqFUpu`R%>;<(3?SjJ(^+AEBUf2nM3ZP zro~(ROFhRv*xBZFQkDfI=lf(H6U>UT6NA#c`n-+**xJ>u`y&E^?bS;d1^SQnAp4n8 zBq$qGib{_o^$Ls!&bRD@#ys>&-R(}V|BzbLqaxX0R`;+~Bw5DmT#PIvS<`jflyQMI zgss3(qR1#>7fV^CHH;HlzV^b;6n4PzRv@z33h_&ycThyKj$!a#e!~EJFXp(kpFd2$W4Td+I%CE>8C zcQC5W+6#DP6q64*4R2LCh8Clxyskr#<#zRqYAUJng2#wFr5(y?qwpK`RpAqw`!78h zaO*V5oO*H@K4r%gz1&PI_Xsm>TRY+?SGbt7SzeufDCFh`!L=0Dgm% zFkElxupAlwyP0*wehN=)H|zIPVq>1!%}i_Fsd}1^d|5mRh<)tqTbWCi{wfr1`yAQ9 zWgmMg=*HUNo-(;iBoafl-Q}Ccw8EZ?p8#^G7_vqqz&h`xr%#3KeBSHa4lM9pfMNKguhQFIaKds<7Sg&Q9?sAfyTxYmT~mC`NB>OA`MW=T4f} zsw|tx%~*hQq|r^AZ+eX|LP}{=fKHFJt_cS+rWM~FsQ#>*iLf>E2=JD?(bFdSewFl6 z_{_TtLJCLMW8Map@f(ob_8<{2bPmE+2Bz>aRShCQwI8*xHMqVi0z--e43a0>n{egl z;ffo*shZNaejAmjg*&wr@ky`G3d~{GG;gZS&Ej_J#$0w!rko4$MKna3j{7M2g)lR- zSzZdpMcaPA8Ew&2*lQT|2A&Hov-|Ne{#gT*+8d*D4sAVH5k=zz;7u;yoe%^ETne4| zzGSsX!6oL0jllH@SC!a&1EXyyeIArC+^z{qH5KzEZ+(X!8uucML@_O)k!sy4ZNZ)q ztYeI!4As<0OPuMC9Ay{%gWk^WT+82{hzj?7j?vt43RAv;&rFy_x%~-Vxal&pf-mvw zoG6xiuRs_=6zm}M(e0qFXRBUO?dT}#d~AbkplG`|$B4GmXNN#ca|S<_p~$eOh2{8) zsPf*DO4@9>nDjo$tc7;}_w@{i=~x&$I0BB^JjG}$;5~H@(kjjk#8D?n8cmZ&@G+Y_ zT!GQUjjNlNrOs@K%yovyb)^|69?v(-$kuFRM zO(w#*t6581UAgPzFVnCxZ7cI@`a|A7J9P=Sj7mhdCd)aQ{G}MAlSCuy3>DwV6Z@8V znKsnio(*);C-u#gjSSPumP{WHVsAuG=Fh2kV=>mY9*{|1+w&1xmNr?KFwl@AEMT>!gbE=L7G$?_8>DR zkpFWY>)QY6m;Yl2e`n4ArX2`PPqrw?kZ|D@dyr!bc6?3DnOct{@SVqHK8L`#eWk2s_-* z@-`5ojnuvBbkaGUEF}dLp<~YuK0tSs!-J8VFqt!dfhE%ge7ucmyrO-C=1aE&9&)~D z5C)d7mi=mwLu(HBIbAYw^r(uIa9oC0n(-?sN$XZ_sTQiw5g+}mS8C<~BvCI|%B%?} zE{l1a8dMJGF|HwY^j|+Mc(p9|ve@B>KezTn$v8)uhCj^dH(W1Mu9th)G3wnMn7kbl(KI~2T9VYi^9 z0jflKwDWxr@_c;{@@z1$!t>B)$KoXMR9IhIwB$x?!+!1gp5HDyx~{CRtVK&Ztx73N zThwICT>%BfYE3@}hxOUp1pA`n#uejP9-<*--jzk^4@q3ye!@QKH_+G7*TwPPyU()AhRi?l0EIoDd z$$?vT%iR1QQYwgfjriGa* zhEXj_#LyOL;9|Viv~} z?2TL7>1Q^C>0M_?2D|q&za~k^n)6T!a(7tk=aff^;tgoLo6xR}# z;P1Vg7a*4N1qF>Sd!O0dMt+6CF*Nu$emnWIvibUe ziuaoqT$8%|ca3lp6aK_*>XcUL7(JXc;fIQeY%Qs(CzHLb8t zN2kh}?cLmTiX36f)_>uPb;7eOsXnQtL`^kHAc0;*aCBsWPRM)@az`l|OSJ@}+ukX| z=!(f_%7_W&T`b!8Kwc1)*j`f{KiqJs?6v5`x8b-WfNvv&#TGj(!FlF~S8OkP`;@FnI_d?MT`t@H z`V)Tvt+;YL`y_grAr4-35*^C806rTtImtYuTTOT|j0Zddxo03|aG@B}=`=@Mjce4b`d*Nv|e&hpqx4 z{0rKbh;W#le% z%nB#ZW(nfszB)&G!ye=?%fHg^f(Et224`AZ4-Mdyw35lP8yR zqh&wt`!`K)BY<@zhk-yl?WSS8P`|gnW4P)t`GK4!Kp#0sTa)DYN=(kIp(c5>`0;PO zYp9~)*M=3AET;|O!*K#GR4~h=UI}(y2Kj7 zIV z=i&SDQ~8tNT5yjCkhTC(hDbMwCuTyc5_sd<#}vo|-e(SnoeJz+cZ|}1el`A}TUx*Y z!z2lt^}%oVY!tO}M*?%aeP(9j2MQk|6o`H7DRn7+GNE5GGl_ppjB#ZS<*Nj_c>v?1 z#H;r)FqM2`_XEb0TgjG6>u;@kGaM{7+g49!Y533Y{sn;vQuQ)tuIV@*}*wovHEjw{^iK*hr~qOi=Qj5FHO~XA7sg}r~W|!N^z8NveIumy6Efq zX}_ropqh51B^dJzEu#NL!$(O`itA_T^%7C+IZb|)Rc*Sm9260J^K%XcA>u7nza;yu zcoHE;8F3*W>3QHSB_v54mDLDXbQ`4)32ZNe2;eWKia;Ce=CcliCXZ^T1h?M+I;awD z8a13ROE~H)D!3$`n*#9Z}Gr90G5W1XP0#d9|Hv z5czRI{M6UJ`(bj6cIpJ__kP+Av6(-s;-!|n%tXJ$LQ@s4T@NVmskF&1AP^=lBxAdD z95sj}Q>TgOnLhJ?hU7=DYbP{nK=0wW?obQ;I%xMJ08hOMKY~6<6KVv}sQQjjoQ?we z9u5DjsInI@L@OryIujifJ_a<@SL17{sv^bSepfcDAA7>TD!k3fI%EdUYL#IfZYK9` zO@kuZWmrchu)G;_Buvih2rAoY2}($P{mOkl(NxZJ{@c3it*-p_ew!HYi!$t5ww5_s z(H2H$)pvC4WiJJk2Ulhy@`|6|^wKKLB~|8=;+Lv3XG)fm(^pe}?FMHy=mDDGmt_NR zn&~w3B})P+&IdG7d#9r!(HHKL3hLa+D9+mmE%hu^fQWLl`)T*+x>oTqqh~5 zYgEjppnyCyVzV~}f0!vmhDJdJ8~Dc2sIvHt?=?}c?mr$X8yP)*R;M>jZuz};v54l| zX91Q?m}k>JtetyI!n%u4sEjJ-lB7|e70RR4YBBRy@T3G(pLBIbUrl{nQGUr=COF(2 zXzEtGlVN)TS_UwrC6M+Yk*t$Q-@p(%n#Oa5KX>!$S9r4%+Pwwla!^5jvo9e()mKmM zK?*n6tj0NG@l$y$(X!pbO3-c^_EUvg;4#o+bilQ-pCi&rw75X08CfrGVjw z!fy5g&mOAA2uVJTurCVorYDW0;?yX_6i3S4u5rAE8MKIk+-gXk*nwWROGQfqNLLan zGE8`|q>@LVJ0u@ri_NO8%u-RoH(ojPwo+dl!NaYo)7 zDzYM(L2rj&R8vrkyX9dtaqalosg(e@fy9B&XpqE@hfYm0*lz7X7PW4OMlsJ8L0K4W zFe?ygkO!I?Kc*?QZx1rR(TV|XdSRGv;g`{JyLk;40^3=KBSNQ?1OT`hRioLDs{W~P zAs9KSiz!?h(EaS_u-ibH<`%2bx^TXczsKLm!Mlu?AAZa7K%R*}Rz(7`AwJQGajA8& zX4&I$Uh0sH=@$o!c>#q>g~rJ8MZbI77J#(_jL8Zt*@GO8wE)GG1w~TJ+Jp4YgGij3 zKez|kK2uX8D?1CDHuKzrY;2S8%yVimmQfaqe>iRr0?Pn{-KH#Ske7;HTKLEV8)8CH zQ&>?z-Asqk0$n6jR1LKI7CVo(%46=-B_NF5-5Inj4`B}dV2(#vUf2wZ3f+xz--8Ue zZ~8rE`^oggV@-fdq^?5y+^XuTz7nbDo*%N`YJH!zzxC+gsbhwx2I17)3d}Z>24@L~ zVD})Bmb6Kh5hez|!U2Yl*=tVvEk)dQuS@HGe!gY!ZfwS1_>>#t&E*B3&gq6IB~VYK z;T{CrD**CumIZr|b$#eR?q}D7{kjLC7}Da%78E?Kxe3q5)W``G(x>)BOcz-<>zu&V zN8P9&I8~ouV=sxXeu=KCO{UJRuq-rzvB~MYNDmhfHt3Ml~oyK4OqS0yPlc}uKvrb#PlQ!e;u>a_F%YSEN0_~b$yy&aI zX@)NXe%P<~W$Jt@bXgWvMs zG;sxRNm~R%S24g946!a^ibBi+aZJ8E*7bntxZNkytV)V1#O`0=Ykls&!1kML6je)o z2>*ZA1h#8IC)^ME&j9B2-5S_mOnZ}R@w}27*@QoeMoDLp<(8qxS~JHz={&x<J7Y;dSpc33@bWxPTNC|_Sim}h^?>7r-JGINB4P?s)i z_i_U;P>&q|&bVMq?)Lp2CiD$161YB|a*KALyaH&%c2AItc7TzBX=PGwnWv}32*FlllYz`npxAN4j_9AouN9)!8W zUrli0qnh_1C+l>wrauV&+8@ubdcFs_9xp6maC>e2c4x%?C#XZ5k{(M~K}@3@`Yg4C zb;y|NOMf(?16hJsa7L*{Jp)pCc$SB?6!UW6X~>szLlozwxjy%M^%yx10&iVm1onbW z7UmmEBCOY$4QM6B9Ytm+QehEHo1#Fic}mRz(47yDj5wTRyk!#Yr3^eJ$4`3KDCb=$ z=(*|owMa_p;!SIZL9EKUV|ESG$7&N%WYZD-@NqSqI{l-zAtjU|aH2$V!0Zw<7GIjj zJT60?U)iJ{p?{$oL};|i@kHpz13{SSxaZiTAfUyW4sJdz==E|oE%_siypR^V#pA;{hBipm&sCKck z?{hS7%Cwoo@KDw2_{cnpDPVnNw*WTv5nd|unkh;xna0F599Ki%7(O& zp1qH1o~P|k_1kT+{d~;vLdeUZd-jqsA0f%>@X-y{p{Jxc2&NICa{xq+JS)8@s@zm> z1d~1B;}T8%)5jv}AXh-CJkIjgc+bdjqp~a7yBn8^xnjNu8!o#GsJgG@F6sIZ8B^2C zNcH~u#59Cl#h)SuA*{#IUMW7&V{78vS_mRUGNlnlz0&&|NAg&)p|+DVur!TkI5lP> zu$@#@L~;^`QI0tFRxWO|L!$2!yH1(4iq1SLzR>wvE*_j=&oPac8M{Ld}Aw$B#35NC_D&h`>6VTeTM9i7_uzjl8XbVBbomS`M& z1fm*ZErCFXfiBDw14#A8!jL7vDb8n@dyH50utq$uyf)8tt&Gsd_OO3Va=KVyeODsyTLlAe1B>C-p&VE5;Q^by(a{ePa-? zq>fX^@p&EZ{Q2Ss*27?2sryW%B1Ye{IQsX?!4j*6p6tZ&+GX6$RR7?W6sPOEF``)iM~c0k9v6njK4OhP+ZdUuw$JGh*J#PCniyLHh1mai; zIevbf{{Yvvn_gN8zR8ryHO+;An^Ofv@up7B>66yoYOshf$#0;wr7Yl&@tKWJi&{KS zX@G(yHWXfTO23zXdA5%8+WEPQ<2Vk2`qUdE&hh-r(mZh!%j~K+4VIav8B5uJ9p_{+ zyF2sQFR5fb#sz<{Bz+g;iayK!<>+R0&R~8_PQe&QL3otgwNyf5v`r`hLDaV8n^dKz zAl!5bj2BJ2_376hr0Q7v~e^89;`FIRaXQp^h4` z&bYp=Ekjy61Xy41M>X{Eg%*=K&76v@yKI%E8~r#HKZ{~I9l7JeGNTKOyB-90bk*bc zr_6*$%NG14_Sh4LVKd(X16bc3@>q$8AxE;(Ywf#JdDM5*xTpAO4JUYudX0Y-rs~cB z=Bw%``}<0zi3oa}>}Q_S=hx;Qgjw7A#ceB!gHnDK1U1PK@$-AEFtA}U+>0_SuS~B( zEQyJ%Bm0*|oRNMZg+|G+VH1w8V+q z6EH0a&3JMLw|zBaH^7*}pTOeHR22e9I{lI$$VjX9PSYdnVkVS-jRZ_MOgh50IC* zujQ955>^y+x&FgGV~#pe;hVzF#?C=*$?(q$nN=Ug(phl-$w$9>E_}7r7vT7dB}?2j}626G%Bh04_TdwhfQ-}@X& z&D7@EgIq;L!l;(0JxGh4ojw>&{PWYlkp6$`mcBdCCe&fT<7PC&jM^LZhwsoF2F`}8n(4-~qp6%C#rBi?T7Gvmq^*R*^tY;Upun9(V!zAyZr zqWvcc{2%Uv12WH9B7koruG=pQz+CGuc8h5lu>ak2m6(uCmWu&WE=Z=1(G^el2WJl3D?#O$eE`g z3ysznF#GE`cwST#9^Zr1c*Aei)R!?_rO)?r=fuz?_>zRm@1R@y_-8LR*RL`pKVT=3 zO6ny!Z38!FEkhIW!m=gR9U8MC&>MX>nR&xIDP{T$BBp4~Sr4)FHDpZb_mU7SjE|0xcd`sZlJIFrof>*vD3ff5n zNf_1imAZ;o0fP&-$PXH?jQ8TIdKa zLo|U>=6t!&viiKx-eq4DqTmy%rjLd)U}3*Aly=J+*aAy#P}eBj3*X^u3HylPv}n-wK9DP!q4 z6rz)2&dB|;L4WI|98r^^kv#UA9=zOLUT#Zt(n-U%JBXFUdZX2(OLGiKmxyQmL_^OO zlO0DXE`j9a$5EFEl0h!E57Y~dp1ir`VcP&wci!55`QQqCN9P2A2^-Xw$y!c<9z>gz z6a+qRB3o5{ec`nuAtd;~%xCN9Pl0{AxsXgf>ABx$5+vFtskRE%Q>exgK17DjHvsjC zX--{hNdj&YRzE%70a46=T1;@FNJU#vs*%EQlg(R7>LZHwJ&v?_`{xg17n(9BOw1>e z(xp7AN>cnQQ``vsmX(I$(FFP~A^(p9<>wy@qb&riW}ze=b2koO9dYUf5XOk9L~ zJ;Ibqe;+Ea6+GO{mw*6E+m-$vX z;=ygHq0OP5qQElq{!ZH?#&gI(_el4I`w!FnycdZ|6eKNSnx_@|TAYVg^@-ZsYKP%& z5Of3>#)B1LR^PL9?6#?Ne#SNWhL?t08~#qrtdvy%Zk+VBz~OvmVed6^_Z}p1$RNee zb7dug__%*)dY&??ixLJStyx234Z^x3(tFbuwc;f=hZSLs>c~>(oA9HU+u`lHNPKMA znZAnHhmzseVqff1^~YC=?(ct+b?DTUT)k6=Zyhr~5y;a92jmCU8zg~r%rrg*UIrrN z`(c7hID)G4VcPJQ0un}e46)kfSEie!l7V5h(Z^u^}t>XV)mL7P?)v33T*YFX<6Wfql_T?RyB_1tu$!R*h? zH-|3FMii?6kbm^h7(>dKi4 z6g8C_Dod0VDj(vd$FoTY@K0*rPBBEanQpvd(h*V0A;?{&zM_i78qZBa7Zo&Z_>0v2 z!MLc+P^H`bb3tcbZ&=ir76yrHifHm1Ju5hSM(aH1b6d{+;C=#DyYopPf0An5OZYqo z6-LA2n!W4OEIygYbOjc{uZdktpm=@|=`fZaV)qmu5a=;af6!o0!w7hwxOBI}kk~>-H+NFDRm}RZwl+9=ovi zJCFXpa<>%Yjy-@js(9Wsgtl;VPZbrN#vr+9Kd3+7jB!}1y4)I*PqPc2{;CpP<86L& z8MRT5?U_s%E&QA@lPJCh?_v%U&;y1AmheQacFLz9>Lh)3_hSQCm+OEBLP)SzlPA7B zt^y)MvO5VHkuE7s1YM)d>c{Hcg-$`oTM_$XW2b&hSGDs`B!R+9fO7$j*0Oj8FIW0r z&uNj?940W-AYHd_sV9Kd7rj}*ea~i)Fojii?0Zn~z~k+E!cDH0RI8dut>ik76^i$o zj%jv<^O}ZjF+;{L`)+W2?s)Z0A_}RO(c4fL=SG?Pg8`?+JgON=fH~}bV!>FQ>MYgg z!(Ajy^BzPfu)In9V);{(R>4BVr=Aj3ub_2B7f+u|nJ;!{hpQ)F>zo?egShYza`0dp zB`S5cBofWTFok2h5F$l|2WJ4&%VQwdi)cSVuu>ZomehK1|J+1@k>^L3;DO^496_BpO^usn#4E7-fbAS@|dv1BC5WYjL4!yQ-PhaS>2XZ4Jg{=GkA` zd{ev9L_KQn^ZQv}2Ub4bmcQ_EHMsmjm&(a<6_w-0(hXN>Ta-fDI*Ki^!oSP~7vVpxXAEa~l?$vsc$sMQUr1a- zl?xjvRF>Gc>j&Un7Mgr#V(S;x_*3jv2~M!2rIp&>jQD6Eg%0wz;l&F(GA$PDfQBKE zLbaRfo_tv+j39UQ@}h54bGs!6xW^N~?NF2|ZodaB@#P)#XSa?^bsF7s%8;XF(Fe(%8}SnreR&#R^?JgzFr0sT z$1_?jz)wYIQB*DlKgwVo79z(*TcWvsZBlre3DDThVcH2G-BqlvU+)uGe1BfJ(ZjQ??HM~>YsCec24;xQuOj9sewddB>cF%SQo-+GOnm=NrIZgn zWxY1^tv(u-!7`!Oveq4+=2bD6?4CMwirVXky9b@%w^sQAonc9Uf zU&qybt6I;h#YGGKZ11X>JY~6FSxyeh6UUz_WPk-fxQdoiA$ zU$T!KJX4YV_HOL^_ck}(-+h2wHVg9#Yk^hid}(ikv$MFdN0ui~D6-B0M4RE+q1$7K zFt&cf7pnnquVc;fzNYe-*BnEx1y0-xZ6&=F*WIzcS1y%p`cU%G?Q?7rZO>Kx+a=G+ z-{kvs{NYmY@Z&YDV_&KgT}BFxYXgkO;Wfy|6u-=Zk#y*6VoHZ`PFQzN2TbGY?HyXy5HfV=xe84jZ*Ij@GhyYEz= zg3lycRScv;u=_FXIciiOpKy~<md$+f&!+9jIyA5ck-kK2 zXMKOL2XXjIIQ-kXF;B?9Qvv-qS49C+u@b08C_{F5a>sixpPk_OKPY7b;Yut)<3+>% zu!#w7pde?V2KPc+lw8EC%|sSWCej68uGkm- z1{OK_pAZ+jALB_M;8WwZmvo-2PRl+{Sr|+imrSoA^j;M+7@+K+sXoMcgTB=^{~1@c zSy-9HN6B_DNaDqe0x zHm5UbG9*k0H`g{kBKLb+<2vYX?wWzr(P%Pe|6+pHK_2c zvi>?vRUr-QW?^9IU1hA=|PhqZN=7!k&1lvs69E;PN%gcrWTnh zA`VO3N1Q}+u{ZF^Q*q_(v*+rJg@bNo$8>fKv6}JaQ89S8-iR7_^SEyt3rfR2V~Xb5 zFNER9r+xmzZ^d5wv8`hDb2})-@jd_LPsl!a84k0H*skvFxdLAU6gS{oA z<9a~>?vMK49{uFD)OkPY%2C}38Ney94wx{G$W zNuh7Jrrv2Hiu(n(WTr=dd~0 zcP@7Os7YcMSo-h2t4EJ1rRwBNPx3hi!rJiMXj7q=%*zE62pOAF`_?*of}XEe`IYr% zh04K&YrZYh(dRLVg&`dL8X-ZdBcB7{aohKK`&o#*g(2(&zBkn3tzR4<9q_UagJfJA z55$w|w1(>$SAnBljR7hSfQ|fpw7U1y;Av&TcSUF8)2?B+^;LV%B;N56v%eOWPP3qc ziGauy^4gQ&d8Q;B+$#_XE$sTd4ZX7gtHLd6Xa%Iy{uDRR>6`Ou!TS1Wj$JN`F81i| z9vKIVP*7c4PCJv1&+2D8_aJq6s?-U5y}pth!rLMVppf8F^V@nLp(;E(Hw9oj_!hXQ` zSlj@vwI3}EF|INx zu$*Wq(3$EKunlKUPN?x$X)A%~wG0>CAjwXYA;sO{nyLQ&`C+jUEWbj!MFP-nMrtw@7mrB znZV_yNwGRJ@>&GA*QZWns&*1;cpq(<6NqiH0$!OmR9C&c6HXsjSX+?}p8_|eMCK%G z9+!P6qO1ZdWoqeMSKtXpuF?7`X?f4U>>_ulTDqQb zM%NFg%R<+`mh#Gn8z`KqjP6O0jeR@n|K!KX8Nii(oE9^|56I;K1Ej%>iw%Gb`2dak zb*b;iAd%-dx0=w|7(raIqP_E??V9iS=lsMLm3`$Zb_1$5zL#OO9VkYWk40+PNWk#c zoz=DZ-aSZ?K;9nYDJH4N4c$rx-D+|gi3d0f*0OtcLtBMJxZ7U2`f|R|)=qZz!@Vpv z`;hF9iu6#f+M5ra#fyLKxvX}vMW0+9B91$rAeU!4j~u0=>(l@`$2H9Y9oD?oG* z(;~G6VzoTzkM9}BW+E6a>PwQLWfGmO8TLm)HT69@tAn)cOD<`IZcTdB7)!aun=1~? zFF$4>9u=uq;v6rJk9INnsO>N71gI&^1Xv8y3`thvMfYUh zq|C1MENuA@BiqP-)c9>eoUoQt$0Pt23tVfc^+1Ok8Q4rc`{K_Svar*uJHd;F0H!xBBYL@*EXiR7MR0 zkjfVPZH6z&wQPbxeZx08t+ra%MmgIjPd4xdn!}EvuY*wsQ-Nn6&@kENposUF+KSS{ zeS2nnnAq@cq+2za;;q{ERb%4b_K`2q``UC~WL6}O<#a2ob#Khg*HG4wd02lBgAWMZ zs~Im9;kVY;?YC}ctm68|-)_WFI2fE>&`QN>s`YJJRLp(Xkp`hyKD@+^I zyW9|g=cWZ2!<@C1U*A7XcF`|xGJ0eX)y(r-&J;i}P|WMVkDA$TCX83LHbj#8r)m$f zP;-spV!Hf-7{ui>Jlq_-jf_C1ch@~#8@$;nxr(m`%a){sl?>u*h(#p@kG8Tp6l}5E z^3@5O7LIFuwVvo#*&r{ff;L7_C-nfm0NT~I4SFDzvROe7I|0sdr-2r$QHP&6b;4}| zp2%h4ak4-JoqSeB_xQB|K_xkcVPo8A2}?kzeJw^@i$!38+0@9Ag2kG+-wo|EAUCv| zU>4r)@xH!poMq0WnAKKIksofJJ6D~)x;5flOs}6k6o-gXbr=a&KGaSa05h;E$g#h)Wt+QN}dilbxh;J3=vE(%tlH2 z8%xc)y8}{T^xE1(Awy#JK15VEE&#y!5alH1N`9wZ8PPe5_5&(u&Cb6z*SLrP0SST- zJCorr9s`>P|6G>q9rb&NJa2zGB(1A((MD4L;UU}@o0MUHg{6Z=rfH_>>JpPUMChc9 zN`1WSHnW2V+!vDK>&N43@9Oj4eDd$42HF0ZY8-imY1G2ZwErEB-$$X#&I4CC{sqw& z{@pWzT-z26I|zbc1JEu8d~&Xc59ssXVEdnH0$`P;2myeaJtvVw3*Rf|2@ccgOCt6& zr_(&guEv}zKi&f2-?$>mZ}(vdUy*_R=w#oF`Lt|n?WO!q!8Mii-PrGx!K1f%gaD&P zfi$muzpWm&1`u?LP$i3kxZ(IiMX0;R({H#?25gC}Q_+yp{~{a+LTPEN!%wLmQ!ok? z+9c+Cn`SoO(xD2*o6QqYs!lCQuC2_aQ>G2;aglJiDyWn8!Ode(=P>hOUzkpyGx^r9 z74%(K1nSXn9P|ZK<}={6@Xf}>7TkJ|d!N-DW0Zg6&G!rEzVmLSsQSTYR`wubmmeSU zTmg4zJ;ijv^}d3cbx39%AK8M*Z_xgK33 zllx*Sk*Sho1@X9HVWl<5Fk&cq)BQ%63I(Cvs=J40!v;n}i&Qs>YnP(sdiEf0c!I0$ zZW-oY?*XP2wKccM6^w08B1)I41b4D6TZ8y5J{+>uc+38<&nc=tSPF5`)K_dY7DgGva^IIK%T-yTt?kg0McD)As{)L3~Bl4st|o6~=F zh zrInD1rP{8IvQVQVZF>;G)3kb!!vJ@q?l2op&=d<%)9DVFl{6s6#b|=RQib1IKIr|8 z7LB-!*Ma#3lLplZ3uHfWl=;0RdabE{^sLYA0Nqwt|C%D_)_^xeru0!nv*h%D^!`7&6!o78;D5dsn88%ZExiRK^t=TfPk_+RUa-^j zSKE+>x6Y=^hW{HPS0vlvN4`&cm18Pm;+i#ZR@Z~8S)9LJ4uDQA&c{(wp z<@5lclwlI~%XSZP9PhdCsWfgnBs8kIMio<2p0TPetaj#O(z#olM~@08J=kZ!wyO;s zi-m&q5C;mM+c_QmasIL{L(9f!58}bYrgx?c&}&}md~~qvdc?M!2fyillNX!I0F&Q8_UTqr{!x$R;UxB4dgb_ zp6`vFRe_s4z{NCDNgI4Li*<1F^D>-T4l55ktw%~%<|8RV2$O-P$BZ8sCcmUFzfX~C z#$+GcgN(CB?~H)91m>crdfVd&I^YbtP~93o7H6I>TwmwPMZJbz`fCIx1^w(A!;aW`Hk(RlEt|% zXlruGNq|f@24k{CR%aM*A4`U5MiY9@QVCS~zu0^4s3x~=eH1GSBGLtfsB{nzrHGW+ z01*-C0zy=z#t=bi5)u^=0RaI4rA2xtn-V}uB3(d4x)320QRxXK1X8@q@7_Dc+3xS0 z{hi-AzkBbvroYvp%!E${(&~Uj7uaL-u^_`#c(~9a6>#EYdT8BsK!-3)bqX{>U`ghpLK^0B0+9 zZ(R)Igy^*U3`|DmK-XK*r!GcP+B+rTo%H}aw9}aNx*m~9pEf4YgYs3w*wUWLMfAwC zl~i=KTPBRG9^2{l6w5PZ->Uy3tEKEhG{@lsdw1vbD0)iR>LvFL7xnDQYr28s zM?;6g6&=1PU`+$RM=OXPY$@MPO^Uhmtn@PS&?D*VFg~UywJLrRM_0^y7Zf8JP~8sO zM>q&dHK1_jFDX0ZrBPyJ5Vv|c;aizVlF9~uQ!!Uz=aTJvIq5oKmO4ERJYpVQl*K=U3K|9w%f+WMA0eC6jplsXr{&E8u= zF`L9LtWL*-)~Y_5tfnAada9};k0x0*)C}le*hp#pkYxWPUgK-uDL+Z)4~}P>5;$%Z zp7pWHGqr;vUHUihhbGZq!WVEJh%CgkQCg6k`B?ksvGs;icqJGbQS0crZVZX5g)Mqe zjerW40o;Po1neQw!JwC|;gQAgn}Z6NO$Op`SGwCPtNFs+-QJcNr(ZUfsYKt4diFd6 z3(W*@OXx@tEsm8&bSH-=VfpH4)C-y$PNI~0;(_%T2~Wa7qCtfA<2n1Bmm<6f zd0UL~*kd(uBbDyC^y5HqZ=v>rZsB8ew+RAZa4;Ltm!K=$kc5;auFNk!5I@(L6*t7_ zX52pU-1&oXNW!t4h%(Mhx;R5HfRh$TrR7YOY=<87l$0J+r>_;PLj?kc?WuZw_R>-E zj}O%IRorRSoKeg}tzC*&IIL)qSGsm1+JL&M2|-?4u`En;o=Fbw8KDKG^8+ zQFYv7d0Ba_&Ln~0-~gKW_P5kfg>qsRVpX5q==Z9(gS4i&_1+xd=GI1@c}^;By@)*4 z@rULf9pgp`Pb^bB1CvAFK^tM^){9fiydbpxc*n%$mQg&bJq7Yi{jRf`aW1b4RB=Eg zs{W6+Y7G^4Bg&e$92i&FEf9btypsZiWejzZ($18QXKD{kQ6XU|48x@!hCcg5j%;gv zS@>})RJqsrXsaQuRuE1C>k<=1#G5@~YXyWft{78o-_0JfhdwLTNMUJyJJ_3+s4YAi z(08BpHNwKh_jc^3$Iq>(H*Wl}DbPk}U!si}G{x1oj$Np1WwdJD(;=K+4T3tYD%(BQO_ZC4@MGC0*UeMM(!Ft`#yBh@<%vM ztuTjOy`#!Hq{Czd+sPOTg0}^_jR~Uh$1rxklOnZgb_m0RI!o1Qsm-mdoi)HmnqbY! z<6Pc$$P1qPswM6Fb$AxKu+HFODzFkNVGerF_h5y`Y(x z96rEz%hhJne~H7p@5j3bkKtRPIL?1SkJ{)0jEm@xp6^y&CL6As$}hqXCB_%dRVHbcC}%FQKL6zK z8!f>jNEU;F=GT%#e`|>O|EPEJySMV+@&3OF3Az(TG1ob$VKxG_#n(PniiAhGor}1Z zbB5X(Rs8v>jb-Cb{yn;U7T~C;MRQ_$)j)5{4$S%wpc0QU9i?+n+M!R-wRL9@`~C6& z_s`NLesWxBZz9qG_IfyrEzwWWVTZ?rVkqK2IdD$>|3I+nHdpcir*acg~1{VHc9 z=J%TlyU*PJlOxl462{#9lVg6kviJYt+nT^o?6GwD<(8PwyQe2q(m-yuQ2@qtqRtSX zsH&h$avePn%u-FuF7&n{eec*MV5Lt^K5Xww9e^IdOk@!Sh&NS9VUvK5C1!}dgQ^vR zKGnlYnnWI=8(pmXWN9+^GE`G*NK4DVF3~1&+o9esD%^+K&KxT<%q)VsNo>9qNqy_A zr1~-ecY8e2LDp(R-rIe0DD`)6lA59q8vb0)vI8- zjtBbAA9jnny9_~@Zb{lwNznZKCA&7X;Ys4dN9uMh+1n=$Nh)VZ!{nk-=JSAZYxX-5!txvhw&TQ;TvNE#W|dMOeTB z3Y&s0+D$9y4pWh1=E^q{ZpJx8p1QwLgEyDThqynIlr zu~nF$_(`e(d$}f7`5V5btTwc&3+atGZKTVO8)clsXbB|TgfiG4DdA#mbburyu#FF)@4?Y`i3*$74P0c>c zgLQkDZy;zp_>+RI{rNHGi&@}k_xQ=d0YFgu5KLzv2&0$?6jU8|r=JuS?O@z5zPNNG z*2W>QU+TU^=Eb+7=CQCNm_}2e|W@)0%H7m}?ZC#I)TxnE`ptnj#N4UkW*v4sDGttt>hl zh)c*uPZU`DG+t3kr$CrOxCzb{z=0(|slraf=N->a?d&JfEtah*A4{@l^%Vmy+KTyQ z`NAdAmP}Ooktf5oa=S@M(!O!eeUW)iMTjl^Wrx_M~`v)}+`bLAejGm2l5(MSY9suvqrFRgL#c z9G7WK3R>_%($SoKzBzW;2-9ypNjo*) zKb&5Olz=yuNgq1xGDQ}%ojjQ~=y ze`7aRj2f|Yg}f;J)0jq#!=y?$E+Be%VuWrreppg+7$vUqC|EML8ZMd^x78u8bsa2d%= z;*YC7guCWa91$i56lLtyatnJdj1f>vkmrf%rpKRO&z)_z!Gj8=6>;bK>f78=<-1Ue(n9 z@bX3j=K_^+AEnAF&~=%D?xP#Eh!81>0Y+U2x8~Y!Vfg_;*ZZ?#`KFUic+Txnxu8-m zJAxt}OMG`Lpd@Fnp;yY77ZFlBO0LTFPWHA0hp8>H$IMYn;m$(U08(-L%Fg{W=h_w; z%vzCjg_uT62wJgsjmNT8EH`IL`QCYb+3H@9E{t+$d60Vg+8#8?8=glp)2QV9aNYRy z(X#hD6K=>{Qqi5ACFdp)+3~7xX|AbpW(g$#w7MzJny*#=&7t_+-bqbCnL=6XG#tiv%x$1vFAHRa96MMUNG=m;-1lO`J+$Hzhm4QLS3fis?H}n% zi5nd&@~w?I=~Sq{>X1LTCOe;m&B37)8*sD1s`#~&e{;(pK&9^ScXn5AfLY7v3hKh3 zN+opXJa0xojCm!+weB8#avmRhloTZGce$#!KAKP^Yd2(LD z!I)4ns9s_*u2ZMeWt<2Ps=0l&L)t65NJ?Snap?nRh153Q6dGNtvs)Wsatl94_AdDB&_y9Ul0|AB#P)Ui^D}l3b0vW;-okkwW3q{t$r`Cq= zlrAM*?8|&%B-nZQZHW5^f0-`fNlOkl>|1>Zdko48bo?{CnG9J6Sz`|;5z6k8$vQK> zF;A`4XA^%!yZ6>t$;C|>tvudWp)a_-Wrx~JmrK^m?yV!_E9JJsIny#2S*y&!YrXcJ zmu8hQ38bOE$ZFT8f2(}0L{Z`d&i;D~mafFP@Mr?}Bwe0rkko{Yi1q9bc-m!0kr|3& z5&7){hvLu57PtsCpSxFM;@PD6Rru7=1^~zc$)a7s6tgDeNHy(YpS}>CWK~apOCg@A zJ>mExU4SsGPTuEvPR>26zQMt`az609ltT2kvrjFa*AeVL=D2X}uaEETcEG*O>R(~r zIdwk0Fh`_Mg{8;BZ^G%W=uwvCv-`Puc{G*2KQ@0i+jBgS6z2ZA&!iy%LXmY`O* z5xGd@)&kGdK_vS*f0KQx_oU+-nv@Y%qA%E#7OW=c`54$I=tL2WgK5jq4zQi7N|VJH=TTNPsIg2;Q$nd`b6HZL)0~fV1E=&<+qZ(F zv6L#Cur@U~Ey;e@M(F45n0|z6=F=&T&o@e>Z)h8GT`S@sKLo6EJ)yA5s){!w^egl2 z#|VmlAS?|CgKS7Z$oYO>xXbfPx2x+3$P7Wxok znu)B@%_7+bOV9ak;lFc~UQs~HdftR>3&P@Hz0Q=XP(bA6n&D|mz0;9CCg&74na3nw zug@;qq}bs0XrN6^tQ0?Y%&{a`%1*I9)*I+VK4d4+6+lVi4XCyecsmW%T^_TA^klsq zO{2tTNlmoU;#rl$Wu>vdG!^66XGMn{Y^ zT01tMqVh>zh6}dl6aiWa1-mHcQEWUJJM~PO!s@e|6DAy{lom~Pbp=XlB%DO%lN!}* zj4ULs7A*Me;k2pEbNjmH7o3*d-z~Z-8^2UqKU7;fZ?thT@h^wnUp*t7N9N-gumQiF zivRQ<9|Bb3pM%f8=tDzp1P1^r{yF&kUG8Yf@_;w)KR(_@-QV#3tGA`^$jXP_R1G2Q zW+m$%g+DNBCUTF=B}1S3D$VPJR_=O}tYqhSXh-aePTs@ONi4q=gXV!H>1G$)9e!V5s@a{|83XUqxI3!|OrrBbAIHc?BQS8Z6HY~%;@(cq@ ztj;jmTExrcpaHD*dN|3{zqYqF&c{?)Rnq9kmy~MPfn-80!mW^L#46HNqmrf-B}O5K+|i(;MDk}{#a|<4PI$m2qQ16DsvU*Z)lv5tOSgdJ+9Bxe zm`K3q^$RWVeULcmNMF5LPlrsgc34x>!x0&dU*<G+i`0*R|6Puq0eS|l?+&co0AQm;*~N5N(k!-sjD zoB;MFhmQok8X{Slh~FM6UL3LKFQ`&~ zG5ORl$q3U}4cS)jK{@i1!!sXcJAr%V#NEG6j<hVv#*Cmc>(7uUJ?wI=Sc^4BlD zSqL4&6P^1-p6ec&GJ8y>I0i##1w>Fc!11FF(xWIf0Zx64ixj7#{JC+_23zAHrEXbq zn*l`cknmWKXNnLZ=Um#?+R^28+WhmMRr<^5o=()FQ!r4B79( zb)E|w0QhUU+RWY~%1}a`p=;%{`(XU_9+M3Yjbdi)X5k{~ilCbq?@s8>AHAj*L)>yrh5>tr+~8=>A4CMFj{&7PN( zB|g6PVfci7_aRl+_+tVNMPJVEFyZ;Ii*lfxv9WNIq01B-B)SntR-1{!=w0m3Vo9yb zPph|7(vxKib$$Ia12A?Ki8_{r4m~pOKV_7kdpe|6ECYSUF6W(k}tkC4;1gfvY$9pO2aq*%V*u!Oc@w_z%JVwkGH-PsAWHeuc#`>6hA zo;zE&suIQn8*?8%P6~JysWfx+qv4tAgKlR~nV*kk)!<&Bb})7@?@-80{vaA3)qva# zd8T!K0@7-NJ3t?Pm(}dg*|NLS6#2m<`;YqqU1d_xx{D(bU&7j2T_K-Bg?d8523c6y zQoc6{>#!O`D}Fe6i#BFA=V9;EXMtQi9rcsr%S9g@Cx)_R)%O`Jr*{)j8o+4ZIHYEgA5h*jTXDxl!o z;D8AS(_+R2ijAy|2$U&L8@8}D=USUfeM7|PlD5k=DTsRcp21g!Z{0}v^J-k^`OMs0 z$rG9RYo_@5kKZ@z9_&vu5-Y_8sU|6geI=}}gs{1MDgABGDhQ}Xj;KxzHxqXO(&TVtDgon9|(WJ?R)o|>t3Ss!UAD8QxdeOfO;zD z&N*o1)38aXc!1d?DVvvyf3=^w-2zQ<6XHB54EgUXwwp_a3PG%}6nP#^=t39`72 z+DtguYcbZd$}!c+^3P6Sn#OW?3Cc0cBPsqEAKYx;y$iH-_=#+<4mB6IBPNF}u4=At zy0N)5s1DQ6#S#z74tx5JNeGF1lGs|}&@#jqFn=zQS0n&#&{z2*>z?{OW3@;Fg>Uk# z1th^hspe|}r2M6o1uD+bBGqlx#>}bD{E|s|->|=$;Gp}d2Jt5uzK9%u|J+jLYLQ^o z!Uqnk&J)CUIPqB+<-SpC&odDx9;$Wq!*$gsexr!IaG5?Yfs3`Z0v_3<_WPC{foGyR z&a@H?r$g){dFhy`9=hCjricJ7jNUMf+`+s6;LOA*_Q5g?51ep-QUc1wPJL6IO71!R zrHB7`>QR#R>`T9!Tm~zD)wc~X-l>X3t zaXpne6LHobox@e17NxuR!`c%U4_o=&c!w_UbrdWLIvpG5wBX?Fh%>l4xPCoCAJw^0 z@rO-nVbi6c4r490VtQ{Su{8*pn=*&d!~8Ma%DrgG-s{cqK^>*!Jw(d{Fs4LWmcz%7 zep+*o;B2f-V5dtrIKa)7+p_;)Js!N(b%`C^bRu(i8`pOl!0R?Jpm1_|(gH6fY_dH< z#kr0O0d%jd!%4T?>f+5U2$%?3i34jdbzIqJ+80yA8 z_Z?xH6dSQJd;@6>=k8|ORd^o@)!GS*<$BZ3rH!*Fy`%1UOjki~K*504An!9f>WhHHp!DOfLzyPGU!Qa2JK23A``Ci{QR|)W9}zPm6#8N+p4{ZE zI4Bbw{KM4B!oPu(bP~>3(WDLM&vn^$%dNb;ekfQw&>~p-=oTan16g7kFdTv6-2yFK z7|8&wNwYRntwzGG${}Uuc}xjPZ*a{7xxZWa8EI$R-1zZF#@772U+N^v-p^c94P$cC zxv8qObHFq^v%kP9u#p52rUR9;)l3{dx|B7^vOG_b%_*2gpRBGce`27kMf;>zSiO|? z!J@NN%uLxj=Yucft-<92gT4Y|gt?Vj5$kJ~mMg6yV%=V+P9sh9w9j*5(g=w?*=BCL zZsCu|OL>V1Wjf`PRZD6P-5ZQO&Q8q9?>a$|V2u9Qo z_!r^?o?LDgRsV}*gp>6eefs<)HXMD5Zb_LS&q^NqgO153lj!k=4h!e1hYIqHC76+~ z4|LINRA)#pY(2DD`k7TPaq=BVvH1K3*W&&a{BSU`)=(`s&ilt~8@5x$RO5RfnsWvV zSdesRHediv*z{l&pzs>qnrojj$os`lIQ3c`a?o+UwhUM|l~D(Ge1*)+KyqNX-0Mty zf(1_q|MyND$jCkR1;UvHbwiHcYjN6vr&hQ3#6ZeeF(JN6i?^W9AiQ{0Ubtqtu7CkN zYc|a48m{!)HAKc$<>!9QJ;tT?HK$V*T_ zsST<}$u)^-QuQ+w27Gmbg3e0mbgx`%KeXhq?b~6ICBiOtYahBBQysHtmy7Nl=V4`Q z#Oy}hq8?()QHbFL2{OHjVK}rP7v~b!#wIr--@0C$xxnqepQ~Novf^eE%`>7unNc(= zQ(9}1Frv4RDqxEYbehf1D4JXIf1Xe|q8p>|tUBI%9(8q}>2PoF3LJxsNJL44jlrU%ZgG^+dR7Zc8K;tAA>2BG!4=<=7id z=oqlnd;r@ylts~MKfvx4tA18*kn52y6>mz%lmw(SH#f5n58V&Cdqc$5@3Qa|L?e@5 zzHawqeY=~R#dGwJ%v9Ow9zU|ivVZV(T+sa_!@<&&TEy6eg1k=JOx37|YYAJtZe+Y$ zN#}58gdz_hZ2FDhTmB8N2CD-4wTG>Q`J7e+I9de<2T>p}iF265F?QJl%yUAiE$st9 zHbd#)V7TRn14N^iw$_v^wlVT4aX|R`tnLx_7~Q=Fy4MrPqqwJfO0tIyAmPC|AukHO7qC&B>hX^kVp^`;I37 zcwjq)+)_wa1oj1;^poTLOH5M{Rf{FqBZQeCn*16pwDjZ6egU=+ES&fwHvp`|t}PhY zVGwLyYj1`ovVvZ@$(VaxPg2LY2Ac?BHnEw_t_8S^;1of43 ztp(u%$P|(>gK9rHy1>!#*8MMUpSiVQ*LZ-n2HneFo7qRd@BPW~3C6Yr7VSL*xL3cM zy}y_!R5&Q~faw>7&Y({S@R0a`ROIjP|MVt!uPgIcYr84H zh6MlQuxbZh2$VgO_1n86SboeWEw-5%co1HCWU3sXiNb7N!2#B&VE_Mx&9L+!Qyhu{ zkKJ1J;kK5~L`<4qaAh2*P*aONF5Ua!j(2#%Z&VGGmN{Zh#A~O!`)!|_H zzxIPf%J7tI64mXUy;-=rUGlWakn+&Cu~yw*2IUd~)xI4krPCSZ{|+ufgE++SgK zf9MBmf0Vm*o>=ABv~)7uHN605*@^LN(44-=3Ma^s9Op#D@GVX}Lp#QL4taNIZ5?Vq zCS`rL9ikYWK>E)g(G}|dd(Y^8C*}V$ITG(UfLYLfgPEOc`!##yD_btCVF0C+%gS6C zAGR4xAD>^SKH*?24R`T9ZZ3VNl&E_VZ6n&oyEA0SR*A~XHeBA0`RoH@X_BvQ151y* z_z%i*%%oWXhPnkf!)GCYi5h@L&qoP-96 z6&eVq3$>q6G9b44mPT`kOfb{l|Dt;Lh>Z}L{jywWEL?E%skM?}vQK)4BT@B3zQIS& zRJ2_A@|Ld=2{5Ct#Q>&tTejd9@E9O~^L;$_C*XVsK1351fXAlSC)o#pQ}ApIhB`#o z@%E;)w@V(S7f?-_G}%hncWiMJjr!h_4+k1P^mpZd8FgshchBt58Iu#83loZJcA6(v zX(KUHxE9#R5~EQJKZp%wdQa)yGong_u0KBSzq3lrW!1#xZn;8$Y;}EA^OKwLqRpp| zEBD*P=V_mVxm2=E^Sox&`{5VX9=uZQy=yJpEw@pW&CtXf&kYrw2hAscUMVA{LW30G z-3NY5s6H^Z?end=zzXg9MI{@dLFP08OT9Yfg`L1W8-3A-l9>+5SMOPX9r&W_)8Qo* zrE1R>tT{kTkm=5rAGur}c8*jl#}w3RlswA9>K|gBujpr*XjHc>qI;UfoFZufBDVN} zyqW-6e9g1&a&2WX@x&T)se?m9caVzPp0#!k%?)4{XYJ$(J=R%+jxgWg+lxVKro;;= z$bP`iKa)TZL0$njs+ElaWc)-*-T;x#`h7=oQQp*~aON&bm&HK6_{2zk@RWO#QQnV& z0@7^km-kBt)T>WQl%0D`mQw6EY=DTp#BfF)1{-FH@&)uP5)6@9v;sZNH*1UzT3YFm zrUNA7u+IJ|xSrQm@6qaA*3Zq`w;!#DQA;?lt#U2tpq7Zr5Hkp!q0Emgs-7U{nK@RL zEx`U>N(Rj>IKe{yjT~DGZtDbsmC^?VgAibJ%Q+Ym4cO-&7=Zx=Mc~uHV1HtUt(|}+ z+_j7KmI(zx=U3Ki4P>O`F-lLAuK8rz?x}GJL)Cru4qwLYj7~lq@;Ck-ipr2WTDI@v z2?bJA3&#VI-(_IV?1^o>BVA+2BezDgHXY21>y|Q>OW;|f8j5~Syu~Nzb<4QTSWdS7 zJA3as;~pKu=F(!E@PG>I%1vU$0$|Oj*IQdo-*=L$tgfnWh!#<+{PDu<#HOKvuf;Wf zXXk2h<2BU~%!>Rt=JUO4piM4eki*x?9Cn&MPovea($G?KqkytGtQNF}=?Ydy*Fsw) z^v~l0?BR}|ijn!<`{4SqDlX1aj!jkG&t65gXU@?uGc5fs|4%u>gTw190OtI0~*|b(A4;zY(=2~19yPjD3TaKoEpe}Ht@N)F3k_|$K1x1&G%WgB&N=I8mm>);U!2{^uOu)r%#0Ah(j2cZ&-mnHAM+sk&N#19F-QiAzx=UAF`vRz2>f-4Il&)rie7UUyl;6W| zG@EN4|KwgvdA?LxGndt9s^IkKiA_^&P@o}o==j?BUzCw=yQDSNftu(`US4`Dy`@#* zqWYH^20*d?$(V~BFaOE)zYIW7Dgx1usaCT$U29r69_|)c(t!xh^5pO4`G)fi64$-= z`N@rni<1}mPrYw!7F(MCjY78v4baXKGpyIY1`vtSM?ZG^DmxhTUw5bNBVj7n6)ryQ z9DvxBWA<=R_&wj&d-m>QU!g=Z|T>Yb?XpVVr0fC!+J0Ha56en2UF?EEGC z+nRX5%VU7*kQ8*iv-h2-bSlTLJAmq*R|ENkxE&=m*??&gON!K36uDGgHL#wtnGTP# z_;GkO&-IpBkL=X$i&xJa+Gc^`uW^7rB=EhaU##TTa{jTaR>0PNV6${EVco%F_)`R; zTQ-q(8u(p*S-!t6(=;z9x)&>?4tt2<1nJMQdsB({;K`pH;p6hXh-K#X(ftX4WIP9+ zH0$D;*w^k=J@4(MQX(DbQukU~t%vbOLKsRYWTn2;&Mqm6G`rsy>9M7ts#@cN!b?Dv zHq}YCuv5g7|LTst+5fMNeBhWu@now$MJon`m{!*g=9QZ&U3q(P*;gr&tYVbB>G<-) zlI>CTo!dD(m8wcDjed=Cm{MhI^T2GG=MTREv9*CNveW~!4Z#$jl(3&aN6l+3xi#E) zS|!UvA!6A?%Oz@TVPCdT;%J*r-IK%5)wvBz@=Hj@531tU2A4nOlWb_l)nDW4Fw!Y{ zX43}DE!#%2u%msq2EMy0D)89J3p3K;L!648%`eV!Jl5Ww`A;??liurEi+KkTb|^AE z+BnI0-)wRu&T#ukn_Y@bOo5#Auomd+_8x?~l1Cs@BGKyN4&prr0x*W@!Lr<++J+p4 zBpv@q^5B_yov!!!@M4ctiDKN0X$g8}vo3gP{C3;NFUv`FL8`Fx1^?u?|0)FU>h~6+ z3|L@g?(l}`b5g@v$$Tj5UVR1k(|KJu_hi$wj|qjd^GJP$TYm|{%E4q`^|q`uS6}xG z(&4V9t;`}5N1bK5CedU|{jv*Y9vl#=X@vQIdD~-+eg!UYuuuQt$QQt0><#`;`AQNX zku-BiJNIqaY{)_hQ{~j{FMV-H*hh$0>Ev|K+s0G7qR>a;<6$+>{UEqNQopmpK!&s5 zB?=9(T^i@Yd~jnmgL+ihDyEN{eFM6r%AN+iN<=?sN>jvVdeB5lPq@BrZ@pgLBifi3 zP5hwo&ce#*0|L=^PsT6s1cx$i&axr&Zi-n;vT7(I%KYFwJizQm zcJ`%244a(ePja+~!bzh{41zGtyd!cKh6sYQXl3efi|NTp7B;-}HvZGilq-o_j%V5~ zbx1vNS-EBNZro?LkKf}uP(32DQoRVL*h8aU(W4(zGCk0e6umTdS+Ut`<%PwYZnm-B zQQuSZW$w)>#q+hkQoM$LioB3Jqhu`8ak~#yl~Pw>j>s(@9E(ns+dVx$k*=)l5OxeH zqHwR;by!PXz`nIZMyAkjfSwt_5NL(%N9j<&fQRboBa<-E5&E>zfUb$#38z+PnddKR zR(dnz_U^qcnzlf2_Qmd-u|8XQ>NL4yIH zAy0sP`5u7l(td(;TpoAwMlD-yDrQpx?D+hm8A};UP6g5I(S5wEK;TVgUs#2aPO<@x zbE=vZK1yWAnmXDx#cawD!~pxbHI5x_KZCi`vw0FYn`D}tC!jYs(C~$ELBA%_;p|2m z;+71&QUAs2Zya0ytFsw*0Q>-8@2blOpt^f!fQ$}C{bP!Zpa9#{-yGc0w@2Wiio|Hi z97+lFFu>R4{|LIEt;$Y878RE2Ots}9Gd#!l52%(NuIOLz&5Qf?EpX>uQqeW1!zzmp z-_&J3Hj{ZcXTagN|3uUpt{b-<*gi1YehNpI0};70l5mizP0?C}Ocrg{o8-`QDwXx; zmh^6kZ!Rh8kEvgpS{XG^D~^5tQB(5_zu|Kt8q-9hKw0~pguwUUiGcUeh^dO)0V4Mq z(Dfk>;!>(_YKDKeaQ}~?*}VJ1$q$$>e21+I;aO&e$!q<+6;s&f&^J?8wIt_jZ0fvz&G2+v>BYDisJLtX`{C3)u z|9QDrSNA;h-0EVBRD&h`;RAYUctDz%UJIQJ3V^V~RJi~Ya+Lg&BeFyWeo5_m!K$)K zagK^>5-id>2=C%{TS!$iM=Qu@x#Y{O%=CuL5|`WS2+bw5djOKg4ft56a1ZU*H{S6I zc*2BqcTDT;-k9QTi4hN2X>So3P0Oh;k?8ty&p23@G9v04H(T=DMrmf!V&toizz~{? z{qb}QlyZ$M;tp4C=xK_1nv01Lvo2JS0?oM3ZZHo0aj5h}CfT}{Lrsd|@M8BU!{IMa z@g03=9>%H9>#-G@_r!}WO1B@jA*NV2gk4N*Yt!lKcy{8;`!XTklP|b0j<`z2c@}gf z+B$xv!90&g6&Js>mA+k^kR#MP;-=_7T#|_&zWBCoKB!~0Q@M^{r{@(rn=k>T{K7t? z=axn`E_@*B3bfEa+WH;by_44p96yT_ zn5{$gAhHO7W7sM&bfwKT+^qaV>_!?Pp$M(36dzjYjk)b+Ti>@`6@GI?N-`|dANv~Wn{yG2!y-;7x>wl?o8Bk@V!oSE{E>k$x zjdCI0uuEFYzN)}`UxZJ2t8B*IAAl6g#pQ<4&I3lfA09_>GQ?02x*hcjquogaRN{u4 z(V7F}{`J(|Ns}o`dNzxBh*eP)=Wv&MQmBu1(bF9rI4E`a9dFbx$3EDeSD1MzY?9d2 z1#gdNK1&ajE}I`eg6G+5th!zh>r%nL>$N@kN`z?E{v0G(Xw6#CBWJMBrh>FIvfeue z$1e=tv!{)%&u_3smvb59B)SI0tr=4Bz1dN zjWZ0CPBiq8jvX6&{rXkKpCS}TFcf1q@$1!J>$3D~U33b4;=PuA{624rPm!C+QIP$` zpydTPBYbqDf&kJb`e3kkJ{{Jox%Dl1t%BT6bs6Zv21DN{E@ukF|&?s#`Y)c0X4+5%)vb zy?H?V{_fhj8U3A@4qgh9^{^PTmZs<;Bwy3zy0>yECPG(;p~JjR6n>|_*XufxZipUU%ls3l~`73G1^l0+C|oa&xHNR+yK5P zJ=q}_d_5)Tt%e|J-Q3B^{z=1JbY4P9uTr(kYW(;DAfWsQ`J}cf1dOPA1_t?o({$D_ z%SmH$GoBU#Y(t#q=*xS1DKTxdkePgN!Amuc5^N6+Y6V3nKhEBc8&C7Jrs1Axu!IBdhkJDhQ_1qH%FnZJZ=!vS>NuEhC)P@frisiKKRHA( zpSc)6IgH0^YhN4A;#OE*g!P+k!y9q%ijhsIEGmn#e1-m+VU8Y#>_hoZn}uuv)1n8N z^bcD%e66u~&zSgjU>#wgJh`%HnBwn~J9;p)M)}w`IoCvqvb!_r(#(izuLu%bnK(2a z?mO_TJ;9-WrMhQp_I8APX6)HtWD^RMWwzl@4oS>sKUJ3Iwc*Ki^aK+;TP(31MD3A3 zIZP8Z=)thM0N@F$VK;#N^MQ2#tshJ4pvjhL4<7sGLz6 zL9Z~?>ZX#ul(Be+t|PSrGU7tv)}QkuV16qn4mnHPzF~@jop~A1+#;zLVoWcX+BsCe zt>nCBTJgL4MZOCA%F2AVsz?FIoZrnOD}SZ@u+97d4&yr*d|y_E1ba3bfX)+ z0gX9?Qv*yTU&_$ZO8@17>0Z}{YN{~y*oV0;vB}A#8MF0Q99o9bPZsN)8TQN*1ME}d z9^Pcn6DUop?W0AMQeYqwdAPPu@&p5N=b4z%^U?K!;Np(I~TKQ#_qm-)0a)oxSt)rqFbmxU4F&fSDTKuEuwjb`B zJAJfGXx}B8qiy=}dUxkABAd_|ajC;ScG^v}rDCr|!>RtLQ$B{rzm;F_OB#Kd;vYXq zY`+S8*M8l5>+S5l;lRz)p1?3Lz{v~k4jTLSJXh@h|2$V9y8qIEbfwosy6VKD%@(`} zx0mkv?b|oQM30=li9i`YZC6(%(54<2C|m0Z#vK8#f)98V0w|y@k0UYcqcL=I$zNWD zRugCd{^eEtO8V>83{Yu6^}P7DNH=xyHj#cDg3{15C5$X)bq>J z!tMTyFOA9d*s`vS6SWuDx&2tvhvS&_8PRt;^zL%zpu(t;>^;+y%aQ@(3>(UFq)NRS zGXL@h|Fw?XlCM`Q_%A*Smr{JKt1uRG-FD=qZCN~Z_ss;WgzJQ?khqFob(W>+1NQ*! zjeRq(2jzP|%qm8x%-bX{y9uW^_zuwJ*oVMrXANw(au0hh>rd}+4f(h%u#c}nZ4;Cl z<1Bv_OcTHbqbAH62=o#Z0l2~qj4J#J*(xA!dSN!KA^+xe@S*{PDsU>E{TQ=y3B!Dd zX_1Q=5}r=+Ab*vIdR*&1+bYxe@ciM`=(J#WLftpn?dY?xCBpA3;}gVC>7k zJ!laaLCh!ik>`@|fWFk2qg|2fwURZB$6#p5qE4v(j9DLHA@gPZr76Q=>OXGcLO$K3 z$z$v$bmak-`8td;JUO03Ndh&;r)$@E2uWF_5`3*d;$dG`y^-)^WcWMo^B3;{fbbu_sa7YbQ1L1}>b zt3@ytKfaSaf?aX@$st5sxH1R=h6v9&f*__tnKI0JT!LAiuj06ts+60cjV0eDz0p4I&;I%QVFm+y* z-nCyt!TwWJd;b|~KA}xs#sl^^h9AE?>eia9A2mfj5a4V;Y0LA@wjcG->a$x~kycZW z?oDuWb#dJce|LC)!t{5$!DCf%1?F1*w_`WPApyZrQ(x{-UKzI~KMBlHa3YOJCze$I zC{C}F+oBqvfg{okLjiPEW(E~VG?z&aTib}KvC)d#QiSk9DcQh-pH5hX%+nz3V3TE| z1qk(+T^?(9KcJJiji#8xfUZ!6$-=}R`6z%1Xo_3?$q@|_8$7{OI6ES&#f+(-3Z>8d z-=9AV;GV6?m`?~ObGOm*E}>t;X@CFMzkVH?coWR!9w4m!Z~yUNQy?svtSV;klM}CO=_o~>-8#Aq;)KyEU`~iRH z=?x0@A+#D2gSpW|*UFk2!cvx7N87{D$|xRsncS0gOTCh+yxbp85!U7<_sRHUoiw!h zsS|I!r7oS}C=zRGC!K0{lZ{*Sx3(BADeXtd7LShEjd^+rX$#lEzMG70uJw)T*Fiq* z655=nTG9&WX#i<{j2wa9Mxsw&{lu0SNB2|&W{!H=dN1DBbtO+u-VkY$4HQ~Nmaxvb zQABb;_w~ZC&}|q`*mE?R#)0{(%o|`7$IS`olj2biV|@wK#s0RENwRSL!81bzp1X^7w9}$iQeHI*|mc=8VC3;X+0?p6LcrkTAN5Z|2^DLb2Bp@M;mBHco!26KHt6$~X9T^D z%`Nl>{eirj&Fe{)#JCgp(u3OfPV#J@Ze~mN;pYREr_#U8){~ER4qbI-++N;y{$pdn z^us^gKV7;Eqacl%A>m}Oaue~eed;lh+$E#*$c~ztvi|kJQFynMN#Lu`qi=87opaa> za=vr$MX`&m>!6jg#Yvu^2HRhd(#b2eJmwq;Psl5Ef`R!-H*dw9=Z8nP2APMgJN9%=Pkb@XE}sICEG8P>8EQ_F+6| zNpJ(_p>B{z#PXgeH>+9McXS`5LqV%$<&6;gzRJMtIMcK1!RN!J9TMtdKk#dtsowT{ zZbDTGier!ggA zBV1h^Dg+-|b@WJ9-+E#`C-(gK^vAe^+ms~_WpfN9 zFZ;fcXVdNjf48z^Fvpch(P`C7HZIEQlgD+c(hnPag@_Qnu%nSvVU6Vd-4ih*T2A%l zeN0G>{b-bq!Jx0nwamxM=H=yAi@0jSj&(-XbsHelHLX~VCECI7%{DXB(&t!^F6*y@ zeGdeb6|Z1d>R?&DPUBHEgw&1^ylba?W;P&F{`WbKe>o+T0?i+%}*V>Vs$4&BN}_o8=Dw4w>y z1Nx?I2cRx20jJ&!5w<9lSHsGrV+3}>;kv;S5%KA!f~#EBM*>^@rcVX;=P6PW6Mc-A zZ^u`#S4@il>$OQXim;>Qhap~1uBBP~`_A%hi~Aw^6=de`0Rcx%hg6L$Fa{bsRg_}aZ@$o6_|szW<_ z-!RG;5{6V}@=;(H1`r4hMg=^_*vAPG=UBtJvA1&BBInA)9;w5d%Ztzq`pHZ5vw8GB zJE-g1`rt`ZzfpH}?DnzZEw8#8*Swy7`;c(#0`}zbkItQ`z9p+yB(3BuvRz*arX?;X zm^QHyc7O)BVQn9_whq zerMeMmm|R>^PTgVPk(+ti$Mc}Hd%uux#6Lan(iU>x^kaQB}!*K=#XXb&_ZU!<$8=0 z^YplVc|4q>Z%c-Y?421*e0sj+t|p~2iFpO81`TYD1dup}3D`n$m#F(HAcqOVAj<*z z)nqX{-EZDeF=Zkxi|e2L9ogl~r!a-Itby3#?7T`*D?5>)LgwV~W zCsT!a!e91T$7Fw+%y*EB`4*Kh{MEI&oLv1et~O(!<@=fmgD-?-vhfbSu@5Awy!$YV zNZ_{D%fP4pV8iVAgUyqdscwhZ3*2CdJ+MhUD;{4oxx6WTN{P+^u1wYxwxdf&kWORW z{J&<=#ZkYUmA54>f}lnVio)R%zIdf*`i~IU)+XM*=KKl3}{6abrvmg1WN`=IuWuaA( z^y#_Q27hPn=;e6{yH39qu^f+z-2HdDpC`6oIsN7BMwOgDLg|=ZPgdbFZD7ExGC5I` zOtKS9oXE}!d%yrOS+FBRjG2l(Q_^Y`)#FvceK)ePZ|=A z%WXQeZQHrwPbc3_!y92#ed2v>Ug*dq{*jONZV>L^f00OElIg?p%}(V;c8W%b+@8+>C{4x|6cR_3c9UQQao zesvxPzpc#!q2E<~3Z)zZQK(0{c)`Sc`|<&ly2iH$-XiRhC4Ke_b3$~V(CzY}+jKvx z(X0Zp8GK&rSWwctWx|Jn)j-$^><$2e!K|fl`Ii;w8eO#S)&5)ocdPC-Y902FUNzmj zdCVb{E9JgIkf4sXv#(-77Skf1i8y|nk?6QzUoz1If-~aiWFP-d{1xg*O*v={c)bq?~&5urWk5<8I+VHqu80dilmGMMvA=*VK z>YhzYM}te9MDIP3X*3y+(1tYud72!p~CkJ9KD@Db`jMb`o<@3)Ju zN-AgyUxRJuEcdk(zsjuX-rhf+zw&6M9KF}qV^TaqNAT=%gbe}C0$WQp1Oh{-fH&dx z_*GMUAC+|kHfggr`UNcYG!K1>V@4f*YB+uFneWwCMzvQr>oJXAThwm|@ESw1RQXF_ zHn=)P{z4rsfmzVkR^>}O7Ey-g8_7$sXfVmK9Wi(k3adu!<~-(cJ#NtSQqY%`R-MAs zDpKvz8TDiSZv6xwvgbGsq`q!+jT44@D88-W#~Yi5HlkFb;EmSoF+J?XetP=lA7ias zkHidJJ6pe+fzjpMqee^GXi%1Ug@2Q?X3&Ni2HRUv?Ox&YCAIi&AgN2TZYtI;wrB<4 zxC|W)TiBq+wWLbYjy+t%J+T)YU^scLkK#W)JdCYAl)#+JX?)@US^c2wz$DVivb zW!2q>$m3_dC_k{n1^k>FSd!Yj1K$h8Cyjc_rb|)l-O{nrQHqyzFMlM8Xx>*=yw068 z|2ij!-7GF0{;0pg(7J!+bGNEwE*)JKI67ar;Y*&b{0hK8kPA64SxvBF;)6N?$i0TC zR3BjL19x+=6j9~e^j}Ir9M)IqkSu81%+N|Lb678A#@6hhdoT_Fx=Y$Ay&4)vh`0XD zqz&T`L~W1ILeoT-W1#-4n9rvzzkD<=&N-a0GeAc$(_f?8D=*JuxqpN4afUT3WmM)~ z=1bquLasY8?_i(P9|uclS8~>@8f?%<6e#N^_`Z2jov4cThmTs;*HPEkL$?{U zi0EE;%E>V#^XiFyZPTk~^?-ZgN15qg=IZ}b7ipOtE5aJJ=jpBCrT@mztLRg3EPJ-v zBwQ7_EsU?;Q?r9VWJJJQ%lG{p4~7?}!?cc@{RoW57HX!|j7zQM8X94wQdMn;teRie zO0A3UC5>lU4?JE}=^M}%Wbo4twIn(T5qQQ5CbDZPS8g8AQCy9S&fc*@l6nfM+J$^^ zgVr~5Ow_E{r*3FyoeYS~a5lF_;ECUi`C6}CyF-$%HnJZmF+w}xF7|1e&|Sa;xk)P> z`6LcSaHd%%aa-~=q7MW&aG&0%x1SyJrucN@u4A5(&m>brD6NYd6!eoi_I@q6!vrp@ zj-!Mo8NSt9C)|Z?^vahjx)b-_u3eFGeRAhi@a0<^4KrD*+=dTxDyt1PR=+`DCG+H* zPDTEf z_zMMR_kzHHGT&QEeQQN)LZG0_E=^+sX;I*4*3X8t2W-3VO=gfs8Z$9tQf1m#U5Je* z`D9o0Mpo9B-K+1O>|mgoB{k=1+3)T^mM~uESiQE04XI+pHC3=%HwBHmBOup)Vx;-G z`ET40-bwQ1>OJk!x!oyft*9zJ6j!}kO`0w!ud9B3!%tJHu`k;?TJ&TBJT$W`83kZw ztG|*OaX$6`nfLLjZ*7CY$6KG2_yq2u#4~5`Ec}5({ohx%yjU8L;RG`LWJ8@aKqz8dD&Jgrl%0Li?`Wr8-OU$R!Ee8U&sKiu zSm{_8^_n8rm6W4vtZbt)gbUC>LXNP9q%}jgH|gCbVT3?Q>P4*}=x5@~|W;`hNZ zJSvI5fJ|$g^TSQyNAMS!zjeT8q_bHZN~`}xU#*=T#=6XW5AWyhVFkP4#_#^Yb_$q` zpO=XL%X7>p{Y4LT{Z$41&xMElf41(bPIkuG&)Q-ypBi)5si^WW0CHV6MpwKMt`#n6G| zKR?j?mwPFSJiG>F#bx*pWhGC33so2T62AR)Tia>2yZ$eEL2~oI(5kH`$;UwxwBXip zc%w}x|D2`9vrLrp*@B9}d*7cFO2<;Z$-6Xc5=C+O&y}s-?Kn2{RtZ8aB3X~|Ed+pM zKw_l)hmlhKQS7*+H)#U!49G0wbe1R`DAQLGv~1wcY@xxZ?A8C+R-T|d0L`}_0=3Ct zraH*=y#~@-2kOK#j~T8Y$$?DMN2)Q>M=RY3Ne1RUt8Irs#z47YU@E{dZf zvp^Z&`#)6Fzz~VK9~K3NlzMQR8u))N^4~kj__s{{`{Mk+rGh5xk1#7dYL2}`x+Nvn zlOioOJd)8;qoW`Dt#7uX1>CGg@xyN|uIit?Pjsf%kznC9r?TB*E~?g8C*&ja1%@&2 z8(;obP?|7uDkNApfWQB~R@`4gmH%x@c{ZSG|BR6Hucq(+!fj9dfQIA|O)1XnK-&iQ z0Jx;$T}3(bNyvJ#@T@Raj`oO_SZ^~YKlGp*ZhSNQVeHv5&YC+;nN-_>$F z+x)Ps>&ePmFsIJqlA!R4VMk#_#1M?|E59I+F6v3$Uqv%otI8}T=FisO&ZrER$%yvc z^VD2^Df-I98@*kH@<|!4K{+XGQ>{`ysSM;n*22=hmLc(>w?{7V={=)Wpz=L3sMH2zt&&ZtfXPFT~CDX?LN8t z;dsTFdU4lWZ~*QsZOmbC)IN;u%-kB!bjG0?$d|@tRn}c&HPHbx=uHD?`TkQ?k;tJj zeZQH@E2dE;HfIjLeqP~mIb8`Q>h-8+-5ob#^BOa3Sw7#rs1b7~IcvjqOKHpJ)mOBR zlm{K{2ngCb4T zWvye>>B-cTi4?hhZhv3wq4J1@730W&j1T>v8QEfmnV(Gbj14R%4XhOu$GVK~1fyAF zNpqzpcE@FL+xnu3_7;o|-D_o_@*`YWH7J$CJUbviL5#+7(g;l{f%Qr7NG&WR3)LbTh`on zKETz>wKlE>ndEB!@j2WH#yVTL9+2O6f9Z%Z$F8cEzTDvqP*DnghwVm!!i75yl1QwF zMH2RPHrjDCkoIZI%mzexQm1=;S4*(g0SQYLBIoIa`%}mpxdurUHZE1jAT_wY46%a% zPjhbn+T?^b4_{Z)XI=2>L9w$_JpjlPgv14g{i|(1GqIy>9YPn8^&M9Lz;XWFo~2 zLE{L{hJH@nMt_dsH%pQi|VeWgYwS9@NSB#3;}u&C^Nc2@1$fuWU{JB1KVX4{)4$J8S? z#uCkZXX4!hzt0b6HO3cQ9NuiUVIYdOYIU$yU?`OfPRj!viePx#1vw-(VIN1$HUaZt z!Zy`C1q?WGc4MGwAX4Gp_vpak2d~fj3aBYal|D!_DIU4cICWx*$)pRjdNoWI^XRe= z2cHiPOPD{C;h!u;v<=fI0=#A7klF;g(f;tuEIpuY#BJ+Uw*?z zB{d{x$$b6p*b4HrN=BVgW>5;VziYM^u{!Na6JEa!=>b&=YHGn@esSy1sM?8?WuDm$ zA;?8htLGsLcT{-jBE0Pu{umipmWGjdR zhvna~IBB^1-+9FtsNUbv7zJM)I?`+Nn10V7zN7KFjB+PWVX7*&LKFOA_U1=22Ma?k(n2 z9Ikh7o8_4Ac@pzhpHiQwhgoT$8Y4DQf!vX2ymR3}WBgN_k9N?c%K@ zA0Lx7$%cI)| zZ?qmIoz<4d)uS+=hPPe_O;B6M#|YVjq<3$HP2Sd2K~@w33@?B(js?;4gICHtio3st zQcl^5SYI%d^ot6;3ojF92vj$x%0nmV`=E9T#{zl0fVUOSS0`iRhqnC8l7tKbQ!X~} zbHzVdF0J>RYDdX0Slx_CC=U*q9)3G*LSDaXV_@FBY9W~}RO?Zzm~82io0#=gq`)kJ z@xtL_&pgXrC8cYtT?gya3}hw_@QR{`de$o;FIu`jpn`Ix!W#%wKwLR(Q2e$uv8hTu z{`wQG*(s}AR+1GV_iO~(zVW0V5J!805BESt<46E5Y6IBns~cFn70@W%%t$)jQ3XH; zYXC;pC?5MW?8B};#T~DaBWFuv;wv6q-#AsIe6;0aE_z7jZBQoHJ(6aupoTrDINGU+{vtHc zklc;v*Pz4jAQ+WDKOQCD^i-osstk3=0aIk#ETOLdyGHPZ`_+VRct~SXw}f`=KFP^W z)3mgl)U(VwSn^U9wSb(%Y$d1^$2ZT02u7!~DH6Q4$y zW$GL%EMdt3b4vO#r-FgwahBC%v)6}IoaItGY%GLGi{B`5wXvAC!ePyMr!93ItQ@ZX z0(?9JDMWIEJs?v}z*IIE%yadk5=@}h$#yOtL!DC8^sd##qaqH~v0T-jf!U9AcMZlW zPZCspe+z1(JF~uMt1+LZLr&>_5tE2_oqPQvnzw)Z^wkk^FN8u6G*!CMo*}&q2-|o~ z9edR>-snhbP~j0a-cw%(60&95^+cmns>=?v)66VwY848)TT(7}=-wHuH)h7Uqc-3J zM#wMUKVs~l;qlHvdVQ>4Tx*>owKW){$(^$^DT|bQK5I}i`p)B9&l7f>9N&I75YdLC z>f#|e*kiDnX)zc_DmkjuPRWRduO|o@PSEo@)b&YS1>O<2{Oda5>p`2SYFVF#c1iwI z8gHgO42T^_DpCx72o%Ps7M)*|bh@>4CQxS;>CFQO>$6!o6SLpB0u_vf%HXIfotlSs zhk0R%qW-)hR=i1LzwNGcoa@RUeVq)pkJTR=LbVtB3+?^ZUwNuC%%^e{-2$>ZJQmM)=&yC1)=nCg%6nrt!jgXWwR+}7 zr9Z;X@ms8Y!Js@Ls0$f`+m9OuDsC88FJ5zlR&o&(P}j&2ByNm9M`I`dtaaFsQmHIa zFy>Ze*~+(YPwoeeN2{M*5Ydm9@%fGi-B9&cNG`;kxOx+<9rQC~KiqhEx;HKGU1Kv~ z(BimOj<1j1;W>T$Q^%3MeyMUFo$G6pXXG*$Tdr%sYke}8)D~ElhyeM*_|sNsYNRz$|4yvdv!gLj$PdVtWLUCG7cGXiEO2pZxiu7!V@*s z1E5VF{4-bU|B)S80TtmjsC0v)o=T?Ag-42Ftk?JXevz;{U32C3`Mo8y4#-3CXyw{6hW7R^v`ZX|EPv_L~=NFMqJ zEP+dB7->!059Eb8EXfQzHXm~Y_#=-9b%PbwxeHv|xnZD&KzjMq#4?jNl?Mn!Uj;zG zICm&Pum!|-x|p+I0CBaR1ZkB2fHeTQF=?Iye3$L~zo>)?P@`}qsI z{<^+Qw7+4#UC&(7T=m|q(`#;>9omtbsEK6;AF9ckz!2P_!_3u|#h7+sOecA{{cIrz z{cgaN!KtO0mG2ISu{zhIF0k}%+lI>^hR=LmcEc=i`}X(M2-DACbf6vM$f&S}KiEn-n>xW&yiJ}#i1V>N z)1(vJk3T*8jo_49Hg_S$a4JDJwZ%6I`7Gwatu+%olB&mb$d^J~AWsq=VpS?26i_n+ zqqy_bHS4;tV~^LWnI{*q9qWOQbw=}>`~3Ox$5T3<>RTdn{vtHEznpJWU(%>b&-_wz zi^fuSM67B=BI)K+fK%m`zsj>DSJ+VY zIEzR>hwaeTpo%}B_)v`tCVBQQ>r@Pwy&uz#^*HJh*|slM;bU$S@zdMWXDD?VRDcW< zMu$U47H9LZcXZ-zh{K%rqV8a2cQVCsjJrgGN=p9d`C7inHNI6oxF{(7p$;B?vQ_~Z=(zbHJ@}#7%+d1VI+vgl+us^iE zpjrF+V`c^;kY-5X!8aWMDVWZ^)=*%RhHmo2v(JkQLYht$F^i*xOE#`MWD1_)xe}iS zx6TuORw%Hau0(e>N!9>~N(IpS{F6OS9n}>!WqG$B=BEp;`@54z+*|F)@&Wc+R<~o} zS}ZBBkh(E#D38t!n)6e>n+(ZcjsyN>LnoijeBD7X;}Uw8JiP0G`1FU;Y6AV*huTsKizv{{6q zRzESA$zoawK&REVYSaFX^jPa=#K-saozeVWGtnkZuQ;Si@-EC+$*8pKH?7bSRJ<2E zD5Y?_VA!2EnE}+;&dLF;BXk^!R0>96pFG3uW!#voRZt;{&ae(s+o8DgG|`5b%u>pM z<>OfusV5J#OMbQCS}Al~)l}kVb>LuH*QjH|`n}p}81(@(vCvzGb||Zo`obRaweDH! zGm~d8GBQ3h8NPGxDXEbbq$;DM(Tzy_i|qU-3c6n_FXq}zLhMY!veQ>weOZZ1&+}Ef zPVF+bqO6cUOD+z~7-%IG;~D$C%$ZN7AtGh@5t2_!YMc~K5G-?-TcS+sLcToNA!~tR zA|W7}9GbbgP^G8ke*7+J7}Gh1j%*o!7B>#$ak;VX5VOjoPTOyeJ~2A|MC@GE=d>Ms7i)rK+nE6!-W)x=!Ud@@Wq<=DEa>sM}bvB4gLJ3q~ zB-P|Gu%9;?DZr|_7S4C1ck8QXYs(>3xhEim84!13>0 z3f@Egec!uKq}2S}yLS>*RD97!ssXhmg=pNm95WW9PUmE`r}BW746!IPz$e93toE!z zG(JzEuijN05vyxqG4g5QPA=OgHa0{!B+TMWpzuC`Q%wQFAxxZgka6krS}lC?sH@>5 zj0ZI)kZkF1lxmvVvLsJOm#D-Xw+l*L$e%9o&o;vQZjP+wR#RDO74Q>q z(gcg5c-Iz{+J}hhtkh)8KoDz{f+9gju*7lnBe*D5kf98<2?w+GFar9W`n7b@>;W^R zja3g%mkue!s8@TC`%bHtOp(%%f}*vQ2zN(E5D}Qd?NsstkqT>o@70n(pCvxR2xiu2 zxVC9!S=GFLD&vf!_|)GzEh0(PxJLS=_MAJibTL-bTK=n`3-NLR-{3t(>{{j5+9}pu z*Y;&sm?8sco!}D?s)10(v1l@hKLCZ3Td_jS9EI_cJ}m{cXm?@5V3imV?QTVp%v-C< zhs>leybO7|8~6c_U{o|uLD<5MNhN?CEZkxj*h<)=R2JG_BXG0pQA(kosLt>2i!ys` zjRc!)S00U>e11&AYoGOVfqL4f#$gm<6GXyBUaa zb((J41Xs@I<5?}U-eT83{+6q(=Y>AK>%{fVEA$+S&KpvU>8!I=QtA{T+7p zpJrN4nudoDs&vmJ8689G4y0>4^^nG&X&-~Q=(jN!pkb;Kr7&?k>LP`4QauWzNg?be zJyCHtSUL1cto;W2_sI2b?oU=%x+TQIHqF_$6Bj}Byc00hEj~|Yu)U>Cw?qV8Y=*OA z591Gw&iSzRM)#BLxbEGGZjirM1#=2N-Eg5;E0Is|+$YDI`de{-ad-88zPBY&=?5-o zo^Nh#YcMdah;_AccTC97H?N&OrZAO+^~KAReEOGtzSn-&Rs!Ng0)}j7DH4*~XhHAr zYi9|mrBlDnH?H%fL65}F0{qYMvK-2lf!d5ok+% znSu=k(ag&MRTw0iM0Yn{qIN#WpnfkXZP0bDdS)1PVawmqY3PCF<;km@G9P_;f7G{t zV^goR3?I*82|_oVv;DRJ)l?d_wMB@fRQ|S-N=Ka-Yu|I?vb|JQxm@OB$*?xI2a!`j zTz^NH^z*>o^UkU@uZ-K&W~vNdaHrw?RhXh*Q6J_jY-)#{J1WRjLp$g75GIiUU_RGF zpr~}l$9K1h*-&VT>oPjxw zH>~bBwr2=XPo0=$iBU<5R?f$@kM)!xcO7yt>zU^CuMjYSBV9FR)@hWupb78@^D) zHL#N$7nK(F17;yBp#)Kmr@V-`Rsec8vHW$t%NUJqug<(3S+ zkGQkxU2~V={B;{@PU)9!-L?2!jRN{7WB0}7(<|z$_^SR6k4V{`$Ri8s)RmQCdd{lU zv~w=nd|ev^hr#Z+AF}WpJQ5(cV^FUdVA$&6##LyM;z>cpv+C`RyPBcj`a}w*n#xFz z-}lMdzIU&eHLRS>;5T83iLEyjSHm?!3N1SjUZSj$yF6 zWQpb5ahg@!eG}F~<*OyWAhw*OoGtEcraUm@<>kLhPF}7a_IReH4$^_a zpf~CUkYd}i&Y^S`zlk~>^{#E41nI(y)iyP6g`1QziJh7yUme<4^u|6do$zEyfd75c zyMSx``vA#>6aw2{N)D?#L+cD1XslBxqH#Quq)FrRCG9VlS4AIKzWuf0ZPX15Ndwwj zF8Z6{L00(Ry1)68><3y-_9P~e*XeQ3s^`ASZ><{)d>oF$xed$_l#~>cUE9U{^Oi8M zNiw9a*BAi0$OkN$FV>Jx0tyKQe$~xaq2Xq6wcdN)q-5*95D62R605Y!4ng5LqVF+f zJEV1wFD{AyXzsShHGq(g{R)Jj8{!%~*Kv>~mOHrtPL0Mnpjq9k?4Rj+Lp8LolZ$Y# z510k|2yKnym%{IAY`mA+W3#C=nrp2PYu+7hc;twGbf--`U@5RZi^~GJ>0$A8LiVXDiOm3_1V{nzy7b2Lx=vDOTxV-a6og-5 zj`?jRy(Rxjgj2)M9*wn+(U)4$SNdp)h_7n&#y6 z{SZEh`=zTgv!nRcuNThN%KQ~Wl+yZ}fqaY+T@Z7%t_Q8)%_WB4HP0j1T-vT;hA;Z4 zoSzZ$ULs_u+T>5bGNs!w<1gs0njLCn)0083#zYuls}igG)SnF-EQ!qc zlyFCX)C-_>LNdn~NlWSA)^+UogU!TJbx~y-l76&@6$J81%fKe?ffp;lr~An)CNDKl zFpknGIty@l%i^x0NNcmKj-5XJUUu!rlf{kFj#{EC#mYVJ3w&l@UWhQ+{0?$hq>Bt0 z)_Y)=2sSwS8oZ&h6SA#>Gd3Y2sPP5?{~-nhOQG%H_d5yTDpC`BLHb7gz6SjNq%W9H z`|RD0ITglqWP1@L}4n{klg9FBq4V<_6eSQrKZ=)gMA_4|Hp8~FQw!%v4~ zVQjj-+qrd`SoALzdUJ{b>~fdH@|X|vV(-nhisYPco~b``#OPk{|IOtVxcaX*H_tDz z*~fl=Ni?dTz~462d{C&{*67sYt)ZBf{Dlj7C*Pgkqd(4nolLD%!Edet#u$Fl#6Q>$ zyxbe{uXIVFFH2ZD2HXRz97r}fn1Kc<0bIirAphtD|AVKNBR;A@I8o-$ zNEf-j4>pm$K3yI==7Mx9ABfgLm{}w|I`t>j&2von zIgKsEilfS-3Wu?I%W&i$Z2#&o8CJj_$om1Vp(D{shOXKHtnd%;iCmTpuIn;wgC!u0 zW8AHqW*u%(X9YWKoLVJ9_(2?Vd*>f)+n>;l{-ljz|D>l8lum{!vYB^FR$Lp1Xz=oX z;EN$>7g^zYcoOwxH4xf(T+;!N(ENM_`wd2e6$4avb^?o?e?9q60{2fwl-Nvw+(_ZD zH8U+>(?i+GfLb1;&54vSrT`v>n>gr}p6l;4>M1bYQf(NdEv+`|IlWIfwx;zmxReaZT8EFrOfVg9J>5(EsY5 zk%VwRZDdvt2}KM~vRm-o&(Nh+>vQcgRV(vU<~wUTlE-^6?S=1X?s94W?cOK(?!1-b zw}i5U_iL#l!}&b1IfE=2X6Lr3%*e)T&0Ub3j(&i?G-;PVVKHjYFsl_O_)OK@g6cyI zHN6l2oK;xzXT*oQzk>Sv=q(O>pPzyIz|i8Ka3WOL5E0k`@`@T`KM>6*@QJKZgCEnF zKd@e6D#r25codqcHfPR;t3MB)8t{hE_qxEg0*Zd%{Q)QYr{3jr>~{(K;ZtZTj2Q+_ zyT|FfxA%u1xOOq5cewRKK$#jP_HIk3@l*7|u=^mTt6*9laJe+F4s|=MqRWizx8&vJ zRo>fm8_CNZoqF)>uw!^O6+ej#!MX6VH&aZuLDh}gYSe`lt&?*}yK;7AI!UB8zDyEw zJf0oA?fqF);~#A3ZOj5te)%w@+KW=dzh;;`qpTdWZIyghC*JQ-;OnF5aU@)aBfaI} zjrje%3$rRofc7TkUHy~C49>`e%slBW)klp!?u_zPgZA0SwD)?uI7myHW;^RRJmG1 zl(}{gSCgb_;luq0+nKBN2lGYY0BCzZ?h6+%6x~s}0B8G9l(sU%3@W1)Up^n!yfy5H zXpC(WAKVr3s!jFP8^H03T75loJL)Dw3 z1sbYC@o{wh#bWJ|*g?&pp|d{N6(5vtLERE>6rmK|NFK~?EU#*9`UjaaD=z5n@kJs= zzhKzaa)Up?dB0>_mArQEts&0SW}f#^uc(BGdqi;vX*8gsU}Dl=YIk!;bC~A>NHDmg zU&dT)J#LmJM=O5%;REQ^;S?OND33vrsFq?vby1S&y$rb|BT0}S&PCN)2rb5){V+6? zBk}SutVUj)#d&4XfqId$D}pCq&06nKoxESWVYfosLmk1gSE$4*F)t6^w)DNq!N!)J zX)NxRf2OKTeI-;+f2(|A&X(3WEuc4GlZ1x+~O`#iqb1uNX+q3V7C zz4>+L{?cMty?Jl%>onmrx69=A#ZRRP`m9~llAt*^vb1Pn;VOqDt_oLW2QN*$>3?yA zv^}ilmO4o@UoFH?e8*k)!8ht$E~#P`l6RiH*Vtws@n;zA{@90UOPv&bWdG1`Rqeu7 z`sq)~8)@a`t9Gyst6>{=-^v64?^gmLsPZk=dSO~<(3k~E6PSw>9@1cdeI-TytoEwe z2+MkNU&qm!=eYRW915-W@}K1=mBQ-ydbDNdaTShO>F$Lxr(Uh|Ajz`WB>aZcZ1PG( zLx63}xetRMZI%kJD~*mGf5=_JzX;mEIz>>h{kY$hf;E6`5J|S}uiPL zEqN$j;&Ww*Rd%~CDa4`FUrd|TmOOrWSdmW`^LEoSmg@_MyjOW2lXw(KZp7d!10)h- z3~3ewy&@wXl%{x$by|0M+`OIdmF%y0+avC^pA_Aw^giQ#({?R>PFt}^Q@fJ1X8WmO32rC9#bpm5 zlMI$EhHb{$QEHtlD`&%F!I-?np~PM}lD zltxqrLTIJ+Y|V^h^yM$gmopqsNCfYm+K+rrVuOQD`7gtOjJzWcMcR&)_iL@!FlmO1 za&_*THG_iI?w0sHTI79EA^O7C^jswUR+8b3gKmeuY`R&ODYB%Y>h(jA4PBMh$>&$n zY%fNzp?)hMqOeCH@9}w}7}C|p=kDGbf1^d;l9%*RjuVJ`X@P!g`FN~S?p6><$+MP^EvIWEFUUz@M;F;Hz_JnpEqQgwhPP-*(9y?Gm`(2QVZpICpP!Nqs z9?(>0Fm_a5TLlK2tvg8F`+D6nLZu4vSeow(nG2`X_VoI>s`%Sh2lbiJA2$^n>iTKR zA%!*W)MfL}1q_`+KaW+j;=oJ&rNolLw3{ERF%V`Z?duNZk8~V&e}(QoM>%MrbeT7b&t&+UrzA7Sf}}T>PfouRea^% z{a+$a?8JZq%T7L;(xNI&b6t(l3M=CcFXM4&9+T<2#cJzTT$AUKHrm@Vn#7x;;65R( zpJ@e~9(~-T<5^j}?R!OI=cZT<@N93qC#?-TAj8V&p@85?cli*|Ja++a!Iy!FMeHId zV7K5#;LP_pb>?Bxw;e1{?p-rSygV2?xl$CdU#5w_7EuS3P#R5-aR zlRCmBgJt_-d@ftm4{^@;Q}BbrDRH)Kyb|&8;?#}PoVP6wBja`)2w0BeV*ce-n1Oj?gR)nqTi zdIN+NUHAZq>&kWuzwenDi!J2)4JMj>&q@MB%&gC`_no(5PR_;ftSkY6YV?m%zG z`K-oEra2Oq=o^Rt)xuDx5t!co5Z8YDF@yNn(t_Q6wzCx|1FCCjnaQQ(+B&7Kx*hYP z)9<1jC<5xDZZlQV=|a!7lq4dupPkDPyc%l2Xq0?&)~`^yu90TaTn&%JQH_>G<}6vf z)QyLVX*8)9!lo{kS^W)*j~WV#92f3nT2!8Scb2NHMMNL@=y`yI{{H*QTXRoCJ;!w6 zs;;?Vl0!4)3XwDTI^rQgBS+upLximO0*oZ2m zwa2Od6>xHX$GZR91P{h#z1rl7pbL$L)nMSESoKzADwpdKeN1_ARoI#_G;H zzc;hpVD*qnv=iy3elVkMVi|Eigt$g!6`?3R{75Q;+L-H-*uUUo#F->}!@aBYO_iZQ zOq)P=x-7RF?_lG)T@f>7nx>t3EL_WGk|gNYy{LV`Kync4zD5ooXZRv?- z(Fun~y9bUhUDT{r*8|BK{_CKrkr!mz_GjT%>|oR)Rs7bzADOlXqRxM?Np%Uf2YL@o zzar(C>euB+eU@6bNnTilSfaIRz;>tD34XveH1)%0F4B;!ovs8%q8{V8kpt@?To9-` z-REH59uPEj*=GOc-Jd>o?vS0oAS+^$mygwG>Pq5WR;g8QsY(pFQQC#}7I6&kZ<#aH zxs)=b;@jl7{O(%pOV1b4ptvku^atAo*pHO8#1$~ZUsXX(zEnl+Y#?#ZR&@ERS78%S z?w;b~W42HB$Sa;dJRYpfDJUqL)7)UAdNWO(Q&!JA2RTk?usb%cR1Y=-I(9zPeGSby z>$7E%1iZ216HyL3w~B^i17h{FTz-x}=H{RD-Ri43MZ0F!TforFLs?osN^rUzYh~n8 zXZy6n?^C{X(y4C8!}s-&2K`=MaW5(Yp0~)IG_~97u>O!4GXZ_2?P#<=(T(w)BtF6_ zQ)>(QQ_ux|R;BAnb04N!daO-&n3sn8b4yyTZBY8vzQXC})0H)qPuY33R@)>CEi8P`?8$v8Q~m3M?rj~#%MG)* z0(^|hhpg3>zRS)n{lQj92(UiZ-*I;f{0<> zynL<$_Q&a$mJcQd=#*0CP?uvIyyF&?xUXK0Hod}cw95a`opiu$YdR|b_&tarM&W`% z$*u#+CSIO5zUmxQfAev{$F?Ns{cxz6escgj%+;{OWXW}Y)HQdo;J`gp6>8bCYN3C2 zE#SVGE(rJm_tQUfNP2rWTt|Y|CK^8cIYu4;;|>*O9{O6_{9^rr+Ic4w=T5^r(YyU# z+_!KQO0fEUgGEng z)#lP=j|PsUPbh!U)33xrbR*BsH)@N%p*lZWW5Nu}!dnfy-P21-${*j<^mDlSIQ*>O zxgB3Dg@1K@E}4ZFvkC%(27K%k7g28rwTk{82_z|K5LuhBu7}XMOZdyh{)tfEP!1CT{>L)BP1Sa8-SZ60Qh7BBB3jDJQOg?F!B(5^JKXBz|itmb&RJT4bf!Y>(C-~FNhM!iK& zR8QXK_7>--rY4Llam`kVhXP^{#fbD_J*OMlUu-hV3L^KvzDx<1+-9bFRnX!b8ynm9 zQkgWhI74S*CyLqVUX9FZ{WG0A!oqd~&w#&n>z=8ox@pznpGHpZ3!d`{KGSGpvhCW@ z^n`cGK0XH*TSeX%FpDPfTf!LN0)+Ck{=s(SsszV)>q5~4E||chWi%mXQPaN$7e)nq zs?0f`w~63VNy_XUKwOpcs>;dM~1W6oYNL|mS zmMz_+`i3hIkKgJCbfm`T+-0o;^%a(mUqT%;6dd7y`sUnlWQ^WXI%2&w8a`tONDT$l zVT@3{Kfg3MSzLOrODX;yexxwbacHo*H)Cofb+KYKv3cYBrjOnW$YGtGiVsscw1?9h zEigCKk~pbCW2G08ZO;wipQwh0zFZ~lxlrW360R!|eA-Oqkz|y^B`$l{NhL_4B2>$B zJQ>F^hB1e_V2w`n5M$V3|sWlIhfpcr26gKCwwLeg6W~J zw)E%@t*|vk2w0OnVtCet^q*d5ACkDkmRvQI``2>SM ziFmW`nme7js+4>)z8#h;pTPP;Yh`lP0gKe|Xz~xXr?3C=2EN)@rN4_bc}$vVb6d(+ z-E?UY0DRg%QOv^C!v|M&Al@85%Di4xpQ0lT^c8w&S-j?I+utvilNKy=x%}1QY{IS=|wZHa$A{GVju-2Ws_yzMv13MKCW{R0<0LB-4*_wyTU7%&bQQ{9SNKNtZ5 z@p4rt5Lt<3qq5R6+6(OGT%CEoRbrK_xvYl##<|>gZo3ru*yiY=!7nGP4^AGViM5FH z^=h$G3NGsO6=an3mR5(ASBAFA%-zB9UL5&tU@3LaC%NnIk%)!S+B3_W#2S|8*7<93 z(c4{JYI8}3BxiJ8=h7{A0aIiRtRvfrN}Tk`qXz2HbPDn4Y%aXuY*dD={m1A5q4K5k zF*lAhCNoRFYR!+Om`{_^OVp$S!y=kqCCAVVq5eHs|Zoz;{0TX z$z&P6>F~Yepu0UrM$#@fE4*A^56eo$-gCZL-`4&c@vz{~IaNw2g1{>LT6p*MOv{SV zS#=|;+4Ay%y5(!#7}Mm_a@aA;2qP3qWm!0g**}c;cy>0OlDODRQ3{81E^G0PiBa{! z7@EGGf**!vk{kvztJ6I;1umO=cwB#~|NS5$qD#kT{O*F<-o2?pdt|Gty#wU8W}*+a zt2R$gi~inL`L@sk8@@PblQ~Rp2$w1B>4e+j#(yWQIHZE)QpF!^%+t05wF5u|>b0~a zUi-n;RjAs8T$?tO|GNKDr16Oladt*3{)e9E3rv=yhU6jAlWdXc1C{lo8fBtb+m9^P zgy`Kz|D(MxkB0i~|0YR_rXnJYkbNoJWXZJLCB#HU)+s5=d=U{c84*H^UG}m|C~FC0 zmpx<~%UH5+GuC02o~!fR_w)Nz=efV%-*eyRJip&L{V`{bgU@n(uIqEX->>)U{d!&W zdDAA~Aj0PwRNQ96iiYrTL>RtNxx*>Z_EdLYglLreh-kx5sAzUF2ojE+Ho!W?EA zIxvW#k^|^W(ACq>Ur(4u=P??`&^W#;tc=5LLCtodDiynQ#gR%+p@ZbF4gL-kK^#l`*30lZa*k@C6K|~W2GSIFwI{tssHgsDEcaT9FDa5!p8dndlCwuDX z(JGrRFm83wRnR&29&z?xHjK7mYR8Qw!B_9#*f5JMkd43BmRx>R2=(4aa>P^Umk2)a zP5nH8zvLJJmeDW8D{siJWT5YA=vNWjN+X)|x_B0P@*5Q1hT-pmrvLWu0x5Do#U3p~ zOQN0=h@6CQ56(SG4-fQeiCG(I=S}wO<8+Rjhusklx5z<0{l-uln(Oq2-k-veSst(T z6~SqDQc9(nmA@@Km3HLFbx%eltbTChO6gPUOA;-5_$9LG8r+l^P}e5Lbx-Lnc|O8V z_5L(E#=!ogj7fx!=WHjS9+4jbjY#MY6t^0f4U(=iP~yfn25RI0bYq2)7oR8Qy+U zV1(Cyni)0BhZJ(Q&DdLMV5>GuNh!Rpf6?m&M(`gUr~f0nO+9sg)c-eHIzhSLOwk}O zuhs21*2)E^aL6iR52SF~m055W_gqYlwVu`vDv+Tqy>3=}aaU@$fR*1JF^5yhWt*C` zTq*~}k=`l5OMXRMF^IfDObL2vn|C5+kB`kDe_D*hp%2Ew;rvIP<^2` z+;dKsID7Kdz$--}X*$EeV7A+QD^{uha&C=iU;d_}sowGIFHi6EZ7rcL;Wr}D9jzDn zH%fL8WO3|L0gAGV-liIhO{iOQuQTza$Z($}e&x38c06e37R$<9`C41Qmdje&^v-Sl zP>A+s2=B!Fie_=l4qi=d@VMstvQS4A!LV%UC&Z85DvYJiCr|TBjYFP;`Yk(v1DT77 z2=6p0*D<+4m^Omn-R~Sbe^cNFX9U0GNTWRO{@Y5QZe4EmK3h=5TAhI)TXZ9BODj?< zN6^DjDK}a__2#$axEc)(jcd~#bP|^Joytrn!apnkXTi;D44%kOkZ=Db1QU0Q2I5oW?n-$Jm_vpzzhQ9 zi}(@6o=HAaft(1zP%boM>zYOAy3u8kQ?MlI#X@EE`hoD}I;(vf2oT@Y_agl=%7Roxh4+a-@H}d53IoytT7nUYHaP{)d?2eFQ@DM2+Nv+D%E#!;(ut#3r zvn<=b=%h(cDSNAkX~gSDJyeU~AP8JID4UB!ER_?pY1IvCcTio>89Y8>xxCzQ%>E(% znCFzI?I??MxQ?W^F)LK%bmLidqY|ST1ofDdbsic}+kBh=eSjT(dyMdG6i9OgxSlbj z@3huevGo?;tcR&ST|Iy2eR)|Z>x;BK5}ctekT$NWHlQdXPDXA%>3g%m?s=UYef!LF z(NQI0e?8)$`#mm$hC-5USt;q$ApCJ}0-rV0kxHA@_p6KDm`6rbm(}h4dLE4wZLLQV zYLDkTJE!3d$dWA(d@)iV_jqwFjH(l>d`bIFihRB?=zK1b`daj{H#ONf6}y;vK6Six zsD;gm%e7kirF_i#BVcm2uZ*}*4=oN2$O1J596%oc2`c4}ZWxq{dj3myXPpKc<$R|- ze-nO7Im78;vfi9weMW71cv<3`c~lO#d$1d5XdL&dMzU?>DKsIu)#yb+saEZ&HrkCLAf|cct|0-eg-@nS2?cwS9$<;!79qmQt$^tp#}FtWvP5WsA8KXL?6@ zSsjiOzI14EA*aMfLpnrqdgwB_@?MXK&oJRVmvZ6bxMb#1VQPV;;?5_L#`%i zNwxG!e|+DDD_tk(7>-baGA8RTG`d+|tt0iNlEi52IwPi&rW7G_ADi5Y<_A z16KzsuLm@a+a>cCM(j`!#FfCs5~*ODeqni$!)li@s?6I?MTS-w1=H)0#G7&fxMI)? z0@foOsv$ftz)t2!C*yb4^h!$r^(Zf57~%LpT}bg`l6{}1YniR`)7@+v`*hJb%5kqw z3tn;v>A@H>)HR`CNN8=Mz`Np*=Qzb23gTdPAtE7wdWvbzAidAX=<00D)#2JghOjqo z3h$!o&q|u-wtymGlFnu#Ef_b3#S~`wxImeK@{K1d-@WsC5ji|}01YqiS2rDNKRJJG zSW|@eN=(mN%6XOx>M=#qcC&x`qa%8Fu2!AouuRli-+HYFt6Xxp!L?zhnoh8A@X$UL zVc4ge=Mi!J%LkK^<)rQ|728yY){Tgv&Cg^t58}c_(o;B>25;*)^swE9OWjJvq%)DW z_zcoLeH3$bY-^13r^(h!GSRm~*1TQJXQ*V($TC;nYl(NJ^;R8|)>fCQ^Fb5S=mR63*g=#=i0EV9+KU^@X z@)7-@dyY%Z)IB`QCS2sy1%WPwJ%6)owb=f~uxBiV(`&GsdWBZ#B{bN?5~LxuAHr(m z#Cj#rI%CdoZuin5N#(qTiOY+X@xt?3jXs+pSy|G;u({K@C(0_aTt&KzZ)|Oy&(OP> zqiNc4-{Nh8E&vy6EM#CFwnbMcS(~G@GIiiQgx=R%CFtIxL#oP6n^W#FYv%T^fVsWV zeHQ8IfjxZGK9(uaA;VvqXmwEa|9R$T#;I$MtMuaL-D z=rJ=_7qe^L6hCoLVpilus&&XLoX6eGjHvlk5p!TcSwMtX zmGN?T$YN-2b535w?d|y~!(vJLB6Mb0PpR*Y?Ds7c5wNu!E&|8|i?N}bBrizicf{7j zY;{{`PBw3OLUWO?PI$4?exP~mUR606PGYGh6d{_RzHoLW>>-;+8Cy?WlAPHQ#-Sw3 z9+weqTHW@pNx@gx7WX*fUinbQ;n!#v;xk$buy7&->CZ#=xIhEAswAIC<7f2Aks9x0 zE1gf=3(`S7;LFsygBiVdfrFtwhCx~FU7Rxa!1el`hp4zYx1%i*Fm|E7yyApJ`;0W< zuO~GG@4YwE>Us|vAwYBX zd8p5$1GbUmWnEAG2%9e~<^E8at~;k9IpFaDVS81~Hmp^Y4=3aX8Wlzr8)=zj$%%$J z1y2DUm~3UMU7uFdAg=%Zwsue~OtNCwY^rU_Bj4_GLWss|#Vl8@#PL_tDJ5A{jBgkQ4L?UcnCHqkn zO0ZN>I!}3*@RuhP#ZecdlP#Jz){eWK9odXH#y82=KUfY(KC#M7d+rMdhZ2|5P`+-&GNoV z_9g!~c<9&u5+2czv!2ERR6XB9 z+Dh{n5reuGc#PL-2v2Y1-g4fVS5leO)wY<3+K!xwsC1R;wrxxekr>sF9yuda#aEDu z8H<9hVyXau^*(@}ke@qawkPj)n;JwTe`7fHord%M15x_ZjxwW7;Aa#GC+C3><6!}y!d^4FK}@4-Ir`%k zkD!2-o}st;(0>C(<&$V(Vo@CwvQg=2@ENW0ayC9TNVb7q;&wZ$!Cs@lnNu)+yz7Fl z;8kwVhye!cU1iy+eyN3XS;LIR7N?1_fh1ThZ)^ZnD{ao=_-EH=ykNw1zbpxVEUNPJ z=T)%`<8%@Bd9zn3_o8T|;jIL{+1yl{QZL@FJjD^^j(!B_&o;pK_2Ewh9kU5PpKcSh z>-B5zUET}~jE32%In8Ac#T!oCeG90n{{Q)9{s819UR*X9J}+)^a80sUaqLwhA!vPW zJ;|U?Eho=py3ZZ2a_4Yuvyj83+aGvtTKh<1s~w+caL`^<9U!}bF!+g!dj)(Py3aVz zKQ^mLI#Q-sDq_zzPr9>~NKui(VJ(peRDP;o#!_GZwgtg;q!M}m5uPUJD24yV@Hm<> z_z*yV-hb&sh0=gM{32*)7#PXL%vqICYLG8L9uJh4d?(<~s?NA$8w8l&6_Z3GCqmAf zU#ZyyN_6%o;+{w3vc_>1ylA_g%i+Vw#79N)jyWAoRDzv9U{-LwgeAMOG_C9$#H^NO zVOB4Cp=cp5Fr9(l31)y;vok~U8prPN+y+2_E1Z6L8y^Ig2>&?}h5i&u&6^`o!!>_8 z-r^s1bTkNz7-P3tc4&3bb@@7QFwlAxzE<*QX9oar0F|6VXOdfmY*75+vv&hPvrcJx;S} zS)M*R)6-mN=GLFxa@{H-%G5zdN;IK2?dxgaiFM!@8Wx(N!>|1yNiyvDZ3BhKsIiIY z)S;32O&voo9}t&NjOiZ#EnzQa!cc6TY8J@y?~Q1;Ug~jl4Y@!uy7XR0=Q6c9Nc8>iKuSf;4PEOh`HF zj-4o|#vF4;BFIuCAN~vV@ywgi_9q%b6W^v64K*L;mU6EbzqdP#wedbgdkg3PFk%1= zBT_kx;H-xMb!sM`IzGzEZP9~y8Sn1yKt8`wc)wW_oL zU+9SI3Wu)zxd-Z&e=80;=&!lYT`uk*`ygMWFY;gtS%T0cg!$?Q%3;bNcWabdd5@_} z?19z1aS*urTm)~{p1HU<8Xgm?iyENz1XdU}7pl7yQm@!)ryDqiU(9fINr+0zi+_ZC zuu&UC4FwKgNmOUR6`lOXAdbg?uHrPhfE%fm9)P8$*#heU%gO?>?}vUW4Qwz^Kr9ia z;Yk;61cA8*3Nv;R?Dqi+AxE|W(Hx>io&u_wO>}(#)qHRIRbQEmr9q(Emp~#7+IUGU z4+^#^I-ryXE?W>v5|D>%ubG121jH56a5I~NPb*{(LX+H%0DLtB?ER!5`1lNl4>#-n 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 aByvN^vSRJaU*f6#RX*Fl_;>JcgZ~Tq04H_; diff --git a/.github/5.jpg b/.github/5.jpg deleted file mode 100644 index 503e613e5dc8433a647e0e8f33011fccfbab9688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69690 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⁡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 diff --git a/.github/6.jpg b/.github/6.jpg deleted file mode 100644 index b52221b9e4cdfdd0d8d55a5e4ed1ceeca4551d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68331 zcmeFYc~leI+b$SHMMOnFL_vtkCnZd{`AVg*n zLu8ChiOd2bGe{UhKtzT>!Vn5F&~@(pzT17yuUD_%{nonO{l~3juS#~+uJyiEyY_yb z=Y99~kL^jwK{I1hV+bD~ALJhRfozXLE<<+k@%{DvkBxs9|6kkgojdt=3G5aS_^a#@ z6cXICXYU>XfxY|p?iJbxZUTY_g!k_|@YnCZF7j9NzgmIceR~A<{B_3v+_wD%BC=

RR^XDZzN(B*y_NZLXw^y&2$O!XX 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�ht` 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 diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg deleted file mode 100644 index 3781adef6462a5646c9678b5cd3bfe560c750299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78164 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¬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 S!Z&8^UmLgoTR(6A-1C1M_q1OC diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg deleted file mode 100644 index 1fea0abf6b3cbd49f4d8487e5497311527f46991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77343 zcmeFZcT`i`yEYm`q=SHffDomKNV8B>kf=x#5d{IM*%m~Mkgc=;AyJXu1Ozr91VNfK zDFLaGE+Qf|5=uxYiV#RZ!h#g;+UGmx-0|&m#~tV1@%!$$e|(F~5k^=EbI$dy`8@CY zJTtrBcV{8{ub5kzLwI<2Ab)^Akljg$DP#{1&)<)KKY00g|33EZ-OJ0zzmK2)?&`*(-`{ovWdyO(bt*d-xh@C5vRu=~8cd%(`}?cEEW z9R~g#vR8sn^2o`H`=oB%=2w1v;MB9^Hv%e`s@tXQhUluN?>u=fC?q3$P)=U$sQNLD z<9hlAhG)*6GreqPZeeM4#r~#)qth*Cm%H~o?|VJ)e(2{P5Ez6C4heq|5g8R76PuFy zDlI+Zugt9cg13c5#U-WhYHI87^$i~yn>sqXx_f#*^?e>5866uZexD#wsB`lRi$8uY z{bHxqoqh47>0=*_P6^r%?OS@wnZ^t-5B zSJW!>0zU0&`Yk)N2keo?1E)28+~*;a&Il45EyYR4J|eu>g^0`oORTFu;nF`wO}f23 z=R|FL&M}i2a*|WRe`Ri}rCO&h1iT!)KeT;{26^^ZZ2p+@ld8q}jn)G7;(Nskn`09O zcn4f4nSH(~GKD>sW&oy!v zL8^kSPsK`1e_ZhGNqDROb}jgTDUXNM9~-aFCf_zhr^*$C*Ntekon+d#l((QCHtE*7d9^dxZ501X8 zzAo5irmlT9XczLaKpfY4tW1ZK)N-uqYpXg}Ooi?gg}t*DLzZF(&t{WFP)QVQmjW(Q z7NbxzuH4ozre87@9ns3Jo-Aqb6jkZhyRnTp6osH&-@(=5*s?*FfL50CLnwcMjV7hC zpo$Rg#fVHQV;cg=vI%vX)xJj&aSGXKwRnW<+gss$>+_CIUn%QRxv2F<^5v@ag&(_+ z;jqO9%LbWpoD&jfs6Gb^IG^2G@AZ>UdK*W#=L)S+$-przTWS~5O_tCnPuSml52%!~ zjTvUl#?mSD<(d=l*4IHN4Knv!DhsPe%>^JLBc-HdNHvhkF@mQ!aNO`2)@v8?-H&;d z4r@m~ADKjz&CLf1&L%}wP)ip^ejDAY%&GE42ER2 zp~Tn**S-P7Bem|)%#+tQZ;lLYO#iMstLsIav!Yd`EC$`+oX!6LeTvZqlBlhx zZ$Twn#3@yL4+9PJ71X|=?bV|n;f?%6kUz?6oG1F_B=wSCp)5|$%ZP|#&S9p>^y^iz zgc@1)p{F~g405c~EG)dj7zT}RfjzGL+9Z~9xAbkGHfFq>duiKAcK;{0V}E>9y7=(L zNY%CQ8Q;F&t=UejiiOcqZ}URmmrk2w+QyqBjjU8Nj0~m&Mz?m+6|Hpy6(bAF92IFA- z&)3_srza3T?46^-%}l(88pi6$QUzHV*OXpmQP{9u@H-?H80>=69aw}ILOmP4$All? zy#^##+yX8^w3Z#C{7$f&$JA7wUfXOh*-Qr!yqg}{-&a0{C+@S1vn`UHcLbiEO7$woa zK=5V>1@WL_aoX$(8IZy=M;6cOl^#zfI$)2nG{zSRz-|8q@998n%K@ie*dgp}0Sh*p zXQIZ*fKkAImxO!alzV;`@*1t^zrG zh(vVHsY6zzF&&R%)|I}7l({a1P7d!(5}Qp<0M=me5E#T2KSnsU2v6sy{)l9&P+)Oc zov3Vk`d}Pe0v3}$jE}MA6#eQ!=^M!;sO>ZEKK4o@`u6+4g!8Alg4haoY`d9>BzMR} z1t`^xL0_cLQ6^DPyZVgIWEVn=4t(&`ucMZpw`g0&3oS1qUftzsHEGFzt?)cHX~NO{ zQKOr7)z&@Y^u(>KA9i*m*KN`b95?L%m%F+P$&mnKsCni9Lw#k5L8R3GcprpfQQ$jLU@VgMfAIvpo zVtD0G96faxawjaKpF4s`UF4+F#BrK5XwX*$W`G;xBg&5};4a&_2HqMD#gQiJ{cqXs zoQxMkC`6AP3gza#lhgX;?TpLJ(*1ea$OoAPoatf9hz70jRUDzDqS(={WZ7`dP!@Y; zhP-n#_2-E9wA^~7nQcCZCVkt%ZQNTsuGWXdKf(mq7WAUba%hal89Ff`z-W0$KlOo$ zOls%2i|2<(y>%H4U0t=8nKD+wExnm1_C)Mya|LK%KwP3X&o-K0NTBtxQ3f-zO~aB_ zn>X)1@n9lGQ}iW25w%uj$Reyn^A)jEFyOGsn?g*#{MO2JA^U*=wiXs`e6?vlS248% zgN#|Bi7?!)i%iSnx?fx%p3D$qiXV?U?p~e6QOd8h`Ruknw!G28DJt_?TdoSM_mMhS zLe8+s&C(l{)*Ept%1>#kCz9>wY;3uLR;6rhP9ttEqg_1uoNi}7=WaW*O_;IoStZKO zcK=dVLPcJLwpv_&TWz{rK`dXApYgj3ZdLq2i4U-JUyp1AIDy4YoUBb~EK#=Um5Dx5 z(OXF;s?$oG>BFR7*H3jjle}j;_VFnh$-o}*rGNwZQvtT{-Z^GAxUkNEx3!Fwv$ozy z(M$jFY}j;zf=N`D5{UlKZve};z^CwEusYo?-MCyS;^rhdN){$&e}%sFbXCv#)@+LX z@u~D|hnD*RTH80CeylW@{SirrvlZrwP)1zA4SEpe5KKD26&VfXL0dnjlJ@~Sy_YRb z`mkzK4LtWpW`boNz))}IHeL~4y*>B*GuHgrn+N4}lWXy>sqCy**-gtoqwbC6lDH?Y zW4Dhtu%-G;1lVVR!8d5rrm;3vv^^aeTZdg)t8sadD@Rw&Rcf#fKYTYxuR%WI_wbn; z)i;#Re7vuAYqqLl$V^d^#tq_NXa<&6&JAR)!VYWe(Xss4egCRu_ka2vr%ovSW)+~L z8%3DSg&t^u(W^ReqAlKx{<);smB_*(ly2wAdd8ze&o{0l4=7hB8bw`>6}%NK_*lNC zaSl6+!_nQ76fvVXd|(7Un@U{CVZfQ8W5%9{AXwz4C~E3_Wf3!3uJT6Ph}Zr8`tyIC zj0p}9*}s4EXR#9yvbGCJ0k3NSZrZ1#VU-Y5L{21Q7b<&y4oEK&6bO&V;k%Gp6TDXu z+XASf6Diz+k`7-VZL~EtRQouhBwYHGvhDHHI9Ta<%Yup7Jq)~>;J zqU7+IoJ4Dd`SsL~Z{;eDWOS$RTl08MiEY<@>*2dSZ0;y96e)7^={3zdpn&1kLFQ$P z2UC&qsEkhTe)>#KEiI(Jp`^3;J8A9Dm_-}S<2pY)Z={^M#nV^x+X;g^;nL$R-EJ2m z#XbV?QEeyG&FSJV)*ktP(kDk_)Ef*qMDP_mc-$gKgZ!}DS(RL)_z>N!h|BD(li9mP5exIDxrD?JPy-n2X zIaPYN2`6SU9U4iScWt%5&h3xf>9P0Mc2UU4CEjcP@^cNTS6=;6N#`a`23$5^Adp(Y zys^)5^qb@;FyO?K+Rm|!Ii)S))EpV=?MlGOJ*lg-Ksxr@Z2 z<31`2Rb$9WC$0d8Wr%GzWy6b5;nZD7$Fyd*3p14mA8r@R-LP&!S?#sZs`tCJq5LvX ztMIvRSaVQ4NK)@$0X4!$D4^~Zk_i~nN6hE}Gc}eiqsGe#rZ+OhzH~C1OVwVR{x#H+ zM?K#eINg=khMQifj}3aGcgQd48m}38oBk%P0a5 zSC%^o$4Ak~mE2L2L-d9OqA<;u=C^8;Kze0XWfMV|r3bI8Q$Y(Hon+!^>!u9eHtR8>Rq{}Bil0Ih>HQSiOxmod%M4a{!iLg+R-0|8>|sKziSMnS zh#YH=);Oq?wv)_~!nSK+AlUYEVrA;>gvcyd_?mv3E|NRsR|5ZnQ(tWx3s9}qI%|g1 zaI^T}JNY5imArQs@(26{p|+UD$Ka*n!qMuSq`ARZJ3+MVJM2RbH>~&jC$rn9zRGQ{n7$);(BL8+IZ;R^us{O+o(u-B3`Pex4ipBBzKe4LG!z zQU}DX#{4TVi%b66zCWx}ybqrXj;_75-0Zsz5q)V`fA(yiIJ%0L2%9Z|?m?fXAmd2m z1&lqzoz{Rjy2&fiS4VI86Va^6S5o4yiys2dILJ_KzFdk=;R}`R9NcS0pKBiv(UXtF zzcce9_>5PSSYv~Aet2y!zRW=Te(a-M;C-q|&zOUnq}%?W9kL>G6wt}8dq!uorsZsbL?LHor?=szV2UqJMC%HY>~c2TN_Cr z`xj^!dDkx;?NuE;P*ApruO~FxITEZtpL7aQok^I0mhWt_rE#npcwaxsb-T#49_UGOEQy=)BEFxoeA#?}$GZ?=X_t;<+ z(0lzk^f_@nBq$-5*eQ>v)7cG=GY_8%mKkg^xbda5NndrJrz$T!iAH8gSb!@|Jh&)E zpfyJIlOX7;bn?>{E4r(L-``xF+0^?n5x z{nt!5m`{6(zaTUi5Ll*YDaKaUF60m@W$x;?!^8e-0&wyq+A2#yI9o!?{MapP#HqJP zyb1~oO*0=WmNrP=!aH0$IpVmILnG+9IaEd{oO?CuPMwkpbW@zH9`822C|8D4_xb&()J{hi^PJ!kPQ%s1(yb|$$|zdi zS*mqpg4NzVmWQ1=B?Kfgf?Q3AMa#YcST5s_HV30qr(6K!)nWAMcL-urOZ~5e<7T1} zb?d$k$znqB&mX@&gz><(?_SdkNO-+G^;cU0IJ13d5#SBOi7NzU?MJ{w{p0GfLZ}RP z+;zs@nS;$lf2^3GwvXdkWI;ogXmvf&VfwL*B_&ayGB){&e}QPR=J~pkzp;6 za^t}*uR+@RqSx=Axa*9W_%lg%6D~^+ILn1hrXn24yXJ7g7)Hl#kCc zZ@3+BJD})ch}!%khrH&R=0wfxpwIPtt1AOvdr2>iZ9B7&n2+%NSWno55fvBhZzFq! zlgCxTe1l8)_k)$9rWZJIdlx*N`ARN7aoL(aUlsHNANyCmYQmHG^dOP47u&kj-W51Q z!JLx-L#~00MvTqND02p|R3q}9Uo*V#TYx~4NYm7Ss``!GLF?L)6>7q$>Hf6abqS-F zA{|82Pn(5a9v?VHX4_7b>Rw)4*(o6y)F;R+=FcQv8)UT%$HOa9e7x_i6%J#+otNIW zVTE$ro19iCv$iih_yI80+pq`R8PJ{$R2;Q9_C7tVw>wD^6+$POaWj#grQM}xKwwur z<)+}B4qJ_U+`MQjhUq3qSM5UXlKIi+Gd@D)eE(iQCJi*FWro)}gU)#_=1@#oo!CQ; zFE6AAdM;+!o|-=L+%TCLjQThnq2^fdJg_bwzmayv@Mn&7*<{v9q^WjTR_Rc8|7wDj z+OKUbqJ>&p2IqG^L6CbE+pZUY;J~;-PI=xSeFyJ20sQ+RJp4t7T2jQSz2&($ms8Uo z57Lu+4kHNDJxTgCa+gvfo;PdyV1~&xLEVIST;22>+iyrWfDkpK4>FylT*+~Lm)c}y^L?dco9yGe7FXy1n3 z=wBa4wyChgcP=>HehCZvu-Ga|IK)fQI@?FGHP*?S#v*9q3@4jqfmh>_=<> zIU*=4y<|qUt~qI?p$VU28gM>=`10=L`M#;_TYBMlB^JoS;6;GPrsJgW!h>;h-54nF zgOU{2*+oZHE@TCP-=#jP>!NR$!Y;~eJUy|L@ew_9!W&B&c`QGj^0x9Iv!hCUvdyf zw}3wN(BouaACW}?T`K@Vv5juqTSxy|5LCfN5KZ~N5@>RZwMb> z)L#7@Wa-rZB{|Z!EH*u%+q#YMq#><*yxytC$+vIrPRTVZqmsTJZt4QTwYXrYIbg(o zlN3vB(`E0k1Nu2QX4QVw$R+OA4Fizr!>Xp1JTRQh4RkvEw8FmWiOI(5t%S!|de=D% z&H?cR7yy3=X9t$2k{(on=|<#{Vc5?+G?>G6u)s`ft`6I|e+l~gx{2N{gc4SYWso4u zEX{5LCE7n}=NMETOK%$`05s@7KJMxHqF4qJxTC1Tjpgsbv32pfTq6tiNwMTzh#Bvk zEmxM5u?tbm6Zg(_R?#W@a&vaqx9Cd>>(jpNi!4T<5PF`u~Uy zJH>fJ*OPVk??NWd4(~#K|0p5W5&z3;-~LC3oZ`?fyO2~W0E#t#z@)INr&^0zT&YAh zPPV;@#RGtK$;YpFXnOyXDB?!!#>LNw1N^g@Z0oryX#mlVIfVC*4Ri7sogFEE6ZA(( zh2EDE;ggU(!Kyq~bq&IX)x$#`$8q!LfsyVA5=!d{n`OW)>!bY9yd3HsP*-qu+zySw$q;oxeF)paY z!)kuw`-Ls3zPkEPL)Irh?tKkG@#>#SiG7k;^c2LCm*wb=n)ckr|Lo zA8`j&uhe$TkqtuaCbZhknN!f0WvR*;>w5h8Ly93hb6?>6z5R%9$A1W3x+dj_C{VM~ z_dnp2!*<}5v3cm$bK;$Y5CG@F{lY+YBeI)qg>QvLE+T1GK6jjp;it}!&eRw1W;*kH zCW`ZtS9o1RFs|(s*V+v{=o;WB{+88Kqo{$n*9W#tx5`zx6-kFLmil z#4Eb_6LFUxCWkRZf*4nZJA~N_*i-^hE3o}0M@@qtQz|r9WWoA{w}rPv`s{X}T;%y^ z!LG!@CLLR8w~D@t+Hl*nU5F|7+vk0gX5XBN& zraDFYur(-kEWQCEGqDgRaq+LakCoQeJ~{9QN-y0kCoQ^qko8gln;Wl%Q66(p|P;W>1ibno}y){}KHB)yj!sQi0hdrjjRADnF5iaQD0 z3T)5>ar-;r_r%=`{A?X}6)u|X1V(flh?$>$V>=dxVLt}Dv4Hh2EIa91(wx_eAHaZm z=ci4Y30wh$Qsh8E4{OzDMI>MP!%Hz0$CqjDU9#U<7r%f1_24JYf*Z&l@hEZYYfvh~ zYD=-RFbSt$fymqc7CVTG1+&GB(Ot;4QWD_SWWnABKqf30X1fbXUM|aj_PY3=-PuHT zlBMdZq!8gY4f5rNRlHMggPLrnGcx5*Y1U*GT=;(K=!LV}5&qJj5zuuvV~=Uq=HoeAsSYlyyb53N3AOKK>+lz zNTsy(-C(E5oTP?C;3Vr$v;n|j>_LhEUXJ6QV<|JC{cxJN=&ulm%4+1^G7+MTtf3?0 zB38(#N2I>$IFFWBAkogO%qpPSBe0dbY{abPFI*c2WrMKa=fJY~Kc?^Jf1TotPN;&h z=A3P;hX&m-t-=Kk6ttgo9;p0o+K9UtI{&{qE|29u z75b0H@KNE~sZpUU^>c9U>rHtO8vpSMNC*Eu`5%bs1cKH-vFUG42rdc#(FlfML0~z> zf-RBS^A`k19^ea}wbATslN|RAc!Q3o`Dstn=9vaIA8t!1-^%7q z*@Yb27qv1qqYQYl9$|XGyt5pvoZQ3;p&tW0{<*5}Q@gha_pRnelppw(&x##+pL;k~ z(poPfa(Y5*Se6r=|H{q|`*|n$%(xBwt3xCEwVnIf;KFOyPS&;l-2CldfwUZ6*svSl zAv0{5x|}?WG3MJY1W)cnP8fD^&oa0fm6*>YW^*OlmVsneOt<9fj`+Bod=pmm_*83` z)1D=lTMKtoEyMSlTUN28xZ|KD2g|bYhKjd1&-KGd$X+Fl_Y8A_dKWo@3=K#?n$g*U zd)J`MjL0FPZH>dJ-b0T{sx?sPyn9LdJ83KfOh=m(C)31`?Fu9mKg>PK;Ey*s{p;JW ztkpLaQ>Ld~d-vYgL}=bVaN|XNgrGo0jOtvF6bK!@f8~uWEw20=giUgXW@yy0abtt zZa<8o-txXJ^h2e(ygQy*mr^lM*ir+D=o(t(_5SmKQz3V37gG1***wrrccs8OZR11I zqB?OhI)qYJ_8o?8_bx=n<3WY0T}@v;$>w(Xcau{8TFz^8qG3(&jkc~0IVN$LBV8Co zJO0_*+0d|v%Oql_L!GrH9UBZy^zxQQuD6on?_%{s>jbDZgWjZQJ>2 z0rEqCW^H*IsxRVn_0W~6P8*Y^)l~VCcf*d4<8J&)U3{It3!%*fcoH)PZ9CxKcOgC4 z{n*)5t_G)U7vcqrGT~t)J=@H|Qr6g7;EL}e8=ci}KUUNl+5Kp38q*yViquQcZnimO zf{uaM_s+Md?^QpX@a~uSUf`HW(mBH~8oM*Xlp4XDMLTg`6TEd3+7y9K2B8NoX(9^{dv^?< zu|)%_Dt<)iEZm%Ym_o9WNMFdmQzVdk_rRm4$~s%qEKxJ5oTab(w}KmKJ_mxw)biJF zPU8uL*6{+jk@$s*EZ<$o!>82UB+#DY=-ZXk2;Qr?%d`<7g!%c5o_bAVUE0Fs6r+GR|BK%bvOf{-z)1bQ z9)?{3r7pa1 zRBjCBd#t3i|9pydT2H?+iV!gI*DxJp4dYP7LM{9hrpo^C?^2Ihyul=ZjsrVaCvfl_;AUp69i^ z@y}1MgdP8N^T!o1{C$3=#~={ed_;u$vT#g?Y(Fwqobz#7E89WVPx4ZJ$@Wd2-w97}^j5a`F2pn=0!H^i zg1N-sXifeIW;|z6AQ#v-z6)Wydx;0eYhbl^A#$JLQTlE0Bgb6uR|sE6SZ@w;jT^Sv zUn^rl?iLC_xly`8*jW;J7ZL}OH^Q@B$j>MAVyr}ci1KK z91FHCmUkEOZGmFTRse-WMnLNAxdHJW@*zFj6(6rFW88r^4?TjuSI&J{Z*cQw1wB%i zBR$UjVDgHm>Ma^U|Juq(bpx>8rNM1F^qCCLiiZYJuQbencd%Ml;CgVxWuI1>&c3lb z{R`}m`~FGa+}(o*qqu5-Uwhkm#z1{l)z2)4{^gTb-p|0zcxx05KJ63wB6dn(u=;nw zg=G#F?B4&{N#4Kppd(|Q%y?Z0__;2upT3TNn1;9gN)A&T*IijP2N>!#H9d z2S6zrPuPXX{+9{#msfQEFB~@s@Zj?ALf-Uu-~fY$T?lpgXlHL0G@2(H624dXyGsFtYB%_9c3HR#dXF z-B3Y2m>{mO$P#Ra6-80=W`m)N&vaWVU&@kGFDmx4w=VN| zTvU9j&k?zsPY8kkjk!MmK+ABVVbJR4E1%Fpq_$aG_#Y_@peiQbibr~Rl=qH%Aa}SMfPCIqUo;w8E&u<_qoZqH(M-~Kj ze)Wd;-S}W3{U#y)_HFSk&;QTQP}ufeCat^JyLFv_Ca!6!#Fv$-88u$x9PrtAvbae)_q(-fO{nN~dgumx zp}&7?#w7s1qh$ZLNKl`GlWWsMd3Dby;5ta~j=uZux=yZZpg`W?qD`YMG$$Us{GiWI z%ERT@Q#ldBgZMY4HH4}_RQ#xqRomfQr?8@lvwGxUqWaS ze%D2w`6_Z{7jgnlh#)`r#)-jhpO--@0i7-kZW4toX-qhvKs9`keadpjc+Li28+(81 zolL;V!H+X}=MJqxb^iiXn1?~rmx2`#S^;=KquP!!;Lq9cxiCAQ(+1rNKXyAHHr&+%<{u;MZGiTf6{)ns2&9Ta1kBukRzQL|+ z!?ZTX8$r`EQBgaYQHgD<>i? zt-L|`ppMGPmPK9F)7=|5gY#3w7qHnPB?$(B=I2FkzV?mn6^bZFSz9t3)2PC5p=Cpv zAkC8gC)IDi)SGKsj-Qc;-}oHUW)V+Axj98A0qXo+9N}5yi{CM57=5d|O=no2EcCH_O%i>+WtdQ}pSd>Y>PkB`j)*yeTD+lOo@cRmQG%@Vacr3&2>RD`<6!$>4|MmU z>ciljP)W5WAnYvw?UnDTDjj_La34Z&Rh>J8f39gY*BG3&8pg2F{=m0C$|zbq-DFI+ z_6zadLJncwQ#5eQw=zBL(A_Hqu9MT-Hxt1C;5SHe^19bL9)QKK(LfWPNCm@?qL?;s ztrI?1argQN{s^+r<6%~|mc0Ael((nPLnZI~-iL2gE2qV-cKk>#4rYa+wQ7O$g{V1J zkOR(YeDkcowXgzG>|u~RZRU;e=hTU#$%@Sn_buuky{iTD+EBK<7vymHz8th3)(&c% zZKuJCVq6bgOmC2HISbdB;LEz+G=jFG3g<`)fAIC6%!Z{sEVwwqIYc^+TtgBk-i;% zkL)PvK1@dNuW!`Xjaf@OGv@+Ysq?FK*9<~muIA!~7t#rUWNiKFmMio&`yenz!I8u% z(;2ZXDqzLz;m?KvEh`n*ejh!_ZWS{@lizg&-x<{ft)zz6t0I4vR zFgLdI8ozz>m@eMB*+^IR;f&Vhl;DYegW`95&5g-GvAx0gioiRy$Ny9~wP`fKD3LBF^C}Xsg92AD6)uZ_&DHle`0G8Z+KT|6|JP3l{7JAB^R;~WN%ut2w_;65`G;&#=2&@+1=e0Hl#7j#8M z>Qzbn8iD`X8CZ+bT3w*`lp)^^zH{yebQOWzYlQUDGmcyCSK#0a(R9omCz3x)|x?QSA1p^T*6~iOEM$rbOs3?5hok{%P~VD=%ga z@*m!Jw(Srn7IPeZu#R38&DJn{7O*A_*!P;8B4Vop+&$K=4R5*|x)Yi{m>DLMY*l5i zm#6=L-Om&|8XvZhc7I7@`%3=+hPI(YTufQ^bzQlcTd5IX17ph*m?Y$2)(m12BhH;9 zi(-rnqf$Gw#tYR3V|DN#D2!bHrmv{8GFW7(LWsSklNW2LBzxq_mlCV5Q?sMze$XcA z%@+Z<50%N_+gwd8K{T`-d>?M}4KHe8Kc=r~lpTjCL%0f~lvWq0DdY1Eslv|=Nm}DH ztciW_8d!&JtcmisI`A&Zl^QYTEl2f#B+Im^O#aF`T2(c@bnYGl{)?!g@qArVv((y5 z>!i=L@7`E9oYt)4ST9?0gQ^Fw-FkXET|FnH7_Wkivx_ zv(eu}%w^|0R+K-C8|T#2V$#CPf4&L2q_0G~xW*o`;Sh&byd8z4)or&u&r~wwvTT?^ zSC%HRnars6qy!H+(6694fhy}bhhtX8p@+Lt^jqpjE^687*=Tp0EF9cH&af+baGZJs^ss?Z#b zF5T)x8mFjF{P>)7)TV+1>b-ExAa+k=)Vl{ef#Iby4>L%Gpb;+)kCaiiGG1B8wjbLw zJ@sieDiAftlk?O~bYKoA47-DkX;aLm;GXJd(3R2J0F3I5ws^Zd?ov3_#BGVz>CSn} z6n~h`EHoK6o*4dxJ-yQV=)^XtULmbYCiB~xeZm6KO%vXO2u+V=?O@fNvdKY=`#C@F zstJPqs0k=9wOeq-(SeMfs65o&uBIFsF^2msOMALE5^t@o>zqDiVy-dKvTHx77fsSSz_bNoueHfjqEraP>`?p#xs{ z(bWsJYi%!HQud8uoE{G2VH@p{%gbljk*EYO<_ck zm)0qFQ>33Ntf?h=EM4#vscsYI7Is7ux^7~)RYKJ@5|0LJRvL*YwO-=%X43!%r+CDAb6kJ@846!MvzLXKy zJ+r@I$kSCAA$a%P{S^5T`-lR3>;*N1x0uV(mqk5E5C2U1P(&kFt#6V*|8(<+b%418 zX~C|TT~_q9-xb*mI1-A-ad_L_D&Riy*$xi$c-0Ux#3T7_e}*qIg^jFFmxgss2qF5NmVqdwc1_@e}h|?RE~gq4z3I8;{?!0b6M@ZR~h_W;&Qsr16q&ZZ)?y8$V{Ka3z=AJ2ZGVa`}k_kGKwTa62M`Uy^Jg}iT- z*_OZS9Der02~T$y^6d|MRKgj4Og;t-G+%i`pK=Z9;}sN^0+jDpU`Fn_>ZZ^H65)GY z^Rkh~3bXX$DgED{SYzl<@xhPhm9yoED?topI8?pI^?YdOkGXi4tgiYeGt;_}gOTik ziacM5OoP8R9y19lUku;46~E;Bu)O8&3^)5i%+PH__^yyoPvd1apIDiARUCAs&O5CQ zgk-D_J<*Bj(@stG*kbg~5h7ss36Vj$CmB7};!$kX7*3$BK2X&oxi% zb1ty^-Vr&~bxid!MvBwQl|ePME1hKUGns{NCQ!Wn=h#XrbY>xi#X0Ng{;j&Uts!zD z9oa0U`bh0hyHj6;Vs;@ugHK7lU>P4qi10T`Fc`TJhP^n3?q5&ftNL@z0*D=GZWJ~Zzvqs>!Y!5 z);Q)Sr_;Jfs{sP%3FqC zkXabI9rGnIzg7Jfr`1FnaQ*1=BPL)_Vj4hL(Z7V;%c?~*DZP0+=&Srk~b zSNY&};PVO3KMQY(XZv7hvoS`a7+Iix!5=CD1oaxaY`xf=HaKre-HJsADV3AN-svBk zZ5qWRum;2GYE*{?JXSaKQ;%D@_fnfNCt9DJ2$s@`5$GUlzpa3G$kAfT?P3(Glj+nT zpTtbteBb1L?u@UJz~%8FtoJXiLDiFI{p*ih*ek03`Axr~=K#3RW!-Eo6rrY9*W}~( zV8pq?eR7x_x)?@7n3b*O;53#^&T-zGD6!8pFsy%tOcOI_r_Bc~M=Q$fvL{&uVL>AH zlO)&ny|&s@YX^qT#7^HspZO&HtQ_2Oz?DD+Q7~~-jzt%-36n|{MFB3Kg)4aNqU?R# zEVK%)rLQ8UM*oqxxtt{EJ)_i#F@K~7BObF_NiL5Qs1IDw9 zfXMasx5Mg0|A__s^T4Y;zCJHr4m7Cx+Au!M|7otdP?d%t)8m{__RW@+R5hEkf2mk-=_7Bo)#T;vu-Dmv99b-EsKO!3 zSEIDFknrpG@H9+;Y?GPIGGzaOO@i|2!K9|Vdo4zhDk)%rH*Om@LHu@wxfRHIZz!;; zoW}cyuaMY2#D^*cPPp;u&^+$IxDzQMVKpt7%DH=s;djeppYw|S&Cyl7044d>p2Xy- z{2Gb0KR&LDhN`)ndE?&~^dlc{=p;4$K+i@Gex5Ou0f9`P@Neu2HMSl~y9Q&OE0G<Cw$983y>}1;h&s!(J9V z2J)b|i{wShux)J|aj~M=Q6{E?v|<&!gZIeT-L#yA{zYs+8_`j8*>IX3p-z9qHB)g> zv*Aln^4q)5zWLsLwsb)upbIkslY>!muwGCo`vUhX7u335D0F5;MVquUlWI8)EA_*+ z3&Gj&`@0ZbUs^@{5B`IdGcC(Z0$@>!`39{)cCGDsFmh}1AyY|u#2`jpnw)~ zWr0ENf{OctS_S)JE}QL`jz9`|SW{YEMy`$P9N93QbZE&M(;i+x*MAXL?%%Lj$1n_0 zwrr^&uAny+JHb2K5XnAL!4}|T=z%+Xl%$)!Au&e*Kj(C~#IMsv{@%kiIU zd|Om?YzGsH(*QUq;<*7;v+#*j<{|pMHf6djldv*4cb@@`Re#Ri_(Z^aFFr}PVg4~} z>3BgP?T!b*K(oGBz5XGLUtf>VsnK@@&YZvLSwo-(UkON4AZ;vw#;}H0%2Wbv$)F+B zH!O8d95_bosEUG0m9y2Uh(QIE2kZLyNN0LhWW%f?_UgCQwdqWi$n%b&s_(HUUqw%N zX&&k6n2_5hg2Imss}m!@$tQqCG`9C>9q3kfn(d8S(NomCKI|`Qw@ImMd?DfY&IH=Hc9=eTVw(T%EAj26Tcry0&Qj?&ENxDz5fiD zwuO&gE2L!eB^-I3a8_?lx@!@3B9C?Np~7u#4}W!+&xMs!YO5=agg=J~6Cq;>Gr7w( zA%+tknxvlnfw3vg>-d|ykgmF-75tb7sSwRo6K=u-W{-w{|@QOYt4rvupc*4Nwh- zlo{IfITfh84s=dWVd3Wm$(^A9;Rm8))wh!jM1LCUSWYzpYg8?U zKVkw!Ezj16(>u)xF@@RAbe%svX&BNBf`mNAQDkMmwB-4W@_|0w}ZM zvZ#%A4?Z7k`^>@YPNI@#+#D<(eLMKL@r^PI&*F#gD_Y}ESse_#q16l#BFt1a38GI0 zS$!S6Ppqr>%t9Ye&t7lUVJ^m%dSA14oGUh4z0ul42p(H+BASQT(m-{M&w2=UM|@Iz zwxQEj^5^(TR4BC~v9eK2_Pgw&pK6js#EW;IE!Dpy`JUeJui6iQypL~! zfqe>Y>Qy?$DS|T5&2Y%YDw20DFTRa&H9e#uQA$6iVD7!6n%cg$QLKoFs5Ai~DovyvsY;8DCSq)KAx8yiVpLj?kSI!T0s;y`q=S?k zx`Yzx0wU5Sl#l=-C6Z7#B*eS?z4sgAJ)U>G{_g$WaliYA1G7i=&faU!wbq=^eC9LX zCd(L<>{DpBdT)zL__9d(Xq$Qx{G70xJ|Fng58&xH(9O5#JBp=c%UUSQH39J6Xoh!$b+`UAeh|P+-kkL0^7dbqsk~46(`o+`FOr!=HtkSLNXf4`6#)SWIvjf9T8>x87c>Qe8 zl6wx7(cdRS&!P?=cG|_e>+_+&t(h6$kh|t6j2F zVSEaP1+ukrX8tPGwec$R&h6}v7d$3M*-E&~oropF$|=uqe*%(fbTdg<*OMI0ma^wB zw+(+;25n#SxwI&K<=k#zb5#??kf$EU1BULH?+D(;;9kvyh9`KtxG8KCNaPK)t-)TU z*Rd|~axcbjv)q^JE6iVJB$;<_Rk*mJD8NAVj9x=#*xQkl530a?limz2BSFWe=WQoY zPstU<@ZeiayBheN{+kuH3B5&srs{;qF22l-IUgfCIg<6_uRWPTk}i%6wbl5|G%T-N z11TJUJUMI?s>HPh?ciX{wL(biMxTb>wWb4zTLUrWwdI|GW!}5Q3{yz{4?V;T^)2q? z*1R}=GQSO@;4r8#H^%WV^ec4~bML+CZC2-0ZPPMfXI@2^At)z)uLEh;>-yV&5~lWh zB6%UpmflfU?6Ig-1izWz8`np7QfPst_Y;vriIo;i@~ouwsiOnd*vp?(-&#G?2U+QW zNoWH1oBSO%^f{F%8v_ni$_^6u;{b)4e%r43w zrs0L3(kz{i^oBCz*!%E6bp?JCKNLrO!8r;&+*qr}MdmZ*Y*Teuy)Irkyd8P${5zUy zJzYw7Mb$YLB&;Uw5F3XJO}36_O}UqYp6zq&J;4VD*EmBlN=9W&Ymc6|UfEZ(&6Su?o~`xFi$FiAxJzj>O(qXLgK35bjOA#^?uP z8Hpty+)2E$<@(bHpT3ceS{dF&))%nNW-7jg)f$Fsm7j7nG=|OS`8iG@lL;|I%SA6= zl^Z3PG3a(w&Z z^+T|j*Cwr_MLJ+z3uwZA(k3WzL6_KP|JP_!P|*; z)}yUCH>x8SP2v-_Q$-FH567?oak!peUkP&n+QvGHMp_MWB+T+K+aY`&dbkPU1Q_f) zMpHhP5{;ZYT_cvZ9Gx^SCUEa@a~bWM3JQOvQ1_`)!C%GI{s$LK9Tb;=?H)+5mxlbs*!ECI z8rz^-c;a#`kIQXG<@JeoTl?nUIqnveT{$WGAZ(TL45Z*e9S{GPxYZm8kU>b#iZRET ztwH*_b0^T5xQ3gASuy<#YUIVtP}N&wEp$}j!w=u;97~UlN*Zl6p46NqJu39a-b)eb zz=pr-@BdciUR|9OW#5CzH%MPzjknZFp1Qtl!&)1%T7yO47*_!I0#-^1$D1%~7b0s^ z1Rq5f#miRaqPda5jWJyw(huH?TWTVQW+N8U*MlbhydCiVX|z0p#0GS86Q&QH$s~-+ zv5%xm_YkncR@R-4G{f$4KNjCvw{WABNbvWzjK`3p4hp$@(E>LZPOW$z7aQS%q||bsoLQ^{vA8VZi^=vALkOY1 zOM9I7)%Wni?J~TtO{3AB7_&=rT|>={oqp`@xJC5)GDfW76oD*RWMwkJ7WF;foCA=e5_KTYRC4 z@^0O+c4eH1ls9KhakQpTX4kN#j6!yK}|e6(II7# z*Upo=HOwTfZ!aBPDpYwBz#)5_z?qpqW)@M>&ha9-GbJIU23^!8QjIPp z?{`WEOy;R6k}TaD5GAK(?O@ekt1<|jZMa4KI0$6ccgRC1mLB``=Q>Hum4Tz5vC6I- zaS*n@gswFb?-6KDsiO|gQ<^B$trEL==c!xyyE~?urL$$u-;v~Jox|1N)71fK3V4Y{ z8e`g)krSrR$NB6-o~p|#(ogZ%eEIBq-c)xBvq(>kS{cBGQSkwb7@fohBH!|2cKoBkAkV0e{$abw?I%B&-zwHRban@t zf8G(y!&6W-OV@_e5=ubFQR&lcH9{yGSpbS-Yy#&4zEdo^hGM(?-!3@Htpy;C?e$K~ z%ULiFOAUXeMIP%h$sv82O4wxOdp+z9i@P)zzcJeVmDp|5uQyulJ@_3JL}FaQJ)?*M zr44&HBdCyu68vT_KH$h$Ep*RBYuVHely#n!<54OjU-yp09SX6!$Hzt9I}!NxFR+!3 z7s9#95Km$Ibp79=K^}IQKhS4@=o6ma&sNEwAr?K+>xy4}pr5Sw*8XkBbjuZXN(Apd ztYK@bBse+XC>zyBa{8$@CETm)J3e=gX*rQeIuK`MhP+(Si!r6HTc6)h&e8Se+?9Oz zkaOK5?Zn&HK_fNOP0`R{qb7w(#e|V$S(f1I;QEOYp`pRB6@A|CD_Ub;28tCt zby_|@e(0s(=QeDdU0or*Ye}i+Ol(Ge?kUNG;FW*Ec5+nvJjKnlXgj8wI7;1kI|dEU z>$Xex+Px>dt=Yn5+b$EY9Zf4MR~_Nm)^claRQ{4?Ab7lBD21jHEGbjLfkgoYxkz zEV0q(UYpDXxyd^V^QSnYsi|&5GfVe!EHf=rII%ro7Ucfm+UnIcG;9dvI8NZpp>s`- zI?z5Q`@RvMB~|3*70|a?)o1V0rzm~!#56n?A!n`5i|4D^fE%mDeyTeNX^2Fx;6grs zOBF$h;2L;5^z$-YHMO)YDwn>tuMW6*y(_uD|5ei0liikktmL<|&AHk8cxmQ%AYT*D zL({Po!N|BXV}|2d`5ze(1CVp|~^*@&HK+5}&{L4JuEMrJbQjD=i>3k&(T+Ajn2Bg0RpX_?7g6v-jRxA@BG0v*Zq&$W-d^d z?}K>1upw&?T;2C5PA!b_9sh)~e6dCWXc$s9AAyRlZJ@$`6uyo0?G+jXbz4Xq%eY1& zmK)ct%J}IVtjv*}-|!3n^VdL8)eHp4*ylSMNDu&`1_>_dk9BQ161@x^PH18vjsctp zf)QIMXWVB~KxH>r3bcN3+1F-={X4hCSb*g5EwKHZE>Odv5{W&<2+G)uq2YHyD%bnV zk}0L2y3{n+Ju~){Zk2fkM)hfVUta6sKJ(nX`o4rVi|V4LNH=zx{dG zw4&;)!_fhM3$6QMTlUPB_k1%Q_P2A>_u<9)KAah*x7w92dbg{74NDqoHl19L?e$|3 z&dnlz^A^{iu3|T<^tI8|99}8b1-4cniOO9A88L=0e)i%;dr5e@bW*ErlVx8OWyGkr z_$9u0+|&9%Tl&y^?CDcJ^ButV8w{Vo(cOV4Y--lHJ6~CJSc#jaJ&YOrOe4k3qFWiI z-mIi8^C>NDref_fUfEH=s`Fu5_c^X2$>PSbvRgBoS$lA9jcAC!Mn4 zCZtlYhutjb$^k-x|DA`t){^^-vZCj$4FzkHh*mP5BKsYxJWPF#zlJEZ>L!ZNF` zPfoSRFC)OVm3VZ$%4KP#vik2c;@dwa!$9;rlV$0GFJGJYc>}^_j~oip8md0yjx^{k zm$9`Cl_A%=XRU`x`M$k<>mXr!kit`BBB_L%EyQZI2Q;5?er}-SN@C*1Ra)Ksn!G{f zk3Ms-p%!k&K!)BeB4merak(aw;rifsQ~n_zOP|N;?eKwsdY3aSpP+L-%hh-?;sc$(r%YJVlDmkQfiAA7jo<)M`$c_F#DZ z#`zGm?bxlM!A+))%xdnq4`P2Y7KS<`bVqKU^Cxtk*e~}&f6De}h42mz6V{02!hV+2 z2p>N$!r8g`y6z}!D-?bicPLZDCgRSlxFfNok|ltOzgRsP8R^r_`p1}FYvFRA#T(6hZb}d2|EVs@)_)%7b`+Fj1W z(**CvcDOonF@Bl|Z5^ydY zq26?0UHfWmnF2`31B}}<#2Rlc&L92XHFP?h-_$%&huqaaWLR-6W%xyY2n-88B0i5B zI=A|RtB<3K?Z@rs>_mfwel-=~PmJ#k9XHTrDGyfY;+8$%yD`<_epO2D(tAr1A}3-; z@1Ko#+EL+Uk#^iG>rB~{@L;Dx8Q~7urkrR~?(hlcT&0&;hMZP5U+XZK&YrgW$Ibu4 zfKG9MqM%$PM-DuTneG{eks*ZVe~$>lakKeg(HPXk_7dRrm+wD?o~Vd&za%XR3mXB5~t+mGI(3kXNI+qs*8CPgu^@&;)HX=drpSvQc{=+A-Ir(QjA$ zVPb5z2qI}!c*p6j-4Zg-szSbd1geY~sz#H$y{cDJKar8X_Jbw8{)8Oz3t=XuV`McN z+g;jAT&nED{jvf6vOla)H7N}6?!vUATVTN?Za5XcOc$8=!4;vdXVjcT3e@Ndx!jrs zAq^|4V#mZoy>xVR(sT#+;nx!tJ8i#obUeHNdCEKXZF7dDP^ZSO>WcYto4Jmh*o4UWlsMOK z9^rxOW#z-`23hK=Yxi z__(LJ*uyye+Gc@S?9;OOO3j0DI?X7z!|(eHBAR4WVUKZ#f|2z#3K23K#4RmOrnnQ>WVxDpVN z58OqXmq7;O{QPqjNdB@ei7{7wSZU0gaGxQk)KB{b+7IeRRJbh(!{B2lS?FWODX9$%Ck=kL^5wHA%t8P_m@scH_)E1vk`pr~W;%`!clnpBxYU5hL z7&oTc_!9_hB)lrNJ?g07ZYaE!Z1ZK##Mf0>mei*_ejxjm(>=ASQOB704E@WBA6}C} z;p3Ay9<;)$1C%#mOWEa2{9ei^Z6-Sff*YakW1`s7`hwMB0lo?3fVmUaLBdZg%%6uF z#z>zz7&-L5aPqa|F}(=~cJc#@l^R+hv94Oj@j|BSS)n6uQ|Mn4)ks-svZ@^vJtyR6B?f!dbBd_HB( zlKo8*A6?vZp6{F3bHNS*T!S553`)I9AZ73O6$Qc*v97SX<51Y#`On#(u}WFf0q#f2 zjWdbFK8>|rnsB4vG{CQS3$24i-2bWCZi2sq_ zFREg5;Km<11!CYV#T)1;wn&DZn*~m=mulWSgltJ<3xu+?yks*i)Bw9R=)hCG3Il_4PlJFULky`c$^H!CO>W5naD=L06NG8=@cU*-<~?NU+JeOeNr7r(?HzwS!*y#`#EQ3hhX@)?I4J0>aBgOQ@r6&g4E zAYMeZbHO+d(OQGI$y<(~u;-j;>xYv?8OFabw<7;8i=qCvYQ+C1wTJq@El->$V6IIt zb8i$9p4RBD=IMrRkAvcAvCjP;Ohkpd8@^u_zc&&2MegWhokt2F$MP(PrnSkF3PQVv zY$WGw2Il}igt9FAGmP8)3b(%du@3S7$k(WVAM{uoPPb&~Lc`RYkb7P_dc3VkN&|tp zh#cdX(Z(H3W&&jwzkNHTa7frtbe2!+*E^4fE?}i_pI?E<_Bgnd%_4q?85Zjy4p74ELNeS44U`*2U$@>rVIV%AXI0DA9!U)JzD{9~{zoL|_==4R&9^V!2g z;UYC=-17@y#s{c(-dQu%eB>!o!8!lgSZV%9tOIX*S*)nwW3Bjgw;BFlhZg?p6Xk2; zs(pg+y;{14Rl2&BAptSzO61nvz=0lJ+|K_dou%c;?K^OS~uUDEm6(eEvQn1Yq-V~=RE5I zPy+Ru$`7t1Ao0h8XhLlW=qi8>_9BTLc%gk@#+#M@Zn0K(BEwe0ZLC?oO($o_zvnB` zv)nEHDG2vS7zI;bjXSks-GxcrsWRg*NX9;nVRVftL~2BY1C@k2QM6jK7&}#} zhT;9xH?uB=udg8bp;9KXce=Jb%;{|BA(0brU%@)|KYj9af&w!94fqf|NL#jc1&h=j zh606ySq4yZ4T@$mURP>ctuT-(`qBHY`vqy8H)kr&$NyzJ{b|>R%5Udo@UF7-fp&^a zhvT=Z+m1ag#rY@eoa<^RdR{AQSp?fzv`PyJl9~>vQviA3W{z}sjUOoA{FK2Ium22* zw@5W!oiP&$^Zb_P3~&pimEDe4H*X(I;FoV;@cB6b33p|*&#K|(ONK>QZjNcQ`d2aq#6a@MDeY^|4<@IEL% zl!ucC>Z{4uC(=6-jJx9#-F@LdAO9JCcg-org6U^jrcV>y#*{yNj!E>t`h5*y+lfFP z9Fg5`Eq!z-q%G=LhJI8=*oMzU`mvw3vS!5z75G(J(InE?BB0|UZ_kQYz!F#7GChp3Rmgi4cd>#w!4WGbB|VymZtBD3m~PBS%G|&~f1}L8X)888_!NbKQDa z!qDBvnK#|$yN2R8JabgSQ0qixBvyV5ozX%%pf3lll7|s}HCJd=cOyqMHD}Wm6wn2Q zh3;=2t1cWlvgiB5k6#Wh!+visE@!SG67xwpRbt+DiHZl-%SOwtoLuVcOQ1`$>GEJ> z`Wp9W#iYDnZqcpIYjyA)OQ9Wc(9>^vYmaQccn`VbCs!F&D3gMmDHe0tu?JUf6OE8EKsX*Q-4jPja9}#kv z*mX;Dyg$X1v&(B7anKbe;iV$Xz6e!MDEWaoL(d7qT+4S=`!=w)pFF(7%4SGO{mbE~ z)4BNxq4nEhUMFq1{nlneuRcp3ABcQ7oKzZe49TA}I2}bgIlu_We1< z7P@- zT5bG)uFv<|(jdQ9E^Ua6!am z+!1boEPfH-@G!^uAvuu-JUUL3nq|}OMMY=}Io`R-zx@C|5M{igzYF+lAS(yS zR{}2Ev2FS3HJ0`II-4n28MZ}#4L7y(_BbI#_rV)q3K=WWdvCd;*3xY8hLK8&o2Y7Q z@sN4tG4jVP^%_93sv(qNw8>KkBDQ)nAg;9E=={bXkF-RH+C+sHz=IVSkKPc#0ADsB z8OJ#q{a^ib72?;U$6r%+a}L=;0emv-Q{&J2l?x}U13JrCS01RJC{c`6^z#w4NciL9 z&Mh%pSPjvKLFoAZ`lpWl;~s&w>3?y#JV?B8Kyp7spz*;k6qoiY?u^U1;h)sABM7FE zU1#AR#x-*Gu$<@-klCR(C5zmqPO6N`^fO;Q)?0i|DxWqWq;g2Kt&q(l@f`D1-JrE?5 zg}`3310*}y2AWCUf2OP$SsDOcq;y?=5b~jbe%Tci;K6~g;~!t=^76EN4SLrQf_23w zDBEt#i0ur`x=~lEXr_@8aard`FUsU<`V<70Q?fH0_1|$EL{2Dnn?!1_ z2bn+N-o91uebKoIco@#9YpBKUi2jjT_)hlD4R-Y2gu0{edOb_?wB5)4;%WB{^vOOu z89A4l9#!#O(y65T#!E(C(Ief;J;M3o)mdTZu^%CSAuNPrVm#<;{_1 z8onB*%Me!l4O=f1n@EKgp_C8oil6j~(ok&LQ%ZarvG|c|GE8&prceWVslmoFqV5Fx z-mqn_`liK@y8Bfi?KLE4@IXIx+m1gC?;CejtrS_(TEpN@U61Pye=fs=_M1D|B5$Ge zb9*D5in_9A2F0p_&MTk}HQU_blXiQyeX7q#@E(0c)AHviL7VX&~aBw z!cM8&poE_+{1_&28K!);^|rh&m)73$c?-$ypFzi|#`Bz(?y^EDy0&oEw0~HS4o=Ix z1z+j?UM;d!bS7>N3Ai4NYov93ILN3E2Xm6?`OEx#i-&~WlT7)eqSd9i73>O8Ld4R! z5q4{HluYa7D_v0ayY6&6=4TcmA~iI-uKk-Ig{{xx-5v2QVVGg;;-d|}jb}AiCr&PT+!C8A2aN#{ zrgWT#>8KUUhXeBm`Tf=(T*`3H6oBhdpyVPJ0ON_UA6yRy>(woQ5%HZwah{MCAK}?C z!G9k~(B91vPezz-zSS3Orui%POdy8uuliWT{o!5lYHP7wW01I=@ySD4r_lr>LJVm< z0=MW!UfYb+f^C>MA#V&Wp#&Y5@1H8i$il`WlI%R;1(1#!;pODZyZ2?uH3)5jh=2#hKAM!cYP9OZ#`@>X_uO4P(UpR) z;tY^y^;JEn;t1AW7ud$bilU-ySEd^xiMU>rPgH)rE}QjbU1}9n-vv5>nmq&nTlVoo zhPrsjSXTqA)%h%`_Tkm8^2W){;0_L~WHaZ}B4EG{)4_E2`D&pb&N7EcO_V(tZa0sK zE7@~nN>DE?dTXby=Bk3vs<>&b@8N)Blc8}RgT!_2v_%x}-|1hE_vz;FY{qefG3roZ zK6oAA5uo)x3QTeCcdVbVCHfs4z$(wTUVYKY3FGZQXhH;3+kC7M4KrmRS1&@QS?mW)k$^J1 z5c_a{jj7(en0=@wL47sR=5hesj%J7|-tf(*KtO*?V4@SXY6nqi z^mEPHdO;afM1T!0Lftf1Nr_fwclP|C0LxJ5x&F5tKLyM4F-*GWTZO4p7 zGPPE1AxCDuRnH2)DCQJHE*!P2<5I9ZoZ@!6jFgNBa2Qg*TvJ>eDUFDaH{NsdaM)nd zat1Dxl3Z9jqyC*G8y_EMQ|oDV9cdTuO%Rgq8P#yMgUj|2u(bm}xZq$3*Inkj%0Dc= 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 diff --git a/.github/stale.yml b/.github/stale.yml index 9a3b438ac..88c5f7c21 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,7 +1,3 @@ -# Configuration for probot-stale - Activate from https://github.com/apps/stale -# -# Probot-stale Repository: https://github.com/probot/stale - # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 45 @@ -30,7 +26,6 @@ markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. - # Comment to post when removing the stale label. # unmarkComment: > # Your comment here. @@ -38,21 +33,8 @@ markComment: > # Comment to post when closing a stale Issue or Pull Request. closeComment: > This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. - # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 30 # Limit to only `issues` or `pulls` -#only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed +only: issues diff --git a/COPYFILES.BAT b/COPYFILES.BAT deleted file mode 100644 index 8d7cf75f5..000000000 --- a/COPYFILES.BAT +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -echo *************************************************************** -echo: -echo Copying Firmwares for Release -echo: -echo *************************************************************** - -cd %USERPROFILE%\Documents\GitHub\Sonoff-Tasmota_KNX\.pioenvs - -copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin -copy sonoff-BR\firmware.bin sonoff_KNX-BR.bin -copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin -copy sonoff-CZ\firmware.bin sonoff_KNX-CZ.bin -copy sonoff-DE\firmware.bin sonoff_KNX-DE.bin -copy sonoff-DE_4MB\firmware.bin sonoff_KNX-DE-4MB.bin -copy sonoff-EN\firmware.bin sonoff_KNX-EN.bin -copy sonoff-EN_4MB\firmware.bin sonoff_KNX-EN-4MB.bin -copy sonoff-ES\firmware.bin sonoff_KNX-ES.bin -copy sonoff-ES_4MB\firmware.bin sonoff_KNX-ES-4MB.bin -copy sonoff-FR\firmware.bin sonoff_KNX-FR.bin -copy sonoff-GR\firmware.bin sonoff_KNX-GR.bin -copy sonoff-HU\firmware.bin sonoff_KNX-HU.bin -copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin -copy sonoff-minimal\firmware.bin sonoff_minimal.bin -copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin -copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin -copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin -copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin -copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin -copy sonoff-UK\firmware.bin sonoff_KNX-UK.bin - -echo: -echo: -echo DONE... -echo: -pause diff --git a/README.md b/README.md index e9848b800..6c1bf4e3d 100644 --- a/README.md +++ b/README.md @@ -1,166 +1,3 @@ -# Sonoff-Tasmota KNX (Development Repository) -## Now integrated in [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota)! - -[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). - -[![GitHub version](https://img.shields.io/github/release/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/ascillato/Sonoff-Tasmota_KNX/total.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![License](https://img.shields.io/github/license/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/blob/development/LICENSE.txt) - -If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! -[![GitHub stars](https://img.shields.io/github/stars/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Star)](https://github.com/ascillato/Sonoff-Tasmota_KNX/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Fork)](https://github.com/ascillato/Sonoff-Tasmota_KNX/network) - -Any help or comment is very welcome. - -## Table of Contents - -* [KNX Explanation](#knx-explanation) -* [Integration](#integration) -* [Requirement](#requirement) -* [Usage Examples](#usage-examples) -* [Development Road Map](#development-road-map) -* [Modifications to Sonoff-Tasmota](#modifications-to-sonoff-tasmota) -* [Contributors](#contributors) -* [Sonoff-Tasmota](#sonoff-tasmota) - -## KNX Explanation ## - -[](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) - -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buildings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_, so there is no need for a KNX Router unless you want to communicate to KNX Devices that are not in the WIFI Network (Twisted Pair, RF, Powerline). - -Each device has a physical address (like a fixed IP) as **1 . 1 . 0** and that address is used for configuration purposes. - -Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. -So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. - -## Integration ## - -Several home automation systems have KNX support. For example, [Home Assistant](https://github.com/home-assistant/home-assistant) has a [XKNX Python Library](https://github.com/XKNX/xknx) to connect to KNX devices using a KNX Router. If you don't have a **KNX Router**, you can use a **Software KNX Router** like [KNXd](https://github.com/knxd/knxd) on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF. - -If you use the ETS (KNX Configurator Software) you can add any Sonoff-Tasmota_KNX as a dummy device. - -## Requirement ## - -* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0). - -It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. - -## Usage Examples ## - -There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on _Configure Module Menu_. - -To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select Configure KNX. - - - - -**1) Setting Several Sonoff to be controlled as one by a Home Automation System:** - -We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. -In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. - -DEVICE 1 - - - -DEVICE 2 - - - -**2) Setting 2 Sonoff to be linked as stair lights:** - -We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. - -DEVICE 1 - - - -DEVICE 2 - - - -**3) Setting a button as initiator of a scene:** - -Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. - -DEVICE 1 - - - -DEVICE 2 - - - -**4) Setting a Temperature sensor:** - -We can configure to send the value of temperature or humidity every teleperiod. This teleperiod can be configured. See Sonoff Tasmota [wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Commands). It is recommended also to set the reply temperature address. - - - -## Development Road Map ## - -**For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu -- [x] Add Feature to Receive telegrams and modify Relay Status -- [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) -- [x] Add Feature to Send telegrams of relay status change -- [x] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) -- [x] Add Feature to Send telegrams of button pressed -- [x] Add Feature to receive telegrams to toggle relay status -- [x] Add Feature to read Temperature, Humidity from Tasmota -- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [x] Add Feature to receive command to read temperature, Humidity -- [x] Add Feature to recognize Tasmota config to show the same number of relays, buttons, etc. -- [x] Add Feature to Save Config -- [x] Add Feature to Load Config -- [x] Add Log Info -- [x] Complete all the language files with keys -- [x] Add support for other output devices supported by Tasmota -- [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) -- [x] Add command for rules to send values and commands by KNX -- [x] Add events for rules when receiving data from KNX and read requests -- [x] Add option for increase communication reliability (re send telegrams) -- [ ] Add option for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) -- [ ] Add option to support KNX Snooping to debug KNX Network -- [ ] Add option for KNXnet/IP Tunneling -- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling -- [ ] Add option to support ETS Programming -- [ ] Optimize code to reduce Flash and RAM - -## Modifications to Sonoff-Tasmota ## - -* Added the file _/sonoff/xdrv_11_KNX.ino_ -* Added the entry `#define USE_KNX` on _/sonoff/user_config.h_ -* Added entries to the file _/sonoff/webserver.ino_ -* Added entries to the file _/sonoff/sonoff.ino_ -* Added entries to the file _/sonoff/sonoff.h_ -* Added entries to the file _/sonoff/settings.h_ -* Added entries to the file _/sonoff/support.ino_ -* Added entries to sensor files -* Added entries to language files - -Up to now, enabling KNX uses +23k of code and +3k3 of memory. - -There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. - -## Contributors ## - -* [ascillato](https://github.com/ascillato) ( Adrian Scillato ) -* [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. -* [envy](https://github.com/envy) ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP. -* [arendst](https://github.com/arendst) ( Theo Arends ) - Thanks for the guide on Tasmota and for the ideas. -* [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions -* [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions -* [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions -* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXd](https://github.com/knxd/knxd) use. -* And many others providing testing, bug reporting and feature requests. - ------------------------------------------------------------------------------------------------------------------------------------ - -[](https://www.paypal.me/ascillato) - ------------------------------------------------------------------------------------------------------------------------------------ - ## Sonoff-Tasmota Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_ with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **Serial**, **HTTP**, **MQTT** and **KNX**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO. diff --git a/lib/Adafruit_GFX-1.2.2.07/.gitignore b/lib/Adafruit_GFX-1.2.2.07/.gitignore deleted file mode 100644 index 7b2fd3a2f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -default.vim -fontconvert/fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp deleted file mode 100644 index 53c7ad35c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp +++ /dev/null @@ -1,1348 +0,0 @@ -/* -This is the core graphics library for all our displays, providing a common -set of graphics primitives (points, lines, circles, etc.). It needs to be -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. - */ - -#include "Adafruit_GFX.h" -#include "glcdfont.c" -#ifdef __AVR__ - #include -#elif defined(ESP8266) || defined(ESP32) - #include -#endif - -// Many (but maybe not all) non-AVR board installs define macros -// for compatibility with existing PROGMEM-reading AVR code. -// Do our own checks and defines here for good measure... - -#ifndef pgm_read_byte - #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#endif -#ifndef pgm_read_word - #define pgm_read_word(addr) (*(const unsigned short *)(addr)) -#endif -#ifndef pgm_read_dword - #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) -#endif - -// Pointers are a peculiar case...typically 16-bit on AVR boards, -// 32 bits elsewhere. Try to accommodate both... - -#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF) - #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) -#else - #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr)) -#endif - -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#ifndef _swap_int16_t -#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } -#endif - -Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): -WIDTH(w), HEIGHT(h) -{ - _width = WIDTH; - _height = HEIGHT; - rotation = 0; - cursor_y = cursor_x = 0; - textsize = 1; - textcolor = textbgcolor = 0xFFFF; - wrap = true; - _cp437 = false; - gfxFont = NULL; -} - -// Bresenham's algorithm - thx wikpedia -void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color) { - int16_t steep = abs(y1 - y0) > abs(x1 - x0); - if (steep) { - _swap_int16_t(x0, y0); - _swap_int16_t(x1, y1); - } - - if (x0 > x1) { - _swap_int16_t(x0, x1); - _swap_int16_t(y0, y1); - } - - int16_t dx, dy; - dx = x1 - x0; - dy = abs(y1 - y0); - - int16_t err = dx / 2; - int16_t ystep; - - if (y0 < y1) { - ystep = 1; - } else { - ystep = -1; - } - - for (; x0<=x1; x0++) { - if (steep) { - writePixel(y0, x0, color); - } else { - writePixel(x0, y0, color); - } - err -= dy; - if (err < 0) { - y0 += ystep; - err += dx; - } - } -} - -void Adafruit_GFX::startWrite(){ - // Overwrite in subclasses if desired! -} - -void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){ - // Overwrite in subclasses if startWrite is defined! - drawPixel(x, y, color); -} - -// (x,y) is topmost point; if unsure, calling function -// should sort endpoints or call writeLine() instead -void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // Overwrite in subclasses if startWrite is defined! - // Can be just writeLine(x, y, x, y+h-1, color); - // or writeFillRect(x, y, 1, h, color); - drawFastVLine(x, y, h, color); -} - -// (x,y) is leftmost point; if unsure, calling function -// should sort endpoints or call writeLine() instead -void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // Overwrite in subclasses if startWrite is defined! - // Example: writeLine(x, y, x+w-1, y, color); - // or writeFillRect(x, y, w, 1, color); - drawFastHLine(x, y, w, color); -} - -void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // Overwrite in subclasses if desired! - fillRect(x,y,w,h,color); -} - -void Adafruit_GFX::endWrite(){ - // Overwrite in subclasses if startWrite is defined! -} - -// (x,y) is topmost point; if unsure, calling function -// should sort endpoints or call drawLine() instead -void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // Update in subclasses if desired! - startWrite(); - writeLine(x, y, x, y+h-1, color); - endWrite(); -} - -// (x,y) is leftmost point; if unsure, calling function -// should sort endpoints or call drawLine() instead -void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // Update in subclasses if desired! - startWrite(); - writeLine(x, y, x+w-1, y, color); - endWrite(); -} - -void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // Update in subclasses if desired! - startWrite(); - for (int16_t i=x; i y1) _swap_int16_t(y0, y1); - drawFastVLine(x0, y0, y1 - y0 + 1, color); - } else if(y0 == y1){ - if(x0 > x1) _swap_int16_t(x0, x1); - drawFastHLine(x0, y0, x1 - x0 + 1, color); - } else { - startWrite(); - writeLine(x0, y0, x1, y1, color); - endWrite(); - } -} - -// Draw a circle outline -void Adafruit_GFX::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; - - startWrite(); - writePixel(x0 , y0+r, color); - writePixel(x0 , y0-r, color); - writePixel(x0+r, y0 , color); - writePixel(x0-r, y0 , color); - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - writePixel(x0 + x, y0 + y, color); - writePixel(x0 - x, y0 + y, color); - writePixel(x0 + x, y0 - y, color); - writePixel(x0 - x, y0 - y, color); - writePixel(x0 + y, y0 + x, color); - writePixel(x0 - y, y0 + x, color); - writePixel(x0 + y, y0 - x, color); - writePixel(x0 - y, y0 - x, color); - } - endWrite(); -} - -void Adafruit_GFX::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; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - if (cornername & 0x4) { - writePixel(x0 + x, y0 + y, color); - writePixel(x0 + y, y0 + x, color); - } - if (cornername & 0x2) { - writePixel(x0 + x, y0 - y, color); - writePixel(x0 + y, y0 - x, color); - } - if (cornername & 0x8) { - writePixel(x0 - y, y0 + x, color); - writePixel(x0 - x, y0 + y, color); - } - if (cornername & 0x1) { - writePixel(x0 - y, y0 - x, color); - writePixel(x0 - x, y0 - y, color); - } - } -} - -void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { - startWrite(); - writeFastVLine(x0, y0-r, 2*r+1, color); - fillCircleHelper(x0, y0, r, 3, 0, color); - endWrite(); -} - -// Used to do circles and roundrects -void Adafruit_GFX::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; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - if (cornername & 0x1) { - writeFastVLine(x0+x, y0-y, 2*y+1+delta, color); - writeFastVLine(x0+y, y0-x, 2*x+1+delta, color); - } - if (cornername & 0x2) { - writeFastVLine(x0-x, y0-y, 2*y+1+delta, color); - writeFastVLine(x0-y, y0-x, 2*x+1+delta, color); - } - } -} - -// Draw a rectangle -void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - startWrite(); - writeFastHLine(x, y, w, color); - writeFastHLine(x, y+h-1, w, color); - writeFastVLine(x, y, h, color); - writeFastVLine(x+w-1, y, h, color); - endWrite(); -} - -// Draw a rounded rectangle -void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, - int16_t h, int16_t r, uint16_t color) { - // smarter version - startWrite(); - writeFastHLine(x+r , y , w-2*r, color); // Top - writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom - writeFastVLine(x , y+r , h-2*r, color); // Left - writeFastVLine(x+w-1, y+r , h-2*r, color); // Right - // 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); - endWrite(); -} - -// Fill a rounded rectangle -void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, - int16_t h, int16_t r, uint16_t color) { - // smarter version - startWrite(); - writeFillRect(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); - endWrite(); -} - -// Draw a triangle -void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { - drawLine(x0, y0, x1, y1, color); - drawLine(x1, y1, x2, y2, color); - drawLine(x2, y2, x0, y0, color); -} - -// Fill a triangle -void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { - - int16_t a, b, y, last; - - // Sort coordinates by Y order (y2 >= y1 >= y0) - if (y0 > y1) { - _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); - } - if (y1 > y2) { - _swap_int16_t(y2, y1); _swap_int16_t(x2, x1); - } - if (y0 > y1) { - _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); - } - - startWrite(); - 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; - writeFastHLine(a, y0, b-a+1, color); - endWrite(); - return; - } - - int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1; - int32_t - 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 - - 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_int16_t(a,b); - writeFastHLine(a, y, b-a+1, color); - } - - // 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_int16_t(a,b); - writeFastHLine(a, y, b-a+1, color); - } - endWrite(); -} - -// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- - -// Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, -// using the specified foreground color (unset bits are transparent). -void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) { - - int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte - uint8_t byte = 0; - - startWrite(); - for(int16_t j=0; j>= 1; - else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); - // Nearly identical to drawBitmap(), only the bit order - // is reversed here (left-to-right = LSB to MSB): - if(byte & 0x01) writePixel(x+i, y, color); - } - } - endWrite(); -} - -// Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) -// pos. Specifically for 8-bit display devices such as IS31FL3731; -// no color reduction/expansion is performed. -void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], int16_t w, int16_t h) { - startWrite(); - for(int16_t j=0; j= _width) || // Clip right - (y >= _height) || // Clip bottom - ((x + 6 * size - 1) < 0) || // Clip left - ((y + 8 * size - 1) < 0)) // Clip top - return; - - if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior - - startWrite(); - for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns - uint8_t line = pgm_read_byte(&font[c * 5 + i]); - for(int8_t j=0; j<8; j++, line >>= 1) { - if(line & 1) { - if(size == 1) - writePixel(x+i, y+j, color); - else - writeFillRect(x+i*size, y+j*size, size, size, color); - } else if(bg != color) { - if(size == 1) - writePixel(x+i, y+j, bg); - else - writeFillRect(x+i*size, y+j*size, size, size, bg); - } - } - } - if(bg != color) { // If opaque, draw vertical line for last column - if(size == 1) writeFastVLine(x+5, y, 8, bg); - else writeFillRect(x+5*size, y, size, 8*size, bg); - } - endWrite(); - - } else { // Custom font - - // Character is assumed previously filtered by write() to eliminate - // newlines, returns, non-printable characters, etc. Calling - // drawChar() directly with 'bad' characters of font may cause mayhem! - - c -= (uint8_t)pgm_read_byte(&gfxFont->first); - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); - uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); - - uint16_t bo = pgm_read_word(&glyph->bitmapOffset); - uint8_t w = pgm_read_byte(&glyph->width), - h = pgm_read_byte(&glyph->height); - int8_t xo = pgm_read_byte(&glyph->xOffset), - yo = pgm_read_byte(&glyph->yOffset); - uint8_t xx, yy, bits = 0, bit = 0; - int16_t xo16 = 0, yo16 = 0; - - if(size > 1) { - xo16 = xo; - yo16 = yo; - } - - // Todo: Add character clipping here - - // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS. - // THIS IS ON PURPOSE AND BY DESIGN. The background color feature - // has typically been used with the 'classic' font to overwrite old - // screen contents with new data. This ONLY works because the - // characters are a uniform size; it's not a sensible thing to do with - // proportionally-spaced fonts with glyphs of varying sizes (and that - // may overlap). To replace previously-drawn text when using a custom - // font, use the getTextBounds() function to determine the smallest - // rectangle encompassing a string, erase the area with fillRect(), - // then draw new text. This WILL infortunately 'blink' the text, but - // is unavoidable. Drawing 'background' pixels will NOT fix this, - // only creates a new set of problems. Have an idea to work around - // this (a canvas object type for MCUs that can afford the RAM and - // displays supporting setAddrWindow() and pushColors()), but haven't - // implemented this yet. - - startWrite(); - for(yy=0; yy= 100 -size_t Adafruit_GFX::write(uint8_t c) { -#else -void Adafruit_GFX::write(uint8_t c) { -#endif - if(!gfxFont) { // 'Classic' built-in font - - if(c == '\n') { // Newline? - cursor_x = 0; // Reset x to zero, - cursor_y += textsize * 8; // advance y one line - } else if(c != '\r') { // Ignore carriage returns - if(wrap && ((cursor_x + textsize * 6) > _width)) { // Off right? - cursor_x = 0; // Reset x to zero, - cursor_y += textsize * 8; // advance y one line - } - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - cursor_x += textsize * 6; // Advance x one char - } - - } else { // Custom font - - if(c == '\n') { - cursor_x = 0; - cursor_y += (int16_t)textsize * - (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } else if(c != '\r') { - uint8_t first = pgm_read_byte(&gfxFont->first); - if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( - &gfxFont->glyph))[c - first]); - uint8_t w = pgm_read_byte(&glyph->width), - h = pgm_read_byte(&glyph->height); - if((w > 0) && (h > 0)) { // Is there an associated bitmap? - int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic - if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) { - cursor_x = 0; - cursor_y += (int16_t)textsize * - (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - } - cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize; - } - } - - } -#if ARDUINO >= 100 - return 1; -#endif -} - -void Adafruit_GFX::setCursor(int16_t x, int16_t y) { - cursor_x = x; - cursor_y = y; -} - -int16_t Adafruit_GFX::getCursorX(void) const { - return cursor_x; -} - -int16_t Adafruit_GFX::getCursorY(void) const { - return cursor_y; -} - -void Adafruit_GFX::setTextSize(uint8_t s) { - textsize = (s > 0) ? s : 1; -} - -void Adafruit_GFX::setTextColor(uint16_t c) { - // For 'transparent' background, we'll set the bg - // to the same as fg instead of using a flag - textcolor = textbgcolor = c; -} - -void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { - textcolor = c; - textbgcolor = b; -} - -void Adafruit_GFX::setTextWrap(boolean w) { - wrap = w; -} - -uint8_t Adafruit_GFX::getRotation(void) const { - return rotation; -} - -void Adafruit_GFX::setRotation(uint8_t x) { - rotation = (x & 3); - switch(rotation) { - case 0: - case 2: - _width = WIDTH; - _height = HEIGHT; - break; - case 1: - case 3: - _width = HEIGHT; - _height = WIDTH; - break; - } -} - -// Enable (or disable) Code Page 437-compatible charset. -// There was an error in glcdfont.c for the longest time -- one character -// (#176, the 'light shade' block) was missing -- this threw off the index -// of every character that followed it. But a TON of code has been written -// with the erroneous character indices. By default, the library uses the -// original 'wrong' behavior and old sketches will still work. Pass 'true' -// to this function to use correct CP437 character values in your code. -void Adafruit_GFX::cp437(boolean x) { - _cp437 = x; -} - -void Adafruit_GFX::setFont(const GFXfont *f) { - if(f) { // Font struct pointer passed in? - if(!gfxFont) { // And no current font struct? - // Switching from classic to new font behavior. - // Move cursor pos down 6 pixels so it's on baseline. - cursor_y += 6; - } - } else if(gfxFont) { // NULL passed. Current font struct defined? - // Switching from new to classic font behavior. - // Move cursor pos up 6 pixels so it's at top-left of char. - cursor_y -= 6; - } - gfxFont = (GFXfont *)f; -} - -// Broke this out as it's used by both the PROGMEM- and RAM-resident -// getTextBounds() functions. -void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y, - int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) { - - if(gfxFont) { - - if(c == '\n') { // Newline? - *x = 0; // Reset x to zero, advance y by one line - *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } else if(c != '\r') { // Not a carriage return; is normal char - uint8_t first = pgm_read_byte(&gfxFont->first), - last = pgm_read_byte(&gfxFont->last); - if((c >= first) && (c <= last)) { // Char present in this font? - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( - &gfxFont->glyph))[c - first]); - uint8_t gw = pgm_read_byte(&glyph->width), - gh = pgm_read_byte(&glyph->height), - xa = pgm_read_byte(&glyph->xAdvance); - int8_t xo = pgm_read_byte(&glyph->xOffset), - yo = pgm_read_byte(&glyph->yOffset); - if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) { - *x = 0; // Reset x to zero, advance y by one line - *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } - int16_t ts = (int16_t)textsize, - x1 = *x + xo * ts, - y1 = *y + yo * ts, - x2 = x1 + gw * ts - 1, - y2 = y1 + gh * ts - 1; - if(x1 < *minx) *minx = x1; - if(y1 < *miny) *miny = y1; - if(x2 > *maxx) *maxx = x2; - if(y2 > *maxy) *maxy = y2; - *x += xa * ts; - } - } - - } else { // Default font - - if(c == '\n') { // Newline? - *x = 0; // Reset x to zero, - *y += textsize * 8; // advance y one line - // min/max x/y unchaged -- that waits for next 'normal' character - } else if(c != '\r') { // Normal char; ignore carriage returns - if(wrap && ((*x + textsize * 6) > _width)) { // Off right? - *x = 0; // Reset x to zero, - *y += textsize * 8; // advance y one line - } - int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char - y2 = *y + textsize * 8 - 1; - if(x2 > *maxx) *maxx = x2; // Track max x, y - if(y2 > *maxy) *maxy = y2; - if(*x < *minx) *minx = *x; // Track min x, y - if(*y < *miny) *miny = *y; - *x += textsize * 6; // Advance x one char - } - } -} - -// Pass string and a cursor position, returns UL corner and W,H. -void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { - uint8_t c; // Current character - - *x1 = x; - *y1 = y; - *w = *h = 0; - - int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; - - while((c = *str++)) - charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); - - if(maxx >= minx) { - *x1 = minx; - *w = maxx - minx + 1; - } - if(maxy >= miny) { - *y1 = miny; - *h = maxy - miny + 1; - } -} - -// Same as above, but for PROGMEM strings -void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str, - int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { - uint8_t *s = (uint8_t *)str, c; - - *x1 = x; - *y1 = y; - *w = *h = 0; - - int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; - - while((c = pgm_read_byte(s++))) - charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); - - if(maxx >= minx) { - *x1 = minx; - *w = maxx - minx + 1; - } - if(maxy >= miny) { - *y1 = miny; - *h = maxy - miny + 1; - } -} - -// Return the size of the display (per current rotation) -int16_t Adafruit_GFX::width(void) const { - return _width; -} - -int16_t Adafruit_GFX::height(void) const { - return _height; -} - -void Adafruit_GFX::invertDisplay(boolean i) { - // Do nothing, must be subclassed if supported by hardware -} - -/***************************************************************************/ -// code for the GFX button UI element - -Adafruit_GFX_Button::Adafruit_GFX_Button(void) { - _gfx = 0; -} - -// Classic initButton() function: pass center & size -void Adafruit_GFX_Button::initButton( - Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h, - uint16_t outline, uint16_t fill, uint16_t textcolor, - char *label, uint8_t textsize) -{ - // Tweak arguments and pass to the newer initButtonUL() function... - initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, - textcolor, label, textsize); -} - -// Newer function instead accepts upper-left corner & size -void Adafruit_GFX_Button::initButtonUL( - Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h, - uint16_t outline, uint16_t fill, uint16_t textcolor, - char *label, uint8_t textsize) -{ - _x1 = x1; - _y1 = y1; - _w = w; - _h = h; - _outlinecolor = outline; - _fillcolor = fill; - _textcolor = textcolor; - _textsize = textsize; - _gfx = gfx; - strncpy(_label, label, 9); -} - -void Adafruit_GFX_Button::drawButton(boolean inverted) { - uint16_t fill, outline, text; - - if(!inverted) { - fill = _fillcolor; - outline = _outlinecolor; - text = _textcolor; - } else { - fill = _textcolor; - outline = _outlinecolor; - text = _fillcolor; - } - - uint8_t r = min(_w, _h) / 4; // Corner radius - _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); - _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); - - _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize), - _y1 + (_h/2) - (4 * _textsize)); - _gfx->setTextColor(text); - _gfx->setTextSize(_textsize); - _gfx->print(_label); -} - -boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) { - return ((x >= _x1) && (x < (_x1 + _w)) && - (y >= _y1) && (y < (_y1 + _h))); -} - -void Adafruit_GFX_Button::press(boolean p) { - laststate = currstate; - currstate = p; -} - -boolean Adafruit_GFX_Button::isPressed() { return currstate; } -boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } -boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } - -// ------------------------------------------------------------------------- - -// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too -// comfy with the implementation) provide 1-, 8- and 16-bit offscreen -// canvases, the address of which can be passed to drawBitmap() or -// pushColors() (the latter appears only in a couple of GFX-subclassed TFT -// libraries at this time). This is here mostly to help with the recently- -// added proportionally-spaced fonts; adds a way to refresh a section of the -// screen without a massive flickering clear-and-redraw...but maybe you'll -// find other uses too. VERY RAM-intensive, since the buffer is in MCU -// memory and not the display driver...GXFcanvas1 might be minimally useful -// on an Uno-class board, but this and the others are much more likely to -// require at least a Mega or various recent ARM-type boards (recommended, -// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per -// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte -// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no -// scanline pad). -// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. - -GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint16_t bytes = ((w + 7) / 8) * h; - if((buffer = (uint8_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas1::~GFXcanvas1(void) { - if(buffer) free(buffer); -} - -uint8_t* GFXcanvas1::getBuffer(void) { - return buffer; -} - -void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) { -#ifdef __AVR__ - // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR - static const uint8_t PROGMEM - GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, - GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE }; -#endif - - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; -#ifdef __AVR__ - if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); - else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); -#else - if(color) *ptr |= 0x80 >> (x & 7); - else *ptr &= ~(0x80 >> (x & 7)); -#endif - } -} - -void GFXcanvas1::fillScreen(uint16_t color) { - if(buffer) { - uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT; - memset(buffer, color ? 0xFF : 0x00, bytes); - } -} - -GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint32_t bytes = w * h; - if((buffer = (uint8_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas8::~GFXcanvas8(void) { - if(buffer) free(buffer); -} - -uint8_t* GFXcanvas8::getBuffer(void) { - return buffer; -} - -void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) { - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - buffer[x + y * WIDTH] = color; - } -} - -void GFXcanvas8::fillScreen(uint16_t color) { - if(buffer) { - memset(buffer, color, WIDTH * HEIGHT); - } -} - -void GFXcanvas8::writeFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - - if((x >= _width) || (y < 0) || (y >= _height)) return; - int16_t x2 = x + w - 1; - if(x2 < 0) return; - - // Clip left/right - if(x < 0) { - x = 0; - w = x2 + 1; - } - if(x2 >= _width) w = _width - x; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - memset(buffer + y * WIDTH + x, color, w); -} - -GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint32_t bytes = w * h * 2; - if((buffer = (uint16_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas16::~GFXcanvas16(void) { - if(buffer) free(buffer); -} - -uint16_t* GFXcanvas16::getBuffer(void) { - return buffer; -} - -void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) { - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - buffer[x + y * WIDTH] = color; - } -} - -void GFXcanvas16::fillScreen(uint16_t color) { - if(buffer) { - uint8_t hi = color >> 8, lo = color & 0xFF; - if(hi == lo) { - memset(buffer, lo, WIDTH * HEIGHT * 2); - } else { - uint32_t i, pixels = WIDTH * HEIGHT; - for(i=0; i= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif -#include "gfxfont.h" - -class Adafruit_GFX : public Print { - - public: - - Adafruit_GFX(int16_t w, int16_t h); // Constructor - - // This MUST be defined by the subclass: - virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - - // TRANSACTION API / CORE DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void startWrite(void); - virtual void writePixel(int16_t x, int16_t y, uint16_t color); - virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); - virtual void endWrite(void); - - // CONTROL API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void setRotation(uint8_t r); - virtual void invertDisplay(boolean i); - - // BASIC DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void - // It's good to implement those, even if using transaction API - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), - fillScreen(uint16_t color), - // Optional and probably not necessary to change - drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), - drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - - // These exist only with Adafruit_GFX (no subclass overrides) - void - drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - uint16_t color), - fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - int16_t delta, uint16_t color), - drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color), - drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color, uint16_t bg), - drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h, uint16_t color), - drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h, uint16_t color, uint16_t bg), - drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color), - drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], const uint8_t mask[], - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, - uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, - const uint16_t bitmap[], const uint8_t mask[], - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, - uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h), - drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, - uint16_t bg, uint8_t size), - setCursor(int16_t x, int16_t y), - setTextColor(uint16_t c), - setTextColor(uint16_t c, uint16_t bg), - setTextSize(uint8_t s), - setTextWrap(boolean w), - cp437(boolean x=true), - setFont(const GFXfont *f = NULL), - getTextBounds(char *string, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h), - getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); - -#if ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - - int16_t height(void) const; - int16_t width(void) const; - - uint8_t getRotation(void) const; - - // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y) - int16_t getCursorX(void) const; - int16_t getCursorY(void) const; - - protected: - void - charBounds(char c, int16_t *x, int16_t *y, - int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy); - const int16_t - WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes - int16_t - _width, _height, // Display w/h as modified by current rotation - cursor_x, cursor_y; - uint16_t - textcolor, textbgcolor; - uint8_t - textsize, - rotation; - boolean - wrap, // If set, 'wrap' text at right edge of display - _cp437; // If set, use correct CP437 charset (default is off) - GFXfont - *gfxFont; -}; - -class Adafruit_GFX_Button { - - public: - Adafruit_GFX_Button(void); - // "Classic" initButton() uses center & size - void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, - uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - // New/alt initButton() uses upper-left corner & size - void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, - uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - void drawButton(boolean inverted = false); - boolean contains(int16_t x, int16_t y); - - void press(boolean p); - boolean isPressed(); - boolean justPressed(); - boolean justReleased(); - - private: - Adafruit_GFX *_gfx; - int16_t _x1, _y1; // Coordinates of top-left corner - uint16_t _w, _h; - uint8_t _textsize; - uint16_t _outlinecolor, _fillcolor, _textcolor; - char _label[10]; - - boolean currstate, laststate; -}; - -class GFXcanvas1 : public Adafruit_GFX { - public: - GFXcanvas1(uint16_t w, uint16_t h); - ~GFXcanvas1(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color); - uint8_t *getBuffer(void); - private: - uint8_t *buffer; -}; - -class GFXcanvas8 : public Adafruit_GFX { - public: - GFXcanvas8(uint16_t w, uint16_t h); - ~GFXcanvas8(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color), - writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - uint8_t *getBuffer(void); - private: - uint8_t *buffer; -}; - -class GFXcanvas16 : public Adafruit_GFX { - public: - GFXcanvas16(uint16_t w, uint16_t h); - ~GFXcanvas16(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color); - uint16_t *getBuffer(void); - private: - uint16_t *buffer; -}; - -#endif // _ADAFRUIT_GFX_H diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp deleted file mode 100644 index 9b6c8bbb6..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp +++ /dev/null @@ -1,336 +0,0 @@ -/*************************************************** - This is our library for generic SPI TFT Displays with - address windows and 16 bit color (e.g. ILI9341, HX8357D, ST7735...) - - 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 "Adafruit_SPITFT.h" -#ifndef ARDUINO_STM32_FEATHER - #include "pins_arduino.h" -#ifndef RASPI - #include "wiring_private.h" -#endif -#endif -#include - -#include "Adafruit_SPITFT_Macros.h" - - - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t Adafruit_SPITFT::color565(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3); -} - -Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, - int8_t cs, int8_t dc, int8_t mosi, - int8_t sclk, int8_t rst, int8_t miso) - : Adafruit_GFX(w, h) { - _cs = cs; - _dc = dc; - _rst = rst; - _sclk = sclk; - _mosi = mosi; - _miso = miso; - _freq = 0; -#ifdef USE_FAST_PINIO - csport = portOutputRegister(digitalPinToPort(_cs)); - cspinmask = digitalPinToBitMask(_cs); - dcport = portOutputRegister(digitalPinToPort(_dc)); - dcpinmask = digitalPinToBitMask(_dc); - clkport = portOutputRegister(digitalPinToPort(_sclk)); - clkpinmask = digitalPinToBitMask(_sclk); - mosiport = portOutputRegister(digitalPinToPort(_mosi)); - mosipinmask = digitalPinToBitMask(_mosi); - if(miso >= 0){ - misoport = portInputRegister(digitalPinToPort(_miso)); - misopinmask = digitalPinToBitMask(_miso); - } else { - misoport = 0; - misopinmask = 0; - } -#endif -} - -Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, - int8_t cs, int8_t dc, int8_t rst) - : Adafruit_GFX(w, h) { - _cs = cs; - _dc = dc; - _rst = rst; - _sclk = -1; - _mosi = -1; - _miso = -1; - _freq = 0; -#ifdef USE_FAST_PINIO - csport = portOutputRegister(digitalPinToPort(_cs)); - cspinmask = digitalPinToBitMask(_cs); - dcport = portOutputRegister(digitalPinToPort(_dc)); - dcpinmask = digitalPinToBitMask(_dc); - clkport = 0; - clkpinmask = 0; - mosiport = 0; - mosipinmask = 0; - misoport = 0; - misopinmask = 0; -#endif -} - - -void Adafruit_SPITFT::initSPI(uint32_t freq) -{ - _freq = freq; - - // Control Pins - pinMode(_dc, OUTPUT); - digitalWrite(_dc, LOW); - pinMode(_cs, OUTPUT); - digitalWrite(_cs, HIGH); - - // Software SPI - if(_sclk >= 0){ - pinMode(_mosi, OUTPUT); - digitalWrite(_mosi, LOW); - pinMode(_sclk, OUTPUT); - digitalWrite(_sclk, HIGH); - if(_miso >= 0){ - pinMode(_miso, INPUT); - } - } - - // Hardware SPI - SPI_BEGIN(); - - // toggle RST low to reset - if (_rst >= 0) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(100); - digitalWrite(_rst, LOW); - delay(100); - digitalWrite(_rst, HIGH); - delay(200); - } -} - -uint8_t Adafruit_SPITFT::spiRead() { - if(_sclk < 0){ - return HSPI_READ(); - } - if(_miso < 0){ - return 0; - } - uint8_t r = 0; - for (uint8_t i=0; i<8; i++) { - SSPI_SCK_LOW(); - SSPI_SCK_HIGH(); - r <<= 1; - if (SSPI_MISO_READ()){ - r |= 0x1; - } - } - return r; -} - -void Adafruit_SPITFT::spiWrite(uint8_t b) { - if(_sclk < 0){ - HSPI_WRITE(b); - return; - } - for(uint8_t bit = 0x80; bit; bit >>= 1){ - if((b) & bit){ - SSPI_MOSI_HIGH(); - } else { - SSPI_MOSI_LOW(); - } - SSPI_SCK_LOW(); - SSPI_SCK_HIGH(); - } -} - - -/* - * Transaction API - * */ - -void Adafruit_SPITFT::startWrite(void){ - SPI_BEGIN_TRANSACTION(); - SPI_CS_LOW(); -} - -void Adafruit_SPITFT::endWrite(void){ - SPI_CS_HIGH(); - SPI_END_TRANSACTION(); -} - -void Adafruit_SPITFT::writeCommand(uint8_t cmd){ - SPI_DC_LOW(); - spiWrite(cmd); - SPI_DC_HIGH(); -} - -void Adafruit_SPITFT::pushColor(uint16_t color) { - startWrite(); - SPI_WRITE16(color); - endWrite(); -} - - -void Adafruit_SPITFT::writePixel(uint16_t color){ - SPI_WRITE16(color); -} - -void Adafruit_SPITFT::writePixels(uint16_t * colors, uint32_t len){ - SPI_WRITE_PIXELS((uint8_t*)colors , len * 2); -} - -void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len){ -#ifdef SPI_HAS_WRITE_PIXELS - if(_sclk >= 0){ - for (uint32_t t=0; t SPI_MAX_PIXELS_AT_ONCE)?SPI_MAX_PIXELS_AT_ONCE:len; - uint16_t tlen = 0; - - for (uint32_t t=0; tblen)?blen:len; - writePixels(temp, tlen); - len -= tlen; - } -#else - uint8_t hi = color >> 8, lo = color; - if(_sclk < 0){ //AVR Optimization - for (uint32_t t=len; t; t--){ - HSPI_WRITE(hi); - HSPI_WRITE(lo); - } - return; - } - for (uint32_t t=len; t; t--){ - spiWrite(hi); - spiWrite(lo); - } -#endif -} - -void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,1,1); - writePixel(color); -} - -void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color){ - if((x >= _width) || (y >= _height)) return; - int16_t x2 = x + w - 1, y2 = y + h - 1; - if((x2 < 0) || (y2 < 0)) return; - - // Clip left/top - if(x < 0) { - x = 0; - w = x2 + 1; - } - if(y < 0) { - y = 0; - h = y2 + 1; - } - - // Clip right/bottom - if(x2 >= _width) w = _width - x; - if(y2 >= _height) h = _height - y; - - int32_t len = (int32_t)w * h; - setAddrWindow(x, y, w, h); - writeColor(color, len); -} - -void Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color){ - writeFillRect(x, y, 1, h, color); -} - -void Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color){ - writeFillRect(x, y, w, 1, color); -} - -void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color){ - startWrite(); - writePixel(x, y, color); - endWrite(); -} - -void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - startWrite(); - writeFastVLine(x, y, h, color); - endWrite(); -} - -void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - startWrite(); - writeFastHLine(x, y, w, color); - endWrite(); -} - -void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - startWrite(); - writeFillRect(x,y,w,h,color); - endWrite(); -} - -// Adapted from https://github.com/PaulStoffregen/ILI9341_t3 -// by Marc MERLIN. See examples/pictureEmbed to use this. -// 5/6/2017: function name and arguments have changed for compatibility -// with current GFX library and to avoid naming problems in prior -// implementation. Formerly drawBitmap() with arguments in different order. -void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, - uint16_t *pcolors, int16_t w, int16_t h) { - - int16_t x2, y2; // Lower-right coord - if(( x >= _width ) || // Off-edge right - ( y >= _height) || // " top - ((x2 = (x+w-1)) < 0 ) || // " left - ((y2 = (y+h-1)) < 0) ) return; // " bottom - - int16_t bx1=0, by1=0, // Clipped top-left within bitmap - saveW=w; // Save original bitmap width value - if(x < 0) { // Clip left - w += x; - bx1 = -x; - x = 0; - } - if(y < 0) { // Clip top - h += y; - by1 = -y; - y = 0; - } - if(x2 >= _width ) w = _width - x; // Clip right - if(y2 >= _height) h = _height - y; // Clip bottom - - pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left - startWrite(); - setAddrWindow(x, y, w, h); // Clipped area - while(h--) { // For each (clipped) scanline... - writePixels(pcolors, w); // Push one (clipped) row - pcolors += saveW; // Advance pointer by one full (unclipped) line - } - endWrite(); -} diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h deleted file mode 100644 index 0024a0193..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h +++ /dev/null @@ -1,80 +0,0 @@ - -#ifndef _ADAFRUIT_SPITFT_ -#define _ADAFRUIT_SPITFT_ - - -#if ARDUINO >= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif -#include -#include "Adafruit_GFX.h" - - -#if defined(ARDUINO_STM32_FEATHER) -typedef volatile uint32 RwReg; -#endif -#if defined(ARDUINO_FEATHER52) -typedef volatile uint32_t RwReg; -#endif - -class Adafruit_SPITFT : public Adafruit_GFX { - protected: - - public: - Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, int8_t _RST = -1, int8_t _MISO = -1); - Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _RST = -1); - - virtual void begin(uint32_t freq) = 0; - void initSPI(uint32_t freq); - - // Required Non-Transaction - void drawPixel(int16_t x, int16_t y, uint16_t color); - - // Transaction API - void startWrite(void); - void endWrite(void); - void writePixel(int16_t x, int16_t y, uint16_t color); - void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - // Transaction API not used by GFX - virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0; - void writePixel(uint16_t color); - void writePixels(uint16_t * colors, uint32_t len); - void writeColor(uint16_t color, uint32_t len); - void pushColor(uint16_t color); - - // Recommended Non-Transaction - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - - using Adafruit_GFX::drawRGBBitmap; // Check base class first - void drawRGBBitmap(int16_t x, int16_t y, - uint16_t *pcolors, int16_t w, int16_t h); - - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); - - protected: - uint32_t _freq; -#if defined (__AVR__) || defined(TEENSYDUINO) || defined (ESP8266) || defined (ESP32) - int8_t _cs, _dc, _rst, _sclk, _mosi, _miso; -#else - int32_t _cs, _dc, _rst, _sclk, _mosi, _miso; -#endif - -#ifdef USE_FAST_PINIO - volatile RwReg *mosiport, *misoport, *clkport, *dcport, *csport; - RwReg mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask; -#endif - - void writeCommand(uint8_t cmd); - void spiWrite(uint8_t v); - uint8_t spiRead(void); -}; - -#endif diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h deleted file mode 100644 index 74391daa7..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h +++ /dev/null @@ -1,114 +0,0 @@ - -/* - * Control Pins - * */ - -#ifdef USE_FAST_PINIO -#define SPI_DC_HIGH() *dcport |= dcpinmask -#define SPI_DC_LOW() *dcport &= ~dcpinmask -#define SPI_CS_HIGH() *csport |= cspinmask -#define SPI_CS_LOW() *csport &= ~cspinmask -#else -#define SPI_DC_HIGH() digitalWrite(_dc, HIGH) -#define SPI_DC_LOW() digitalWrite(_dc, LOW) -#define SPI_CS_HIGH() digitalWrite(_cs, HIGH) -#define SPI_CS_LOW() digitalWrite(_cs, LOW) -#endif - -/* - * Software SPI Macros - * */ - -#ifdef USE_FAST_PINIO -#define SSPI_MOSI_HIGH() *mosiport |= mosipinmask -#define SSPI_MOSI_LOW() *mosiport &= ~mosipinmask -#define SSPI_SCK_HIGH() *clkport |= clkpinmask -#define SSPI_SCK_LOW() *clkport &= ~clkpinmask -#define SSPI_MISO_READ() ((*misoport & misopinmask) != 0) -#else -#define SSPI_MOSI_HIGH() digitalWrite(_mosi, HIGH) -#define SSPI_MOSI_LOW() digitalWrite(_mosi, LOW) -#define SSPI_SCK_HIGH() digitalWrite(_sclk, HIGH) -#define SSPI_SCK_LOW() digitalWrite(_sclk, LOW) -#define SSPI_MISO_READ() digitalRead(_miso) -#endif - -#define SSPI_BEGIN_TRANSACTION() -#define SSPI_END_TRANSACTION() -#define SSPI_WRITE(v) spiWrite(v) -#define SSPI_WRITE16(s) SSPI_WRITE((s) >> 8); SSPI_WRITE(s) -#define SSPI_WRITE32(l) SSPI_WRITE((l) >> 24); SSPI_WRITE((l) >> 16); SSPI_WRITE((l) >> 8); SSPI_WRITE(l) -#define SSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ SSPI_WRITE(((uint8_t*)(c))[i+1]); SSPI_WRITE(((uint8_t*)(c))[i]); } - -/* - * Hardware SPI Macros - * */ - -#define SPI_OBJECT SPI - -#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(SPI_CLOCK_DIV2); -#elif defined (__arm__) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(11); -#elif defined(ESP8266) || defined(ESP32) - #define HSPI_SET_CLOCK() SPI_OBJECT.setFrequency(_freq); -#elif defined(RASPI) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); -#elif defined(ARDUINO_ARCH_STM32F1) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); -#else - #define HSPI_SET_CLOCK() -#endif - -#ifdef SPI_HAS_TRANSACTION - #define HSPI_BEGIN_TRANSACTION() SPI_OBJECT.beginTransaction(SPISettings(_freq, MSBFIRST, SPI_MODE0)) - #define HSPI_END_TRANSACTION() SPI_OBJECT.endTransaction() -#else - #define HSPI_BEGIN_TRANSACTION() HSPI_SET_CLOCK(); SPI_OBJECT.setBitOrder(MSBFIRST); SPI_OBJECT.setDataMode(SPI_MODE0) - #define HSPI_END_TRANSACTION() -#endif - -#ifdef ESP32 - #define SPI_HAS_WRITE_PIXELS -#endif -#if defined(ESP8266) || defined(ESP32) - // Optimized SPI (ESP8266 and ESP32) - #define HSPI_READ() SPI_OBJECT.transfer(0) - #define HSPI_WRITE(b) SPI_OBJECT.write(b) - #define HSPI_WRITE16(s) SPI_OBJECT.write16(s) - #define HSPI_WRITE32(l) SPI_OBJECT.write32(l) - #ifdef SPI_HAS_WRITE_PIXELS - #define SPI_MAX_PIXELS_AT_ONCE 32 - #define HSPI_WRITE_PIXELS(c,l) SPI_OBJECT.writePixels(c,l) - #else - #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<((l)/2); i++){ SPI_WRITE16(((uint16_t*)(c))[i]); } - #endif -#else - // Standard Byte-by-Byte SPI - - #if defined (__AVR__) || defined(TEENSYDUINO) -static inline uint8_t _avr_spi_read(void) __attribute__((always_inline)); -static inline uint8_t _avr_spi_read(void) { - uint8_t r = 0; - SPDR = r; - while(!(SPSR & _BV(SPIF))); - r = SPDR; - return r; -} - #define HSPI_WRITE(b) {SPDR = (b); while(!(SPSR & _BV(SPIF)));} - #define HSPI_READ() _avr_spi_read() - #else - #define HSPI_WRITE(b) SPI_OBJECT.transfer((uint8_t)(b)) - #define HSPI_READ() HSPI_WRITE(0) - #endif - #define HSPI_WRITE16(s) HSPI_WRITE((s) >> 8); HSPI_WRITE(s) - #define HSPI_WRITE32(l) HSPI_WRITE((l) >> 24); HSPI_WRITE((l) >> 16); HSPI_WRITE((l) >> 8); HSPI_WRITE(l) - #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ HSPI_WRITE(((uint8_t*)(c))[i+1]); HSPI_WRITE(((uint8_t*)(c))[i]); } -#endif - -#define SPI_BEGIN() if(_sclk < 0){SPI_OBJECT.begin();} -#define SPI_BEGIN_TRANSACTION() if(_sclk < 0){HSPI_BEGIN_TRANSACTION();} -#define SPI_END_TRANSACTION() if(_sclk < 0){HSPI_END_TRANSACTION();} -#define SPI_WRITE16(s) if(_sclk < 0){HSPI_WRITE16(s);}else{SSPI_WRITE16(s);} -#define SPI_WRITE32(l) if(_sclk < 0){HSPI_WRITE32(l);}else{SSPI_WRITE32(l);} -#define SPI_WRITE_PIXELS(c,l) if(_sclk < 0){HSPI_WRITE_PIXELS(c,l);}else{SSPI_WRITE_PIXELS(c,l);} diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h deleted file mode 100644 index 94ecb883a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h +++ /dev/null @@ -1,227 +0,0 @@ -const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { - 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, - 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, - 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, - 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, - 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, - 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, - 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, - 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, - 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, - 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, - 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, - 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, - 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, - 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, - 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, - 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, - 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, - 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, - 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, - 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, - 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, - 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, - 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, - 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, - 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, - 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, - 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, - 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, - 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, - 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, - 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, - 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, - 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, - 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, - 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, - 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, - 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, - 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, - 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, - 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, - 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, - 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, - 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, - 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, - 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, - 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, - 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, - 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, - 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, - 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, - 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, - 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, - 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, - 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, - 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, - 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, - 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, - 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, - 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, - 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, - 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, - 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, - 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, - 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, - 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, - 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, - 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, - 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, - 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, - 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, - 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, - 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, - 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, - 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, - 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, - 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, - 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, - 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, - 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, - 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, - 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, - 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, - 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, - 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, - 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, - 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, - 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, - 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, - 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, - 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, - 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, - 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, - 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, - 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, - 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, - 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, - 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, - 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, - 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, - 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, - 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, - 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, - 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, - 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, - 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, - 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, - 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, - 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, - 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, - 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, - 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, - 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, - 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, - 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38 }; - -const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 3, 15, 14, 6, -14 }, // 0x21 '!' - { 6, 8, 7, 14, 3, -14 }, // 0x22 '"' - { 13, 10, 16, 14, 2, -14 }, // 0x23 '#' - { 33, 10, 17, 14, 2, -14 }, // 0x24 '$' - { 55, 10, 15, 14, 2, -14 }, // 0x25 '%' - { 74, 9, 12, 14, 3, -11 }, // 0x26 '&' - { 88, 3, 7, 14, 5, -14 }, // 0x27 ''' - { 91, 3, 18, 14, 7, -14 }, // 0x28 '(' - { 98, 3, 18, 14, 4, -14 }, // 0x29 ')' - { 105, 9, 9, 14, 3, -14 }, // 0x2A '*' - { 116, 9, 11, 14, 3, -11 }, // 0x2B '+' - { 129, 5, 7, 14, 3, -3 }, // 0x2C ',' - { 134, 11, 1, 14, 2, -6 }, // 0x2D '-' - { 136, 3, 3, 14, 5, -2 }, // 0x2E '.' - { 138, 9, 18, 14, 3, -15 }, // 0x2F '/' - { 159, 9, 15, 14, 3, -14 }, // 0x30 '0' - { 176, 7, 14, 14, 4, -13 }, // 0x31 '1' - { 189, 9, 15, 14, 2, -14 }, // 0x32 '2' - { 206, 10, 15, 14, 2, -14 }, // 0x33 '3' - { 225, 8, 15, 14, 3, -14 }, // 0x34 '4' - { 240, 9, 15, 14, 3, -14 }, // 0x35 '5' - { 257, 9, 15, 14, 3, -14 }, // 0x36 '6' - { 274, 8, 15, 14, 3, -14 }, // 0x37 '7' - { 289, 9, 15, 14, 3, -14 }, // 0x38 '8' - { 306, 9, 15, 14, 3, -14 }, // 0x39 '9' - { 323, 3, 10, 14, 5, -9 }, // 0x3A ':' - { 327, 5, 13, 14, 3, -9 }, // 0x3B ';' - { 336, 11, 11, 14, 2, -11 }, // 0x3C '<' - { 352, 12, 4, 14, 1, -8 }, // 0x3D '=' - { 358, 11, 11, 14, 2, -11 }, // 0x3E '>' - { 374, 9, 14, 14, 3, -13 }, // 0x3F '?' - { 390, 9, 16, 14, 3, -14 }, // 0x40 '@' - { 408, 14, 14, 14, 0, -13 }, // 0x41 'A' - { 433, 11, 14, 14, 2, -13 }, // 0x42 'B' - { 453, 10, 14, 14, 2, -13 }, // 0x43 'C' - { 471, 10, 14, 14, 2, -13 }, // 0x44 'D' - { 489, 11, 14, 14, 2, -13 }, // 0x45 'E' - { 509, 11, 14, 14, 2, -13 }, // 0x46 'F' - { 529, 11, 14, 14, 2, -13 }, // 0x47 'G' - { 549, 10, 14, 14, 2, -13 }, // 0x48 'H' - { 567, 7, 14, 14, 4, -13 }, // 0x49 'I' - { 580, 11, 14, 14, 2, -13 }, // 0x4A 'J' - { 600, 12, 14, 14, 2, -13 }, // 0x4B 'K' - { 621, 11, 14, 14, 2, -13 }, // 0x4C 'L' - { 641, 13, 14, 14, 1, -13 }, // 0x4D 'M' - { 664, 12, 14, 14, 1, -13 }, // 0x4E 'N' - { 685, 12, 14, 14, 1, -13 }, // 0x4F 'O' - { 706, 10, 14, 14, 2, -13 }, // 0x50 'P' - { 724, 12, 17, 14, 1, -13 }, // 0x51 'Q' - { 750, 12, 14, 14, 2, -13 }, // 0x52 'R' - { 771, 10, 14, 14, 2, -13 }, // 0x53 'S' - { 789, 11, 14, 14, 2, -13 }, // 0x54 'T' - { 809, 12, 14, 14, 1, -13 }, // 0x55 'U' - { 830, 14, 14, 14, 0, -13 }, // 0x56 'V' - { 855, 14, 14, 14, 0, -13 }, // 0x57 'W' - { 880, 12, 14, 14, 1, -13 }, // 0x58 'X' - { 901, 12, 14, 14, 1, -13 }, // 0x59 'Y' - { 922, 9, 14, 14, 3, -13 }, // 0x5A 'Z' - { 938, 3, 18, 14, 7, -14 }, // 0x5B '[' - { 945, 9, 18, 14, 3, -15 }, // 0x5C '\' - { 966, 3, 18, 14, 5, -14 }, // 0x5D ']' - { 973, 9, 6, 14, 3, -14 }, // 0x5E '^' - { 980, 14, 1, 14, 0, 3 }, // 0x5F '_' - { 982, 4, 4, 14, 4, -15 }, // 0x60 '`' - { 984, 10, 10, 14, 2, -9 }, // 0x61 'a' - { 997, 13, 15, 14, 0, -14 }, // 0x62 'b' - { 1022, 11, 10, 14, 2, -9 }, // 0x63 'c' - { 1036, 11, 15, 14, 2, -14 }, // 0x64 'd' - { 1057, 10, 10, 14, 2, -9 }, // 0x65 'e' - { 1070, 9, 15, 14, 4, -14 }, // 0x66 'f' - { 1087, 11, 14, 14, 2, -9 }, // 0x67 'g' - { 1107, 10, 15, 14, 2, -14 }, // 0x68 'h' - { 1126, 9, 15, 14, 3, -14 }, // 0x69 'i' - { 1143, 7, 19, 14, 3, -14 }, // 0x6A 'j' - { 1160, 12, 15, 14, 1, -14 }, // 0x6B 'k' - { 1183, 9, 15, 14, 3, -14 }, // 0x6C 'l' - { 1200, 13, 10, 14, 1, -9 }, // 0x6D 'm' - { 1217, 12, 10, 14, 1, -9 }, // 0x6E 'n' - { 1232, 11, 10, 14, 2, -9 }, // 0x6F 'o' - { 1246, 12, 14, 14, 1, -9 }, // 0x70 'p' - { 1267, 11, 14, 14, 2, -9 }, // 0x71 'q' - { 1287, 10, 10, 14, 3, -9 }, // 0x72 'r' - { 1300, 10, 10, 14, 2, -9 }, // 0x73 's' - { 1313, 11, 14, 14, 1, -13 }, // 0x74 't' - { 1333, 11, 10, 14, 2, -9 }, // 0x75 'u' - { 1347, 13, 10, 14, 1, -9 }, // 0x76 'v' - { 1364, 13, 10, 14, 1, -9 }, // 0x77 'w' - { 1381, 12, 10, 14, 1, -9 }, // 0x78 'x' - { 1396, 12, 14, 14, 1, -9 }, // 0x79 'y' - { 1417, 9, 10, 14, 3, -9 }, // 0x7A 'z' - { 1429, 5, 18, 14, 5, -14 }, // 0x7B '{' - { 1441, 1, 18, 14, 7, -14 }, // 0x7C '|' - { 1444, 5, 18, 14, 5, -14 }, // 0x7D '}' - { 1456, 10, 3, 14, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeMono12pt7b PROGMEM = { - (uint8_t *)FreeMono12pt7bBitmaps, - (GFXglyph *)FreeMono12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2132 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h deleted file mode 100644 index c605d296b..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h +++ /dev/null @@ -1,363 +0,0 @@ -const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { - 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, - 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, - 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, - 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, - 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, - 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, - 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, - 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, - 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, - 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, - 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, - 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, - 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, - 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, - 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, - 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, - 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, - 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, - 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, - 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, - 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, - 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, - 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, - 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, - 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, - 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, - 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, - 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, - 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, - 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, - 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, - 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, - 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, - 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, - 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, - 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, - 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, - 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, - 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, - 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, - 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, - 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, - 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, - 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, - 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, - 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, - 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, - 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, - 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, - 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, - 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, - 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, - 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, - 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, - 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, - 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, - 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, - 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, - 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, - 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, - 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, - 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, - 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, - 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, - 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, - 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, - 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, - 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, - 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, - 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, - 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, - 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, - 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, - 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, - 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, - 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, - 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, - 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, - 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, - 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, - 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, - 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, - 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, - 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, - 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, - 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, - 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, - 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, - 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, - 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, - 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, - 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, - 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, - 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, - 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, - 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, - 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, - 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, - 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, - 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, - 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, - 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, - 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, - 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, - 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, - 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, - 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, - 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, - 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, - 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, - 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, - 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, - 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, - 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, - 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, - 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, - 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, - 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, - 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, - 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, - 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, - 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, - 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, - 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, - 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, - 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, - 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, - 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, - 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, - 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, - 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, - 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, - 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, - 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, - 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, - 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, - 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, - 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, - 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, - 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, - 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, - 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, - 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, - 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, - 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, - 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, - 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, - 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, - 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, - 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, - 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, - 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, - 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, - 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, - 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, - 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, - 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, - 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, - 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, - 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, - 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, - 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, - 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, - 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, - 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, - 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, - 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, - 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, - 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, - 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, - 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, - 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, - 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, - 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, - 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, - 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, - 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, - 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, - 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, - 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, - 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, - 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, - 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, - 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, - 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, - 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, - 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, - 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, - 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, - 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, - 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, - 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, - 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, - 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, - 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, - 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, - 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, - 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, - 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, - 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, - 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, - 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, - 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, - 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, - 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, - 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, - 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, - 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, - 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, - 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, - 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, - 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, - 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, - 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, - 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, - 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, - 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, - 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, - 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, - 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, - 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, - 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, - 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, - 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, - 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, - 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, - 0x36, 0x04, 0x40, 0x07, 0x00 }; - -const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 4, 22, 21, 8, -21 }, // 0x21 '!' - { 11, 11, 10, 21, 5, -20 }, // 0x22 '"' - { 25, 14, 24, 21, 3, -21 }, // 0x23 '#' - { 67, 13, 26, 21, 4, -22 }, // 0x24 '$' - { 110, 15, 21, 21, 3, -20 }, // 0x25 '%' - { 150, 12, 18, 21, 4, -17 }, // 0x26 '&' - { 177, 4, 10, 21, 8, -20 }, // 0x27 ''' - { 182, 5, 25, 21, 10, -20 }, // 0x28 '(' - { 198, 5, 25, 21, 6, -20 }, // 0x29 ')' - { 214, 13, 12, 21, 4, -20 }, // 0x2A '*' - { 234, 15, 17, 21, 3, -17 }, // 0x2B '+' - { 266, 7, 10, 21, 5, -4 }, // 0x2C ',' - { 275, 15, 1, 21, 3, -9 }, // 0x2D '-' - { 277, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 281, 13, 26, 21, 4, -22 }, // 0x2F '/' - { 324, 13, 21, 21, 4, -20 }, // 0x30 '0' - { 359, 13, 21, 21, 4, -20 }, // 0x31 '1' - { 394, 13, 21, 21, 3, -20 }, // 0x32 '2' - { 429, 14, 21, 21, 3, -20 }, // 0x33 '3' - { 466, 12, 21, 21, 4, -20 }, // 0x34 '4' - { 498, 14, 21, 21, 3, -20 }, // 0x35 '5' - { 535, 12, 21, 21, 5, -20 }, // 0x36 '6' - { 567, 12, 21, 21, 4, -20 }, // 0x37 '7' - { 599, 13, 21, 21, 4, -20 }, // 0x38 '8' - { 634, 12, 21, 21, 5, -20 }, // 0x39 '9' - { 666, 5, 15, 21, 8, -14 }, // 0x3A ':' - { 676, 7, 20, 21, 5, -14 }, // 0x3B ';' - { 694, 15, 16, 21, 3, -17 }, // 0x3C '<' - { 724, 17, 6, 21, 2, -12 }, // 0x3D '=' - { 737, 15, 16, 21, 3, -17 }, // 0x3E '>' - { 767, 12, 20, 21, 5, -19 }, // 0x3F '?' - { 797, 13, 23, 21, 4, -20 }, // 0x40 '@' - { 835, 21, 20, 21, 0, -19 }, // 0x41 'A' - { 888, 18, 20, 21, 1, -19 }, // 0x42 'B' - { 933, 17, 20, 21, 2, -19 }, // 0x43 'C' - { 976, 16, 20, 21, 2, -19 }, // 0x44 'D' - { 1016, 17, 20, 21, 1, -19 }, // 0x45 'E' - { 1059, 17, 20, 21, 1, -19 }, // 0x46 'F' - { 1102, 17, 20, 21, 2, -19 }, // 0x47 'G' - { 1145, 16, 20, 21, 2, -19 }, // 0x48 'H' - { 1185, 13, 20, 21, 4, -19 }, // 0x49 'I' - { 1218, 17, 20, 21, 3, -19 }, // 0x4A 'J' - { 1261, 18, 20, 21, 1, -19 }, // 0x4B 'K' - { 1306, 15, 20, 21, 3, -19 }, // 0x4C 'L' - { 1344, 19, 20, 21, 1, -19 }, // 0x4D 'M' - { 1392, 18, 20, 21, 1, -19 }, // 0x4E 'N' - { 1437, 17, 20, 21, 2, -19 }, // 0x4F 'O' - { 1480, 16, 20, 21, 1, -19 }, // 0x50 'P' - { 1520, 17, 24, 21, 2, -19 }, // 0x51 'Q' - { 1571, 19, 20, 21, 1, -19 }, // 0x52 'R' - { 1619, 14, 20, 21, 3, -19 }, // 0x53 'S' - { 1654, 15, 20, 21, 3, -19 }, // 0x54 'T' - { 1692, 17, 20, 21, 2, -19 }, // 0x55 'U' - { 1735, 21, 20, 21, 0, -19 }, // 0x56 'V' - { 1788, 19, 20, 21, 1, -19 }, // 0x57 'W' - { 1836, 19, 20, 21, 1, -19 }, // 0x58 'X' - { 1884, 17, 20, 21, 2, -19 }, // 0x59 'Y' - { 1927, 13, 20, 21, 4, -19 }, // 0x5A 'Z' - { 1960, 5, 25, 21, 10, -20 }, // 0x5B '[' - { 1976, 13, 26, 21, 4, -22 }, // 0x5C '\' - { 2019, 5, 25, 21, 6, -20 }, // 0x5D ']' - { 2035, 13, 9, 21, 4, -20 }, // 0x5E '^' - { 2050, 21, 1, 21, 0, 4 }, // 0x5F '_' - { 2053, 6, 5, 21, 5, -21 }, // 0x60 '`' - { 2057, 16, 15, 21, 3, -14 }, // 0x61 'a' - { 2087, 18, 21, 21, 1, -20 }, // 0x62 'b' - { 2135, 15, 15, 21, 3, -14 }, // 0x63 'c' - { 2164, 18, 21, 21, 2, -20 }, // 0x64 'd' - { 2212, 16, 15, 21, 2, -14 }, // 0x65 'e' - { 2242, 14, 21, 21, 4, -20 }, // 0x66 'f' - { 2279, 17, 22, 21, 2, -14 }, // 0x67 'g' - { 2326, 17, 21, 21, 1, -20 }, // 0x68 'h' - { 2371, 14, 22, 21, 4, -21 }, // 0x69 'i' - { 2410, 10, 29, 21, 5, -21 }, // 0x6A 'j' - { 2447, 16, 21, 21, 2, -20 }, // 0x6B 'k' - { 2489, 14, 21, 21, 4, -20 }, // 0x6C 'l' - { 2526, 19, 15, 21, 1, -14 }, // 0x6D 'm' - { 2562, 17, 15, 21, 1, -14 }, // 0x6E 'n' - { 2594, 15, 15, 21, 3, -14 }, // 0x6F 'o' - { 2623, 18, 22, 21, 1, -14 }, // 0x70 'p' - { 2673, 18, 22, 21, 2, -14 }, // 0x71 'q' - { 2723, 15, 15, 21, 3, -14 }, // 0x72 'r' - { 2752, 13, 15, 21, 4, -14 }, // 0x73 's' - { 2777, 16, 20, 21, 1, -19 }, // 0x74 't' - { 2817, 17, 15, 21, 1, -14 }, // 0x75 'u' - { 2849, 19, 15, 21, 1, -14 }, // 0x76 'v' - { 2885, 19, 15, 21, 1, -14 }, // 0x77 'w' - { 2921, 17, 15, 21, 2, -14 }, // 0x78 'x' - { 2953, 17, 22, 21, 2, -14 }, // 0x79 'y' - { 3000, 13, 15, 21, 4, -14 }, // 0x7A 'z' - { 3025, 8, 25, 21, 6, -20 }, // 0x7B '{' - { 3050, 1, 25, 21, 10, -20 }, // 0x7C '|' - { 3054, 8, 25, 21, 7, -20 }, // 0x7D '}' - { 3079, 15, 5, 21, 3, -11 } }; // 0x7E '~' - -const GFXfont FreeMono18pt7b PROGMEM = { - (uint8_t *)FreeMono18pt7bBitmaps, - (GFXglyph *)FreeMono18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 3761 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h deleted file mode 100644 index 4c8bd151d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h +++ /dev/null @@ -1,577 +0,0 @@ -const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { - 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, - 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, - 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, - 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, - 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, - 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, - 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, - 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, - 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, - 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, - 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, - 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, - 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, - 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, - 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, - 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, - 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, - 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, - 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, - 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, - 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, - 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, - 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, - 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, - 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, - 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, - 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, - 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, - 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, - 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, - 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, - 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, - 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, - 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, - 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, - 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, - 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, - 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, - 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, - 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, - 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, - 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, - 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, - 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, - 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, - 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, - 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, - 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, - 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, - 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, - 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, - 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, - 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, - 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, - 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, - 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, - 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, - 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, - 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, - 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, - 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, - 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, - 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, - 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, - 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, - 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, - 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, - 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, - 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, - 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, - 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, - 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, - 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, - 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, - 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, - 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, - 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, - 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, - 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, - 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, - 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, - 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, - 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, - 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, - 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, - 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, - 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, - 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, - 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, - 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, - 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, - 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, - 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, - 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, - 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, - 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, - 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, - 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, - 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, - 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, - 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, - 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, - 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, - 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, - 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, - 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, - 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, - 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, - 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, - 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, - 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, - 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, - 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, - 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, - 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, - 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, - 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, - 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, - 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, - 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, - 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, - 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, - 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, - 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, - 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, - 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, - 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, - 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, - 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, - 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, - 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, - 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, - 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, - 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, - 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, - 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, - 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, - 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, - 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, - 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, - 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, - 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, - 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, - 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, - 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, - 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, - 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, - 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, - 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, - 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, - 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, - 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, - 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, - 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, - 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, - 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, - 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, - 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, - 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, - 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, - 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, - 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, - 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, - 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, - 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, - 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, - 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, - 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, - 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, - 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, - 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, - 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, - 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, - 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, - 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, - 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, - 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, - 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, - 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, - 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, - 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, - 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, - 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, - 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, - 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, - 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, - 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, - 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, - 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, - 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, - 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, - 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, - 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, - 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, - 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, - 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, - 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, - 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, - 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, - 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, - 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, - 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, - 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, - 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, - 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, - 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, - 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, - 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, - 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, - 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, - 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, - 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, - 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, - 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, - 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, - 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, - 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, - 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, - 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, - 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, - 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, - 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, - 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, - 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, - 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, - 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, - 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, - 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, - 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, - 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, - 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, - 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, - 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, - 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, - 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, - 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, - 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, - 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, - 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, - 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, - 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, - 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, - 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, - 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, - 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, - 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, - 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, - 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, - 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, - 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, - 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, - 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, - 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, - 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, - 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, - 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, - 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, - 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, - 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, - 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, - 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, - 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, - 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, - 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, - 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, - 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, - 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, - 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, - 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, - 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, - 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, - 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, - 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, - 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, - 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, - 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, - 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, - 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, - 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, - 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, - 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, - 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, - 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, - 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, - 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, - 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, - 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, - 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, - 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, - 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, - 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, - 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, - 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, - 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, - 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, - 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, - 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, - 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, - 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, - 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, - 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, - 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, - 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, - 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, - 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, - 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, - 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, - 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, - 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, - 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, - 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, - 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, - 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, - 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, - 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, - 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, - 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, - 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, - 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, - 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, - 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, - 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, - 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, - 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, - 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, - 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, - 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, - 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, - 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, - 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0 }; - -const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 5, 30, 28, 11, -28 }, // 0x21 '!' - { 19, 16, 14, 28, 6, -28 }, // 0x22 '"' - { 47, 19, 32, 28, 4, -29 }, // 0x23 '#' - { 123, 18, 33, 28, 5, -29 }, // 0x24 '$' - { 198, 20, 29, 28, 4, -27 }, // 0x25 '%' - { 271, 18, 25, 28, 5, -23 }, // 0x26 '&' - { 328, 7, 14, 28, 11, -28 }, // 0x27 ''' - { 341, 7, 34, 28, 14, -27 }, // 0x28 '(' - { 371, 7, 34, 28, 8, -27 }, // 0x29 ')' - { 401, 18, 16, 28, 5, -27 }, // 0x2A '*' - { 437, 20, 22, 28, 4, -23 }, // 0x2B '+' - { 492, 9, 14, 28, 6, -6 }, // 0x2C ',' - { 508, 22, 2, 28, 3, -13 }, // 0x2D '-' - { 514, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 520, 18, 35, 28, 5, -30 }, // 0x2F '/' - { 599, 18, 30, 28, 5, -28 }, // 0x30 '0' - { 667, 16, 29, 28, 6, -28 }, // 0x31 '1' - { 725, 18, 29, 28, 5, -28 }, // 0x32 '2' - { 791, 19, 30, 28, 5, -28 }, // 0x33 '3' - { 863, 16, 28, 28, 6, -27 }, // 0x34 '4' - { 919, 19, 29, 28, 5, -27 }, // 0x35 '5' - { 988, 18, 30, 28, 6, -28 }, // 0x36 '6' - { 1056, 18, 28, 28, 5, -27 }, // 0x37 '7' - { 1119, 18, 30, 28, 5, -28 }, // 0x38 '8' - { 1187, 18, 30, 28, 6, -28 }, // 0x39 '9' - { 1255, 7, 21, 28, 11, -19 }, // 0x3A ':' - { 1274, 10, 27, 28, 7, -19 }, // 0x3B ';' - { 1308, 22, 22, 28, 3, -23 }, // 0x3C '<' - { 1369, 24, 9, 28, 2, -17 }, // 0x3D '=' - { 1396, 21, 22, 28, 4, -23 }, // 0x3E '>' - { 1454, 17, 28, 28, 6, -26 }, // 0x3F '?' - { 1514, 18, 32, 28, 5, -28 }, // 0x40 '@' - { 1586, 28, 26, 28, 0, -25 }, // 0x41 'A' - { 1677, 22, 26, 28, 3, -25 }, // 0x42 'B' - { 1749, 22, 28, 28, 3, -26 }, // 0x43 'C' - { 1826, 22, 26, 28, 3, -25 }, // 0x44 'D' - { 1898, 22, 26, 28, 3, -25 }, // 0x45 'E' - { 1970, 22, 26, 28, 3, -25 }, // 0x46 'F' - { 2042, 23, 28, 28, 3, -26 }, // 0x47 'G' - { 2123, 23, 26, 28, 3, -25 }, // 0x48 'H' - { 2198, 16, 26, 28, 6, -25 }, // 0x49 'I' - { 2250, 23, 27, 28, 4, -25 }, // 0x4A 'J' - { 2328, 24, 26, 28, 3, -25 }, // 0x4B 'K' - { 2406, 21, 26, 28, 4, -25 }, // 0x4C 'L' - { 2475, 26, 26, 28, 1, -25 }, // 0x4D 'M' - { 2560, 24, 26, 28, 2, -25 }, // 0x4E 'N' - { 2638, 24, 28, 28, 2, -26 }, // 0x4F 'O' - { 2722, 21, 26, 28, 3, -25 }, // 0x50 'P' - { 2791, 24, 32, 28, 2, -26 }, // 0x51 'Q' - { 2887, 24, 26, 28, 3, -25 }, // 0x52 'R' - { 2965, 20, 28, 28, 4, -26 }, // 0x53 'S' - { 3035, 22, 26, 28, 3, -25 }, // 0x54 'T' - { 3107, 23, 27, 28, 3, -25 }, // 0x55 'U' - { 3185, 28, 26, 28, 0, -25 }, // 0x56 'V' - { 3276, 26, 26, 28, 1, -25 }, // 0x57 'W' - { 3361, 24, 26, 28, 2, -25 }, // 0x58 'X' - { 3439, 24, 26, 28, 2, -25 }, // 0x59 'Y' - { 3517, 18, 26, 28, 5, -25 }, // 0x5A 'Z' - { 3576, 7, 34, 28, 13, -27 }, // 0x5B '[' - { 3606, 18, 35, 28, 5, -30 }, // 0x5C '\' - { 3685, 7, 34, 28, 8, -27 }, // 0x5D ']' - { 3715, 18, 12, 28, 5, -28 }, // 0x5E '^' - { 3742, 28, 2, 28, 0, 5 }, // 0x5F '_' - { 3749, 8, 7, 28, 7, -29 }, // 0x60 '`' - { 3756, 22, 22, 28, 3, -20 }, // 0x61 'a' - { 3817, 23, 29, 28, 2, -27 }, // 0x62 'b' - { 3901, 21, 22, 28, 4, -20 }, // 0x63 'c' - { 3959, 24, 29, 28, 3, -27 }, // 0x64 'd' - { 4046, 21, 22, 28, 3, -20 }, // 0x65 'e' - { 4104, 19, 28, 28, 6, -27 }, // 0x66 'f' - { 4171, 23, 30, 28, 3, -20 }, // 0x67 'g' - { 4258, 23, 28, 28, 3, -27 }, // 0x68 'h' - { 4339, 18, 29, 28, 5, -28 }, // 0x69 'i' - { 4405, 14, 38, 28, 6, -28 }, // 0x6A 'j' - { 4472, 22, 28, 28, 4, -27 }, // 0x6B 'k' - { 4549, 18, 28, 28, 5, -27 }, // 0x6C 'l' - { 4612, 28, 21, 28, 0, -20 }, // 0x6D 'm' - { 4686, 23, 21, 28, 2, -20 }, // 0x6E 'n' - { 4747, 22, 22, 28, 3, -20 }, // 0x6F 'o' - { 4808, 23, 30, 28, 2, -20 }, // 0x70 'p' - { 4895, 24, 30, 28, 3, -20 }, // 0x71 'q' - { 4985, 21, 20, 28, 5, -19 }, // 0x72 'r' - { 5038, 18, 22, 28, 5, -20 }, // 0x73 's' - { 5088, 21, 27, 28, 3, -25 }, // 0x74 't' - { 5159, 23, 21, 28, 3, -19 }, // 0x75 'u' - { 5220, 26, 20, 28, 1, -19 }, // 0x76 'v' - { 5285, 26, 20, 28, 1, -19 }, // 0x77 'w' - { 5350, 24, 20, 28, 2, -19 }, // 0x78 'x' - { 5410, 24, 29, 28, 2, -19 }, // 0x79 'y' - { 5497, 17, 20, 28, 6, -19 }, // 0x7A 'z' - { 5540, 11, 34, 28, 8, -27 }, // 0x7B '{' - { 5587, 2, 34, 28, 13, -27 }, // 0x7C '|' - { 5596, 11, 34, 28, 9, -27 }, // 0x7D '}' - { 5643, 20, 6, 28, 4, -15 } }; // 0x7E '~' - -const GFXfont FreeMono24pt7b PROGMEM = { - (uint8_t *)FreeMono24pt7bBitmaps, - (GFXglyph *)FreeMono24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 6330 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h deleted file mode 100644 index c82d7869c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h +++ /dev/null @@ -1,176 +0,0 @@ -const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { - 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, - 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, - 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, - 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, - 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, - 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, - 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, - 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, - 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, - 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, - 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, - 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, - 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, - 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, - 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, - 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, - 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, - 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, - 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, - 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, - 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, - 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, - 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, - 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, - 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, - 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, - 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, - 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, - 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, - 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, - 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, - 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, - 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, - 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, - 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, - 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, - 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, - 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, - 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, - 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, - 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, - 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, - 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, - 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, - 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, - 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, - 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, - 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, - 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, - 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, - 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, - 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, - 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, - 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, - 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, - 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, - 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, - 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, - 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, - 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, - 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, - 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, - 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, - 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, - 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, - 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, - 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, - 0x2C, 0x61, 0x24, 0x30 }; - -const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 2, 11, 11, 4, -10 }, // 0x21 '!' - { 3, 6, 5, 11, 2, -10 }, // 0x22 '"' - { 7, 7, 12, 11, 2, -10 }, // 0x23 '#' - { 18, 8, 12, 11, 1, -10 }, // 0x24 '$' - { 30, 7, 11, 11, 2, -10 }, // 0x25 '%' - { 40, 7, 10, 11, 2, -9 }, // 0x26 '&' - { 49, 3, 5, 11, 4, -10 }, // 0x27 ''' - { 51, 2, 13, 11, 5, -10 }, // 0x28 '(' - { 55, 2, 13, 11, 4, -10 }, // 0x29 ')' - { 59, 7, 7, 11, 2, -10 }, // 0x2A '*' - { 66, 7, 7, 11, 2, -8 }, // 0x2B '+' - { 73, 3, 5, 11, 2, -1 }, // 0x2C ',' - { 75, 9, 1, 11, 1, -5 }, // 0x2D '-' - { 77, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 78, 7, 13, 11, 2, -11 }, // 0x2F '/' - { 90, 7, 11, 11, 2, -10 }, // 0x30 '0' - { 100, 5, 11, 11, 3, -10 }, // 0x31 '1' - { 107, 7, 11, 11, 2, -10 }, // 0x32 '2' - { 117, 8, 11, 11, 1, -10 }, // 0x33 '3' - { 128, 6, 11, 11, 3, -10 }, // 0x34 '4' - { 137, 7, 11, 11, 2, -10 }, // 0x35 '5' - { 147, 7, 11, 11, 2, -10 }, // 0x36 '6' - { 157, 7, 11, 11, 2, -10 }, // 0x37 '7' - { 167, 7, 11, 11, 2, -10 }, // 0x38 '8' - { 177, 7, 11, 11, 2, -10 }, // 0x39 '9' - { 187, 2, 8, 11, 4, -7 }, // 0x3A ':' - { 189, 3, 11, 11, 3, -7 }, // 0x3B ';' - { 194, 8, 8, 11, 1, -8 }, // 0x3C '<' - { 202, 9, 4, 11, 1, -6 }, // 0x3D '=' - { 207, 9, 8, 11, 1, -8 }, // 0x3E '>' - { 216, 7, 10, 11, 2, -9 }, // 0x3F '?' - { 225, 8, 12, 11, 2, -10 }, // 0x40 '@' - { 237, 11, 10, 11, 0, -9 }, // 0x41 'A' - { 251, 9, 10, 11, 1, -9 }, // 0x42 'B' - { 263, 9, 10, 11, 1, -9 }, // 0x43 'C' - { 275, 9, 10, 11, 1, -9 }, // 0x44 'D' - { 287, 9, 10, 11, 1, -9 }, // 0x45 'E' - { 299, 9, 10, 11, 1, -9 }, // 0x46 'F' - { 311, 10, 10, 11, 1, -9 }, // 0x47 'G' - { 324, 9, 10, 11, 1, -9 }, // 0x48 'H' - { 336, 5, 10, 11, 3, -9 }, // 0x49 'I' - { 343, 8, 10, 11, 2, -9 }, // 0x4A 'J' - { 353, 9, 10, 11, 1, -9 }, // 0x4B 'K' - { 365, 8, 10, 11, 2, -9 }, // 0x4C 'L' - { 375, 11, 10, 11, 0, -9 }, // 0x4D 'M' - { 389, 9, 10, 11, 1, -9 }, // 0x4E 'N' - { 401, 9, 10, 11, 1, -9 }, // 0x4F 'O' - { 413, 8, 10, 11, 1, -9 }, // 0x50 'P' - { 423, 9, 13, 11, 1, -9 }, // 0x51 'Q' - { 438, 9, 10, 11, 1, -9 }, // 0x52 'R' - { 450, 7, 10, 11, 2, -9 }, // 0x53 'S' - { 459, 9, 10, 11, 1, -9 }, // 0x54 'T' - { 471, 9, 10, 11, 1, -9 }, // 0x55 'U' - { 483, 11, 10, 11, 0, -9 }, // 0x56 'V' - { 497, 11, 10, 11, 0, -9 }, // 0x57 'W' - { 511, 9, 10, 11, 1, -9 }, // 0x58 'X' - { 523, 9, 10, 11, 1, -9 }, // 0x59 'Y' - { 535, 7, 10, 11, 2, -9 }, // 0x5A 'Z' - { 544, 2, 13, 11, 5, -10 }, // 0x5B '[' - { 548, 7, 13, 11, 2, -11 }, // 0x5C '\' - { 560, 2, 13, 11, 4, -10 }, // 0x5D ']' - { 564, 7, 5, 11, 2, -10 }, // 0x5E '^' - { 569, 11, 1, 11, 0, 2 }, // 0x5F '_' - { 571, 3, 3, 11, 3, -11 }, // 0x60 '`' - { 573, 9, 8, 11, 1, -7 }, // 0x61 'a' - { 582, 9, 11, 11, 1, -10 }, // 0x62 'b' - { 595, 7, 8, 11, 2, -7 }, // 0x63 'c' - { 602, 9, 11, 11, 1, -10 }, // 0x64 'd' - { 615, 8, 8, 11, 1, -7 }, // 0x65 'e' - { 623, 6, 11, 11, 3, -10 }, // 0x66 'f' - { 632, 9, 11, 11, 1, -7 }, // 0x67 'g' - { 645, 9, 11, 11, 1, -10 }, // 0x68 'h' - { 658, 7, 10, 11, 2, -9 }, // 0x69 'i' - { 667, 5, 13, 11, 3, -9 }, // 0x6A 'j' - { 676, 8, 11, 11, 2, -10 }, // 0x6B 'k' - { 687, 7, 11, 11, 2, -10 }, // 0x6C 'l' - { 697, 9, 8, 11, 1, -7 }, // 0x6D 'm' - { 706, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 715, 9, 8, 11, 1, -7 }, // 0x6F 'o' - { 724, 9, 11, 11, 1, -7 }, // 0x70 'p' - { 737, 9, 11, 11, 1, -7 }, // 0x71 'q' - { 750, 7, 8, 11, 3, -7 }, // 0x72 'r' - { 757, 7, 8, 11, 2, -7 }, // 0x73 's' - { 764, 8, 10, 11, 2, -9 }, // 0x74 't' - { 774, 8, 8, 11, 1, -7 }, // 0x75 'u' - { 782, 9, 8, 11, 1, -7 }, // 0x76 'v' - { 791, 9, 8, 11, 1, -7 }, // 0x77 'w' - { 800, 9, 8, 11, 1, -7 }, // 0x78 'x' - { 809, 9, 11, 11, 1, -7 }, // 0x79 'y' - { 822, 7, 8, 11, 2, -7 }, // 0x7A 'z' - { 829, 3, 13, 11, 4, -10 }, // 0x7B '{' - { 834, 1, 13, 11, 5, -10 }, // 0x7C '|' - { 836, 3, 13, 11, 4, -10 }, // 0x7D '}' - { 841, 7, 3, 11, 2, -6 } }; // 0x7E '~' - -const GFXfont FreeMono9pt7b PROGMEM = { - (uint8_t *)FreeMono9pt7bBitmaps, - (GFXglyph *)FreeMono9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1516 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h deleted file mode 100644 index 4ad9d1a4f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h +++ /dev/null @@ -1,250 +0,0 @@ -const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, - 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, - 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, - 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, - 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, - 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, - 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, - 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, - 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, - 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, - 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, - 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, - 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, - 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, - 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, - 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, - 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, - 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, - 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, - 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, - 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, - 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, - 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, - 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, - 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, - 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, - 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, - 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, - 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, - 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, - 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, - 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, - 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, - 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, - 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, - 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, - 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, - 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, - 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, - 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, - 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, - 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, - 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, - 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, - 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, - 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, - 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, - 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, - 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, - 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, - 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, - 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, - 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, - 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, - 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, - 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, - 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, - 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, - 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, - 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, - 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, - 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, - 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, - 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, - 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, - 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, - 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, - 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, - 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, - 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, - 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, - 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, - 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, - 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, - 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, - 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, - 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, - 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, - 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, - 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, - 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, - 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, - 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, - 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, - 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, - 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, - 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, - 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, - 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, - 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, - 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, - 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, - 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, - 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, - 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, - 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, - 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, - 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, - 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, - 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, - 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, - 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, - 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, - 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, - 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, - 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, - 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, - 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, - 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, - 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, - 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, - 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, - 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, - 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, - 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, - 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, - 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, - 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, - 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, - 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, - 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, - 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, - 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, - 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, - 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, - 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, - 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, - 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, - 0xE6, 0x1C }; - -const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 4, 15, 14, 5, -14 }, // 0x21 '!' - { 8, 8, 7, 14, 3, -13 }, // 0x22 '"' - { 15, 11, 18, 14, 2, -15 }, // 0x23 '#' - { 40, 10, 20, 14, 2, -16 }, // 0x24 '$' - { 65, 10, 15, 14, 2, -14 }, // 0x25 '%' - { 84, 10, 13, 14, 2, -12 }, // 0x26 '&' - { 101, 3, 7, 14, 5, -13 }, // 0x27 ''' - { 104, 5, 19, 14, 6, -14 }, // 0x28 '(' - { 116, 5, 19, 14, 3, -14 }, // 0x29 ')' - { 128, 10, 10, 14, 2, -14 }, // 0x2A '*' - { 141, 12, 13, 14, 1, -12 }, // 0x2B '+' - { 161, 5, 7, 14, 4, -2 }, // 0x2C ',' - { 166, 12, 2, 14, 1, -7 }, // 0x2D '-' - { 169, 3, 3, 14, 5, -2 }, // 0x2E '.' - { 171, 10, 20, 14, 2, -16 }, // 0x2F '/' - { 196, 10, 15, 14, 2, -14 }, // 0x30 '0' - { 215, 10, 15, 14, 2, -14 }, // 0x31 '1' - { 234, 10, 15, 14, 2, -14 }, // 0x32 '2' - { 253, 11, 15, 14, 1, -14 }, // 0x33 '3' - { 274, 9, 14, 14, 2, -13 }, // 0x34 '4' - { 290, 10, 15, 14, 2, -14 }, // 0x35 '5' - { 309, 10, 15, 14, 2, -14 }, // 0x36 '6' - { 328, 10, 15, 14, 2, -14 }, // 0x37 '7' - { 347, 10, 15, 14, 2, -14 }, // 0x38 '8' - { 366, 10, 15, 14, 3, -14 }, // 0x39 '9' - { 385, 3, 11, 14, 5, -10 }, // 0x3A ':' - { 390, 4, 15, 14, 4, -10 }, // 0x3B ';' - { 398, 12, 11, 14, 1, -11 }, // 0x3C '<' - { 415, 12, 7, 14, 1, -9 }, // 0x3D '=' - { 426, 12, 11, 14, 1, -11 }, // 0x3E '>' - { 443, 9, 14, 14, 3, -13 }, // 0x3F '?' - { 459, 11, 19, 14, 2, -14 }, // 0x40 '@' - { 486, 15, 14, 14, -1, -13 }, // 0x41 'A' - { 513, 13, 14, 14, 0, -13 }, // 0x42 'B' - { 536, 12, 14, 14, 1, -13 }, // 0x43 'C' - { 557, 12, 14, 14, 1, -13 }, // 0x44 'D' - { 578, 13, 14, 14, 0, -13 }, // 0x45 'E' - { 601, 13, 14, 14, 0, -13 }, // 0x46 'F' - { 624, 13, 14, 14, 1, -13 }, // 0x47 'G' - { 647, 14, 14, 14, 0, -13 }, // 0x48 'H' - { 672, 10, 14, 14, 2, -13 }, // 0x49 'I' - { 690, 13, 14, 14, 1, -13 }, // 0x4A 'J' - { 713, 14, 14, 14, 0, -13 }, // 0x4B 'K' - { 738, 12, 14, 14, 1, -13 }, // 0x4C 'L' - { 759, 14, 14, 14, 0, -13 }, // 0x4D 'M' - { 784, 13, 14, 14, 0, -13 }, // 0x4E 'N' - { 807, 12, 14, 14, 1, -13 }, // 0x4F 'O' - { 828, 12, 14, 14, 0, -13 }, // 0x50 'P' - { 849, 12, 17, 14, 1, -13 }, // 0x51 'Q' - { 875, 14, 14, 14, 0, -13 }, // 0x52 'R' - { 900, 10, 14, 14, 2, -13 }, // 0x53 'S' - { 918, 12, 14, 14, 1, -13 }, // 0x54 'T' - { 939, 12, 14, 14, 1, -13 }, // 0x55 'U' - { 960, 16, 14, 14, -1, -13 }, // 0x56 'V' - { 988, 14, 14, 14, 0, -13 }, // 0x57 'W' - { 1013, 14, 14, 14, 0, -13 }, // 0x58 'X' - { 1038, 12, 14, 14, 1, -13 }, // 0x59 'Y' - { 1059, 10, 14, 14, 2, -13 }, // 0x5A 'Z' - { 1077, 5, 19, 14, 6, -14 }, // 0x5B '[' - { 1089, 10, 20, 14, 2, -16 }, // 0x5C '\' - { 1114, 5, 19, 14, 3, -14 }, // 0x5D ']' - { 1126, 10, 8, 14, 2, -15 }, // 0x5E '^' - { 1136, 14, 2, 14, 0, 4 }, // 0x5F '_' - { 1140, 4, 4, 14, 4, -15 }, // 0x60 '`' - { 1142, 12, 11, 14, 1, -10 }, // 0x61 'a' - { 1159, 13, 15, 14, 0, -14 }, // 0x62 'b' - { 1184, 12, 11, 14, 1, -10 }, // 0x63 'c' - { 1201, 13, 15, 14, 1, -14 }, // 0x64 'd' - { 1226, 12, 11, 14, 1, -10 }, // 0x65 'e' - { 1243, 11, 15, 14, 2, -14 }, // 0x66 'f' - { 1264, 13, 16, 14, 1, -10 }, // 0x67 'g' - { 1290, 14, 15, 14, 0, -14 }, // 0x68 'h' - { 1317, 11, 14, 14, 1, -13 }, // 0x69 'i' - { 1337, 8, 19, 15, 3, -13 }, // 0x6A 'j' - { 1356, 13, 15, 14, 1, -14 }, // 0x6B 'k' - { 1381, 11, 15, 14, 1, -14 }, // 0x6C 'l' - { 1402, 15, 11, 14, 0, -10 }, // 0x6D 'm' - { 1423, 14, 11, 14, 0, -10 }, // 0x6E 'n' - { 1443, 12, 11, 14, 1, -10 }, // 0x6F 'o' - { 1460, 14, 16, 14, 0, -10 }, // 0x70 'p' - { 1488, 14, 16, 14, 0, -10 }, // 0x71 'q' - { 1516, 12, 11, 14, 1, -10 }, // 0x72 'r' - { 1533, 10, 11, 14, 2, -10 }, // 0x73 's' - { 1547, 11, 14, 14, 1, -13 }, // 0x74 't' - { 1567, 13, 11, 14, 0, -10 }, // 0x75 'u' - { 1585, 14, 11, 14, 0, -10 }, // 0x76 'v' - { 1605, 14, 11, 14, 0, -10 }, // 0x77 'w' - { 1625, 14, 11, 14, 0, -10 }, // 0x78 'x' - { 1645, 12, 16, 14, 1, -10 }, // 0x79 'y' - { 1669, 11, 11, 14, 1, -10 }, // 0x7A 'z' - { 1685, 7, 19, 14, 3, -14 }, // 0x7B '{' - { 1702, 2, 19, 14, 6, -14 }, // 0x7C '|' - { 1707, 7, 19, 14, 4, -14 }, // 0x7D '}' - { 1724, 12, 4, 14, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoBold12pt7b PROGMEM = { - (uint8_t *)FreeMonoBold12pt7bBitmaps, - (GFXglyph *)FreeMonoBold12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2402 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h deleted file mode 100644 index 36e0be05d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h +++ /dev/null @@ -1,423 +0,0 @@ -const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { - 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, - 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, - 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, - 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, - 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, - 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, - 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, - 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, - 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, - 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, - 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, - 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, - 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, - 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, - 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, - 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, - 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, - 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, - 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, - 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, - 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, - 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, - 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, - 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, - 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, - 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, - 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, - 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, - 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, - 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, - 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, - 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, - 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, - 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, - 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, - 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, - 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, - 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, - 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, - 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, - 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, - 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, - 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, - 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, - 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, - 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, - 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, - 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, - 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, - 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, - 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, - 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, - 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, - 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, - 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, - 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, - 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, - 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, - 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, - 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, - 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, - 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, - 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, - 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, - 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, - 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, - 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, - 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, - 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, - 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, - 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, - 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, - 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, - 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, - 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, - 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, - 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, - 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, - 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, - 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, - 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, - 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, - 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, - 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, - 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, - 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, - 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, - 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, - 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, - 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, - 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, - 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, - 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, - 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, - 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, - 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, - 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, - 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, - 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, - 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, - 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, - 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, - 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, - 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, - 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, - 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, - 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, - 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, - 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, - 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, - 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, - 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, - 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, - 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, - 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, - 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, - 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, - 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, - 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, - 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, - 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, - 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, - 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, - 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, - 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, - 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, - 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, - 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, - 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, - 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, - 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, - 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, - 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, - 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, - 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, - 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, - 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, - 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, - 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, - 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, - 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, - 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, - 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, - 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, - 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, - 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, - 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, - 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, - 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, - 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, - 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, - 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, - 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, - 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, - 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, - 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, - 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, - 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, - 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, - 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, - 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, - 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, - 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, - 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, - 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, - 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, - 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, - 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, - 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, - 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, - 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, - 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, - 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, - 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, - 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, - 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, - 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, - 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, - 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, - 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, - 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, - 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, - 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, - 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, - 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, - 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, - 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, - 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, - 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, - 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, - 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, - 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, - 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, - 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, - 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, - 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, - 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, - 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, - 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, - 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, - 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, - 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, - 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, - 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, - 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, - 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, - 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, - 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, - 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, - 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, - 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, - 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, - 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, - 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, - 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, - 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, - 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, - 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, - 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, - 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, - 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, - 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, - 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, - 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, - 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, - 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, - 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, - 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, - 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, - 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, - 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, - 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, - 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, - 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, - 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, - 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, - 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, - 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, - 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, - 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, - 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, - 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, - 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78 }; - -const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 5, 22, 21, 8, -21 }, // 0x21 '!' - { 14, 11, 10, 21, 5, -20 }, // 0x22 '"' - { 28, 16, 25, 21, 3, -22 }, // 0x23 '#' - { 78, 14, 28, 21, 4, -23 }, // 0x24 '$' - { 127, 15, 21, 21, 3, -20 }, // 0x25 '%' - { 167, 15, 20, 21, 3, -19 }, // 0x26 '&' - { 205, 4, 10, 21, 8, -20 }, // 0x27 ''' - { 210, 8, 27, 21, 9, -21 }, // 0x28 '(' - { 237, 8, 27, 21, 4, -21 }, // 0x29 ')' - { 264, 16, 15, 21, 3, -21 }, // 0x2A '*' - { 294, 16, 19, 21, 3, -18 }, // 0x2B '+' - { 332, 7, 10, 21, 5, -3 }, // 0x2C ',' - { 341, 19, 4, 21, 1, -11 }, // 0x2D '-' - { 351, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 355, 15, 28, 21, 3, -23 }, // 0x2F '/' - { 408, 16, 23, 21, 3, -22 }, // 0x30 '0' - { 454, 15, 22, 21, 3, -21 }, // 0x31 '1' - { 496, 15, 23, 21, 3, -22 }, // 0x32 '2' - { 540, 16, 23, 21, 3, -22 }, // 0x33 '3' - { 586, 15, 21, 21, 3, -20 }, // 0x34 '4' - { 626, 17, 22, 21, 2, -21 }, // 0x35 '5' - { 673, 15, 23, 21, 4, -22 }, // 0x36 '6' - { 717, 15, 22, 21, 3, -21 }, // 0x37 '7' - { 759, 15, 23, 21, 3, -22 }, // 0x38 '8' - { 803, 15, 23, 21, 4, -22 }, // 0x39 '9' - { 847, 5, 16, 21, 8, -15 }, // 0x3A ':' - { 857, 7, 22, 21, 5, -15 }, // 0x3B ';' - { 877, 18, 16, 21, 1, -17 }, // 0x3C '<' - { 913, 19, 10, 21, 1, -14 }, // 0x3D '=' - { 937, 18, 16, 21, 2, -17 }, // 0x3E '>' - { 973, 15, 21, 21, 4, -20 }, // 0x3F '?' - { 1013, 15, 27, 21, 3, -21 }, // 0x40 '@' - { 1064, 22, 21, 21, -1, -20 }, // 0x41 'A' - { 1122, 20, 21, 21, 1, -20 }, // 0x42 'B' - { 1175, 19, 21, 21, 1, -20 }, // 0x43 'C' - { 1225, 18, 21, 21, 2, -20 }, // 0x44 'D' - { 1273, 19, 21, 21, 1, -20 }, // 0x45 'E' - { 1323, 19, 21, 21, 1, -20 }, // 0x46 'F' - { 1373, 20, 21, 21, 1, -20 }, // 0x47 'G' - { 1426, 21, 21, 21, 0, -20 }, // 0x48 'H' - { 1482, 14, 21, 21, 4, -20 }, // 0x49 'I' - { 1519, 19, 21, 21, 2, -20 }, // 0x4A 'J' - { 1569, 20, 21, 21, 1, -20 }, // 0x4B 'K' - { 1622, 18, 21, 21, 2, -20 }, // 0x4C 'L' - { 1670, 23, 21, 21, -1, -20 }, // 0x4D 'M' - { 1731, 20, 21, 21, 1, -20 }, // 0x4E 'N' - { 1784, 20, 21, 21, 1, -20 }, // 0x4F 'O' - { 1837, 18, 21, 21, 1, -20 }, // 0x50 'P' - { 1885, 20, 26, 21, 1, -20 }, // 0x51 'Q' - { 1950, 21, 21, 21, 0, -20 }, // 0x52 'R' - { 2006, 17, 21, 21, 2, -20 }, // 0x53 'S' - { 2051, 19, 21, 21, 1, -20 }, // 0x54 'T' - { 2101, 21, 21, 21, 0, -20 }, // 0x55 'U' - { 2157, 23, 21, 21, -1, -20 }, // 0x56 'V' - { 2218, 21, 21, 21, 0, -20 }, // 0x57 'W' - { 2274, 19, 21, 21, 1, -20 }, // 0x58 'X' - { 2324, 20, 21, 21, 1, -20 }, // 0x59 'Y' - { 2377, 16, 21, 21, 3, -20 }, // 0x5A 'Z' - { 2419, 8, 27, 21, 9, -21 }, // 0x5B '[' - { 2446, 15, 28, 21, 3, -23 }, // 0x5C '\' - { 2499, 8, 27, 21, 4, -21 }, // 0x5D ']' - { 2526, 15, 11, 21, 3, -21 }, // 0x5E '^' - { 2547, 21, 4, 21, 0, 4 }, // 0x5F '_' - { 2558, 6, 6, 21, 6, -22 }, // 0x60 '`' - { 2563, 19, 16, 21, 1, -15 }, // 0x61 'a' - { 2601, 19, 22, 21, 1, -21 }, // 0x62 'b' - { 2654, 17, 16, 21, 2, -15 }, // 0x63 'c' - { 2688, 20, 22, 21, 1, -21 }, // 0x64 'd' - { 2743, 18, 16, 21, 1, -15 }, // 0x65 'e' - { 2779, 16, 22, 21, 4, -21 }, // 0x66 'f' - { 2823, 19, 23, 21, 1, -15 }, // 0x67 'g' - { 2878, 21, 22, 21, 0, -21 }, // 0x68 'h' - { 2936, 16, 22, 21, 3, -21 }, // 0x69 'i' - { 2980, 12, 29, 21, 5, -21 }, // 0x6A 'j' - { 3024, 18, 22, 21, 2, -21 }, // 0x6B 'k' - { 3074, 16, 22, 21, 3, -21 }, // 0x6C 'l' - { 3118, 22, 16, 21, -1, -15 }, // 0x6D 'm' - { 3162, 20, 16, 21, 0, -15 }, // 0x6E 'n' - { 3202, 19, 16, 21, 1, -15 }, // 0x6F 'o' - { 3240, 21, 23, 21, 0, -15 }, // 0x70 'p' - { 3301, 21, 23, 22, 1, -15 }, // 0x71 'q' - { 3362, 17, 16, 21, 3, -15 }, // 0x72 'r' - { 3396, 16, 16, 21, 3, -15 }, // 0x73 's' - { 3428, 17, 21, 21, 1, -20 }, // 0x74 't' - { 3473, 18, 16, 21, 1, -15 }, // 0x75 'u' - { 3509, 21, 16, 21, 0, -15 }, // 0x76 'v' - { 3551, 21, 16, 21, 0, -15 }, // 0x77 'w' - { 3593, 19, 16, 21, 1, -15 }, // 0x78 'x' - { 3631, 19, 23, 21, 1, -15 }, // 0x79 'y' - { 3686, 14, 16, 21, 3, -15 }, // 0x7A 'z' - { 3714, 10, 27, 21, 6, -21 }, // 0x7B '{' - { 3748, 4, 27, 21, 9, -21 }, // 0x7C '|' - { 3762, 10, 27, 21, 6, -21 }, // 0x7D '}' - { 3796, 17, 8, 21, 2, -13 } }; // 0x7E '~' - -const GFXfont FreeMonoBold18pt7b PROGMEM = { - (uint8_t *)FreeMonoBold18pt7bBitmaps, - (GFXglyph *)FreeMonoBold18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4485 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h deleted file mode 100644 index aa0dcd045..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h +++ /dev/null @@ -1,672 +0,0 @@ -const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { - 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, - 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, - 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, - 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, - 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, - 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, - 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, - 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, - 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, - 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, - 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, - 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, - 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, - 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, - 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, - 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, - 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, - 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, - 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, - 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, - 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, - 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, - 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, - 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, - 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, - 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, - 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, - 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, - 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, - 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, - 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, - 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, - 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, - 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, - 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, - 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, - 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, - 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, - 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, - 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, - 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, - 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, - 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, - 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, - 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, - 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, - 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, - 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, - 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, - 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, - 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, - 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, - 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, - 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, - 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, - 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, - 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, - 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, - 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, - 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, - 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, - 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, - 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, - 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, - 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, - 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, - 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, - 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, - 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, - 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, - 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, - 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, - 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, - 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, - 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, - 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, - 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, - 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, - 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, - 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, - 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, - 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, - 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, - 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, - 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, - 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, - 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, - 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, - 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, - 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, - 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, - 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, - 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, - 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, - 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, - 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, - 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, - 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, - 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, - 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, - 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, - 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, - 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, - 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, - 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, - 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, - 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, - 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, - 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, - 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, - 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, - 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, - 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, - 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, - 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, - 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, - 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, - 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, - 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, - 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, - 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, - 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, - 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, - 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, - 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, - 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, - 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, - 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, - 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, - 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, - 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, - 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, - 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, - 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, - 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, - 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, - 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, - 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, - 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, - 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, - 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, - 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, - 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, - 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, - 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, - 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, - 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, - 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, - 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, - 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, - 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, - 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, - 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, - 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, - 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, - 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, - 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, - 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, - 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, - 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, - 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, - 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, - 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, - 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, - 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, - 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, - 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, - 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, - 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, - 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, - 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, - 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, - 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, - 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, - 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, - 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, - 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, - 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, - 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, - 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, - 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, - 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, - 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, - 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, - 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, - 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, - 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, - 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, - 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, - 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, - 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, - 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, - 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, - 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, - 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, - 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, - 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, - 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, - 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, - 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, - 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, - 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, - 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, - 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, - 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, - 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, - 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, - 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, - 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, - 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, - 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, - 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, - 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, - 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, - 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, - 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, - 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, - 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, - 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, - 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, - 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, - 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, - 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, - 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, - 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, - 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, - 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, - 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, - 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, - 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, - 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, - 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, - 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, - 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, - 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, - 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, - 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, - 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, - 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, - 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, - 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, - 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, - 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, - 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, - 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, - 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, - 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, - 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, - 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, - 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, - 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, - 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, - 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, - 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, - 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, - 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, - 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, - 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, - 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, - 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, - 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, - 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, - 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, - 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, - 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, - 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, - 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, - 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, - 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, - 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, - 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, - 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, - 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, - 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, - 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, - 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, - 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, - 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, - 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, - 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, - 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, - 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, - 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, - 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, - 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, - 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, - 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, - 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, - 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, - 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, - 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, - 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, - 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, - 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, - 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, - 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, - 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, - 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, - 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, - 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, - 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, - 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, - 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, - 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, - 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, - 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, - 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, - 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, - 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, - 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, - 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, - 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, - 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, - 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, - 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, - 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, - 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, - 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, - 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, - 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, - 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, - 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, - 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, - 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, - 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, - 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, - 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, - 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, - 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, - 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, - 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, - 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, - 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, - 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, - 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, - 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, - 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, - 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, - 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, - 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, - 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, - 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, - 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, - 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, - 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, - 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, - 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, - 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, - 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, - 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, - 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, - 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, - 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, - 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, - 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, - 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, - 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, - 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, - 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, - 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, - 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, - 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, - 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, - 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, - 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, - 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, - 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, - 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, - 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, - 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, - 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, - 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, - 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, - 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, - 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, - 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, - 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, - 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, - 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, - 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, - 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, - 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x1F, 0x00 }; - -const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 7, 31, 28, 10, -29 }, // 0x21 '!' - { 28, 15, 14, 28, 6, -28 }, // 0x22 '"' - { 55, 22, 34, 28, 3, -30 }, // 0x23 '#' - { 149, 19, 38, 28, 5, -31 }, // 0x24 '$' - { 240, 21, 30, 28, 4, -28 }, // 0x25 '%' - { 319, 21, 28, 28, 4, -26 }, // 0x26 '&' - { 393, 6, 14, 28, 11, -28 }, // 0x27 ''' - { 404, 10, 37, 28, 12, -29 }, // 0x28 '(' - { 451, 10, 37, 28, 6, -29 }, // 0x29 ')' - { 498, 21, 19, 28, 4, -28 }, // 0x2A '*' - { 548, 23, 26, 28, 3, -25 }, // 0x2B '+' - { 623, 9, 14, 28, 7, -6 }, // 0x2C ',' - { 639, 24, 5, 28, 2, -15 }, // 0x2D '-' - { 654, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 660, 20, 38, 28, 4, -32 }, // 0x2F '/' - { 755, 21, 31, 28, 4, -29 }, // 0x30 '0' - { 837, 20, 29, 28, 4, -28 }, // 0x31 '1' - { 910, 21, 30, 28, 3, -29 }, // 0x32 '2' - { 989, 21, 31, 28, 4, -29 }, // 0x33 '3' - { 1071, 20, 28, 28, 4, -27 }, // 0x34 '4' - { 1141, 21, 31, 28, 4, -29 }, // 0x35 '5' - { 1223, 20, 31, 28, 5, -29 }, // 0x36 '6' - { 1301, 20, 30, 28, 4, -29 }, // 0x37 '7' - { 1376, 20, 31, 28, 4, -29 }, // 0x38 '8' - { 1454, 20, 31, 28, 5, -29 }, // 0x39 '9' - { 1532, 7, 22, 28, 11, -20 }, // 0x3A ':' - { 1552, 10, 28, 28, 6, -20 }, // 0x3B ';' - { 1587, 24, 21, 28, 2, -23 }, // 0x3C '<' - { 1650, 24, 14, 28, 2, -19 }, // 0x3D '=' - { 1692, 23, 22, 28, 3, -23 }, // 0x3E '>' - { 1756, 20, 29, 28, 5, -27 }, // 0x3F '?' - { 1829, 19, 36, 28, 4, -28 }, // 0x40 '@' - { 1915, 29, 27, 28, -1, -26 }, // 0x41 'A' - { 2013, 26, 27, 28, 1, -26 }, // 0x42 'B' - { 2101, 25, 29, 28, 2, -27 }, // 0x43 'C' - { 2192, 25, 27, 28, 1, -26 }, // 0x44 'D' - { 2277, 25, 27, 28, 1, -26 }, // 0x45 'E' - { 2362, 25, 27, 28, 1, -26 }, // 0x46 'F' - { 2447, 25, 29, 28, 2, -27 }, // 0x47 'G' - { 2538, 26, 27, 28, 1, -26 }, // 0x48 'H' - { 2626, 19, 27, 28, 5, -26 }, // 0x49 'I' - { 2691, 25, 28, 28, 3, -26 }, // 0x4A 'J' - { 2779, 27, 27, 28, 1, -26 }, // 0x4B 'K' - { 2871, 25, 27, 28, 2, -26 }, // 0x4C 'L' - { 2956, 31, 27, 28, -1, -26 }, // 0x4D 'M' - { 3061, 28, 27, 28, 0, -26 }, // 0x4E 'N' - { 3156, 27, 29, 28, 1, -27 }, // 0x4F 'O' - { 3254, 24, 27, 28, 1, -26 }, // 0x50 'P' - { 3335, 27, 35, 28, 1, -27 }, // 0x51 'Q' - { 3454, 28, 27, 28, 0, -26 }, // 0x52 'R' - { 3549, 22, 29, 28, 3, -27 }, // 0x53 'S' - { 3629, 25, 27, 28, 2, -26 }, // 0x54 'T' - { 3714, 28, 28, 28, 0, -26 }, // 0x55 'U' - { 3812, 30, 27, 28, -1, -26 }, // 0x56 'V' - { 3914, 28, 27, 28, 0, -26 }, // 0x57 'W' - { 4009, 26, 27, 28, 1, -26 }, // 0x58 'X' - { 4097, 26, 27, 28, 1, -26 }, // 0x59 'Y' - { 4185, 21, 27, 28, 4, -26 }, // 0x5A 'Z' - { 4256, 10, 37, 28, 12, -29 }, // 0x5B '[' - { 4303, 20, 38, 28, 4, -32 }, // 0x5C '\' - { 4398, 10, 37, 28, 6, -29 }, // 0x5D ']' - { 4445, 20, 15, 28, 4, -29 }, // 0x5E '^' - { 4483, 28, 5, 28, 0, 5 }, // 0x5F '_' - { 4501, 9, 8, 28, 8, -30 }, // 0x60 '`' - { 4510, 24, 23, 28, 2, -21 }, // 0x61 'a' - { 4579, 27, 31, 28, 0, -29 }, // 0x62 'b' - { 4684, 24, 23, 28, 3, -21 }, // 0x63 'c' - { 4753, 26, 31, 28, 2, -29 }, // 0x64 'd' - { 4854, 24, 23, 28, 2, -21 }, // 0x65 'e' - { 4923, 22, 30, 28, 4, -29 }, // 0x66 'f' - { 5006, 25, 31, 28, 2, -21 }, // 0x67 'g' - { 5103, 26, 30, 28, 1, -29 }, // 0x68 'h' - { 5201, 21, 29, 28, 4, -28 }, // 0x69 'i' - { 5278, 17, 38, 28, 5, -28 }, // 0x6A 'j' - { 5359, 25, 30, 28, 2, -29 }, // 0x6B 'k' - { 5453, 21, 30, 28, 4, -29 }, // 0x6C 'l' - { 5532, 30, 22, 28, -1, -21 }, // 0x6D 'm' - { 5615, 25, 22, 28, 1, -21 }, // 0x6E 'n' - { 5684, 25, 23, 28, 2, -21 }, // 0x6F 'o' - { 5756, 28, 31, 28, 0, -21 }, // 0x70 'p' - { 5865, 28, 31, 28, 1, -21 }, // 0x71 'q' - { 5974, 24, 22, 28, 3, -21 }, // 0x72 'r' - { 6040, 21, 23, 28, 4, -21 }, // 0x73 's' - { 6101, 23, 28, 28, 1, -26 }, // 0x74 't' - { 6182, 25, 22, 28, 1, -20 }, // 0x75 'u' - { 6251, 28, 21, 28, 0, -20 }, // 0x76 'v' - { 6325, 28, 21, 28, 0, -20 }, // 0x77 'w' - { 6399, 26, 21, 28, 1, -20 }, // 0x78 'x' - { 6468, 26, 30, 28, 1, -20 }, // 0x79 'y' - { 6566, 19, 21, 28, 5, -20 }, // 0x7A 'z' - { 6616, 14, 37, 28, 7, -29 }, // 0x7B '{' - { 6681, 5, 36, 28, 12, -28 }, // 0x7C '|' - { 6704, 14, 37, 28, 8, -29 }, // 0x7D '}' - { 6769, 22, 10, 28, 3, -17 } }; // 0x7E '~' - -const GFXfont FreeMonoBold24pt7b PROGMEM = { - (uint8_t *)FreeMonoBold24pt7bBitmaps, - (GFXglyph *)FreeMonoBold24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 7469 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h deleted file mode 100644 index 75b1766b2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h +++ /dev/null @@ -1,189 +0,0 @@ -const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, - 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, - 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, - 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, - 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, - 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, - 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, - 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, - 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, - 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, - 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, - 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, - 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, - 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, - 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, - 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, - 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, - 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, - 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, - 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, - 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, - 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, - 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, - 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, - 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, - 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, - 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, - 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, - 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, - 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, - 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, - 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, - 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, - 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, - 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, - 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, - 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, - 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, - 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, - 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, - 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, - 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, - 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, - 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, - 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, - 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, - 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, - 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, - 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, - 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, - 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, - 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, - 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, - 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, - 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, - 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, - 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, - 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, - 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, - 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, - 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, - 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, - 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, - 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, - 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, - 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, - 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, - 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, - 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, - 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, - 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, - 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, - 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, - 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, - 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, - 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, - 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, - 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, - 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, - 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, - 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, - 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, - 0x7C, 0xF3, 0xC0, 0xC0 }; - -const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 3, 11, 11, 4, -10 }, // 0x21 '!' - { 5, 7, 5, 11, 2, -10 }, // 0x22 '"' - { 10, 8, 12, 11, 1, -10 }, // 0x23 '#' - { 22, 7, 14, 11, 2, -11 }, // 0x24 '$' - { 35, 7, 11, 11, 2, -10 }, // 0x25 '%' - { 45, 8, 10, 11, 1, -9 }, // 0x26 '&' - { 55, 3, 5, 11, 4, -10 }, // 0x27 ''' - { 57, 4, 14, 11, 5, -10 }, // 0x28 '(' - { 64, 4, 14, 11, 2, -10 }, // 0x29 ')' - { 71, 8, 7, 11, 2, -10 }, // 0x2A '*' - { 78, 8, 9, 11, 2, -8 }, // 0x2B '+' - { 87, 3, 5, 11, 3, -1 }, // 0x2C ',' - { 89, 9, 2, 11, 1, -5 }, // 0x2D '-' - { 92, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 93, 7, 15, 11, 2, -12 }, // 0x2F '/' - { 107, 7, 12, 11, 2, -11 }, // 0x30 '0' - { 118, 7, 11, 11, 2, -10 }, // 0x31 '1' - { 128, 8, 12, 11, 1, -11 }, // 0x32 '2' - { 140, 8, 12, 11, 2, -11 }, // 0x33 '3' - { 152, 7, 10, 11, 2, -9 }, // 0x34 '4' - { 161, 9, 11, 11, 1, -10 }, // 0x35 '5' - { 174, 8, 12, 11, 2, -11 }, // 0x36 '6' - { 186, 8, 11, 11, 1, -10 }, // 0x37 '7' - { 197, 7, 12, 11, 2, -11 }, // 0x38 '8' - { 208, 8, 12, 11, 2, -11 }, // 0x39 '9' - { 220, 2, 8, 11, 4, -7 }, // 0x3A ':' - { 222, 3, 11, 11, 3, -7 }, // 0x3B ';' - { 227, 9, 8, 11, 1, -8 }, // 0x3C '<' - { 236, 9, 6, 11, 1, -7 }, // 0x3D '=' - { 243, 9, 8, 11, 1, -8 }, // 0x3E '>' - { 252, 8, 11, 11, 2, -10 }, // 0x3F '?' - { 263, 9, 15, 11, 1, -11 }, // 0x40 '@' - { 280, 11, 11, 11, 0, -10 }, // 0x41 'A' - { 296, 10, 11, 11, 1, -10 }, // 0x42 'B' - { 310, 9, 11, 11, 1, -10 }, // 0x43 'C' - { 323, 10, 11, 11, 0, -10 }, // 0x44 'D' - { 337, 9, 11, 11, 1, -10 }, // 0x45 'E' - { 350, 9, 11, 11, 1, -10 }, // 0x46 'F' - { 363, 10, 11, 11, 1, -10 }, // 0x47 'G' - { 377, 9, 11, 11, 1, -10 }, // 0x48 'H' - { 390, 6, 11, 11, 3, -10 }, // 0x49 'I' - { 399, 10, 11, 11, 1, -10 }, // 0x4A 'J' - { 413, 10, 11, 11, 1, -10 }, // 0x4B 'K' - { 427, 9, 11, 11, 1, -10 }, // 0x4C 'L' - { 440, 11, 11, 11, 0, -10 }, // 0x4D 'M' - { 456, 11, 11, 11, 0, -10 }, // 0x4E 'N' - { 472, 11, 11, 11, 0, -10 }, // 0x4F 'O' - { 488, 9, 11, 11, 1, -10 }, // 0x50 'P' - { 501, 11, 14, 11, 0, -10 }, // 0x51 'Q' - { 521, 9, 11, 11, 1, -10 }, // 0x52 'R' - { 534, 9, 11, 11, 1, -10 }, // 0x53 'S' - { 547, 9, 11, 11, 1, -10 }, // 0x54 'T' - { 560, 11, 11, 11, 0, -10 }, // 0x55 'U' - { 576, 11, 11, 11, 0, -10 }, // 0x56 'V' - { 592, 10, 11, 11, 0, -10 }, // 0x57 'W' - { 606, 10, 11, 11, 0, -10 }, // 0x58 'X' - { 620, 10, 11, 11, 0, -10 }, // 0x59 'Y' - { 634, 8, 11, 11, 2, -10 }, // 0x5A 'Z' - { 645, 4, 14, 11, 5, -10 }, // 0x5B '[' - { 652, 7, 15, 11, 2, -12 }, // 0x5C '\' - { 666, 4, 14, 11, 2, -10 }, // 0x5D ']' - { 673, 7, 6, 11, 2, -11 }, // 0x5E '^' - { 679, 11, 2, 11, 0, 3 }, // 0x5F '_' - { 682, 3, 3, 11, 3, -11 }, // 0x60 '`' - { 684, 9, 8, 11, 1, -7 }, // 0x61 'a' - { 693, 10, 11, 11, 0, -10 }, // 0x62 'b' - { 707, 9, 8, 11, 1, -7 }, // 0x63 'c' - { 716, 10, 11, 11, 1, -10 }, // 0x64 'd' - { 730, 9, 8, 11, 1, -7 }, // 0x65 'e' - { 739, 8, 11, 11, 2, -10 }, // 0x66 'f' - { 750, 9, 12, 11, 1, -7 }, // 0x67 'g' - { 764, 9, 11, 11, 1, -10 }, // 0x68 'h' - { 777, 8, 11, 11, 2, -10 }, // 0x69 'i' - { 788, 6, 15, 11, 2, -10 }, // 0x6A 'j' - { 800, 9, 11, 11, 1, -10 }, // 0x6B 'k' - { 813, 8, 11, 11, 2, -10 }, // 0x6C 'l' - { 824, 11, 8, 11, 0, -7 }, // 0x6D 'm' - { 835, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 844, 9, 8, 11, 1, -7 }, // 0x6F 'o' - { 853, 11, 12, 11, 0, -7 }, // 0x70 'p' - { 870, 11, 12, 11, 0, -7 }, // 0x71 'q' - { 887, 9, 8, 11, 1, -7 }, // 0x72 'r' - { 896, 8, 8, 11, 2, -7 }, // 0x73 's' - { 904, 8, 11, 11, 1, -10 }, // 0x74 't' - { 915, 9, 8, 11, 1, -7 }, // 0x75 'u' - { 924, 11, 8, 11, 0, -7 }, // 0x76 'v' - { 935, 11, 8, 11, 0, -7 }, // 0x77 'w' - { 946, 9, 8, 11, 1, -7 }, // 0x78 'x' - { 955, 10, 12, 11, 0, -7 }, // 0x79 'y' - { 970, 7, 8, 11, 2, -7 }, // 0x7A 'z' - { 977, 4, 14, 11, 3, -10 }, // 0x7B '{' - { 984, 2, 14, 11, 5, -10 }, // 0x7C '|' - { 988, 4, 14, 11, 4, -10 }, // 0x7D '}' - { 995, 9, 4, 11, 1, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoBold9pt7b PROGMEM = { - (uint8_t *)FreeMonoBold9pt7bBitmaps, - (GFXglyph *)FreeMonoBold9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1672 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h deleted file mode 100644 index cc3ecb271..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h +++ /dev/null @@ -1,269 +0,0 @@ -const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { - 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, - 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, - 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, - 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, - 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, - 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, - 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, - 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, - 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, - 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, - 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, - 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, - 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, - 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, - 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, - 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, - 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, - 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, - 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, - 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, - 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, - 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, - 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, - 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, - 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, - 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, - 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, - 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, - 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, - 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, - 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, - 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, - 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, - 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, - 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, - 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, - 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, - 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, - 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, - 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, - 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, - 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, - 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, - 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, - 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, - 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, - 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, - 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, - 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, - 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, - 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, - 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, - 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, - 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, - 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, - 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, - 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, - 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, - 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, - 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, - 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, - 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, - 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, - 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, - 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, - 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, - 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, - 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, - 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, - 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, - 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, - 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, - 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, - 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, - 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, - 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, - 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, - 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, - 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, - 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, - 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, - 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, - 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, - 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, - 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, - 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, - 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, - 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, - 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, - 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, - 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, - 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, - 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, - 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, - 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, - 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, - 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, - 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, - 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, - 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, - 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, - 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, - 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, - 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, - 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, - 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, - 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, - 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, - 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, - 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, - 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, - 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, - 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, - 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, - 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, - 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, - 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, - 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, - 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, - 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, - 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, - 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, - 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, - 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, - 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, - 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, - 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, - 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, - 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, - 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, - 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, - 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, - 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, - 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, - 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, - 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, - 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, - 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, - 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, - 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, - 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, - 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, - 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, - 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, - 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, - 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, - 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, - 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, - 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, - 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, - 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, - 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, - 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, - 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, - 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38 }; - -const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 6, 15, 14, 6, -14 }, // 0x21 '!' - { 12, 8, 7, 14, 6, -13 }, // 0x22 '"' - { 19, 13, 18, 14, 2, -15 }, // 0x23 '#' - { 49, 11, 20, 14, 3, -16 }, // 0x24 '$' - { 77, 11, 15, 14, 3, -14 }, // 0x25 '%' - { 98, 11, 13, 14, 2, -12 }, // 0x26 '&' - { 116, 3, 7, 14, 8, -13 }, // 0x27 ''' - { 119, 7, 19, 14, 7, -14 }, // 0x28 '(' - { 136, 7, 19, 14, 2, -14 }, // 0x29 ')' - { 153, 11, 10, 14, 4, -14 }, // 0x2A '*' - { 167, 12, 13, 14, 3, -12 }, // 0x2B '+' - { 187, 6, 7, 14, 3, -2 }, // 0x2C ',' - { 193, 13, 2, 14, 2, -7 }, // 0x2D '-' - { 197, 3, 3, 14, 6, -2 }, // 0x2E '.' - { 199, 14, 20, 14, 2, -16 }, // 0x2F '/' - { 234, 11, 15, 14, 3, -14 }, // 0x30 '0' - { 255, 11, 15, 14, 2, -14 }, // 0x31 '1' - { 276, 13, 15, 14, 1, -14 }, // 0x32 '2' - { 301, 12, 15, 14, 2, -14 }, // 0x33 '3' - { 324, 11, 14, 14, 3, -13 }, // 0x34 '4' - { 344, 12, 15, 14, 2, -14 }, // 0x35 '5' - { 367, 11, 15, 14, 4, -14 }, // 0x36 '6' - { 388, 11, 15, 14, 4, -14 }, // 0x37 '7' - { 409, 11, 15, 14, 3, -14 }, // 0x38 '8' - { 430, 11, 15, 14, 3, -14 }, // 0x39 '9' - { 451, 5, 11, 14, 5, -10 }, // 0x3A ':' - { 458, 7, 15, 14, 3, -10 }, // 0x3B ';' - { 472, 13, 11, 14, 2, -11 }, // 0x3C '<' - { 490, 13, 7, 14, 2, -9 }, // 0x3D '=' - { 502, 13, 11, 14, 2, -11 }, // 0x3E '>' - { 520, 9, 14, 14, 5, -13 }, // 0x3F '?' - { 536, 12, 19, 14, 2, -14 }, // 0x40 '@' - { 565, 15, 14, 14, 0, -13 }, // 0x41 'A' - { 592, 13, 14, 14, 1, -13 }, // 0x42 'B' - { 615, 14, 14, 14, 2, -13 }, // 0x43 'C' - { 640, 13, 14, 14, 1, -13 }, // 0x44 'D' - { 663, 15, 14, 14, 0, -13 }, // 0x45 'E' - { 690, 16, 14, 14, 0, -13 }, // 0x46 'F' - { 718, 14, 14, 14, 1, -13 }, // 0x47 'G' - { 743, 16, 14, 14, 0, -13 }, // 0x48 'H' - { 771, 12, 14, 14, 2, -13 }, // 0x49 'I' - { 792, 16, 14, 14, 0, -13 }, // 0x4A 'J' - { 820, 16, 14, 14, 0, -13 }, // 0x4B 'K' - { 848, 13, 14, 14, 1, -13 }, // 0x4C 'L' - { 871, 18, 14, 14, 0, -13 }, // 0x4D 'M' - { 903, 16, 14, 14, 1, -13 }, // 0x4E 'N' - { 931, 14, 14, 14, 1, -13 }, // 0x4F 'O' - { 956, 13, 14, 14, 1, -13 }, // 0x50 'P' - { 979, 14, 17, 14, 1, -13 }, // 0x51 'Q' - { 1009, 15, 14, 14, 0, -13 }, // 0x52 'R' - { 1036, 12, 14, 14, 3, -13 }, // 0x53 'S' - { 1057, 13, 14, 14, 2, -13 }, // 0x54 'T' - { 1080, 14, 14, 14, 2, -13 }, // 0x55 'U' - { 1105, 15, 14, 14, 1, -13 }, // 0x56 'V' - { 1132, 15, 14, 14, 1, -13 }, // 0x57 'W' - { 1159, 16, 14, 14, 0, -13 }, // 0x58 'X' - { 1187, 13, 14, 14, 2, -13 }, // 0x59 'Y' - { 1210, 14, 14, 14, 1, -13 }, // 0x5A 'Z' - { 1235, 9, 19, 14, 5, -14 }, // 0x5B '[' - { 1257, 7, 20, 14, 5, -16 }, // 0x5C '\' - { 1275, 9, 19, 14, 3, -14 }, // 0x5D ']' - { 1297, 10, 8, 14, 4, -15 }, // 0x5E '^' - { 1307, 15, 2, 14, -1, 4 }, // 0x5F '_' - { 1311, 4, 4, 14, 7, -15 }, // 0x60 '`' - { 1313, 12, 11, 14, 2, -10 }, // 0x61 'a' - { 1330, 15, 15, 14, -1, -14 }, // 0x62 'b' - { 1359, 12, 11, 14, 2, -10 }, // 0x63 'c' - { 1376, 14, 15, 14, 2, -14 }, // 0x64 'd' - { 1403, 12, 11, 14, 2, -10 }, // 0x65 'e' - { 1420, 15, 15, 14, 2, -14 }, // 0x66 'f' - { 1449, 14, 16, 14, 2, -10 }, // 0x67 'g' - { 1477, 13, 15, 14, 1, -14 }, // 0x68 'h' - { 1502, 11, 14, 14, 2, -13 }, // 0x69 'i' - { 1522, 12, 19, 14, 1, -13 }, // 0x6A 'j' - { 1551, 14, 15, 14, 1, -14 }, // 0x6B 'k' - { 1578, 11, 15, 14, 2, -14 }, // 0x6C 'l' - { 1599, 15, 11, 14, 0, -10 }, // 0x6D 'm' - { 1620, 13, 11, 14, 1, -10 }, // 0x6E 'n' - { 1638, 12, 11, 14, 2, -10 }, // 0x6F 'o' - { 1655, 16, 16, 14, -1, -10 }, // 0x70 'p' - { 1687, 15, 16, 14, 1, -10 }, // 0x71 'q' - { 1717, 14, 11, 14, 1, -10 }, // 0x72 'r' - { 1737, 12, 11, 14, 2, -10 }, // 0x73 's' - { 1754, 10, 14, 14, 2, -13 }, // 0x74 't' - { 1772, 12, 11, 14, 2, -10 }, // 0x75 'u' - { 1789, 15, 11, 14, 1, -10 }, // 0x76 'v' - { 1810, 14, 11, 14, 2, -10 }, // 0x77 'w' - { 1830, 14, 11, 14, 1, -10 }, // 0x78 'x' - { 1850, 16, 16, 14, 0, -10 }, // 0x79 'y' - { 1882, 12, 11, 14, 2, -10 }, // 0x7A 'z' - { 1899, 10, 19, 14, 4, -14 }, // 0x7B '{' - { 1923, 6, 19, 14, 5, -14 }, // 0x7C '|' - { 1938, 9, 19, 14, 3, -14 }, // 0x7D '}' - { 1960, 12, 4, 14, 3, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2638 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h deleted file mode 100644 index bc4f20ea5..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h +++ /dev/null @@ -1,460 +0,0 @@ -const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { - 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, - 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, - 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, - 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, - 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, - 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, - 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, - 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, - 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, - 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, - 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, - 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, - 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, - 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, - 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, - 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, - 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, - 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, - 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, - 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, - 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, - 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, - 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, - 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, - 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, - 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, - 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, - 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, - 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, - 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, - 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, - 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, - 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, - 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, - 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, - 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, - 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, - 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, - 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, - 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, - 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, - 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, - 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, - 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, - 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, - 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, - 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, - 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, - 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, - 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, - 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, - 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, - 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, - 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, - 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, - 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, - 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, - 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, - 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, - 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, - 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, - 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, - 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, - 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, - 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, - 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, - 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, - 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, - 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, - 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, - 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, - 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, - 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, - 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, - 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, - 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, - 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, - 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, - 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, - 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, - 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, - 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, - 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, - 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, - 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, - 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, - 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, - 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, - 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, - 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, - 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, - 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, - 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, - 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, - 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, - 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, - 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, - 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, - 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, - 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, - 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, - 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, - 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, - 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, - 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, - 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, - 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, - 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, - 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, - 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, - 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, - 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, - 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, - 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, - 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, - 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, - 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, - 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, - 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, - 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, - 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, - 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, - 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, - 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, - 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, - 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, - 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, - 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, - 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, - 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, - 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, - 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, - 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, - 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, - 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, - 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, - 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, - 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, - 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, - 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, - 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, - 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, - 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, - 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, - 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, - 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, - 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, - 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, - 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, - 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, - 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, - 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, - 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, - 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, - 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, - 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, - 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, - 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, - 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, - 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, - 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, - 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, - 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, - 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, - 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, - 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, - 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, - 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, - 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, - 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, - 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, - 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, - 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, - 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, - 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, - 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, - 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, - 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, - 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, - 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, - 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, - 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, - 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, - 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, - 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, - 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, - 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, - 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, - 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, - 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, - 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, - 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, - 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, - 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, - 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, - 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, - 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, - 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, - 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, - 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, - 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, - 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, - 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, - 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, - 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, - 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, - 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, - 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, - 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, - 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, - 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, - 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, - 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, - 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, - 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, - 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, - 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, - 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, - 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, - 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, - 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, - 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, - 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, - 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, - 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, - 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, - 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, - 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, - 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, - 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, - 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, - 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, - 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, - 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, - 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, - 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, - 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, - 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, - 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, - 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, - 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, - 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, - 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, - 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, - 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, - 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, - 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, - 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, - 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, - 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, - 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, - 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, - 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, - 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, - 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, - 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, - 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, - 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, - 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, - 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, - 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, - 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, - 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, - 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, - 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, - 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, - 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, - 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, - 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, - 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, - 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, - 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, - 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, - 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, - 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, - 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, - 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, - 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, - 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, - 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, - 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, - 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, - 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, - 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, - 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, - 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, - 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, - 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0 }; - -const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 9, 22, 21, 9, -21 }, // 0x21 '!' - { 25, 12, 10, 21, 9, -20 }, // 0x22 '"' - { 40, 18, 25, 21, 4, -22 }, // 0x23 '#' - { 97, 18, 28, 21, 4, -23 }, // 0x24 '$' - { 160, 16, 21, 21, 5, -20 }, // 0x25 '%' - { 202, 16, 20, 21, 4, -19 }, // 0x26 '&' - { 242, 5, 10, 21, 12, -20 }, // 0x27 ''' - { 249, 10, 27, 21, 11, -21 }, // 0x28 '(' - { 283, 10, 27, 21, 4, -21 }, // 0x29 ')' - { 317, 15, 15, 21, 6, -21 }, // 0x2A '*' - { 346, 18, 19, 21, 4, -18 }, // 0x2B '+' - { 389, 9, 10, 21, 4, -3 }, // 0x2C ',' - { 401, 18, 4, 21, 4, -11 }, // 0x2D '-' - { 410, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 414, 21, 28, 21, 2, -23 }, // 0x2F '/' - { 488, 17, 23, 21, 5, -22 }, // 0x30 '0' - { 537, 15, 22, 21, 3, -21 }, // 0x31 '1' - { 579, 20, 23, 21, 2, -22 }, // 0x32 '2' - { 637, 18, 23, 21, 3, -22 }, // 0x33 '3' - { 689, 16, 21, 21, 4, -20 }, // 0x34 '4' - { 731, 18, 22, 21, 4, -21 }, // 0x35 '5' - { 781, 19, 23, 21, 5, -22 }, // 0x36 '6' - { 836, 16, 22, 21, 6, -21 }, // 0x37 '7' - { 880, 19, 23, 21, 3, -22 }, // 0x38 '8' - { 935, 18, 23, 21, 4, -22 }, // 0x39 '9' - { 987, 7, 16, 21, 9, -15 }, // 0x3A ':' - { 1001, 11, 22, 21, 4, -15 }, // 0x3B ';' - { 1032, 18, 16, 21, 4, -17 }, // 0x3C '<' - { 1068, 19, 10, 21, 3, -14 }, // 0x3D '=' - { 1092, 19, 16, 21, 3, -17 }, // 0x3E '>' - { 1130, 14, 21, 21, 8, -20 }, // 0x3F '?' - { 1167, 18, 27, 21, 3, -21 }, // 0x40 '@' - { 1228, 22, 21, 21, 0, -20 }, // 0x41 'A' - { 1286, 21, 21, 21, 1, -20 }, // 0x42 'B' - { 1342, 21, 21, 21, 2, -20 }, // 0x43 'C' - { 1398, 21, 21, 21, 1, -20 }, // 0x44 'D' - { 1454, 22, 21, 21, 0, -20 }, // 0x45 'E' - { 1512, 23, 21, 21, 0, -20 }, // 0x46 'F' - { 1573, 21, 21, 21, 2, -20 }, // 0x47 'G' - { 1629, 23, 21, 21, 0, -20 }, // 0x48 'H' - { 1690, 19, 21, 21, 2, -20 }, // 0x49 'I' - { 1740, 23, 21, 21, 0, -20 }, // 0x4A 'J' - { 1801, 23, 21, 21, 0, -20 }, // 0x4B 'K' - { 1862, 20, 21, 21, 1, -20 }, // 0x4C 'L' - { 1915, 25, 21, 21, 0, -20 }, // 0x4D 'M' - { 1981, 24, 21, 21, 1, -20 }, // 0x4E 'N' - { 2044, 20, 21, 21, 2, -20 }, // 0x4F 'O' - { 2097, 21, 21, 21, 1, -20 }, // 0x50 'P' - { 2153, 20, 26, 21, 2, -20 }, // 0x51 'Q' - { 2218, 22, 21, 21, 0, -20 }, // 0x52 'R' - { 2276, 19, 21, 21, 3, -20 }, // 0x53 'S' - { 2326, 19, 21, 21, 3, -20 }, // 0x54 'T' - { 2376, 21, 21, 21, 3, -20 }, // 0x55 'U' - { 2432, 23, 21, 21, 1, -20 }, // 0x56 'V' - { 2493, 22, 21, 21, 2, -20 }, // 0x57 'W' - { 2551, 24, 21, 21, 0, -20 }, // 0x58 'X' - { 2614, 20, 21, 21, 3, -20 }, // 0x59 'Y' - { 2667, 19, 21, 21, 2, -20 }, // 0x5A 'Z' - { 2717, 13, 27, 21, 8, -21 }, // 0x5B '[' - { 2761, 10, 28, 21, 8, -23 }, // 0x5C '\' - { 2796, 13, 27, 21, 4, -21 }, // 0x5D ']' - { 2840, 15, 11, 21, 6, -21 }, // 0x5E '^' - { 2861, 21, 4, 21, -1, 4 }, // 0x5F '_' - { 2872, 6, 6, 21, 10, -22 }, // 0x60 '`' - { 2877, 19, 16, 21, 2, -15 }, // 0x61 'a' - { 2915, 22, 22, 21, 0, -21 }, // 0x62 'b' - { 2976, 19, 16, 21, 3, -15 }, // 0x63 'c' - { 3014, 21, 22, 21, 3, -21 }, // 0x64 'd' - { 3072, 18, 16, 21, 3, -15 }, // 0x65 'e' - { 3108, 21, 22, 21, 3, -21 }, // 0x66 'f' - { 3166, 21, 23, 21, 2, -15 }, // 0x67 'g' - { 3227, 20, 22, 21, 1, -21 }, // 0x68 'h' - { 3282, 16, 22, 21, 3, -21 }, // 0x69 'i' - { 3326, 18, 29, 21, 2, -21 }, // 0x6A 'j' - { 3392, 20, 22, 21, 1, -21 }, // 0x6B 'k' - { 3447, 16, 22, 21, 3, -21 }, // 0x6C 'l' - { 3491, 23, 16, 21, 0, -15 }, // 0x6D 'm' - { 3537, 21, 16, 21, 1, -15 }, // 0x6E 'n' - { 3579, 18, 16, 21, 3, -15 }, // 0x6F 'o' - { 3615, 23, 23, 21, -1, -15 }, // 0x70 'p' - { 3682, 22, 23, 21, 2, -15 }, // 0x71 'q' - { 3746, 20, 16, 21, 2, -15 }, // 0x72 'r' - { 3786, 16, 16, 21, 4, -15 }, // 0x73 's' - { 3818, 16, 21, 21, 4, -20 }, // 0x74 't' - { 3860, 18, 16, 21, 3, -15 }, // 0x75 'u' - { 3896, 21, 16, 21, 2, -15 }, // 0x76 'v' - { 3938, 21, 16, 21, 3, -15 }, // 0x77 'w' - { 3980, 21, 16, 21, 1, -15 }, // 0x78 'x' - { 4022, 24, 23, 21, -1, -15 }, // 0x79 'y' - { 4091, 18, 16, 21, 3, -15 }, // 0x7A 'z' - { 4127, 12, 27, 21, 8, -21 }, // 0x7B '{' - { 4168, 8, 27, 21, 8, -21 }, // 0x7C '|' - { 4195, 13, 27, 21, 4, -21 }, // 0x7D '}' - { 4239, 17, 8, 21, 4, -13 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4928 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h deleted file mode 100644 index a2bbbdf36..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h +++ /dev/null @@ -1,742 +0,0 @@ -const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, - 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, - 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, - 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, - 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, - 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, - 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, - 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, - 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, - 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, - 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, - 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, - 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, - 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, - 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, - 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, - 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, - 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, - 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, - 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, - 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, - 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, - 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, - 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, - 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, - 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, - 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, - 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, - 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, - 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, - 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, - 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, - 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, - 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, - 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, - 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, - 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, - 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, - 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, - 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, - 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, - 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, - 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, - 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, - 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, - 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, - 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, - 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, - 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, - 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, - 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, - 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, - 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, - 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, - 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, - 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, - 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, - 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, - 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, - 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, - 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, - 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, - 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, - 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, - 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, - 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, - 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, - 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, - 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, - 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, - 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, - 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, - 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, - 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, - 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, - 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, - 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, - 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, - 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, - 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, - 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, - 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, - 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, - 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, - 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, - 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, - 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, - 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, - 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, - 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, - 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, - 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, - 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, - 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, - 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, - 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, - 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, - 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, - 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, - 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, - 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, - 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, - 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, - 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, - 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, - 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, - 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, - 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, - 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, - 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, - 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, - 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, - 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, - 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, - 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, - 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, - 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, - 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, - 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, - 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, - 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, - 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, - 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, - 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, - 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, - 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, - 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, - 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, - 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, - 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, - 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, - 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, - 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, - 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, - 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, - 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, - 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, - 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, - 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, - 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, - 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, - 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, - 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, - 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, - 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, - 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, - 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, - 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, - 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, - 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, - 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, - 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, - 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, - 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, - 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, - 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, - 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, - 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, - 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, - 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, - 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, - 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, - 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, - 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, - 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, - 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, - 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, - 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, - 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, - 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, - 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, - 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, - 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, - 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, - 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, - 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, - 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, - 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, - 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, - 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, - 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, - 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, - 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, - 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, - 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, - 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, - 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, - 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, - 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, - 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, - 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, - 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, - 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, - 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, - 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, - 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, - 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, - 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, - 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, - 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, - 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, - 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, - 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, - 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, - 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, - 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, - 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, - 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, - 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, - 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, - 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, - 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, - 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, - 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, - 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, - 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, - 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, - 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, - 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, - 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, - 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, - 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, - 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, - 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, - 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, - 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, - 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, - 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, - 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, - 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, - 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, - 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, - 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, - 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, - 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, - 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, - 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, - 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, - 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, - 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, - 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, - 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, - 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, - 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, - 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, - 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, - 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, - 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, - 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, - 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, - 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, - 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, - 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, - 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, - 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, - 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, - 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, - 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, - 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, - 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, - 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, - 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, - 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, - 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, - 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, - 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, - 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, - 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, - 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, - 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, - 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, - 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, - 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, - 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, - 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, - 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, - 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, - 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, - 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, - 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, - 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, - 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, - 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, - 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, - 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, - 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, - 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, - 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, - 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, - 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, - 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, - 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, - 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, - 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, - 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, - 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, - 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, - 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, - 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, - 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, - 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, - 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, - 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, - 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, - 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, - 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, - 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, - 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, - 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, - 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, - 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, - 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, - 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, - 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, - 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, - 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, - 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, - 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, - 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, - 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, - 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, - 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, - 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, - 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, - 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, - 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, - 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, - 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, - 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, - 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, - 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, - 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, - 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, - 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, - 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, - 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, - 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, - 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, - 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, - 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, - 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, - 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, - 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, - 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, - 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, - 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, - 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, - 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, - 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, - 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, - 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, - 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, - 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, - 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, - 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, - 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, - 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, - 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, - 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, - 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, - 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, - 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, - 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, - 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, - 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, - 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, - 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, - 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, - 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, - 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, - 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, - 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, - 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, - 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, - 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, - 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, - 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, - 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, - 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, - 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, - 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, - 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, - 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, - 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, - 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, - 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, - 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, - 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, - 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, - 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, - 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, - 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, - 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, - 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, - 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, - 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, - 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, - 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, - 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, - 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, - 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, - 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, - 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, - 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, - 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, - 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, - 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, - 0x00, 0x0F, 0x80 }; - -const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 12, 31, 28, 12, -29 }, // 0x21 '!' - { 47, 17, 14, 28, 11, -28 }, // 0x22 '"' - { 77, 24, 34, 28, 5, -30 }, // 0x23 '#' - { 179, 25, 38, 28, 4, -31 }, // 0x24 '$' - { 298, 22, 30, 28, 6, -28 }, // 0x25 '%' - { 381, 21, 28, 28, 5, -26 }, // 0x26 '&' - { 455, 7, 14, 28, 16, -28 }, // 0x27 ''' - { 468, 14, 37, 28, 14, -29 }, // 0x28 '(' - { 533, 14, 37, 28, 5, -29 }, // 0x29 ')' - { 598, 21, 19, 28, 8, -28 }, // 0x2A '*' - { 648, 24, 26, 28, 5, -25 }, // 0x2B '+' - { 726, 12, 14, 28, 6, -6 }, // 0x2C ',' - { 747, 24, 5, 28, 5, -15 }, // 0x2D '-' - { 762, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 768, 28, 38, 28, 3, -32 }, // 0x2F '/' - { 901, 23, 31, 28, 6, -29 }, // 0x30 '0' - { 991, 21, 30, 28, 4, -29 }, // 0x31 '1' - { 1070, 26, 30, 28, 3, -29 }, // 0x32 '2' - { 1168, 25, 31, 28, 4, -29 }, // 0x33 '3' - { 1265, 22, 28, 28, 5, -27 }, // 0x34 '4' - { 1342, 25, 31, 28, 4, -29 }, // 0x35 '5' - { 1439, 24, 31, 28, 7, -29 }, // 0x36 '6' - { 1532, 22, 30, 28, 9, -29 }, // 0x37 '7' - { 1615, 23, 31, 28, 6, -29 }, // 0x38 '8' - { 1705, 24, 31, 28, 5, -29 }, // 0x39 '9' - { 1798, 10, 22, 28, 11, -20 }, // 0x3A ':' - { 1826, 15, 28, 28, 5, -20 }, // 0x3B ';' - { 1879, 25, 21, 28, 5, -23 }, // 0x3C '<' - { 1945, 26, 14, 28, 4, -19 }, // 0x3D '=' - { 1991, 25, 22, 28, 4, -23 }, // 0x3E '>' - { 2060, 19, 29, 28, 10, -27 }, // 0x3F '?' - { 2129, 23, 36, 28, 5, -28 }, // 0x40 '@' - { 2233, 30, 27, 28, 0, -26 }, // 0x41 'A' - { 2335, 29, 27, 28, 1, -26 }, // 0x42 'B' - { 2433, 28, 29, 28, 3, -27 }, // 0x43 'C' - { 2535, 28, 27, 28, 1, -26 }, // 0x44 'D' - { 2630, 29, 27, 28, 1, -26 }, // 0x45 'E' - { 2728, 31, 27, 28, 0, -26 }, // 0x46 'F' - { 2833, 28, 29, 28, 3, -27 }, // 0x47 'G' - { 2935, 30, 27, 28, 1, -26 }, // 0x48 'H' - { 3037, 25, 27, 28, 3, -26 }, // 0x49 'I' - { 3122, 31, 28, 28, 0, -26 }, // 0x4A 'J' - { 3231, 31, 27, 28, 0, -26 }, // 0x4B 'K' - { 3336, 27, 27, 28, 1, -26 }, // 0x4C 'L' - { 3428, 34, 27, 28, 0, -26 }, // 0x4D 'M' - { 3543, 32, 27, 28, 1, -26 }, // 0x4E 'N' - { 3651, 27, 29, 28, 3, -27 }, // 0x4F 'O' - { 3749, 28, 27, 28, 1, -26 }, // 0x50 'P' - { 3844, 27, 35, 28, 3, -27 }, // 0x51 'Q' - { 3963, 29, 27, 28, 0, -26 }, // 0x52 'R' - { 4061, 26, 29, 28, 3, -27 }, // 0x53 'S' - { 4156, 26, 27, 28, 4, -26 }, // 0x54 'T' - { 4244, 28, 28, 28, 4, -26 }, // 0x55 'U' - { 4342, 30, 27, 28, 2, -26 }, // 0x56 'V' - { 4444, 29, 27, 28, 3, -26 }, // 0x57 'W' - { 4542, 32, 27, 28, 0, -26 }, // 0x58 'X' - { 4650, 26, 27, 28, 4, -26 }, // 0x59 'Y' - { 4738, 27, 27, 28, 2, -26 }, // 0x5A 'Z' - { 4830, 18, 37, 28, 10, -29 }, // 0x5B '[' - { 4914, 13, 38, 28, 10, -32 }, // 0x5C '\' - { 4976, 18, 37, 28, 5, -29 }, // 0x5D ']' - { 5060, 20, 15, 28, 8, -29 }, // 0x5E '^' - { 5098, 29, 5, 28, -2, 5 }, // 0x5F '_' - { 5117, 8, 8, 28, 13, -30 }, // 0x60 '`' - { 5125, 24, 23, 28, 3, -21 }, // 0x61 'a' - { 5194, 29, 31, 28, 0, -29 }, // 0x62 'b' - { 5307, 25, 23, 28, 3, -21 }, // 0x63 'c' - { 5379, 28, 31, 28, 3, -29 }, // 0x64 'd' - { 5488, 24, 23, 28, 3, -21 }, // 0x65 'e' - { 5557, 28, 30, 28, 4, -29 }, // 0x66 'f' - { 5662, 28, 31, 28, 3, -21 }, // 0x67 'g' - { 5771, 26, 30, 28, 2, -29 }, // 0x68 'h' - { 5869, 23, 29, 28, 3, -28 }, // 0x69 'i' - { 5953, 23, 38, 28, 3, -28 }, // 0x6A 'j' - { 6063, 26, 30, 28, 2, -29 }, // 0x6B 'k' - { 6161, 23, 30, 28, 3, -29 }, // 0x6C 'l' - { 6248, 30, 22, 28, 0, -21 }, // 0x6D 'm' - { 6331, 26, 22, 28, 2, -21 }, // 0x6E 'n' - { 6403, 25, 23, 28, 3, -21 }, // 0x6F 'o' - { 6475, 31, 31, 28, -1, -21 }, // 0x70 'p' - { 6596, 29, 31, 28, 2, -21 }, // 0x71 'q' - { 6709, 28, 22, 28, 2, -21 }, // 0x72 'r' - { 6786, 23, 23, 28, 4, -21 }, // 0x73 's' - { 6853, 20, 28, 28, 5, -26 }, // 0x74 't' - { 6923, 23, 22, 28, 5, -20 }, // 0x75 'u' - { 6987, 28, 21, 28, 3, -20 }, // 0x76 'v' - { 7061, 28, 21, 28, 3, -20 }, // 0x77 'w' - { 7135, 29, 21, 28, 1, -20 }, // 0x78 'x' - { 7212, 32, 30, 28, -1, -20 }, // 0x79 'y' - { 7332, 25, 21, 28, 4, -20 }, // 0x7A 'z' - { 7398, 17, 37, 28, 10, -29 }, // 0x7B '{' - { 7477, 11, 36, 28, 11, -28 }, // 0x7C '|' - { 7527, 17, 37, 28, 6, -29 }, // 0x7D '}' - { 7606, 23, 10, 28, 5, -17 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 8307 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h deleted file mode 100644 index b530723a3..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h +++ /dev/null @@ -1,203 +0,0 @@ -const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { - 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, - 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, - 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, - 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, - 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, - 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, - 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, - 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, - 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, - 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, - 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, - 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, - 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, - 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, - 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, - 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, - 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, - 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, - 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, - 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, - 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, - 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, - 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, - 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, - 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, - 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, - 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, - 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, - 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, - 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, - 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, - 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, - 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, - 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, - 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, - 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, - 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, - 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, - 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, - 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, - 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, - 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, - 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, - 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, - 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, - 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, - 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, - 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, - 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, - 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, - 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, - 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, - 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, - 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, - 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, - 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, - 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, - 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, - 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, - 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, - 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, - 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, - 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, - 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, - 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, - 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, - 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, - 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, - 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, - 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, - 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, - 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, - 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, - 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, - 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, - 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, - 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, - 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, - 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, - 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, - 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, - 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, - 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, - 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, - 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, - 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, - 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, - 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, - 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, - 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, - 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, - 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, - 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, - 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, - 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, - 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, - 0xF7, 0xC1, 0xC0 }; - -const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 5, 11, 11, 4, -10 }, // 0x21 '!' - { 7, 7, 5, 11, 4, -10 }, // 0x22 '"' - { 12, 9, 12, 11, 2, -10 }, // 0x23 '#' - { 26, 9, 14, 11, 2, -11 }, // 0x24 '$' - { 42, 9, 11, 11, 2, -10 }, // 0x25 '%' - { 55, 8, 10, 11, 2, -9 }, // 0x26 '&' - { 65, 2, 5, 11, 6, -10 }, // 0x27 ''' - { 67, 5, 14, 11, 5, -10 }, // 0x28 '(' - { 76, 5, 14, 11, 2, -10 }, // 0x29 ')' - { 85, 8, 7, 11, 3, -10 }, // 0x2A '*' - { 92, 9, 9, 11, 2, -8 }, // 0x2B '+' - { 103, 4, 5, 11, 2, -1 }, // 0x2C ',' - { 106, 9, 2, 11, 2, -5 }, // 0x2D '-' - { 109, 3, 2, 11, 4, -1 }, // 0x2E '.' - { 110, 11, 15, 11, 1, -12 }, // 0x2F '/' - { 131, 9, 12, 11, 2, -11 }, // 0x30 '0' - { 145, 8, 12, 11, 2, -11 }, // 0x31 '1' - { 157, 10, 12, 11, 1, -11 }, // 0x32 '2' - { 172, 9, 12, 11, 2, -11 }, // 0x33 '3' - { 186, 8, 10, 11, 2, -9 }, // 0x34 '4' - { 196, 9, 11, 11, 3, -10 }, // 0x35 '5' - { 209, 9, 12, 11, 3, -11 }, // 0x36 '6' - { 223, 8, 11, 11, 3, -10 }, // 0x37 '7' - { 234, 9, 12, 11, 2, -11 }, // 0x38 '8' - { 248, 8, 12, 11, 3, -11 }, // 0x39 '9' - { 260, 4, 8, 11, 4, -7 }, // 0x3A ':' - { 264, 6, 11, 11, 2, -7 }, // 0x3B ';' - { 273, 10, 8, 11, 2, -8 }, // 0x3C '<' - { 283, 10, 6, 11, 1, -7 }, // 0x3D '=' - { 291, 10, 8, 11, 1, -8 }, // 0x3E '>' - { 301, 7, 11, 11, 4, -10 }, // 0x3F '?' - { 311, 9, 15, 11, 2, -11 }, // 0x40 '@' - { 328, 11, 11, 11, 0, -10 }, // 0x41 'A' - { 344, 11, 11, 11, 0, -10 }, // 0x42 'B' - { 360, 12, 11, 11, 1, -10 }, // 0x43 'C' - { 377, 11, 11, 11, 0, -10 }, // 0x44 'D' - { 393, 12, 11, 11, 0, -10 }, // 0x45 'E' - { 410, 12, 11, 11, 0, -10 }, // 0x46 'F' - { 427, 11, 11, 11, 1, -10 }, // 0x47 'G' - { 443, 12, 11, 11, 0, -10 }, // 0x48 'H' - { 460, 10, 11, 11, 1, -10 }, // 0x49 'I' - { 474, 12, 11, 11, 0, -10 }, // 0x4A 'J' - { 491, 11, 11, 11, 0, -10 }, // 0x4B 'K' - { 507, 11, 11, 11, 0, -10 }, // 0x4C 'L' - { 523, 13, 11, 11, 0, -10 }, // 0x4D 'M' - { 541, 13, 11, 11, 0, -10 }, // 0x4E 'N' - { 559, 10, 11, 11, 1, -10 }, // 0x4F 'O' - { 573, 11, 11, 11, 0, -10 }, // 0x50 'P' - { 589, 10, 14, 11, 1, -10 }, // 0x51 'Q' - { 607, 12, 11, 11, 0, -10 }, // 0x52 'R' - { 624, 10, 11, 11, 2, -10 }, // 0x53 'S' - { 638, 11, 11, 11, 1, -10 }, // 0x54 'T' - { 654, 11, 11, 11, 1, -10 }, // 0x55 'U' - { 670, 11, 11, 11, 1, -10 }, // 0x56 'V' - { 686, 11, 11, 11, 1, -10 }, // 0x57 'W' - { 702, 12, 11, 11, 0, -10 }, // 0x58 'X' - { 719, 11, 11, 11, 1, -10 }, // 0x59 'Y' - { 735, 10, 11, 11, 1, -10 }, // 0x5A 'Z' - { 749, 7, 14, 11, 4, -10 }, // 0x5B '[' - { 762, 5, 15, 11, 4, -12 }, // 0x5C '\' - { 772, 7, 14, 11, 2, -10 }, // 0x5D ']' - { 785, 8, 6, 11, 3, -11 }, // 0x5E '^' - { 791, 11, 2, 11, -1, 3 }, // 0x5F '_' - { 794, 3, 3, 11, 5, -11 }, // 0x60 '`' - { 796, 10, 8, 11, 1, -7 }, // 0x61 'a' - { 806, 11, 11, 11, 0, -10 }, // 0x62 'b' - { 822, 10, 8, 11, 1, -7 }, // 0x63 'c' - { 832, 11, 11, 11, 1, -10 }, // 0x64 'd' - { 848, 9, 8, 11, 1, -7 }, // 0x65 'e' - { 857, 10, 11, 11, 2, -10 }, // 0x66 'f' - { 871, 11, 12, 11, 1, -7 }, // 0x67 'g' - { 888, 10, 11, 11, 1, -10 }, // 0x68 'h' - { 902, 9, 11, 11, 1, -10 }, // 0x69 'i' - { 915, 9, 15, 11, 1, -10 }, // 0x6A 'j' - { 932, 10, 11, 11, 1, -10 }, // 0x6B 'k' - { 946, 9, 11, 11, 1, -10 }, // 0x6C 'l' - { 959, 12, 8, 11, 0, -7 }, // 0x6D 'm' - { 971, 11, 8, 11, 1, -7 }, // 0x6E 'n' - { 982, 10, 8, 11, 1, -7 }, // 0x6F 'o' - { 992, 12, 12, 11, -1, -7 }, // 0x70 'p' - { 1010, 11, 12, 11, 1, -7 }, // 0x71 'q' - { 1027, 10, 8, 11, 1, -7 }, // 0x72 'r' - { 1037, 8, 8, 11, 2, -7 }, // 0x73 's' - { 1045, 9, 11, 11, 1, -10 }, // 0x74 't' - { 1058, 10, 8, 11, 1, -7 }, // 0x75 'u' - { 1068, 11, 8, 11, 1, -7 }, // 0x76 'v' - { 1079, 11, 8, 11, 1, -7 }, // 0x77 'w' - { 1090, 11, 8, 11, 1, -7 }, // 0x78 'x' - { 1101, 12, 12, 11, 0, -7 }, // 0x79 'y' - { 1119, 9, 8, 11, 2, -7 }, // 0x7A 'z' - { 1128, 7, 14, 11, 3, -10 }, // 0x7B '{' - { 1141, 4, 14, 11, 4, -10 }, // 0x7C '|' - { 1148, 8, 14, 11, 2, -10 }, // 0x7D '}' - { 1162, 9, 4, 11, 2, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1839 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h deleted file mode 100644 index 83a9a7708..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h +++ /dev/null @@ -1,248 +0,0 @@ -const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { - 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, - 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, - 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, - 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, - 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, - 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, - 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, - 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, - 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, - 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, - 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, - 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, - 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, - 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, - 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, - 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, - 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, - 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, - 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, - 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, - 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, - 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, - 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, - 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, - 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, - 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, - 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, - 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, - 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, - 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, - 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, - 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, - 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, - 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, - 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, - 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, - 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, - 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, - 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, - 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, - 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, - 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, - 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, - 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, - 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, - 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, - 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, - 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, - 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, - 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, - 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, - 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, - 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, - 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, - 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, - 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, - 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, - 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, - 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, - 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, - 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, - 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, - 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, - 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, - 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, - 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, - 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, - 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, - 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, - 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, - 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, - 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, - 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, - 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, - 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, - 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, - 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, - 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, - 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, - 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, - 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, - 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, - 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, - 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, - 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, - 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, - 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, - 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, - 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, - 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, - 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, - 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, - 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, - 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, - 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, - 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, - 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, - 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, - 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, - 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, - 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, - 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, - 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, - 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, - 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, - 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, - 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, - 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, - 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, - 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, - 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, - 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, - 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, - 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, - 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, - 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, - 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, - 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, - 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, - 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, - 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, - 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, - 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, - 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, - 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, - 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, - 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, - 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, - 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, - 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, - 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, - 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, - 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, - 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, - 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, - 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, - 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, - 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, - 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, - 0x88, 0x0E, 0x00 }; - -const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 4, 15, 14, 6, -14 }, // 0x21 '!' - { 8, 8, 7, 14, 5, -14 }, // 0x22 '"' - { 15, 11, 16, 14, 3, -14 }, // 0x23 '#' - { 37, 10, 18, 14, 4, -15 }, // 0x24 '$' - { 60, 11, 15, 14, 3, -14 }, // 0x25 '%' - { 81, 9, 12, 14, 3, -11 }, // 0x26 '&' - { 95, 3, 7, 14, 8, -14 }, // 0x27 ''' - { 98, 5, 18, 14, 8, -14 }, // 0x28 '(' - { 110, 5, 18, 14, 4, -14 }, // 0x29 ')' - { 122, 9, 9, 14, 5, -14 }, // 0x2A '*' - { 133, 11, 11, 14, 3, -11 }, // 0x2B '+' - { 149, 6, 7, 14, 3, -3 }, // 0x2C ',' - { 155, 11, 1, 14, 3, -6 }, // 0x2D '-' - { 157, 3, 3, 14, 6, -2 }, // 0x2E '.' - { 159, 13, 18, 14, 2, -15 }, // 0x2F '/' - { 189, 10, 15, 14, 4, -14 }, // 0x30 '0' - { 208, 9, 15, 14, 3, -14 }, // 0x31 '1' - { 225, 12, 15, 14, 2, -14 }, // 0x32 '2' - { 248, 11, 15, 14, 3, -14 }, // 0x33 '3' - { 269, 10, 15, 14, 3, -14 }, // 0x34 '4' - { 288, 11, 15, 14, 3, -14 }, // 0x35 '5' - { 309, 11, 15, 14, 4, -14 }, // 0x36 '6' - { 330, 10, 15, 14, 5, -14 }, // 0x37 '7' - { 349, 11, 15, 14, 3, -14 }, // 0x38 '8' - { 370, 11, 15, 14, 3, -14 }, // 0x39 '9' - { 391, 5, 10, 14, 5, -9 }, // 0x3A ':' - { 398, 7, 13, 14, 3, -9 }, // 0x3B ';' - { 410, 12, 11, 14, 3, -11 }, // 0x3C '<' - { 427, 13, 4, 14, 2, -8 }, // 0x3D '=' - { 434, 12, 11, 14, 2, -11 }, // 0x3E '>' - { 451, 8, 14, 14, 6, -13 }, // 0x3F '?' - { 465, 10, 16, 14, 3, -14 }, // 0x40 '@' - { 485, 14, 14, 14, 0, -13 }, // 0x41 'A' - { 510, 13, 14, 14, 1, -13 }, // 0x42 'B' - { 533, 12, 14, 14, 3, -13 }, // 0x43 'C' - { 554, 13, 14, 14, 1, -13 }, // 0x44 'D' - { 577, 14, 14, 14, 1, -13 }, // 0x45 'E' - { 602, 14, 14, 14, 1, -13 }, // 0x46 'F' - { 627, 12, 14, 14, 3, -13 }, // 0x47 'G' - { 648, 15, 14, 14, 1, -13 }, // 0x48 'H' - { 675, 11, 14, 14, 3, -13 }, // 0x49 'I' - { 695, 15, 14, 14, 2, -13 }, // 0x4A 'J' - { 722, 15, 14, 14, 1, -13 }, // 0x4B 'K' - { 749, 12, 14, 14, 2, -13 }, // 0x4C 'L' - { 770, 17, 14, 14, 0, -13 }, // 0x4D 'M' - { 800, 15, 14, 14, 1, -13 }, // 0x4E 'N' - { 827, 13, 14, 14, 2, -13 }, // 0x4F 'O' - { 850, 13, 14, 14, 1, -13 }, // 0x50 'P' - { 873, 13, 17, 14, 2, -13 }, // 0x51 'Q' - { 901, 13, 14, 14, 1, -13 }, // 0x52 'R' - { 924, 11, 14, 14, 3, -13 }, // 0x53 'S' - { 944, 12, 14, 14, 4, -13 }, // 0x54 'T' - { 965, 13, 14, 14, 3, -13 }, // 0x55 'U' - { 988, 14, 14, 14, 3, -13 }, // 0x56 'V' - { 1013, 14, 14, 14, 3, -13 }, // 0x57 'W' - { 1038, 15, 14, 14, 1, -13 }, // 0x58 'X' - { 1065, 12, 14, 14, 4, -13 }, // 0x59 'Y' - { 1086, 12, 14, 14, 2, -13 }, // 0x5A 'Z' - { 1107, 7, 18, 14, 6, -14 }, // 0x5B '[' - { 1123, 5, 18, 14, 6, -15 }, // 0x5C '\' - { 1135, 7, 18, 14, 3, -14 }, // 0x5D ']' - { 1151, 9, 6, 14, 5, -14 }, // 0x5E '^' - { 1158, 15, 1, 14, -1, 3 }, // 0x5F '_' - { 1160, 3, 4, 14, 6, -15 }, // 0x60 '`' - { 1162, 12, 10, 14, 2, -9 }, // 0x61 'a' - { 1177, 13, 15, 14, 1, -14 }, // 0x62 'b' - { 1202, 12, 10, 14, 3, -9 }, // 0x63 'c' - { 1217, 13, 15, 14, 2, -14 }, // 0x64 'd' - { 1242, 11, 10, 14, 3, -9 }, // 0x65 'e' - { 1256, 13, 15, 14, 3, -14 }, // 0x66 'f' - { 1281, 13, 14, 14, 3, -9 }, // 0x67 'g' - { 1304, 13, 15, 14, 1, -14 }, // 0x68 'h' - { 1329, 10, 15, 14, 2, -14 }, // 0x69 'i' - { 1348, 10, 19, 14, 2, -14 }, // 0x6A 'j' - { 1372, 12, 15, 14, 2, -14 }, // 0x6B 'k' - { 1395, 10, 15, 14, 2, -14 }, // 0x6C 'l' - { 1414, 14, 10, 14, 0, -9 }, // 0x6D 'm' - { 1432, 12, 10, 14, 1, -9 }, // 0x6E 'n' - { 1447, 11, 10, 14, 3, -9 }, // 0x6F 'o' - { 1461, 14, 14, 14, 0, -9 }, // 0x70 'p' - { 1486, 13, 14, 14, 3, -9 }, // 0x71 'q' - { 1509, 13, 10, 14, 2, -9 }, // 0x72 'r' - { 1526, 10, 10, 14, 3, -9 }, // 0x73 's' - { 1539, 9, 14, 14, 3, -13 }, // 0x74 't' - { 1555, 12, 10, 14, 2, -9 }, // 0x75 'u' - { 1570, 13, 10, 14, 3, -9 }, // 0x76 'v' - { 1587, 13, 10, 14, 3, -9 }, // 0x77 'w' - { 1604, 14, 10, 14, 1, -9 }, // 0x78 'x' - { 1622, 14, 14, 14, 1, -9 }, // 0x79 'y' - { 1647, 11, 10, 14, 3, -9 }, // 0x7A 'z' - { 1661, 7, 18, 14, 5, -14 }, // 0x7B '{' - { 1677, 4, 17, 14, 6, -13 }, // 0x7C '|' - { 1686, 7, 18, 14, 4, -14 }, // 0x7D '}' - { 1702, 11, 3, 14, 3, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique12pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique12pt7bBitmaps, - (GFXglyph *)FreeMonoOblique12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2379 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h deleted file mode 100644 index 1979e7203..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h +++ /dev/null @@ -1,398 +0,0 @@ -const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { - 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, - 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, - 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, - 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, - 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, - 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, - 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, - 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, - 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, - 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, - 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, - 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, - 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, - 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, - 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, - 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, - 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, - 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, - 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, - 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, - 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, - 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, - 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, - 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, - 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, - 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, - 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, - 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, - 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, - 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, - 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, - 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, - 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, - 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, - 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, - 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, - 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, - 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, - 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, - 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, - 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, - 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, - 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, - 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, - 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, - 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, - 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, - 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, - 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, - 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, - 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, - 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, - 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, - 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, - 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, - 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, - 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, - 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, - 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, - 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, - 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, - 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, - 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, - 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, - 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, - 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, - 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, - 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, - 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, - 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, - 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, - 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, - 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, - 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, - 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, - 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, - 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, - 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, - 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, - 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, - 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, - 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, - 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, - 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, - 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, - 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, - 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, - 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, - 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, - 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, - 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, - 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, - 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, - 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, - 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, - 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, - 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, - 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, - 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, - 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, - 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, - 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, - 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, - 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, - 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, - 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, - 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, - 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, - 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, - 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, - 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, - 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, - 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, - 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, - 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, - 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, - 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, - 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, - 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, - 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, - 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, - 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, - 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, - 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, - 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, - 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, - 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, - 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, - 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, - 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, - 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, - 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, - 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, - 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, - 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, - 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, - 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, - 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, - 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, - 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, - 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, - 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, - 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, - 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, - 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, - 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, - 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, - 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, - 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, - 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, - 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, - 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, - 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, - 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, - 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, - 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, - 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, - 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, - 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, - 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, - 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, - 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, - 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, - 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, - 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, - 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, - 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, - 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, - 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, - 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, - 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, - 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, - 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, - 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, - 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, - 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, - 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, - 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, - 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, - 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, - 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, - 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, - 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, - 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, - 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, - 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, - 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, - 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, - 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, - 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, - 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, - 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, - 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, - 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, - 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, - 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, - 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, - 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, - 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, - 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, - 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, - 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, - 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, - 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, - 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, - 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, - 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, - 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, - 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, - 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, - 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, - 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, - 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, - 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, - 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, - 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, - 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, - 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, - 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, - 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, - 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, - 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, - 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, - 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, - 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, - 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, - 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, - 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, - 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, - 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, - 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, - 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, - 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, - 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, - 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00 }; - -const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 7, 22, 21, 9, -21 }, // 0x21 '!' - { 20, 13, 10, 21, 7, -20 }, // 0x22 '"' - { 37, 15, 24, 21, 5, -21 }, // 0x23 '#' - { 82, 16, 26, 21, 4, -22 }, // 0x24 '$' - { 134, 16, 21, 21, 5, -20 }, // 0x25 '%' - { 176, 13, 18, 21, 5, -17 }, // 0x26 '&' - { 206, 5, 10, 21, 12, -20 }, // 0x27 ''' - { 213, 8, 25, 21, 12, -20 }, // 0x28 '(' - { 238, 8, 25, 21, 5, -20 }, // 0x29 ')' - { 263, 14, 11, 21, 7, -19 }, // 0x2A '*' - { 283, 15, 17, 21, 5, -17 }, // 0x2B '+' - { 315, 9, 10, 21, 4, -4 }, // 0x2C ',' - { 327, 16, 1, 21, 5, -9 }, // 0x2D '-' - { 329, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 333, 19, 26, 21, 3, -22 }, // 0x2F '/' - { 395, 14, 21, 21, 5, -20 }, // 0x30 '0' - { 432, 13, 21, 21, 4, -20 }, // 0x31 '1' - { 467, 17, 21, 21, 3, -20 }, // 0x32 '2' - { 512, 16, 21, 21, 3, -20 }, // 0x33 '3' - { 554, 14, 21, 21, 5, -20 }, // 0x34 '4' - { 591, 17, 21, 21, 4, -20 }, // 0x35 '5' - { 636, 16, 21, 21, 6, -20 }, // 0x36 '6' - { 678, 13, 21, 21, 8, -20 }, // 0x37 '7' - { 713, 15, 21, 21, 5, -20 }, // 0x38 '8' - { 753, 15, 21, 21, 5, -20 }, // 0x39 '9' - { 793, 7, 15, 21, 8, -14 }, // 0x3A ':' - { 807, 11, 20, 21, 4, -14 }, // 0x3B ';' - { 835, 17, 16, 21, 5, -17 }, // 0x3C '<' - { 869, 19, 6, 21, 3, -12 }, // 0x3D '=' - { 884, 18, 16, 21, 3, -17 }, // 0x3E '>' - { 920, 12, 20, 21, 8, -19 }, // 0x3F '?' - { 950, 15, 23, 21, 5, -20 }, // 0x40 '@' - { 994, 21, 20, 21, 0, -19 }, // 0x41 'A' - { 1047, 18, 20, 21, 2, -19 }, // 0x42 'B' - { 1092, 18, 20, 21, 4, -19 }, // 0x43 'C' - { 1137, 18, 20, 21, 2, -19 }, // 0x44 'D' - { 1182, 20, 20, 21, 2, -19 }, // 0x45 'E' - { 1232, 20, 20, 21, 2, -19 }, // 0x46 'F' - { 1282, 18, 20, 21, 4, -19 }, // 0x47 'G' - { 1327, 21, 20, 21, 2, -19 }, // 0x48 'H' - { 1380, 17, 20, 21, 4, -19 }, // 0x49 'I' - { 1423, 20, 20, 21, 4, -19 }, // 0x4A 'J' - { 1473, 21, 20, 21, 2, -19 }, // 0x4B 'K' - { 1526, 18, 20, 21, 2, -19 }, // 0x4C 'L' - { 1571, 24, 20, 21, 1, -19 }, // 0x4D 'M' - { 1631, 22, 20, 21, 2, -19 }, // 0x4E 'N' - { 1686, 17, 20, 21, 4, -19 }, // 0x4F 'O' - { 1729, 18, 20, 21, 2, -19 }, // 0x50 'P' - { 1774, 17, 24, 21, 4, -19 }, // 0x51 'Q' - { 1825, 18, 20, 21, 2, -19 }, // 0x52 'R' - { 1870, 18, 20, 21, 3, -19 }, // 0x53 'S' - { 1915, 17, 20, 21, 5, -19 }, // 0x54 'T' - { 1958, 18, 20, 21, 5, -19 }, // 0x55 'U' - { 2003, 21, 20, 21, 4, -19 }, // 0x56 'V' - { 2056, 20, 20, 21, 4, -19 }, // 0x57 'W' - { 2106, 21, 20, 21, 2, -19 }, // 0x58 'X' - { 2159, 18, 20, 21, 5, -19 }, // 0x59 'Y' - { 2204, 17, 20, 21, 4, -19 }, // 0x5A 'Z' - { 2247, 11, 25, 21, 9, -20 }, // 0x5B '[' - { 2282, 8, 27, 21, 9, -22 }, // 0x5C '\' - { 2309, 11, 25, 21, 5, -20 }, // 0x5D ']' - { 2344, 13, 9, 21, 7, -20 }, // 0x5E '^' - { 2359, 21, 1, 21, -1, 4 }, // 0x5F '_' - { 2362, 5, 5, 21, 9, -21 }, // 0x60 '`' - { 2366, 16, 15, 21, 3, -14 }, // 0x61 'a' - { 2396, 19, 21, 21, 1, -20 }, // 0x62 'b' - { 2446, 17, 15, 21, 4, -14 }, // 0x63 'c' - { 2478, 18, 21, 21, 4, -20 }, // 0x64 'd' - { 2526, 16, 15, 21, 4, -14 }, // 0x65 'e' - { 2556, 19, 21, 21, 4, -20 }, // 0x66 'f' - { 2606, 19, 22, 21, 4, -14 }, // 0x67 'g' - { 2659, 18, 21, 21, 2, -20 }, // 0x68 'h' - { 2707, 15, 22, 21, 3, -21 }, // 0x69 'i' - { 2749, 15, 29, 21, 3, -21 }, // 0x6A 'j' - { 2804, 18, 21, 21, 2, -20 }, // 0x6B 'k' - { 2852, 15, 21, 21, 3, -20 }, // 0x6C 'l' - { 2892, 20, 15, 21, 1, -14 }, // 0x6D 'm' - { 2930, 17, 15, 21, 2, -14 }, // 0x6E 'n' - { 2962, 16, 15, 21, 4, -14 }, // 0x6F 'o' - { 2992, 20, 22, 21, 0, -14 }, // 0x70 'p' - { 3047, 19, 22, 21, 4, -14 }, // 0x71 'q' - { 3100, 19, 15, 21, 3, -14 }, // 0x72 'r' - { 3136, 15, 15, 21, 4, -14 }, // 0x73 's' - { 3165, 13, 20, 21, 5, -19 }, // 0x74 't' - { 3198, 15, 15, 21, 4, -14 }, // 0x75 'u' - { 3227, 19, 15, 21, 4, -14 }, // 0x76 'v' - { 3263, 17, 15, 21, 5, -14 }, // 0x77 'w' - { 3295, 19, 15, 21, 2, -14 }, // 0x78 'x' - { 3331, 21, 22, 21, 1, -14 }, // 0x79 'y' - { 3389, 16, 15, 21, 4, -14 }, // 0x7A 'z' - { 3419, 11, 25, 21, 8, -20 }, // 0x7B '{' - { 3454, 6, 24, 21, 9, -19 }, // 0x7C '|' - { 3472, 10, 25, 21, 6, -20 }, // 0x7D '}' - { 3504, 15, 5, 21, 5, -11 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique18pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique18pt7bBitmaps, - (GFXglyph *)FreeMonoOblique18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4186 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h deleted file mode 100644 index 8a5592c29..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h +++ /dev/null @@ -1,643 +0,0 @@ -const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, - 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, - 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, - 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, - 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, - 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, - 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, - 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, - 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, - 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, - 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, - 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, - 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, - 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, - 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, - 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, - 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, - 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, - 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, - 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, - 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, - 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, - 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, - 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, - 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, - 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, - 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, - 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, - 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, - 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, - 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, - 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, - 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, - 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, - 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, - 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, - 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, - 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, - 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, - 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, - 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, - 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, - 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, - 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, - 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, - 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, - 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, - 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, - 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, - 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, - 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, - 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, - 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, - 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, - 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, - 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, - 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, - 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, - 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, - 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, - 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, - 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, - 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, - 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, - 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, - 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, - 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, - 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, - 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, - 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, - 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, - 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, - 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, - 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, - 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, - 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, - 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, - 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, - 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, - 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, - 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, - 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, - 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, - 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, - 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, - 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, - 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, - 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, - 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, - 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, - 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, - 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, - 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, - 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, - 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, - 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, - 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, - 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, - 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, - 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, - 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, - 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, - 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, - 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, - 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, - 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, - 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, - 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, - 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, - 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, - 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, - 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, - 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, - 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, - 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, - 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, - 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, - 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, - 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, - 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, - 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, - 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, - 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, - 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, - 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, - 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, - 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, - 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, - 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, - 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, - 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, - 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, - 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, - 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, - 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, - 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, - 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, - 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, - 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, - 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, - 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, - 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, - 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, - 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, - 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, - 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, - 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, - 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, - 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, - 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, - 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, - 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, - 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, - 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, - 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, - 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, - 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, - 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, - 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, - 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, - 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, - 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, - 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, - 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, - 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, - 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, - 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, - 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, - 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, - 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, - 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, - 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, - 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, - 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, - 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, - 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, - 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, - 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, - 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, - 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, - 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, - 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, - 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, - 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, - 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, - 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, - 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, - 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, - 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, - 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, - 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, - 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, - 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, - 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, - 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, - 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, - 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, - 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, - 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, - 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, - 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, - 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, - 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, - 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, - 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, - 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, - 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, - 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, - 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, - 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, - 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, - 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, - 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, - 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, - 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, - 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, - 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, - 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, - 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, - 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, - 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, - 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, - 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, - 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, - 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, - 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, - 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, - 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, - 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, - 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, - 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, - 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, - 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, - 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, - 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, - 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, - 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, - 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, - 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, - 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, - 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, - 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, - 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, - 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, - 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, - 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, - 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, - 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, - 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, - 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, - 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, - 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, - 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, - 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, - 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, - 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, - 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, - 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, - 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, - 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, - 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, - 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, - 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, - 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, - 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, - 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, - 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, - 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, - 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, - 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, - 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, - 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, - 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, - 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, - 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, - 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, - 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, - 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, - 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, - 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, - 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, - 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, - 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, - 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, - 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, - 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, - 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, - 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, - 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, - 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, - 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, - 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, - 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, - 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, - 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, - 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, - 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, - 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, - 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, - 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, - 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, - 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, - 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, - 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, - 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, - 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, - 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, - 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, - 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, - 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, - 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, - 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, - 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, - 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, - 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, - 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, - 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, - 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, - 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, - 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, - 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, - 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, - 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, - 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, - 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, - 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, - 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, - 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, - 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, - 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, - 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, - 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, - 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, - 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, - 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, - 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, - 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, - 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, - 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, - 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, - 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, - 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, - 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, - 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, - 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, - 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, - 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, - 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, - 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, - 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, - 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, - 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, - 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, - 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, - 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, - 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, - 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, - 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, - 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, - 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, - 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, - 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, - 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, - 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, - 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, - 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, - 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, - 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, - 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, - 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, - 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, - 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, - 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, - 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, - 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, - 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, - 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, - 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, - 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, - 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0 }; - -const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 10, 30, 28, 12, -28 }, // 0x21 '!' - { 38, 16, 14, 28, 10, -28 }, // 0x22 '"' - { 66, 22, 32, 28, 6, -29 }, // 0x23 '#' - { 154, 21, 33, 28, 6, -29 }, // 0x24 '$' - { 241, 22, 29, 28, 6, -27 }, // 0x25 '%' - { 321, 19, 25, 28, 6, -23 }, // 0x26 '&' - { 381, 7, 14, 28, 16, -28 }, // 0x27 ''' - { 394, 11, 34, 28, 16, -27 }, // 0x28 '(' - { 441, 11, 34, 28, 7, -27 }, // 0x29 ')' - { 488, 18, 17, 28, 10, -28 }, // 0x2A '*' - { 527, 22, 22, 28, 6, -23 }, // 0x2B '+' - { 588, 12, 14, 28, 5, -6 }, // 0x2C ',' - { 609, 22, 2, 28, 6, -13 }, // 0x2D '-' - { 615, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 621, 24, 35, 28, 5, -30 }, // 0x2F '/' - { 726, 20, 30, 28, 7, -28 }, // 0x30 '0' - { 801, 17, 29, 28, 6, -28 }, // 0x31 '1' - { 863, 23, 29, 28, 4, -28 }, // 0x32 '2' - { 947, 22, 30, 28, 5, -28 }, // 0x33 '3' - { 1030, 19, 28, 28, 7, -27 }, // 0x34 '4' - { 1097, 21, 29, 28, 6, -27 }, // 0x35 '5' - { 1174, 21, 30, 28, 9, -28 }, // 0x36 '6' - { 1253, 18, 28, 28, 10, -27 }, // 0x37 '7' - { 1316, 20, 30, 28, 7, -28 }, // 0x38 '8' - { 1391, 22, 30, 28, 6, -28 }, // 0x39 '9' - { 1474, 10, 21, 28, 11, -19 }, // 0x3A ':' - { 1501, 15, 27, 28, 5, -19 }, // 0x3B ';' - { 1552, 23, 22, 28, 6, -23 }, // 0x3C '<' - { 1616, 25, 9, 28, 4, -17 }, // 0x3D '=' - { 1645, 24, 22, 28, 4, -23 }, // 0x3E '>' - { 1711, 16, 28, 28, 11, -26 }, // 0x3F '?' - { 1767, 19, 32, 28, 7, -28 }, // 0x40 '@' - { 1843, 27, 26, 28, 1, -25 }, // 0x41 'A' - { 1931, 26, 26, 28, 2, -25 }, // 0x42 'B' - { 2016, 25, 28, 28, 5, -26 }, // 0x43 'C' - { 2104, 26, 26, 28, 2, -25 }, // 0x44 'D' - { 2189, 27, 26, 28, 2, -25 }, // 0x45 'E' - { 2277, 28, 26, 28, 2, -25 }, // 0x46 'F' - { 2368, 25, 28, 28, 5, -26 }, // 0x47 'G' - { 2456, 27, 26, 28, 3, -25 }, // 0x48 'H' - { 2544, 22, 26, 28, 6, -25 }, // 0x49 'I' - { 2616, 28, 27, 28, 5, -25 }, // 0x4A 'J' - { 2711, 29, 26, 28, 2, -25 }, // 0x4B 'K' - { 2806, 25, 26, 28, 3, -25 }, // 0x4C 'L' - { 2888, 32, 26, 28, 1, -25 }, // 0x4D 'M' - { 2992, 30, 26, 28, 2, -25 }, // 0x4E 'N' - { 3090, 24, 28, 28, 5, -26 }, // 0x4F 'O' - { 3174, 26, 26, 28, 2, -25 }, // 0x50 'P' - { 3259, 24, 32, 28, 5, -26 }, // 0x51 'Q' - { 3355, 26, 26, 28, 2, -25 }, // 0x52 'R' - { 3440, 24, 28, 28, 5, -26 }, // 0x53 'S' - { 3524, 24, 26, 28, 7, -25 }, // 0x54 'T' - { 3602, 26, 27, 28, 6, -25 }, // 0x55 'U' - { 3690, 27, 26, 28, 6, -25 }, // 0x56 'V' - { 3778, 27, 26, 28, 6, -25 }, // 0x57 'W' - { 3866, 29, 26, 28, 2, -25 }, // 0x58 'X' - { 3961, 24, 26, 28, 7, -25 }, // 0x59 'Y' - { 4039, 23, 26, 28, 5, -25 }, // 0x5A 'Z' - { 4114, 15, 34, 28, 12, -27 }, // 0x5B '[' - { 4178, 10, 35, 28, 12, -30 }, // 0x5C '\' - { 4222, 15, 34, 28, 6, -27 }, // 0x5D ']' - { 4286, 18, 12, 28, 9, -28 }, // 0x5E '^' - { 4313, 28, 2, 28, -1, 5 }, // 0x5F '_' - { 4320, 6, 7, 28, 13, -29 }, // 0x60 '`' - { 4326, 22, 22, 28, 4, -20 }, // 0x61 'a' - { 4387, 27, 29, 28, 1, -27 }, // 0x62 'b' - { 4485, 22, 22, 28, 6, -20 }, // 0x63 'c' - { 4546, 25, 29, 28, 5, -27 }, // 0x64 'd' - { 4637, 22, 22, 28, 5, -20 }, // 0x65 'e' - { 4698, 26, 28, 28, 5, -27 }, // 0x66 'f' - { 4789, 25, 30, 28, 5, -20 }, // 0x67 'g' - { 4883, 24, 28, 28, 3, -27 }, // 0x68 'h' - { 4967, 19, 29, 28, 5, -28 }, // 0x69 'i' - { 5036, 20, 38, 28, 4, -28 }, // 0x6A 'j' - { 5131, 24, 28, 28, 3, -27 }, // 0x6B 'k' - { 5215, 19, 28, 28, 5, -27 }, // 0x6C 'l' - { 5282, 27, 21, 28, 1, -20 }, // 0x6D 'm' - { 5353, 23, 21, 28, 3, -20 }, // 0x6E 'n' - { 5414, 22, 22, 28, 5, -20 }, // 0x6F 'o' - { 5475, 29, 30, 28, -1, -20 }, // 0x70 'p' - { 5584, 26, 30, 28, 5, -20 }, // 0x71 'q' - { 5682, 25, 20, 28, 4, -19 }, // 0x72 'r' - { 5745, 21, 22, 28, 5, -20 }, // 0x73 's' - { 5803, 17, 27, 28, 7, -25 }, // 0x74 't' - { 5861, 21, 21, 28, 6, -19 }, // 0x75 'u' - { 5917, 26, 20, 28, 5, -19 }, // 0x76 'v' - { 5982, 25, 20, 28, 6, -19 }, // 0x77 'w' - { 6045, 26, 20, 28, 3, -19 }, // 0x78 'x' - { 6110, 29, 29, 28, 1, -19 }, // 0x79 'y' - { 6216, 21, 20, 28, 5, -19 }, // 0x7A 'z' - { 6269, 15, 34, 28, 10, -27 }, // 0x7B '{' - { 6333, 9, 35, 28, 12, -28 }, // 0x7C '|' - { 6373, 15, 34, 28, 8, -27 }, // 0x7D '}' - { 6437, 20, 6, 28, 7, -15 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique24pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique24pt7bBitmaps, - (GFXglyph *)FreeMonoOblique24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 7124 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h deleted file mode 100644 index a00ca8290..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h +++ /dev/null @@ -1,187 +0,0 @@ -const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { - 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, - 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, - 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, - 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, - 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, - 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, - 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, - 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, - 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, - 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, - 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, - 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, - 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, - 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, - 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, - 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, - 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, - 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, - 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, - 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, - 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, - 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, - 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, - 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, - 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, - 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, - 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, - 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, - 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, - 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, - 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, - 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, - 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, - 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, - 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, - 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, - 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, - 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, - 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, - 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, - 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, - 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, - 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, - 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, - 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, - 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, - 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, - 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, - 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, - 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, - 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, - 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, - 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, - 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, - 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, - 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, - 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, - 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, - 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, - 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, - 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, - 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, - 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, - 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, - 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, - 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, - 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, - 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, - 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, - 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, - 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, - 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, - 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, - 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, - 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, - 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, - 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, - 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, - 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, - 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, - 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, - 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30 }; - -const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 4, 11, 11, 4, -10 }, // 0x21 '!' - { 6, 5, 5, 11, 4, -10 }, // 0x22 '"' - { 10, 9, 12, 11, 2, -10 }, // 0x23 '#' - { 24, 8, 12, 11, 3, -10 }, // 0x24 '$' - { 36, 9, 11, 11, 2, -10 }, // 0x25 '%' - { 49, 7, 10, 11, 2, -9 }, // 0x26 '&' - { 58, 2, 5, 11, 6, -10 }, // 0x27 ''' - { 60, 4, 13, 11, 6, -10 }, // 0x28 '(' - { 67, 4, 13, 11, 3, -10 }, // 0x29 ')' - { 74, 7, 7, 11, 4, -10 }, // 0x2A '*' - { 81, 9, 8, 11, 2, -8 }, // 0x2B '+' - { 90, 4, 5, 11, 2, -1 }, // 0x2C ',' - { 93, 9, 1, 11, 2, -5 }, // 0x2D '-' - { 95, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 96, 9, 13, 11, 2, -11 }, // 0x2F '/' - { 111, 7, 11, 11, 3, -10 }, // 0x30 '0' - { 121, 7, 11, 11, 2, -10 }, // 0x31 '1' - { 131, 9, 11, 11, 2, -10 }, // 0x32 '2' - { 144, 9, 11, 11, 2, -10 }, // 0x33 '3' - { 157, 8, 11, 11, 2, -10 }, // 0x34 '4' - { 168, 9, 11, 11, 2, -10 }, // 0x35 '5' - { 181, 8, 11, 11, 3, -10 }, // 0x36 '6' - { 192, 7, 11, 11, 4, -10 }, // 0x37 '7' - { 202, 8, 11, 11, 3, -10 }, // 0x38 '8' - { 213, 8, 11, 11, 3, -10 }, // 0x39 '9' - { 224, 3, 8, 11, 4, -7 }, // 0x3A ':' - { 227, 5, 11, 11, 2, -7 }, // 0x3B ';' - { 234, 9, 8, 11, 2, -8 }, // 0x3C '<' - { 243, 9, 4, 11, 2, -6 }, // 0x3D '=' - { 248, 9, 8, 11, 2, -8 }, // 0x3E '>' - { 257, 7, 10, 11, 4, -9 }, // 0x3F '?' - { 266, 7, 12, 11, 3, -10 }, // 0x40 '@' - { 277, 11, 10, 11, 0, -9 }, // 0x41 'A' - { 291, 10, 10, 11, 1, -9 }, // 0x42 'B' - { 304, 9, 10, 11, 2, -9 }, // 0x43 'C' - { 316, 10, 10, 11, 1, -9 }, // 0x44 'D' - { 329, 10, 10, 11, 1, -9 }, // 0x45 'E' - { 342, 11, 10, 11, 1, -9 }, // 0x46 'F' - { 356, 9, 10, 11, 2, -9 }, // 0x47 'G' - { 368, 11, 10, 11, 1, -9 }, // 0x48 'H' - { 382, 9, 10, 11, 2, -9 }, // 0x49 'I' - { 394, 11, 10, 11, 2, -9 }, // 0x4A 'J' - { 408, 11, 10, 11, 1, -9 }, // 0x4B 'K' - { 422, 10, 10, 11, 1, -9 }, // 0x4C 'L' - { 435, 13, 10, 11, 0, -9 }, // 0x4D 'M' - { 452, 11, 10, 11, 1, -9 }, // 0x4E 'N' - { 466, 9, 10, 11, 2, -9 }, // 0x4F 'O' - { 478, 10, 10, 11, 1, -9 }, // 0x50 'P' - { 491, 9, 13, 11, 2, -9 }, // 0x51 'Q' - { 506, 10, 10, 11, 1, -9 }, // 0x52 'R' - { 519, 9, 10, 11, 2, -9 }, // 0x53 'S' - { 531, 9, 10, 11, 3, -9 }, // 0x54 'T' - { 543, 10, 10, 11, 2, -9 }, // 0x55 'U' - { 556, 11, 10, 11, 2, -9 }, // 0x56 'V' - { 570, 11, 10, 11, 2, -9 }, // 0x57 'W' - { 584, 11, 10, 11, 1, -9 }, // 0x58 'X' - { 598, 9, 10, 11, 3, -9 }, // 0x59 'Y' - { 610, 9, 10, 11, 2, -9 }, // 0x5A 'Z' - { 622, 5, 13, 11, 5, -10 }, // 0x5B '[' - { 631, 4, 14, 11, 4, -11 }, // 0x5C '\' - { 638, 5, 13, 11, 2, -10 }, // 0x5D ']' - { 647, 7, 5, 11, 3, -10 }, // 0x5E '^' - { 652, 11, 1, 11, 0, 2 }, // 0x5F '_' - { 654, 2, 3, 11, 5, -11 }, // 0x60 '`' - { 655, 9, 8, 11, 2, -7 }, // 0x61 'a' - { 664, 11, 11, 11, 0, -10 }, // 0x62 'b' - { 680, 10, 8, 11, 2, -7 }, // 0x63 'c' - { 690, 9, 11, 11, 2, -10 }, // 0x64 'd' - { 703, 9, 8, 11, 2, -7 }, // 0x65 'e' - { 712, 10, 11, 11, 2, -10 }, // 0x66 'f' - { 726, 10, 11, 11, 2, -7 }, // 0x67 'g' - { 740, 10, 11, 11, 1, -10 }, // 0x68 'h' - { 754, 8, 11, 11, 2, -10 }, // 0x69 'i' - { 765, 9, 14, 11, 1, -10 }, // 0x6A 'j' - { 781, 9, 11, 11, 1, -10 }, // 0x6B 'k' - { 794, 8, 11, 11, 2, -10 }, // 0x6C 'l' - { 805, 11, 8, 11, 0, -7 }, // 0x6D 'm' - { 816, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 825, 9, 8, 11, 2, -7 }, // 0x6F 'o' - { 834, 11, 11, 11, 0, -7 }, // 0x70 'p' - { 850, 10, 11, 11, 2, -7 }, // 0x71 'q' - { 864, 9, 8, 11, 2, -7 }, // 0x72 'r' - { 873, 8, 8, 11, 2, -7 }, // 0x73 's' - { 881, 7, 10, 11, 2, -9 }, // 0x74 't' - { 890, 9, 8, 11, 2, -7 }, // 0x75 'u' - { 899, 10, 8, 11, 2, -7 }, // 0x76 'v' - { 909, 10, 8, 11, 2, -7 }, // 0x77 'w' - { 919, 10, 8, 11, 1, -7 }, // 0x78 'x' - { 929, 12, 11, 11, 0, -7 }, // 0x79 'y' - { 946, 8, 8, 11, 2, -7 }, // 0x7A 'z' - { 954, 6, 13, 11, 4, -10 }, // 0x7B '{' - { 964, 3, 12, 11, 5, -9 }, // 0x7C '|' - { 969, 6, 13, 11, 3, -10 }, // 0x7D '}' - { 979, 7, 3, 11, 3, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique9pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique9pt7bBitmaps, - (GFXglyph *)FreeMonoOblique9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1654 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h deleted file mode 100644 index 9ecbb8fb0..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h +++ /dev/null @@ -1,270 +0,0 @@ -const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, - 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, - 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, - 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, - 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, - 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, - 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, - 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, - 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, - 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, - 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, - 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, - 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, - 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, - 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, - 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, - 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, - 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, - 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, - 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, - 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, - 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, - 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, - 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, - 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, - 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, - 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, - 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, - 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, - 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, - 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, - 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, - 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, - 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, - 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, - 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, - 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, - 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, - 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, - 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, - 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, - 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, - 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, - 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, - 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, - 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, - 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, - 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, - 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, - 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, - 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, - 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, - 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, - 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, - 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, - 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, - 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, - 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, - 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, - 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, - 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, - 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, - 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, - 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, - 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, - 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, - 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, - 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, - 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, - 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, - 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, - 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, - 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, - 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, - 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, - 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, - 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, - 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, - 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, - 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, - 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, - 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, - 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, - 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, - 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, - 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, - 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, - 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, - 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, - 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, - 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, - 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, - 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, - 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, - 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, - 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, - 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, - 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, - 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, - 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, - 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, - 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, - 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, - 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, - 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, - 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, - 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, - 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, - 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, - 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, - 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, - 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, - 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, - 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, - 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, - 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, - 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, - 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, - 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, - 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, - 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, - 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, - 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, - 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, - 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, - 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, - 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, - 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, - 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, - 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, - 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, - 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, - 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, - 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, - 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, - 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, - 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, - 0x80 }; - -const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 2, 18, 8, 3, -17 }, // 0x21 '!' - { 5, 6, 6, 8, 1, -16 }, // 0x22 '"' - { 10, 13, 16, 13, 0, -15 }, // 0x23 '#' - { 36, 11, 20, 13, 1, -17 }, // 0x24 '$' - { 64, 20, 17, 21, 1, -16 }, // 0x25 '%' - { 107, 14, 17, 16, 1, -16 }, // 0x26 '&' - { 137, 2, 6, 5, 1, -16 }, // 0x27 ''' - { 139, 5, 23, 8, 2, -17 }, // 0x28 '(' - { 154, 5, 23, 8, 1, -17 }, // 0x29 ')' - { 169, 7, 7, 9, 1, -17 }, // 0x2A '*' - { 176, 10, 11, 14, 2, -10 }, // 0x2B '+' - { 190, 2, 6, 7, 2, -1 }, // 0x2C ',' - { 192, 6, 2, 8, 1, -7 }, // 0x2D '-' - { 194, 2, 2, 6, 2, -1 }, // 0x2E '.' - { 195, 7, 18, 7, 0, -17 }, // 0x2F '/' - { 211, 11, 17, 13, 1, -16 }, // 0x30 '0' - { 235, 5, 17, 13, 3, -16 }, // 0x31 '1' - { 246, 11, 17, 13, 1, -16 }, // 0x32 '2' - { 270, 11, 17, 13, 1, -16 }, // 0x33 '3' - { 294, 11, 17, 13, 1, -16 }, // 0x34 '4' - { 318, 11, 17, 13, 1, -16 }, // 0x35 '5' - { 342, 11, 17, 13, 1, -16 }, // 0x36 '6' - { 366, 11, 17, 13, 1, -16 }, // 0x37 '7' - { 390, 11, 17, 13, 1, -16 }, // 0x38 '8' - { 414, 11, 17, 13, 1, -16 }, // 0x39 '9' - { 438, 2, 13, 6, 2, -12 }, // 0x3A ':' - { 442, 2, 16, 6, 2, -11 }, // 0x3B ';' - { 446, 12, 12, 14, 1, -11 }, // 0x3C '<' - { 464, 12, 6, 14, 1, -8 }, // 0x3D '=' - { 473, 12, 12, 14, 1, -11 }, // 0x3E '>' - { 491, 10, 18, 13, 2, -17 }, // 0x3F '?' - { 514, 22, 21, 24, 1, -17 }, // 0x40 '@' - { 572, 16, 18, 16, 0, -17 }, // 0x41 'A' - { 608, 13, 18, 16, 2, -17 }, // 0x42 'B' - { 638, 15, 18, 17, 1, -17 }, // 0x43 'C' - { 672, 14, 18, 17, 2, -17 }, // 0x44 'D' - { 704, 12, 18, 15, 2, -17 }, // 0x45 'E' - { 731, 11, 18, 14, 2, -17 }, // 0x46 'F' - { 756, 16, 18, 18, 1, -17 }, // 0x47 'G' - { 792, 13, 18, 17, 2, -17 }, // 0x48 'H' - { 822, 2, 18, 7, 2, -17 }, // 0x49 'I' - { 827, 9, 18, 13, 1, -17 }, // 0x4A 'J' - { 848, 14, 18, 16, 2, -17 }, // 0x4B 'K' - { 880, 10, 18, 14, 2, -17 }, // 0x4C 'L' - { 903, 16, 18, 20, 2, -17 }, // 0x4D 'M' - { 939, 13, 18, 18, 2, -17 }, // 0x4E 'N' - { 969, 17, 18, 19, 1, -17 }, // 0x4F 'O' - { 1008, 12, 18, 16, 2, -17 }, // 0x50 'P' - { 1035, 17, 19, 19, 1, -17 }, // 0x51 'Q' - { 1076, 14, 18, 17, 2, -17 }, // 0x52 'R' - { 1108, 14, 18, 16, 1, -17 }, // 0x53 'S' - { 1140, 12, 18, 15, 1, -17 }, // 0x54 'T' - { 1167, 13, 18, 17, 2, -17 }, // 0x55 'U' - { 1197, 15, 18, 15, 0, -17 }, // 0x56 'V' - { 1231, 22, 18, 22, 0, -17 }, // 0x57 'W' - { 1281, 15, 18, 16, 0, -17 }, // 0x58 'X' - { 1315, 16, 18, 16, 0, -17 }, // 0x59 'Y' - { 1351, 13, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1381, 4, 23, 7, 2, -17 }, // 0x5B '[' - { 1393, 7, 18, 7, 0, -17 }, // 0x5C '\' - { 1409, 4, 23, 7, 1, -17 }, // 0x5D ']' - { 1421, 9, 9, 11, 1, -16 }, // 0x5E '^' - { 1432, 15, 1, 13, -1, 4 }, // 0x5F '_' - { 1434, 5, 4, 6, 1, -17 }, // 0x60 '`' - { 1437, 12, 13, 13, 1, -12 }, // 0x61 'a' - { 1457, 12, 18, 13, 1, -17 }, // 0x62 'b' - { 1484, 10, 13, 12, 1, -12 }, // 0x63 'c' - { 1501, 11, 18, 13, 1, -17 }, // 0x64 'd' - { 1526, 11, 13, 13, 1, -12 }, // 0x65 'e' - { 1544, 5, 18, 7, 1, -17 }, // 0x66 'f' - { 1556, 11, 18, 13, 1, -12 }, // 0x67 'g' - { 1581, 10, 18, 13, 1, -17 }, // 0x68 'h' - { 1604, 2, 18, 5, 2, -17 }, // 0x69 'i' - { 1609, 4, 23, 6, 0, -17 }, // 0x6A 'j' - { 1621, 11, 18, 12, 1, -17 }, // 0x6B 'k' - { 1646, 2, 18, 5, 1, -17 }, // 0x6C 'l' - { 1651, 17, 13, 19, 1, -12 }, // 0x6D 'm' - { 1679, 10, 13, 13, 1, -12 }, // 0x6E 'n' - { 1696, 11, 13, 13, 1, -12 }, // 0x6F 'o' - { 1714, 12, 17, 13, 1, -12 }, // 0x70 'p' - { 1740, 11, 17, 13, 1, -12 }, // 0x71 'q' - { 1764, 6, 13, 8, 1, -12 }, // 0x72 'r' - { 1774, 10, 13, 12, 1, -12 }, // 0x73 's' - { 1791, 5, 16, 7, 1, -15 }, // 0x74 't' - { 1801, 10, 13, 13, 1, -12 }, // 0x75 'u' - { 1818, 12, 13, 12, 0, -12 }, // 0x76 'v' - { 1838, 17, 13, 17, 0, -12 }, // 0x77 'w' - { 1866, 11, 13, 11, 0, -12 }, // 0x78 'x' - { 1884, 11, 18, 11, 0, -12 }, // 0x79 'y' - { 1909, 10, 13, 12, 1, -12 }, // 0x7A 'z' - { 1926, 5, 23, 8, 1, -17 }, // 0x7B '{' - { 1941, 2, 23, 6, 2, -17 }, // 0x7C '|' - { 1947, 5, 23, 8, 2, -17 }, // 0x7D '}' - { 1962, 10, 5, 12, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSans12pt7b PROGMEM = { - (uint8_t *)FreeSans12pt7bBitmaps, - (GFXglyph *)FreeSans12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2641 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h deleted file mode 100644 index 3fdc5911e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h +++ /dev/null @@ -1,452 +0,0 @@ -const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, - 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, - 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, - 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, - 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, - 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, - 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, - 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, - 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, - 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, - 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, - 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, - 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, - 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, - 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, - 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, - 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, - 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, - 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, - 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, - 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, - 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, - 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, - 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, - 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, - 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, - 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, - 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, - 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, - 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, - 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, - 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, - 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, - 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, - 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, - 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, - 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, - 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, - 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, - 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, - 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, - 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, - 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, - 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, - 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, - 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, - 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, - 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, - 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, - 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, - 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, - 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, - 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, - 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, - 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, - 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, - 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, - 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, - 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, - 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, - 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, - 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, - 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, - 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, - 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, - 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, - 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, - 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, - 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, - 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, - 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, - 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, - 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, - 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, - 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, - 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, - 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, - 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, - 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, - 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, - 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, - 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, - 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, - 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, - 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, - 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, - 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, - 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, - 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, - 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, - 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, - 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, - 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, - 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, - 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, - 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, - 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, - 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, - 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, - 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, - 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, - 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, - 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, - 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, - 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, - 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, - 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, - 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, - 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, - 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, - 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, - 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, - 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, - 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, - 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, - 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, - 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, - 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, - 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, - 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, - 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, - 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, - 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, - 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, - 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, - 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, - 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, - 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, - 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, - 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, - 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, - 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, - 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, - 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, - 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, - 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, - 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, - 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, - 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, - 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, - 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, - 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, - 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, - 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, - 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, - 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, - 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, - 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, - 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, - 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, - 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, - 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, - 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, - 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, - 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, - 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, - 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, - 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, - 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, - 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, - 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, - 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, - 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, - 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, - 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, - 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, - 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, - 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, - 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, - 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, - 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, - 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, - 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, - 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, - 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, - 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, - 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, - 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, - 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, - 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, - 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, - 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, - 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, - 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, - 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, - 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, - 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, - 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, - 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, - 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, - 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, - 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, - 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, - 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, - 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, - 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, - 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, - 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, - 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, - 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, - 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, - 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, - 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, - 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, - 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, - 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, - 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, - 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, - 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, - 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, - 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, - 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, - 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, - 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, - 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, - 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, - 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, - 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, - 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, - 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, - 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, - 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, - 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, - 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, - 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, - 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, - 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, - 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, - 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, - 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, - 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, - 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, - 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, - 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, - 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, - 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, - 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, - 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, - 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, - 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, - 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, - 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, - 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, - 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, - 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, - 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, - 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, - 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, - 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, - 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, - 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, - 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, - 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, - 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00 }; - -const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 3, 26, 12, 4, -25 }, // 0x21 '!' - { 10, 9, 9, 12, 1, -24 }, // 0x22 '"' - { 21, 19, 24, 19, 0, -23 }, // 0x23 '#' - { 78, 16, 30, 19, 2, -26 }, // 0x24 '$' - { 138, 29, 25, 31, 1, -24 }, // 0x25 '%' - { 229, 20, 25, 23, 2, -24 }, // 0x26 '&' - { 292, 3, 9, 7, 2, -24 }, // 0x27 ''' - { 296, 8, 33, 12, 3, -25 }, // 0x28 '(' - { 329, 8, 33, 12, 1, -25 }, // 0x29 ')' - { 362, 10, 10, 14, 2, -25 }, // 0x2A '*' - { 375, 16, 16, 20, 2, -15 }, // 0x2B '+' - { 407, 3, 9, 10, 3, -3 }, // 0x2C ',' - { 411, 8, 3, 12, 2, -10 }, // 0x2D '-' - { 414, 3, 4, 9, 3, -3 }, // 0x2E '.' - { 416, 10, 26, 10, 0, -25 }, // 0x2F '/' - { 449, 16, 25, 19, 2, -24 }, // 0x30 '0' - { 499, 8, 25, 19, 4, -24 }, // 0x31 '1' - { 524, 16, 25, 19, 2, -24 }, // 0x32 '2' - { 574, 17, 25, 19, 1, -24 }, // 0x33 '3' - { 628, 16, 25, 19, 1, -24 }, // 0x34 '4' - { 678, 17, 25, 19, 1, -24 }, // 0x35 '5' - { 732, 16, 25, 19, 2, -24 }, // 0x36 '6' - { 782, 16, 25, 19, 2, -24 }, // 0x37 '7' - { 832, 17, 25, 19, 1, -24 }, // 0x38 '8' - { 886, 16, 25, 19, 1, -24 }, // 0x39 '9' - { 936, 3, 19, 9, 3, -18 }, // 0x3A ':' - { 944, 3, 24, 9, 3, -18 }, // 0x3B ';' - { 953, 17, 17, 20, 2, -16 }, // 0x3C '<' - { 990, 17, 9, 20, 2, -12 }, // 0x3D '=' - { 1010, 17, 17, 20, 2, -16 }, // 0x3E '>' - { 1047, 15, 26, 19, 3, -25 }, // 0x3F '?' - { 1096, 32, 31, 36, 1, -25 }, // 0x40 '@' - { 1220, 22, 26, 23, 1, -25 }, // 0x41 'A' - { 1292, 19, 26, 23, 3, -25 }, // 0x42 'B' - { 1354, 22, 26, 25, 1, -25 }, // 0x43 'C' - { 1426, 20, 26, 24, 3, -25 }, // 0x44 'D' - { 1491, 18, 26, 22, 3, -25 }, // 0x45 'E' - { 1550, 17, 26, 21, 3, -25 }, // 0x46 'F' - { 1606, 24, 26, 27, 1, -25 }, // 0x47 'G' - { 1684, 19, 26, 25, 3, -25 }, // 0x48 'H' - { 1746, 3, 26, 10, 4, -25 }, // 0x49 'I' - { 1756, 14, 26, 18, 1, -25 }, // 0x4A 'J' - { 1802, 20, 26, 24, 3, -25 }, // 0x4B 'K' - { 1867, 15, 26, 20, 3, -25 }, // 0x4C 'L' - { 1916, 24, 26, 30, 3, -25 }, // 0x4D 'M' - { 1994, 20, 26, 26, 3, -25 }, // 0x4E 'N' - { 2059, 25, 26, 27, 1, -25 }, // 0x4F 'O' - { 2141, 18, 26, 23, 3, -25 }, // 0x50 'P' - { 2200, 25, 28, 27, 1, -25 }, // 0x51 'Q' - { 2288, 20, 26, 25, 3, -25 }, // 0x52 'R' - { 2353, 20, 26, 23, 1, -25 }, // 0x53 'S' - { 2418, 19, 26, 22, 1, -25 }, // 0x54 'T' - { 2480, 19, 26, 25, 3, -25 }, // 0x55 'U' - { 2542, 21, 26, 23, 1, -25 }, // 0x56 'V' - { 2611, 32, 26, 33, 0, -25 }, // 0x57 'W' - { 2715, 21, 26, 23, 1, -25 }, // 0x58 'X' - { 2784, 23, 26, 24, 0, -25 }, // 0x59 'Y' - { 2859, 19, 26, 22, 1, -25 }, // 0x5A 'Z' - { 2921, 6, 33, 10, 2, -25 }, // 0x5B '[' - { 2946, 10, 26, 10, 0, -25 }, // 0x5C '\' - { 2979, 6, 33, 10, 1, -25 }, // 0x5D ']' - { 3004, 13, 13, 16, 2, -24 }, // 0x5E '^' - { 3026, 21, 2, 19, -1, 5 }, // 0x5F '_' - { 3032, 7, 5, 9, 1, -25 }, // 0x60 '`' - { 3037, 17, 19, 19, 1, -18 }, // 0x61 'a' - { 3078, 16, 26, 20, 2, -25 }, // 0x62 'b' - { 3130, 16, 19, 18, 1, -18 }, // 0x63 'c' - { 3168, 17, 26, 20, 1, -25 }, // 0x64 'd' - { 3224, 16, 19, 19, 1, -18 }, // 0x65 'e' - { 3262, 7, 26, 10, 1, -25 }, // 0x66 'f' - { 3285, 16, 27, 19, 1, -18 }, // 0x67 'g' - { 3339, 15, 26, 19, 2, -25 }, // 0x68 'h' - { 3388, 3, 26, 8, 2, -25 }, // 0x69 'i' - { 3398, 6, 34, 9, 0, -25 }, // 0x6A 'j' - { 3424, 16, 26, 18, 2, -25 }, // 0x6B 'k' - { 3476, 3, 26, 7, 2, -25 }, // 0x6C 'l' - { 3486, 24, 19, 28, 2, -18 }, // 0x6D 'm' - { 3543, 15, 19, 19, 2, -18 }, // 0x6E 'n' - { 3579, 17, 19, 19, 1, -18 }, // 0x6F 'o' - { 3620, 16, 25, 20, 2, -18 }, // 0x70 'p' - { 3670, 17, 25, 20, 1, -18 }, // 0x71 'q' - { 3724, 9, 19, 12, 2, -18 }, // 0x72 'r' - { 3746, 14, 19, 17, 2, -18 }, // 0x73 's' - { 3780, 7, 23, 10, 1, -22 }, // 0x74 't' - { 3801, 15, 19, 19, 2, -18 }, // 0x75 'u' - { 3837, 17, 19, 17, 0, -18 }, // 0x76 'v' - { 3878, 25, 19, 25, 0, -18 }, // 0x77 'w' - { 3938, 16, 19, 17, 0, -18 }, // 0x78 'x' - { 3976, 17, 27, 17, 0, -18 }, // 0x79 'y' - { 4034, 15, 19, 17, 1, -18 }, // 0x7A 'z' - { 4070, 8, 33, 12, 1, -25 }, // 0x7B '{' - { 4103, 2, 33, 9, 3, -25 }, // 0x7C '|' - { 4112, 8, 33, 12, 3, -25 }, // 0x7D '}' - { 4145, 15, 7, 18, 1, -15 } }; // 0x7E '~' - -const GFXfont FreeSans18pt7b PROGMEM = { - (uint8_t *)FreeSans18pt7bBitmaps, - (GFXglyph *)FreeSans18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4831 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h deleted file mode 100644 index ff2d174fb..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h +++ /dev/null @@ -1,727 +0,0 @@ -const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, - 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, - 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, - 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, - 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, - 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, - 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, - 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, - 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, - 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, - 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, - 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, - 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, - 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, - 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, - 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, - 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, - 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, - 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, - 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, - 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, - 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, - 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, - 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, - 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, - 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, - 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, - 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, - 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, - 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, - 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, - 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, - 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, - 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, - 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, - 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, - 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, - 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, - 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, - 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, - 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, - 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, - 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, - 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, - 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, - 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, - 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, - 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, - 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, - 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, - 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, - 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, - 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, - 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, - 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, - 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, - 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, - 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, - 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, - 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, - 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, - 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, - 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, - 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, - 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, - 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, - 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, - 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, - 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, - 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, - 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, - 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, - 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, - 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, - 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, - 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, - 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, - 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, - 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, - 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, - 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, - 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, - 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, - 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, - 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, - 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, - 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, - 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, - 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, - 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, - 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, - 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, - 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, - 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, - 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, - 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, - 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, - 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, - 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, - 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, - 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, - 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, - 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, - 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, - 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, - 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, - 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, - 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, - 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, - 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, - 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, - 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, - 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, - 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, - 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, - 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, - 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, - 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, - 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, - 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, - 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, - 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, - 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, - 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, - 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, - 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, - 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, - 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, - 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, - 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, - 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, - 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, - 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, - 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, - 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, - 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, - 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, - 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, - 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, - 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, - 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, - 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, - 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, - 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, - 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, - 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, - 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, - 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, - 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, - 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, - 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, - 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, - 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, - 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, - 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, - 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, - 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, - 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, - 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, - 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, - 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, - 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, - 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, - 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, - 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, - 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, - 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, - 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, - 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, - 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, - 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, - 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, - 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, - 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, - 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, - 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, - 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, - 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, - 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, - 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, - 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, - 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, - 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, - 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, - 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, - 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, - 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, - 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, - 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, - 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, - 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, - 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, - 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, - 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, - 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, - 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, - 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, - 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, - 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, - 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, - 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, - 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, - 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, - 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, - 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, - 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, - 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, - 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, - 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, - 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, - 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, - 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, - 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, - 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, - 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, - 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, - 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, - 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, - 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, - 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, - 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, - 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, - 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, - 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, - 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, - 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, - 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, - 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, - 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, - 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, - 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, - 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, - 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, - 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, - 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, - 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, - 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, - 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, - 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, - 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, - 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, - 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, - 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, - 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, - 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, - 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, - 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, - 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, - 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, - 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, - 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, - 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, - 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, - 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, - 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, - 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, - 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, - 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, - 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, - 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, - 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, - 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, - 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, - 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, - 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, - 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, - 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, - 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, - 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, - 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, - 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, - 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, - 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, - 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, - 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, - 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, - 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, - 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, - 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, - 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, - 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, - 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, - 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, - 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, - 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, - 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, - 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, - 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, - 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, - 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, - 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, - 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, - 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, - 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, - 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, - 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, - 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, - 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, - 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, - 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, - 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, - 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, - 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, - 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, - 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, - 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, - 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, - 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, - 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, - 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, - 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, - 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, - 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, - 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, - 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, - 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, - 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, - 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, - 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, - 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, - 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, - 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, - 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, - 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, - 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, - 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, - 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, - 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, - 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, - 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, - 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, - 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, - 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, - 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, - 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, - 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, - 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, - 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, - 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, - 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, - 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, - 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, - 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, - 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, - 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, - 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, - 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, - 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, - 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, - 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, - 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, - 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, - 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, - 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, - 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, - 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, - 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, - 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, - 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, - 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, - 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, - 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, - 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, - 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, - 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, - 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, - 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, - 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, - 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, - 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, - 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, - 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, - 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, - 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, - 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0 }; - -const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 4, 34, 16, 6, -33 }, // 0x21 '!' - { 17, 11, 12, 16, 2, -32 }, // 0x22 '"' - { 34, 24, 33, 26, 1, -31 }, // 0x23 '#' - { 133, 23, 41, 26, 1, -34 }, // 0x24 '$' - { 251, 39, 34, 42, 1, -32 }, // 0x25 '%' - { 417, 28, 34, 31, 2, -32 }, // 0x26 '&' - { 536, 4, 12, 9, 2, -32 }, // 0x27 ''' - { 542, 10, 44, 16, 3, -33 }, // 0x28 '(' - { 597, 10, 44, 16, 2, -33 }, // 0x29 ')' - { 652, 14, 14, 18, 2, -33 }, // 0x2A '*' - { 677, 23, 22, 27, 2, -21 }, // 0x2B '+' - { 741, 4, 12, 13, 4, -4 }, // 0x2C ',' - { 747, 11, 4, 16, 2, -14 }, // 0x2D '-' - { 753, 4, 5, 12, 4, -4 }, // 0x2E '.' - { 756, 13, 35, 13, 0, -33 }, // 0x2F '/' - { 813, 22, 34, 26, 2, -32 }, // 0x30 '0' - { 907, 11, 33, 26, 5, -32 }, // 0x31 '1' - { 953, 22, 33, 26, 2, -32 }, // 0x32 '2' - { 1044, 23, 34, 26, 1, -32 }, // 0x33 '3' - { 1142, 23, 33, 26, 1, -32 }, // 0x34 '4' - { 1237, 22, 34, 26, 2, -32 }, // 0x35 '5' - { 1331, 22, 34, 26, 2, -32 }, // 0x36 '6' - { 1425, 21, 33, 26, 2, -32 }, // 0x37 '7' - { 1512, 22, 34, 26, 2, -32 }, // 0x38 '8' - { 1606, 21, 34, 26, 2, -32 }, // 0x39 '9' - { 1696, 4, 25, 12, 4, -24 }, // 0x3A ':' - { 1709, 4, 32, 12, 4, -24 }, // 0x3B ';' - { 1725, 23, 23, 27, 2, -22 }, // 0x3C '<' - { 1792, 23, 12, 27, 2, -16 }, // 0x3D '=' - { 1827, 23, 23, 27, 2, -22 }, // 0x3E '>' - { 1894, 20, 35, 26, 4, -34 }, // 0x3F '?' - { 1982, 43, 42, 48, 2, -34 }, // 0x40 '@' - { 2208, 30, 34, 31, 1, -33 }, // 0x41 'A' - { 2336, 25, 34, 31, 4, -33 }, // 0x42 'B' - { 2443, 29, 36, 33, 2, -34 }, // 0x43 'C' - { 2574, 27, 34, 33, 4, -33 }, // 0x44 'D' - { 2689, 24, 34, 30, 4, -33 }, // 0x45 'E' - { 2791, 22, 34, 28, 4, -33 }, // 0x46 'F' - { 2885, 31, 36, 36, 2, -34 }, // 0x47 'G' - { 3025, 26, 34, 34, 4, -33 }, // 0x48 'H' - { 3136, 4, 34, 13, 5, -33 }, // 0x49 'I' - { 3153, 19, 35, 25, 2, -33 }, // 0x4A 'J' - { 3237, 27, 34, 32, 4, -33 }, // 0x4B 'K' - { 3352, 21, 34, 26, 4, -33 }, // 0x4C 'L' - { 3442, 32, 34, 40, 4, -33 }, // 0x4D 'M' - { 3578, 26, 34, 34, 4, -33 }, // 0x4E 'N' - { 3689, 33, 36, 37, 2, -34 }, // 0x4F 'O' - { 3838, 24, 34, 31, 4, -33 }, // 0x50 'P' - { 3940, 33, 38, 37, 2, -34 }, // 0x51 'Q' - { 4097, 26, 34, 33, 4, -33 }, // 0x52 'R' - { 4208, 27, 36, 31, 2, -34 }, // 0x53 'S' - { 4330, 26, 34, 30, 2, -33 }, // 0x54 'T' - { 4441, 26, 35, 34, 4, -33 }, // 0x55 'U' - { 4555, 29, 34, 30, 1, -33 }, // 0x56 'V' - { 4679, 42, 34, 44, 1, -33 }, // 0x57 'W' - { 4858, 29, 34, 31, 1, -33 }, // 0x58 'X' - { 4982, 30, 34, 32, 1, -33 }, // 0x59 'Y' - { 5110, 27, 34, 29, 1, -33 }, // 0x5A 'Z' - { 5225, 8, 44, 13, 3, -33 }, // 0x5B '[' - { 5269, 13, 35, 13, 0, -33 }, // 0x5C '\' - { 5326, 8, 44, 13, 1, -33 }, // 0x5D ']' - { 5370, 18, 18, 22, 2, -32 }, // 0x5E '^' - { 5411, 28, 2, 26, -1, 7 }, // 0x5F '_' - { 5418, 10, 7, 12, 1, -34 }, // 0x60 '`' - { 5427, 24, 27, 26, 1, -25 }, // 0x61 'a' - { 5508, 22, 35, 26, 3, -33 }, // 0x62 'b' - { 5605, 21, 27, 24, 1, -25 }, // 0x63 'c' - { 5676, 23, 35, 26, 1, -33 }, // 0x64 'd' - { 5777, 22, 27, 25, 1, -25 }, // 0x65 'e' - { 5852, 10, 34, 13, 1, -33 }, // 0x66 'f' - { 5895, 22, 36, 26, 1, -25 }, // 0x67 'g' - { 5994, 19, 34, 25, 3, -33 }, // 0x68 'h' - { 6075, 4, 34, 10, 3, -33 }, // 0x69 'i' - { 6092, 8, 44, 11, 0, -33 }, // 0x6A 'j' - { 6136, 21, 34, 24, 3, -33 }, // 0x6B 'k' - { 6226, 4, 34, 10, 3, -33 }, // 0x6C 'l' - { 6243, 32, 26, 38, 3, -25 }, // 0x6D 'm' - { 6347, 20, 26, 25, 3, -25 }, // 0x6E 'n' - { 6412, 23, 27, 25, 1, -25 }, // 0x6F 'o' - { 6490, 22, 35, 26, 3, -25 }, // 0x70 'p' - { 6587, 23, 35, 26, 1, -25 }, // 0x71 'q' - { 6688, 12, 26, 16, 3, -25 }, // 0x72 'r' - { 6727, 20, 27, 23, 1, -25 }, // 0x73 's' - { 6795, 10, 32, 13, 1, -30 }, // 0x74 't' - { 6835, 20, 26, 25, 3, -24 }, // 0x75 'u' - { 6900, 23, 25, 23, 0, -24 }, // 0x76 'v' - { 6972, 34, 25, 34, 0, -24 }, // 0x77 'w' - { 7079, 22, 25, 22, 0, -24 }, // 0x78 'x' - { 7148, 22, 35, 22, 0, -24 }, // 0x79 'y' - { 7245, 20, 25, 23, 1, -24 }, // 0x7A 'z' - { 7308, 11, 44, 16, 2, -33 }, // 0x7B '{' - { 7369, 3, 44, 12, 4, -33 }, // 0x7C '|' - { 7386, 11, 44, 16, 2, -33 }, // 0x7D '}' - { 7447, 19, 7, 24, 2, -19 } }; // 0x7E '~' - -const GFXfont FreeSans24pt7b PROGMEM = { - (uint8_t *)FreeSans24pt7bBitmaps, - (GFXglyph *)FreeSans24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h deleted file mode 100644 index 1f006a189..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h +++ /dev/null @@ -1,201 +0,0 @@ -const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, - 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, - 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, - 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, - 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, - 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, - 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, - 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, - 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, - 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, - 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, - 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, - 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, - 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, - 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, - 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, - 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, - 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, - 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, - 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, - 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, - 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, - 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, - 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, - 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, - 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, - 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, - 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, - 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, - 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, - 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, - 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, - 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, - 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, - 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, - 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, - 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, - 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, - 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, - 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, - 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, - 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, - 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, - 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, - 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, - 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, - 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, - 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, - 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, - 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, - 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, - 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, - 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, - 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, - 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, - 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, - 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, - 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, - 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, - 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, - 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, - 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, - 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, - 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, - 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, - 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, - 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, - 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, - 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, - 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, - 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, - 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, - 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, - 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, - 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, - 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, - 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, - 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, - 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, - 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, - 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, - 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, - 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, - 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 }; - -const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 2, 13, 6, 2, -12 }, // 0x21 '!' - { 4, 5, 4, 6, 1, -12 }, // 0x22 '"' - { 7, 10, 12, 10, 0, -11 }, // 0x23 '#' - { 22, 9, 16, 10, 1, -13 }, // 0x24 '$' - { 40, 16, 13, 16, 1, -12 }, // 0x25 '%' - { 66, 11, 13, 12, 1, -12 }, // 0x26 '&' - { 84, 2, 4, 4, 1, -12 }, // 0x27 ''' - { 85, 4, 17, 6, 1, -12 }, // 0x28 '(' - { 94, 4, 17, 6, 1, -12 }, // 0x29 ')' - { 103, 5, 5, 7, 1, -12 }, // 0x2A '*' - { 107, 6, 8, 11, 3, -7 }, // 0x2B '+' - { 113, 2, 4, 5, 2, 0 }, // 0x2C ',' - { 114, 4, 1, 6, 1, -4 }, // 0x2D '-' - { 115, 2, 1, 5, 1, 0 }, // 0x2E '.' - { 116, 5, 13, 5, 0, -12 }, // 0x2F '/' - { 125, 8, 13, 10, 1, -12 }, // 0x30 '0' - { 138, 4, 13, 10, 3, -12 }, // 0x31 '1' - { 145, 9, 13, 10, 1, -12 }, // 0x32 '2' - { 160, 8, 13, 10, 1, -12 }, // 0x33 '3' - { 173, 7, 13, 10, 2, -12 }, // 0x34 '4' - { 185, 9, 13, 10, 1, -12 }, // 0x35 '5' - { 200, 9, 13, 10, 1, -12 }, // 0x36 '6' - { 215, 8, 13, 10, 0, -12 }, // 0x37 '7' - { 228, 9, 13, 10, 1, -12 }, // 0x38 '8' - { 243, 8, 13, 10, 1, -12 }, // 0x39 '9' - { 256, 2, 10, 5, 1, -9 }, // 0x3A ':' - { 259, 3, 12, 5, 1, -8 }, // 0x3B ';' - { 264, 9, 9, 11, 1, -8 }, // 0x3C '<' - { 275, 9, 4, 11, 1, -5 }, // 0x3D '=' - { 280, 9, 9, 11, 1, -8 }, // 0x3E '>' - { 291, 9, 13, 10, 1, -12 }, // 0x3F '?' - { 306, 17, 16, 18, 1, -12 }, // 0x40 '@' - { 340, 12, 13, 12, 0, -12 }, // 0x41 'A' - { 360, 11, 13, 12, 1, -12 }, // 0x42 'B' - { 378, 11, 13, 13, 1, -12 }, // 0x43 'C' - { 396, 11, 13, 13, 1, -12 }, // 0x44 'D' - { 414, 9, 13, 11, 1, -12 }, // 0x45 'E' - { 429, 8, 13, 11, 1, -12 }, // 0x46 'F' - { 442, 12, 13, 14, 1, -12 }, // 0x47 'G' - { 462, 11, 13, 13, 1, -12 }, // 0x48 'H' - { 480, 2, 13, 5, 2, -12 }, // 0x49 'I' - { 484, 7, 13, 10, 1, -12 }, // 0x4A 'J' - { 496, 11, 13, 12, 1, -12 }, // 0x4B 'K' - { 514, 8, 13, 10, 1, -12 }, // 0x4C 'L' - { 527, 13, 13, 15, 1, -12 }, // 0x4D 'M' - { 549, 11, 13, 13, 1, -12 }, // 0x4E 'N' - { 567, 13, 13, 14, 1, -12 }, // 0x4F 'O' - { 589, 10, 13, 12, 1, -12 }, // 0x50 'P' - { 606, 13, 14, 14, 1, -12 }, // 0x51 'Q' - { 629, 12, 13, 13, 1, -12 }, // 0x52 'R' - { 649, 10, 13, 12, 1, -12 }, // 0x53 'S' - { 666, 9, 13, 11, 1, -12 }, // 0x54 'T' - { 681, 11, 13, 13, 1, -12 }, // 0x55 'U' - { 699, 11, 13, 12, 0, -12 }, // 0x56 'V' - { 717, 17, 13, 17, 0, -12 }, // 0x57 'W' - { 745, 12, 13, 12, 0, -12 }, // 0x58 'X' - { 765, 12, 13, 12, 0, -12 }, // 0x59 'Y' - { 785, 10, 13, 11, 1, -12 }, // 0x5A 'Z' - { 802, 3, 17, 5, 1, -12 }, // 0x5B '[' - { 809, 5, 13, 5, 0, -12 }, // 0x5C '\' - { 818, 3, 17, 5, 0, -12 }, // 0x5D ']' - { 825, 7, 7, 8, 1, -12 }, // 0x5E '^' - { 832, 10, 1, 10, 0, 3 }, // 0x5F '_' - { 834, 4, 3, 5, 0, -12 }, // 0x60 '`' - { 836, 9, 10, 10, 1, -9 }, // 0x61 'a' - { 848, 9, 13, 10, 1, -12 }, // 0x62 'b' - { 863, 8, 10, 9, 1, -9 }, // 0x63 'c' - { 873, 8, 13, 10, 1, -12 }, // 0x64 'd' - { 886, 8, 10, 10, 1, -9 }, // 0x65 'e' - { 896, 4, 13, 5, 1, -12 }, // 0x66 'f' - { 903, 8, 14, 10, 1, -9 }, // 0x67 'g' - { 917, 8, 13, 10, 1, -12 }, // 0x68 'h' - { 930, 2, 13, 4, 1, -12 }, // 0x69 'i' - { 934, 4, 17, 4, 0, -12 }, // 0x6A 'j' - { 943, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 958, 2, 13, 4, 1, -12 }, // 0x6C 'l' - { 962, 13, 10, 15, 1, -9 }, // 0x6D 'm' - { 979, 8, 10, 10, 1, -9 }, // 0x6E 'n' - { 989, 8, 10, 10, 1, -9 }, // 0x6F 'o' - { 999, 9, 13, 10, 1, -9 }, // 0x70 'p' - { 1014, 8, 13, 10, 1, -9 }, // 0x71 'q' - { 1027, 5, 10, 6, 1, -9 }, // 0x72 'r' - { 1034, 8, 10, 9, 1, -9 }, // 0x73 's' - { 1044, 4, 12, 5, 1, -11 }, // 0x74 't' - { 1050, 8, 10, 10, 1, -9 }, // 0x75 'u' - { 1060, 9, 10, 9, 0, -9 }, // 0x76 'v' - { 1072, 13, 10, 13, 0, -9 }, // 0x77 'w' - { 1089, 8, 10, 9, 0, -9 }, // 0x78 'x' - { 1099, 9, 14, 9, 0, -9 }, // 0x79 'y' - { 1115, 7, 10, 9, 1, -9 }, // 0x7A 'z' - { 1124, 4, 17, 6, 1, -12 }, // 0x7B '{' - { 1133, 2, 17, 4, 2, -12 }, // 0x7C '|' - { 1138, 4, 17, 6, 1, -12 }, // 0x7D '}' - { 1147, 7, 3, 9, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSans9pt7b PROGMEM = { - (uint8_t *)FreeSans9pt7bBitmaps, - (GFXglyph *)FreeSans9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1822 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h deleted file mode 100644 index e0922be27..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h +++ /dev/null @@ -1,288 +0,0 @@ -const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, - 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, - 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, - 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, - 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, - 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, - 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, - 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, - 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, - 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, - 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, - 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, - 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, - 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, - 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, - 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, - 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, - 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, - 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, - 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, - 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, - 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, - 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, - 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, - 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, - 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, - 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, - 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, - 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, - 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, - 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, - 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, - 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, - 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, - 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, - 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, - 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, - 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, - 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, - 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, - 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, - 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, - 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, - 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, - 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, - 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, - 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, - 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, - 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, - 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, - 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, - 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, - 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, - 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, - 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, - 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, - 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, - 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, - 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, - 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, - 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, - 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, - 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, - 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, - 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, - 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, - 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, - 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, - 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, - 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, - 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, - 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, - 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, - 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, - 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, - 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, - 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, - 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, - 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, - 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, - 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, - 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, - 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, - 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, - 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, - 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, - 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, - 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, - 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, - 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, - 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, - 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, - 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, - 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, - 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, - 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, - 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, - 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, - 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, - 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, - 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, - 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, - 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, - 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, - 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, - 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, - 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, - 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, - 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, - 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, - 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, - 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, - 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, - 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, - 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, - 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, - 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, - 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, - 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, - 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, - 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, - 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, - 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, - 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, - 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, - 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, - 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, - 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, - 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, - 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, - 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, - 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, - 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, - 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, - 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, - 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, - 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, - 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, - 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, - 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, - 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, - 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, - 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, - 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, - 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, - 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, - 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, - 0x01, 0xE0 }; - -const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 4, 17, 8, 3, -16 }, // 0x21 '!' - { 9, 10, 6, 11, 1, -17 }, // 0x22 '"' - { 17, 13, 16, 13, 0, -15 }, // 0x23 '#' - { 43, 13, 20, 13, 0, -17 }, // 0x24 '$' - { 76, 19, 17, 21, 1, -16 }, // 0x25 '%' - { 117, 16, 17, 17, 1, -16 }, // 0x26 '&' - { 151, 4, 6, 6, 1, -17 }, // 0x27 ''' - { 154, 6, 22, 8, 1, -17 }, // 0x28 '(' - { 171, 6, 22, 8, 1, -17 }, // 0x29 ')' - { 188, 7, 8, 9, 1, -17 }, // 0x2A '*' - { 195, 11, 11, 14, 2, -10 }, // 0x2B '+' - { 211, 4, 7, 6, 1, -2 }, // 0x2C ',' - { 215, 6, 3, 8, 1, -7 }, // 0x2D '-' - { 218, 4, 3, 6, 1, -2 }, // 0x2E '.' - { 220, 6, 17, 7, 0, -16 }, // 0x2F '/' - { 233, 12, 17, 13, 1, -16 }, // 0x30 '0' - { 259, 7, 17, 14, 3, -16 }, // 0x31 '1' - { 274, 12, 17, 13, 1, -16 }, // 0x32 '2' - { 300, 12, 17, 13, 1, -16 }, // 0x33 '3' - { 326, 11, 17, 13, 1, -16 }, // 0x34 '4' - { 350, 12, 17, 13, 1, -16 }, // 0x35 '5' - { 376, 12, 17, 13, 1, -16 }, // 0x36 '6' - { 402, 11, 17, 13, 1, -16 }, // 0x37 '7' - { 426, 12, 17, 13, 1, -16 }, // 0x38 '8' - { 452, 12, 17, 13, 1, -16 }, // 0x39 '9' - { 478, 4, 12, 6, 1, -11 }, // 0x3A ':' - { 484, 4, 16, 6, 1, -11 }, // 0x3B ';' - { 492, 12, 12, 14, 1, -11 }, // 0x3C '<' - { 510, 12, 9, 14, 1, -9 }, // 0x3D '=' - { 524, 12, 12, 14, 1, -11 }, // 0x3E '>' - { 542, 12, 18, 15, 2, -17 }, // 0x3F '?' - { 569, 21, 21, 23, 1, -17 }, // 0x40 '@' - { 625, 16, 18, 17, 0, -17 }, // 0x41 'A' - { 661, 14, 18, 17, 2, -17 }, // 0x42 'B' - { 693, 16, 18, 17, 1, -17 }, // 0x43 'C' - { 729, 15, 18, 17, 2, -17 }, // 0x44 'D' - { 763, 13, 18, 16, 2, -17 }, // 0x45 'E' - { 793, 12, 18, 15, 2, -17 }, // 0x46 'F' - { 820, 16, 18, 18, 1, -17 }, // 0x47 'G' - { 856, 14, 18, 18, 2, -17 }, // 0x48 'H' - { 888, 4, 18, 7, 2, -17 }, // 0x49 'I' - { 897, 11, 18, 14, 1, -17 }, // 0x4A 'J' - { 922, 16, 18, 17, 2, -17 }, // 0x4B 'K' - { 958, 11, 18, 15, 2, -17 }, // 0x4C 'L' - { 983, 17, 18, 21, 2, -17 }, // 0x4D 'M' - { 1022, 15, 18, 18, 2, -17 }, // 0x4E 'N' - { 1056, 17, 18, 19, 1, -17 }, // 0x4F 'O' - { 1095, 14, 18, 16, 2, -17 }, // 0x50 'P' - { 1127, 17, 19, 19, 1, -17 }, // 0x51 'Q' - { 1168, 16, 18, 17, 2, -17 }, // 0x52 'R' - { 1204, 15, 18, 16, 1, -17 }, // 0x53 'S' - { 1238, 12, 18, 15, 2, -17 }, // 0x54 'T' - { 1265, 14, 18, 18, 2, -17 }, // 0x55 'U' - { 1297, 15, 18, 16, 0, -17 }, // 0x56 'V' - { 1331, 23, 18, 23, 0, -17 }, // 0x57 'W' - { 1383, 15, 18, 16, 1, -17 }, // 0x58 'X' - { 1417, 16, 18, 15, 0, -17 }, // 0x59 'Y' - { 1453, 13, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1483, 6, 23, 8, 2, -17 }, // 0x5B '[' - { 1501, 7, 17, 7, 0, -16 }, // 0x5C '\' - { 1516, 6, 23, 8, 0, -17 }, // 0x5D ']' - { 1534, 12, 11, 14, 1, -16 }, // 0x5E '^' - { 1551, 15, 2, 13, -1, 4 }, // 0x5F '_' - { 1555, 4, 3, 6, 0, -17 }, // 0x60 '`' - { 1557, 13, 13, 14, 1, -12 }, // 0x61 'a' - { 1579, 13, 18, 15, 2, -17 }, // 0x62 'b' - { 1609, 12, 13, 13, 1, -12 }, // 0x63 'c' - { 1629, 13, 18, 15, 1, -17 }, // 0x64 'd' - { 1659, 13, 13, 14, 1, -12 }, // 0x65 'e' - { 1681, 7, 18, 8, 1, -17 }, // 0x66 'f' - { 1697, 13, 18, 15, 1, -12 }, // 0x67 'g' - { 1727, 12, 18, 14, 2, -17 }, // 0x68 'h' - { 1754, 4, 18, 7, 2, -17 }, // 0x69 'i' - { 1763, 6, 23, 7, 0, -17 }, // 0x6A 'j' - { 1781, 12, 18, 14, 2, -17 }, // 0x6B 'k' - { 1808, 4, 18, 6, 2, -17 }, // 0x6C 'l' - { 1817, 19, 13, 21, 2, -12 }, // 0x6D 'm' - { 1848, 12, 13, 15, 2, -12 }, // 0x6E 'n' - { 1868, 13, 13, 15, 1, -12 }, // 0x6F 'o' - { 1890, 13, 18, 15, 2, -12 }, // 0x70 'p' - { 1920, 13, 18, 15, 1, -12 }, // 0x71 'q' - { 1950, 8, 13, 9, 2, -12 }, // 0x72 'r' - { 1963, 12, 13, 13, 1, -12 }, // 0x73 's' - { 1983, 6, 15, 8, 1, -14 }, // 0x74 't' - { 1995, 12, 13, 15, 2, -12 }, // 0x75 'u' - { 2015, 13, 13, 13, 0, -12 }, // 0x76 'v' - { 2037, 18, 13, 19, 0, -12 }, // 0x77 'w' - { 2067, 13, 13, 13, 0, -12 }, // 0x78 'x' - { 2089, 13, 18, 13, 0, -12 }, // 0x79 'y' - { 2119, 10, 13, 12, 1, -12 }, // 0x7A 'z' - { 2136, 6, 23, 9, 1, -17 }, // 0x7B '{' - { 2154, 2, 22, 7, 2, -17 }, // 0x7C '|' - { 2160, 6, 23, 9, 3, -17 }, // 0x7D '}' - { 2178, 12, 5, 12, 0, -7 } }; // 0x7E '~' - -const GFXfont FreeSansBold12pt7b PROGMEM = { - (uint8_t *)FreeSansBold12pt7bBitmaps, - (GFXglyph *)FreeSansBold12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2858 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h deleted file mode 100644 index d5927cde4..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h +++ /dev/null @@ -1,481 +0,0 @@ -const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, - 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, - 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, - 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, - 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, - 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, - 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, - 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, - 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, - 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, - 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, - 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, - 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, - 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, - 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, - 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, - 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, - 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, - 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, - 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, - 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, - 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, - 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, - 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, - 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, - 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, - 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, - 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, - 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, - 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, - 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, - 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, - 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, - 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, - 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, - 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, - 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, - 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, - 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, - 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, - 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, - 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, - 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, - 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, - 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, - 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, - 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, - 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, - 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, - 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, - 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, - 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, - 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, - 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, - 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, - 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, - 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, - 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, - 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, - 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, - 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, - 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, - 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, - 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, - 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, - 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, - 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, - 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, - 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, - 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, - 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, - 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, - 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, - 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, - 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, - 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, - 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, - 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, - 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, - 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, - 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, - 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, - 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, - 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, - 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, - 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, - 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, - 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, - 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, - 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, - 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, - 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, - 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, - 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, - 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, - 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, - 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, - 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, - 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, - 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, - 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, - 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, - 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, - 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, - 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, - 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, - 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, - 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, - 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, - 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, - 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, - 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, - 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, - 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, - 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, - 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, - 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, - 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, - 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, - 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, - 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, - 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, - 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, - 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, - 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, - 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, - 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, - 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, - 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, - 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, - 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, - 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, - 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, - 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, - 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, - 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, - 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, - 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, - 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, - 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, - 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, - 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, - 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, - 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, - 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, - 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, - 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, - 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, - 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, - 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, - 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, - 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, - 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, - 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, - 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, - 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, - 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, - 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, - 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, - 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, - 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, - 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, - 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, - 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, - 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, - 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, - 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, - 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, - 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, - 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, - 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, - 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, - 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, - 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, - 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, - 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, - 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, - 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, - 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, - 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, - 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, - 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, - 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, - 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, - 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, - 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, - 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, - 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, - 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, - 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, - 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, - 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, - 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, - 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, - 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, - 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, - 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, - 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, - 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, - 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, - 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, - 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, - 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, - 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, - 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, - 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, - 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, - 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, - 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, - 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, - 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, - 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, - 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, - 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, - 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, - 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, - 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, - 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, - 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, - 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, - 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, - 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, - 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, - 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, - 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, - 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, - 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, - 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, - 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, - 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, - 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, - 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, - 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, - 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, - 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, - 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, - 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, - 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, - 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, - 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, - 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, - 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, - 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, - 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, - 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, - 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, - 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, - 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, - 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, - 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, - 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, - 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, - 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, - 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, - 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, - 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, - 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, - 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, - 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, - 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, - 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, - 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, - 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, - 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, - 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, - 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, - 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, - 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, - 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, - 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, - 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, - 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, - 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, - 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, - 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, - 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, - 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, - 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, - 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, - 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, - 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, - 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, - 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, - 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, - 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, - 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, - 0xC0, 0x0F, 0x00 }; - -const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 5, 25, 12, 4, -24 }, // 0x21 '!' - { 16, 13, 9, 17, 2, -25 }, // 0x22 '"' - { 31, 20, 24, 19, 0, -23 }, // 0x23 '#' - { 91, 19, 29, 19, 0, -25 }, // 0x24 '$' - { 160, 29, 25, 31, 1, -24 }, // 0x25 '%' - { 251, 22, 25, 25, 2, -24 }, // 0x26 '&' - { 320, 5, 9, 9, 2, -25 }, // 0x27 ''' - { 326, 9, 33, 12, 1, -25 }, // 0x28 '(' - { 364, 9, 33, 12, 1, -25 }, // 0x29 ')' - { 402, 12, 11, 14, 0, -25 }, // 0x2A '*' - { 419, 16, 16, 20, 2, -15 }, // 0x2B '+' - { 451, 5, 11, 9, 2, -4 }, // 0x2C ',' - { 458, 9, 4, 12, 1, -10 }, // 0x2D '-' - { 463, 5, 5, 9, 2, -4 }, // 0x2E '.' - { 467, 9, 25, 10, 0, -24 }, // 0x2F '/' - { 496, 17, 25, 19, 1, -24 }, // 0x30 '0' - { 550, 10, 25, 19, 3, -24 }, // 0x31 '1' - { 582, 17, 25, 19, 1, -24 }, // 0x32 '2' - { 636, 17, 25, 19, 1, -24 }, // 0x33 '3' - { 690, 16, 25, 19, 2, -24 }, // 0x34 '4' - { 740, 17, 25, 19, 1, -24 }, // 0x35 '5' - { 794, 18, 25, 19, 1, -24 }, // 0x36 '6' - { 851, 17, 25, 19, 1, -24 }, // 0x37 '7' - { 905, 17, 25, 19, 1, -24 }, // 0x38 '8' - { 959, 17, 25, 19, 1, -24 }, // 0x39 '9' - { 1013, 5, 18, 9, 2, -17 }, // 0x3A ':' - { 1025, 5, 24, 9, 2, -17 }, // 0x3B ';' - { 1040, 18, 17, 20, 1, -16 }, // 0x3C '<' - { 1079, 17, 12, 20, 2, -13 }, // 0x3D '=' - { 1105, 18, 17, 20, 1, -16 }, // 0x3E '>' - { 1144, 18, 26, 21, 2, -25 }, // 0x3F '?' - { 1203, 32, 31, 34, 1, -25 }, // 0x40 '@' - { 1327, 24, 26, 24, 0, -25 }, // 0x41 'A' - { 1405, 20, 26, 25, 3, -25 }, // 0x42 'B' - { 1470, 23, 26, 25, 1, -25 }, // 0x43 'C' - { 1545, 21, 26, 25, 3, -25 }, // 0x44 'D' - { 1614, 19, 26, 23, 3, -25 }, // 0x45 'E' - { 1676, 17, 26, 22, 3, -25 }, // 0x46 'F' - { 1732, 24, 26, 27, 1, -25 }, // 0x47 'G' - { 1810, 20, 26, 26, 3, -25 }, // 0x48 'H' - { 1875, 5, 26, 11, 3, -25 }, // 0x49 'I' - { 1892, 16, 26, 20, 1, -25 }, // 0x4A 'J' - { 1944, 22, 26, 25, 3, -25 }, // 0x4B 'K' - { 2016, 17, 26, 22, 3, -25 }, // 0x4C 'L' - { 2072, 24, 26, 30, 3, -25 }, // 0x4D 'M' - { 2150, 20, 26, 26, 3, -25 }, // 0x4E 'N' - { 2215, 25, 26, 27, 1, -25 }, // 0x4F 'O' - { 2297, 19, 26, 24, 3, -25 }, // 0x50 'P' - { 2359, 25, 27, 27, 1, -25 }, // 0x51 'Q' - { 2444, 21, 26, 25, 3, -25 }, // 0x52 'R' - { 2513, 20, 26, 24, 2, -25 }, // 0x53 'S' - { 2578, 19, 26, 23, 2, -25 }, // 0x54 'T' - { 2640, 20, 26, 26, 3, -25 }, // 0x55 'U' - { 2705, 22, 26, 23, 1, -25 }, // 0x56 'V' - { 2777, 32, 26, 34, 1, -25 }, // 0x57 'W' - { 2881, 22, 26, 24, 1, -25 }, // 0x58 'X' - { 2953, 21, 26, 22, 1, -25 }, // 0x59 'Y' - { 3022, 19, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3084, 8, 33, 12, 2, -25 }, // 0x5B '[' - { 3117, 10, 25, 10, 0, -24 }, // 0x5C '\' - { 3149, 8, 33, 12, 1, -25 }, // 0x5D ']' - { 3182, 16, 15, 20, 2, -23 }, // 0x5E '^' - { 3212, 21, 3, 19, -1, 5 }, // 0x5F '_' - { 3220, 7, 5, 9, 1, -25 }, // 0x60 '`' - { 3225, 18, 19, 20, 1, -18 }, // 0x61 'a' - { 3268, 18, 26, 22, 2, -25 }, // 0x62 'b' - { 3327, 17, 19, 20, 1, -18 }, // 0x63 'c' - { 3368, 19, 26, 22, 1, -25 }, // 0x64 'd' - { 3430, 18, 19, 20, 1, -18 }, // 0x65 'e' - { 3473, 10, 26, 12, 1, -25 }, // 0x66 'f' - { 3506, 18, 26, 21, 1, -18 }, // 0x67 'g' - { 3565, 17, 26, 21, 2, -25 }, // 0x68 'h' - { 3621, 5, 26, 10, 2, -25 }, // 0x69 'i' - { 3638, 7, 33, 10, 0, -25 }, // 0x6A 'j' - { 3667, 17, 26, 20, 2, -25 }, // 0x6B 'k' - { 3723, 5, 26, 9, 2, -25 }, // 0x6C 'l' - { 3740, 27, 19, 31, 2, -18 }, // 0x6D 'm' - { 3805, 17, 19, 21, 2, -18 }, // 0x6E 'n' - { 3846, 19, 19, 21, 1, -18 }, // 0x6F 'o' - { 3892, 18, 26, 22, 2, -18 }, // 0x70 'p' - { 3951, 19, 26, 22, 1, -18 }, // 0x71 'q' - { 4013, 11, 19, 14, 2, -18 }, // 0x72 'r' - { 4040, 17, 19, 19, 1, -18 }, // 0x73 's' - { 4081, 9, 23, 12, 1, -22 }, // 0x74 't' - { 4107, 17, 19, 21, 2, -18 }, // 0x75 'u' - { 4148, 19, 19, 19, 0, -18 }, // 0x76 'v' - { 4194, 27, 19, 27, 0, -18 }, // 0x77 'w' - { 4259, 18, 19, 19, 1, -18 }, // 0x78 'x' - { 4302, 19, 26, 19, 0, -18 }, // 0x79 'y' - { 4364, 16, 19, 18, 1, -18 }, // 0x7A 'z' - { 4402, 9, 33, 14, 1, -25 }, // 0x7B '{' - { 4440, 3, 33, 10, 4, -25 }, // 0x7C '|' - { 4453, 9, 33, 14, 3, -25 }, // 0x7D '}' - { 4491, 15, 6, 18, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSansBold18pt7b PROGMEM = { - (uint8_t *)FreeSansBold18pt7bBitmaps, - (GFXglyph *)FreeSansBold18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5175 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h deleted file mode 100644 index aadc9a1dc..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h +++ /dev/null @@ -1,784 +0,0 @@ -const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, - 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, - 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, - 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, - 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, - 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, - 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, - 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, - 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, - 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, - 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, - 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, - 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, - 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, - 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, - 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, - 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, - 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, - 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, - 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, - 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, - 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, - 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, - 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, - 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, - 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, - 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, - 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, - 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, - 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, - 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, - 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, - 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, - 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, - 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, - 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, - 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, - 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, - 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, - 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, - 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, - 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, - 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, - 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, - 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, - 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, - 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, - 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, - 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, - 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, - 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, - 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, - 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, - 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, - 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, - 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, - 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, - 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, - 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, - 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, - 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, - 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, - 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, - 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, - 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, - 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, - 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, - 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, - 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, - 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, - 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, - 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, - 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, - 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, - 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, - 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, - 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, - 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, - 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, - 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, - 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, - 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, - 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, - 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, - 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, - 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, - 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, - 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, - 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, - 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, - 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, - 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, - 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, - 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, - 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, - 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, - 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, - 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, - 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, - 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, - 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, - 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, - 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, - 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, - 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, - 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, - 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, - 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, - 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, - 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, - 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, - 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, - 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, - 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, - 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, - 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, - 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, - 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, - 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, - 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, - 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, - 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, - 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, - 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, - 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, - 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, - 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, - 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, - 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, - 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, - 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, - 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, - 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, - 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, - 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, - 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, - 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, - 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, - 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, - 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, - 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, - 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, - 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, - 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, - 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, - 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, - 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, - 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, - 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, - 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, - 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, - 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, - 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, - 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, - 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, - 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, - 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, - 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, - 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, - 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, - 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, - 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, - 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, - 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, - 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, - 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, - 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, - 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, - 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, - 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, - 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, - 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, - 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, - 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, - 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, - 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, - 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, - 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, - 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, - 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, - 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, - 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, - 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, - 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, - 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, - 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, - 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, - 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, - 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, - 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, - 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, - 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, - 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, - 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, - 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, - 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, - 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, - 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, - 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, - 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, - 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, - 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, - 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, - 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, - 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, - 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, - 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, - 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, - 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, - 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, - 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, - 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, - 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, - 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, - 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, - 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, - 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, - 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, - 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, - 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, - 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, - 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, - 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, - 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, - 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, - 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, - 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, - 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, - 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, - 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, - 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, - 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, - 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, - 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, - 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, - 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, - 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, - 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, - 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, - 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, - 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, - 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, - 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, - 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, - 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, - 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, - 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, - 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, - 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, - 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, - 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, - 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, - 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, - 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, - 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, - 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, - 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, - 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, - 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, - 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, - 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, - 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, - 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, - 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, - 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, - 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, - 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, - 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, - 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, - 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, - 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, - 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, - 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, - 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, - 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, - 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, - 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, - 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, - 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, - 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, - 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, - 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, - 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, - 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, - 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, - 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, - 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, - 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, - 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, - 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, - 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, - 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, - 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, - 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, - 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, - 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, - 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, - 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, - 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, - 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, - 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, - 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, - 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, - 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, - 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, - 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, - 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, - 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, - 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, - 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, - 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, - 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, - 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, - 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, - 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, - 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, - 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, - 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, - 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, - 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, - 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, - 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, - 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, - 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, - 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, - 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, - 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, - 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, - 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, - 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, - 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, - 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, - 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, - 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, - 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, - 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, - 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, - 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, - 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, - 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, - 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, - 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, - 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, - 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, - 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, - 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, - 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, - 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, - 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, - 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, - 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, - 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, - 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, - 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, - 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, - 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, - 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, - 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, - 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, - 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, - 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, - 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, - 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, - 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, - 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, - 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, - 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, - 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, - 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, - 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, - 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, - 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, - 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, - 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, - 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, - 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, - 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, - 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, - 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, - 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, - 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, - 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, - 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, - 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, - 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, - 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, - 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, - 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, - 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, - 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, - 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, - 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, - 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, - 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, - 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, - 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, - 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, - 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, - 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, - 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, - 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, - 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, - 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, - 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, - 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, - 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, - 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, - 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, - 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, - 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, - 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, - 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, - 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, - 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, - 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, - 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, - 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, - 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, - 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, - 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, - 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, - 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, - 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, - 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, - 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, - 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, - 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, - 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, - 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, - 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, - 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, - 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, - 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, - 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, - 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, - 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, - 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, - 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, - 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, - 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, - 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, - 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, - 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, - 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, - 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, - 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, - 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, - 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8 }; - -const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 7, 34, 16, 5, -33 }, // 0x21 '!' - { 30, 18, 12, 22, 2, -33 }, // 0x22 '"' - { 57, 26, 33, 26, 0, -31 }, // 0x23 '#' - { 165, 25, 40, 26, 1, -34 }, // 0x24 '$' - { 290, 39, 34, 42, 1, -32 }, // 0x25 '%' - { 456, 30, 35, 34, 3, -33 }, // 0x26 '&' - { 588, 7, 12, 12, 3, -33 }, // 0x27 ''' - { 599, 13, 44, 16, 2, -33 }, // 0x28 '(' - { 671, 13, 44, 16, 1, -33 }, // 0x29 ')' - { 743, 15, 15, 18, 1, -33 }, // 0x2A '*' - { 772, 23, 22, 27, 2, -21 }, // 0x2B '+' - { 836, 7, 15, 12, 2, -6 }, // 0x2C ',' - { 850, 13, 6, 16, 1, -15 }, // 0x2D '-' - { 860, 7, 7, 12, 2, -6 }, // 0x2E '.' - { 867, 13, 34, 13, 0, -32 }, // 0x2F '/' - { 923, 24, 35, 26, 1, -33 }, // 0x30 '0' - { 1028, 14, 33, 26, 4, -32 }, // 0x31 '1' - { 1086, 23, 34, 26, 2, -33 }, // 0x32 '2' - { 1184, 23, 35, 26, 2, -33 }, // 0x33 '3' - { 1285, 22, 33, 26, 2, -32 }, // 0x34 '4' - { 1376, 23, 34, 26, 2, -32 }, // 0x35 '5' - { 1474, 23, 35, 26, 2, -33 }, // 0x36 '6' - { 1575, 23, 33, 26, 1, -32 }, // 0x37 '7' - { 1670, 24, 35, 26, 1, -33 }, // 0x38 '8' - { 1775, 24, 35, 26, 1, -33 }, // 0x39 '9' - { 1880, 7, 25, 12, 2, -24 }, // 0x3A ':' - { 1902, 7, 33, 12, 2, -24 }, // 0x3B ';' - { 1931, 23, 23, 27, 2, -22 }, // 0x3C '<' - { 1998, 23, 18, 27, 2, -19 }, // 0x3D '=' - { 2050, 23, 23, 27, 2, -22 }, // 0x3E '>' - { 2117, 24, 35, 29, 3, -34 }, // 0x3F '?' - { 2222, 43, 41, 46, 1, -34 }, // 0x40 '@' - { 2443, 32, 34, 33, 0, -33 }, // 0x41 'A' - { 2579, 27, 34, 33, 4, -33 }, // 0x42 'B' - { 2694, 30, 36, 34, 2, -34 }, // 0x43 'C' - { 2829, 28, 34, 34, 4, -33 }, // 0x44 'D' - { 2948, 25, 34, 31, 4, -33 }, // 0x45 'E' - { 3055, 24, 34, 30, 4, -33 }, // 0x46 'F' - { 3157, 31, 36, 36, 2, -34 }, // 0x47 'G' - { 3297, 27, 34, 35, 4, -33 }, // 0x48 'H' - { 3412, 7, 34, 15, 4, -33 }, // 0x49 'I' - { 3442, 22, 35, 27, 1, -33 }, // 0x4A 'J' - { 3539, 30, 34, 34, 4, -33 }, // 0x4B 'K' - { 3667, 23, 34, 29, 4, -33 }, // 0x4C 'L' - { 3765, 33, 34, 41, 4, -33 }, // 0x4D 'M' - { 3906, 28, 34, 35, 4, -33 }, // 0x4E 'N' - { 4025, 33, 36, 37, 2, -34 }, // 0x4F 'O' - { 4174, 26, 34, 32, 4, -33 }, // 0x50 'P' - { 4285, 33, 37, 37, 2, -34 }, // 0x51 'Q' - { 4438, 28, 34, 34, 4, -33 }, // 0x52 'R' - { 4557, 28, 36, 32, 2, -34 }, // 0x53 'S' - { 4683, 27, 34, 30, 2, -33 }, // 0x54 'T' - { 4798, 27, 35, 35, 4, -33 }, // 0x55 'U' - { 4917, 29, 34, 31, 1, -33 }, // 0x56 'V' - { 5041, 43, 34, 45, 1, -33 }, // 0x57 'W' - { 5224, 30, 34, 32, 1, -33 }, // 0x58 'X' - { 5352, 29, 34, 30, 1, -33 }, // 0x59 'Y' - { 5476, 26, 34, 29, 1, -33 }, // 0x5A 'Z' - { 5587, 11, 43, 16, 3, -33 }, // 0x5B '[' - { 5647, 14, 34, 13, -1, -32 }, // 0x5C '\' - { 5707, 11, 43, 16, 1, -33 }, // 0x5D ']' - { 5767, 22, 20, 27, 3, -32 }, // 0x5E '^' - { 5822, 28, 4, 26, -1, 6 }, // 0x5F '_' - { 5836, 9, 7, 12, 1, -35 }, // 0x60 '`' - { 5844, 24, 26, 27, 2, -24 }, // 0x61 'a' - { 5922, 25, 35, 29, 3, -33 }, // 0x62 'b' - { 6032, 23, 26, 26, 2, -24 }, // 0x63 'c' - { 6107, 25, 35, 29, 2, -33 }, // 0x64 'd' - { 6217, 24, 26, 27, 2, -24 }, // 0x65 'e' - { 6295, 14, 34, 16, 1, -33 }, // 0x66 'f' - { 6355, 24, 36, 29, 2, -24 }, // 0x67 'g' - { 6463, 23, 34, 28, 3, -33 }, // 0x68 'h' - { 6561, 7, 34, 13, 3, -33 }, // 0x69 'i' - { 6591, 10, 45, 13, 0, -33 }, // 0x6A 'j' - { 6648, 23, 34, 27, 3, -33 }, // 0x6B 'k' - { 6746, 7, 34, 13, 3, -33 }, // 0x6C 'l' - { 6776, 36, 25, 42, 3, -24 }, // 0x6D 'm' - { 6889, 23, 25, 29, 3, -24 }, // 0x6E 'n' - { 6961, 25, 26, 29, 2, -24 }, // 0x6F 'o' - { 7043, 25, 36, 29, 3, -24 }, // 0x70 'p' - { 7156, 25, 36, 29, 2, -24 }, // 0x71 'q' - { 7269, 15, 25, 18, 3, -24 }, // 0x72 'r' - { 7316, 24, 26, 26, 1, -24 }, // 0x73 's' - { 7394, 12, 32, 16, 2, -30 }, // 0x74 't' - { 7442, 23, 26, 29, 3, -24 }, // 0x75 'u' - { 7517, 25, 25, 25, 0, -24 }, // 0x76 'v' - { 7596, 35, 25, 37, 1, -24 }, // 0x77 'w' - { 7706, 24, 25, 26, 1, -24 }, // 0x78 'x' - { 7781, 25, 36, 26, 0, -24 }, // 0x79 'y' - { 7894, 21, 25, 24, 1, -24 }, // 0x7A 'z' - { 7960, 13, 43, 18, 2, -33 }, // 0x7B '{' - { 8030, 4, 44, 13, 5, -33 }, // 0x7C '|' - { 8052, 13, 43, 18, 3, -33 }, // 0x7D '}' - { 8122, 21, 8, 23, 1, -14 } }; // 0x7E '~' - -const GFXfont FreeSansBold24pt7b PROGMEM = { - (uint8_t *)FreeSansBold24pt7bBitmaps, - (GFXglyph *)FreeSansBold24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8815 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h deleted file mode 100644 index aeea463e7..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h +++ /dev/null @@ -1,208 +0,0 @@ -const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, - 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, - 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, - 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, - 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, - 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, - 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, - 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, - 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, - 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, - 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, - 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, - 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, - 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, - 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, - 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, - 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, - 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, - 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, - 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, - 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, - 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, - 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, - 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, - 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, - 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, - 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, - 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, - 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, - 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, - 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, - 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, - 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, - 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, - 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, - 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, - 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, - 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, - 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, - 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, - 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, - 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, - 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, - 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, - 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, - 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, - 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, - 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, - 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, - 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, - 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, - 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, - 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, - 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, - 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, - 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, - 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, - 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, - 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, - 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, - 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, - 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, - 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, - 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, - 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, - 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, - 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, - 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, - 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, - 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, - 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, - 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, - 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, - 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, - 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, - 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, - 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, - 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, - 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, - 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, - 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, - 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, - 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, - 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, - 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, - 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, - 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, - 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, - 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, - 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, - 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, - 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, - 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, - 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, - 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, - 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, - 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E }; - -const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 3, 13, 6, 2, -12 }, // 0x21 '!' - { 5, 7, 5, 9, 1, -12 }, // 0x22 '"' - { 10, 10, 12, 10, 0, -11 }, // 0x23 '#' - { 25, 9, 15, 10, 1, -13 }, // 0x24 '$' - { 42, 16, 13, 16, 0, -12 }, // 0x25 '%' - { 68, 12, 13, 13, 1, -12 }, // 0x26 '&' - { 88, 3, 5, 5, 1, -12 }, // 0x27 ''' - { 90, 6, 17, 6, 1, -12 }, // 0x28 '(' - { 103, 6, 17, 6, 0, -12 }, // 0x29 ')' - { 116, 5, 6, 7, 1, -12 }, // 0x2A '*' - { 120, 7, 8, 11, 2, -7 }, // 0x2B '+' - { 127, 3, 5, 4, 1, -1 }, // 0x2C ',' - { 129, 5, 2, 6, 0, -5 }, // 0x2D '-' - { 131, 3, 2, 4, 1, -1 }, // 0x2E '.' - { 132, 5, 13, 5, 0, -12 }, // 0x2F '/' - { 141, 9, 13, 10, 1, -12 }, // 0x30 '0' - { 156, 5, 13, 10, 2, -12 }, // 0x31 '1' - { 165, 9, 13, 10, 1, -12 }, // 0x32 '2' - { 180, 8, 13, 10, 1, -12 }, // 0x33 '3' - { 193, 8, 13, 10, 2, -12 }, // 0x34 '4' - { 206, 9, 13, 10, 1, -12 }, // 0x35 '5' - { 221, 9, 13, 10, 1, -12 }, // 0x36 '6' - { 236, 9, 13, 10, 0, -12 }, // 0x37 '7' - { 251, 10, 13, 10, 0, -12 }, // 0x38 '8' - { 268, 9, 13, 10, 1, -12 }, // 0x39 '9' - { 283, 3, 9, 4, 1, -8 }, // 0x3A ':' - { 287, 3, 12, 4, 1, -8 }, // 0x3B ';' - { 292, 9, 9, 11, 1, -8 }, // 0x3C '<' - { 303, 9, 6, 11, 1, -6 }, // 0x3D '=' - { 310, 9, 9, 11, 1, -8 }, // 0x3E '>' - { 321, 9, 13, 11, 1, -12 }, // 0x3F '?' - { 336, 16, 15, 18, 0, -12 }, // 0x40 '@' - { 366, 12, 13, 13, 0, -12 }, // 0x41 'A' - { 386, 11, 13, 13, 1, -12 }, // 0x42 'B' - { 404, 12, 13, 13, 1, -12 }, // 0x43 'C' - { 424, 12, 13, 13, 1, -12 }, // 0x44 'D' - { 444, 9, 13, 12, 1, -12 }, // 0x45 'E' - { 459, 9, 13, 11, 1, -12 }, // 0x46 'F' - { 474, 11, 13, 14, 1, -12 }, // 0x47 'G' - { 492, 11, 13, 13, 1, -12 }, // 0x48 'H' - { 510, 3, 13, 6, 1, -12 }, // 0x49 'I' - { 515, 8, 13, 10, 1, -12 }, // 0x4A 'J' - { 528, 12, 13, 13, 1, -12 }, // 0x4B 'K' - { 548, 8, 13, 11, 1, -12 }, // 0x4C 'L' - { 561, 14, 13, 16, 1, -12 }, // 0x4D 'M' - { 584, 11, 13, 14, 1, -12 }, // 0x4E 'N' - { 602, 13, 13, 14, 1, -12 }, // 0x4F 'O' - { 624, 11, 13, 12, 1, -12 }, // 0x50 'P' - { 642, 13, 14, 14, 1, -12 }, // 0x51 'Q' - { 665, 12, 13, 13, 1, -12 }, // 0x52 'R' - { 685, 11, 13, 12, 1, -12 }, // 0x53 'S' - { 703, 9, 13, 12, 2, -12 }, // 0x54 'T' - { 718, 11, 13, 13, 1, -12 }, // 0x55 'U' - { 736, 12, 13, 12, 0, -12 }, // 0x56 'V' - { 756, 17, 13, 17, 0, -12 }, // 0x57 'W' - { 784, 12, 13, 12, 0, -12 }, // 0x58 'X' - { 804, 11, 13, 12, 1, -12 }, // 0x59 'Y' - { 822, 9, 13, 11, 1, -12 }, // 0x5A 'Z' - { 837, 4, 17, 6, 1, -12 }, // 0x5B '[' - { 846, 5, 13, 5, 0, -12 }, // 0x5C '\' - { 855, 4, 17, 6, 0, -12 }, // 0x5D ']' - { 864, 8, 8, 11, 1, -12 }, // 0x5E '^' - { 872, 10, 1, 10, 0, 4 }, // 0x5F '_' - { 874, 3, 2, 5, 0, -12 }, // 0x60 '`' - { 875, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 888, 10, 13, 11, 1, -12 }, // 0x62 'b' - { 905, 9, 10, 10, 1, -9 }, // 0x63 'c' - { 917, 9, 13, 11, 1, -12 }, // 0x64 'd' - { 932, 9, 10, 10, 1, -9 }, // 0x65 'e' - { 944, 5, 13, 6, 1, -12 }, // 0x66 'f' - { 953, 9, 14, 11, 1, -9 }, // 0x67 'g' - { 969, 9, 13, 11, 1, -12 }, // 0x68 'h' - { 984, 3, 13, 5, 1, -12 }, // 0x69 'i' - { 989, 4, 17, 5, 0, -12 }, // 0x6A 'j' - { 998, 9, 13, 10, 1, -12 }, // 0x6B 'k' - { 1013, 3, 13, 5, 1, -12 }, // 0x6C 'l' - { 1018, 14, 10, 16, 1, -9 }, // 0x6D 'm' - { 1036, 9, 10, 11, 1, -9 }, // 0x6E 'n' - { 1048, 10, 10, 11, 1, -9 }, // 0x6F 'o' - { 1061, 10, 14, 11, 1, -9 }, // 0x70 'p' - { 1079, 9, 14, 11, 1, -9 }, // 0x71 'q' - { 1095, 6, 10, 7, 1, -9 }, // 0x72 'r' - { 1103, 9, 10, 10, 1, -9 }, // 0x73 's' - { 1115, 5, 12, 6, 1, -11 }, // 0x74 't' - { 1123, 9, 10, 11, 1, -9 }, // 0x75 'u' - { 1135, 10, 10, 10, 0, -9 }, // 0x76 'v' - { 1148, 14, 10, 14, 0, -9 }, // 0x77 'w' - { 1166, 10, 10, 10, 0, -9 }, // 0x78 'x' - { 1179, 10, 14, 10, 0, -9 }, // 0x79 'y' - { 1197, 8, 10, 9, 1, -9 }, // 0x7A 'z' - { 1207, 4, 17, 7, 1, -12 }, // 0x7B '{' - { 1216, 1, 17, 5, 2, -12 }, // 0x7C '|' - { 1219, 4, 17, 7, 2, -12 }, // 0x7D '}' - { 1228, 8, 2, 9, 0, -4 } }; // 0x7E '~' - -const GFXfont FreeSansBold9pt7b PROGMEM = { - (uint8_t *)FreeSansBold9pt7bBitmaps, - (GFXglyph *)FreeSansBold9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1902 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h deleted file mode 100644 index fabbad3f4..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h +++ /dev/null @@ -1,317 +0,0 @@ -const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { - 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, - 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, - 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, - 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, - 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, - 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, - 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, - 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, - 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, - 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, - 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, - 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, - 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, - 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, - 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, - 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, - 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, - 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, - 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, - 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, - 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, - 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, - 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, - 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, - 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, - 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, - 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, - 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, - 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, - 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, - 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, - 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, - 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, - 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, - 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, - 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, - 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, - 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, - 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, - 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, - 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, - 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, - 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, - 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, - 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, - 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, - 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, - 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, - 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, - 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, - 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, - 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, - 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, - 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, - 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, - 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, - 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, - 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, - 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, - 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, - 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, - 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, - 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, - 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, - 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, - 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, - 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, - 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, - 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, - 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, - 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, - 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, - 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, - 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, - 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, - 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, - 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, - 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, - 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, - 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, - 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, - 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, - 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, - 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, - 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, - 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, - 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, - 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, - 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, - 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, - 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, - 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, - 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, - 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, - 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, - 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, - 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, - 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, - 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, - 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, - 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, - 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, - 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, - 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, - 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, - 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, - 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, - 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, - 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, - 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, - 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, - 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, - 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, - 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, - 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, - 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, - 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, - 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, - 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, - 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, - 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, - 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, - 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, - 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, - 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, - 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, - 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, - 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, - 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, - 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, - 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, - 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, - 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, - 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, - 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, - 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, - 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, - 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, - 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, - 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, - 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, - 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, - 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, - 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, - 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, - 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, - 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, - 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, - 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, - 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, - 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, - 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, - 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, - 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, - 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, - 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, - 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, - 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, - 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, - 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, - 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, - 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, - 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, - 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, - 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, - 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, - 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, - 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, - 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, - 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, - 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, - 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, - 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, - 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, - 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, - 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, - 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, - 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, - 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, - 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, - 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, - 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, - 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, - 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, - 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, - 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, - 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, - 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, - 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, - 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, - 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, - 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, - 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, - 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, - 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, - 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, - 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, - 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, - 0x7E, 0x01, 0xC0 }; - -const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 7, 17, 8, 3, -16 }, // 0x21 '!' - { 15, 10, 6, 11, 4, -17 }, // 0x22 '"' - { 23, 15, 16, 13, 1, -15 }, // 0x23 '#' - { 53, 15, 21, 13, 1, -17 }, // 0x24 '$' - { 93, 18, 18, 21, 3, -17 }, // 0x25 '%' - { 134, 15, 17, 17, 2, -16 }, // 0x26 '&' - { 166, 4, 6, 6, 4, -17 }, // 0x27 ''' - { 169, 9, 22, 8, 2, -17 }, // 0x28 '(' - { 194, 9, 22, 8, -1, -16 }, // 0x29 ')' - { 219, 8, 8, 9, 3, -17 }, // 0x2A '*' - { 227, 12, 11, 14, 2, -10 }, // 0x2B '+' - { 244, 5, 7, 7, 1, -2 }, // 0x2C ',' - { 249, 7, 3, 8, 2, -7 }, // 0x2D '-' - { 252, 4, 3, 7, 2, -2 }, // 0x2E '.' - { 254, 10, 17, 7, 0, -16 }, // 0x2F '/' - { 276, 13, 17, 13, 2, -16 }, // 0x30 '0' - { 304, 9, 17, 13, 4, -16 }, // 0x31 '1' - { 324, 15, 17, 13, 1, -16 }, // 0x32 '2' - { 356, 13, 17, 13, 2, -16 }, // 0x33 '3' - { 384, 13, 17, 13, 1, -16 }, // 0x34 '4' - { 412, 14, 17, 13, 1, -16 }, // 0x35 '5' - { 442, 13, 17, 13, 2, -16 }, // 0x36 '6' - { 470, 13, 17, 13, 3, -16 }, // 0x37 '7' - { 498, 14, 17, 13, 1, -16 }, // 0x38 '8' - { 528, 14, 17, 13, 2, -16 }, // 0x39 '9' - { 558, 6, 12, 8, 3, -11 }, // 0x3A ':' - { 567, 7, 16, 8, 2, -11 }, // 0x3B ';' - { 581, 13, 12, 14, 2, -11 }, // 0x3C '<' - { 601, 14, 9, 14, 1, -9 }, // 0x3D '=' - { 617, 13, 12, 14, 1, -10 }, // 0x3E '>' - { 637, 13, 18, 15, 4, -17 }, // 0x3F '?' - { 667, 22, 21, 23, 2, -17 }, // 0x40 '@' - { 725, 17, 18, 17, 0, -17 }, // 0x41 'A' - { 764, 17, 18, 17, 2, -17 }, // 0x42 'B' - { 803, 17, 18, 17, 3, -17 }, // 0x43 'C' - { 842, 17, 18, 17, 2, -17 }, // 0x44 'D' - { 881, 16, 18, 16, 2, -17 }, // 0x45 'E' - { 917, 16, 18, 15, 2, -17 }, // 0x46 'F' - { 953, 17, 18, 19, 3, -17 }, // 0x47 'G' - { 992, 17, 18, 17, 2, -17 }, // 0x48 'H' - { 1031, 7, 18, 7, 2, -17 }, // 0x49 'I' - { 1047, 14, 18, 13, 1, -17 }, // 0x4A 'J' - { 1079, 18, 18, 17, 2, -17 }, // 0x4B 'K' - { 1120, 13, 18, 15, 2, -17 }, // 0x4C 'L' - { 1150, 20, 18, 20, 2, -17 }, // 0x4D 'M' - { 1195, 18, 18, 17, 2, -17 }, // 0x4E 'N' - { 1236, 17, 18, 19, 3, -17 }, // 0x4F 'O' - { 1275, 16, 18, 16, 2, -17 }, // 0x50 'P' - { 1311, 17, 19, 19, 3, -17 }, // 0x51 'Q' - { 1352, 17, 18, 17, 2, -17 }, // 0x52 'R' - { 1391, 16, 18, 16, 2, -17 }, // 0x53 'S' - { 1427, 15, 18, 15, 3, -17 }, // 0x54 'T' - { 1461, 16, 18, 17, 3, -17 }, // 0x55 'U' - { 1497, 15, 18, 16, 4, -17 }, // 0x56 'V' - { 1531, 21, 18, 23, 4, -17 }, // 0x57 'W' - { 1579, 18, 18, 16, 1, -17 }, // 0x58 'X' - { 1620, 15, 18, 16, 4, -17 }, // 0x59 'Y' - { 1654, 17, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1693, 10, 23, 8, 1, -17 }, // 0x5B '[' - { 1722, 4, 23, 7, 3, -22 }, // 0x5C '\' - { 1734, 10, 23, 8, 0, -17 }, // 0x5D ']' - { 1763, 11, 11, 14, 3, -16 }, // 0x5E '^' - { 1779, 15, 2, 13, -2, 4 }, // 0x5F '_' - { 1783, 4, 3, 8, 4, -17 }, // 0x60 '`' - { 1785, 13, 13, 13, 1, -12 }, // 0x61 'a' - { 1807, 15, 18, 15, 1, -17 }, // 0x62 'b' - { 1841, 13, 13, 13, 2, -12 }, // 0x63 'c' - { 1863, 15, 18, 15, 2, -17 }, // 0x64 'd' - { 1897, 13, 13, 13, 2, -12 }, // 0x65 'e' - { 1919, 9, 18, 8, 2, -17 }, // 0x66 'f' - { 1940, 15, 18, 15, 1, -12 }, // 0x67 'g' - { 1974, 14, 18, 15, 2, -17 }, // 0x68 'h' - { 2006, 7, 18, 7, 2, -17 }, // 0x69 'i' - { 2022, 10, 23, 7, -1, -17 }, // 0x6A 'j' - { 2051, 15, 18, 13, 1, -17 }, // 0x6B 'k' - { 2085, 7, 18, 7, 2, -17 }, // 0x6C 'l' - { 2101, 21, 13, 21, 1, -12 }, // 0x6D 'm' - { 2136, 14, 13, 15, 2, -12 }, // 0x6E 'n' - { 2159, 14, 13, 15, 2, -12 }, // 0x6F 'o' - { 2182, 16, 18, 15, 0, -12 }, // 0x70 'p' - { 2218, 14, 18, 15, 2, -12 }, // 0x71 'q' - { 2250, 10, 13, 9, 2, -12 }, // 0x72 'r' - { 2267, 12, 13, 13, 3, -12 }, // 0x73 's' - { 2287, 8, 15, 8, 2, -14 }, // 0x74 't' - { 2302, 14, 13, 15, 2, -12 }, // 0x75 'u' - { 2325, 13, 13, 13, 3, -12 }, // 0x76 'v' - { 2347, 17, 13, 19, 3, -12 }, // 0x77 'w' - { 2375, 16, 13, 13, 0, -12 }, // 0x78 'x' - { 2401, 15, 18, 13, 1, -12 }, // 0x79 'y' - { 2435, 13, 13, 12, 1, -12 }, // 0x7A 'z' - { 2457, 9, 23, 9, 3, -17 }, // 0x7B '{' - { 2483, 6, 23, 7, 1, -17 }, // 0x7C '|' - { 2501, 9, 23, 9, 0, -17 }, // 0x7D '}' - { 2527, 12, 5, 14, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 3207 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h deleted file mode 100644 index 79c748c78..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h +++ /dev/null @@ -1,545 +0,0 @@ -const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { - 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, - 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, - 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, - 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, - 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, - 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, - 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, - 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, - 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, - 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, - 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, - 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, - 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, - 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, - 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, - 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, - 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, - 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, - 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, - 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, - 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, - 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, - 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, - 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, - 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, - 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, - 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, - 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, - 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, - 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, - 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, - 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, - 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, - 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, - 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, - 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, - 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, - 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, - 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, - 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, - 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, - 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, - 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, - 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, - 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, - 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, - 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, - 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, - 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, - 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, - 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, - 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, - 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, - 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, - 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, - 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, - 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, - 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, - 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, - 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, - 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, - 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, - 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, - 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, - 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, - 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, - 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, - 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, - 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, - 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, - 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, - 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, - 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, - 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, - 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, - 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, - 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, - 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, - 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, - 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, - 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, - 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, - 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, - 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, - 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, - 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, - 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, - 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, - 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, - 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, - 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, - 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, - 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, - 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, - 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, - 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, - 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, - 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, - 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, - 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, - 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, - 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, - 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, - 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, - 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, - 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, - 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, - 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, - 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, - 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, - 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, - 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, - 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, - 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, - 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, - 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, - 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, - 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, - 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, - 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, - 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, - 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, - 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, - 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, - 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, - 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, - 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, - 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, - 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, - 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, - 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, - 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, - 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, - 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, - 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, - 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, - 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, - 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, - 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, - 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, - 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, - 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, - 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, - 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, - 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, - 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, - 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, - 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, - 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, - 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, - 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, - 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, - 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, - 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, - 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, - 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, - 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, - 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, - 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, - 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, - 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, - 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, - 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, - 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, - 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, - 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, - 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, - 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, - 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, - 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, - 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, - 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, - 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, - 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, - 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, - 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, - 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, - 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, - 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, - 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, - 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, - 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, - 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, - 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, - 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, - 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, - 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, - 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, - 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, - 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, - 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, - 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, - 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, - 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, - 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, - 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, - 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, - 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, - 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, - 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, - 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, - 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, - 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, - 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, - 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, - 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, - 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, - 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, - 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, - 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, - 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, - 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, - 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, - 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, - 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, - 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, - 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, - 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, - 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, - 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, - 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, - 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, - 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, - 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, - 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, - 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, - 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, - 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, - 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, - 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, - 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, - 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, - 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, - 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, - 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, - 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, - 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, - 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, - 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, - 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, - 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, - 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, - 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, - 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, - 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, - 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, - 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, - 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, - 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, - 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, - 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, - 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, - 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, - 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, - 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, - 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, - 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, - 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, - 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, - 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, - 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, - 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, - 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, - 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, - 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, - 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, - 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, - 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, - 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, - 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, - 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, - 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, - 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, - 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, - 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, - 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, - 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, - 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, - 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, - 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, - 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, - 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, - 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, - 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, - 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, - 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, - 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, - 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, - 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, - 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, - 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, - 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, - 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, - 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, - 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, - 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, - 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, - 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, - 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, - 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, - 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, - 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, - 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, - 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, - 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, - 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, - 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, - 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, - 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, - 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, - 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, - 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, - 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, - 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, - 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, - 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, - 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, - 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, - 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, - 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, - 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, - 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, - 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, - 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, - 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, - 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, - 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, - 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, - 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, - 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, - 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, - 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, - 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, - 0xF0, 0x01, 0xE0 }; - -const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 10, 25, 12, 4, -24 }, // 0x21 '!' - { 32, 13, 9, 17, 6, -25 }, // 0x22 '"' - { 47, 22, 24, 19, 1, -23 }, // 0x23 '#' - { 113, 19, 31, 19, 2, -26 }, // 0x24 '$' - { 187, 26, 26, 31, 5, -25 }, // 0x25 '%' - { 272, 21, 25, 25, 3, -24 }, // 0x26 '&' - { 338, 5, 9, 8, 6, -25 }, // 0x27 ''' - { 344, 13, 33, 12, 3, -25 }, // 0x28 '(' - { 398, 13, 33, 12, -1, -25 }, // 0x29 ')' - { 452, 12, 11, 14, 5, -25 }, // 0x2A '*' - { 469, 18, 16, 20, 3, -15 }, // 0x2B '+' - { 505, 7, 11, 10, 1, -4 }, // 0x2C ',' - { 515, 10, 4, 12, 2, -10 }, // 0x2D '-' - { 520, 6, 5, 10, 2, -4 }, // 0x2E '.' - { 524, 15, 25, 10, 0, -24 }, // 0x2F '/' - { 571, 18, 25, 19, 3, -24 }, // 0x30 '0' - { 628, 13, 25, 19, 6, -24 }, // 0x31 '1' - { 669, 21, 25, 19, 1, -24 }, // 0x32 '2' - { 735, 20, 25, 19, 2, -24 }, // 0x33 '3' - { 798, 19, 25, 19, 2, -24 }, // 0x34 '4' - { 858, 20, 24, 19, 2, -23 }, // 0x35 '5' - { 918, 19, 25, 19, 3, -24 }, // 0x36 '6' - { 978, 19, 24, 19, 5, -23 }, // 0x37 '7' - { 1035, 20, 25, 19, 2, -24 }, // 0x38 '8' - { 1098, 19, 25, 19, 2, -24 }, // 0x39 '9' - { 1158, 9, 18, 12, 4, -17 }, // 0x3A ':' - { 1179, 10, 24, 12, 3, -17 }, // 0x3B ';' - { 1209, 19, 17, 20, 3, -16 }, // 0x3C '<' - { 1250, 20, 12, 20, 2, -13 }, // 0x3D '=' - { 1280, 19, 17, 20, 1, -15 }, // 0x3E '>' - { 1321, 18, 26, 21, 6, -25 }, // 0x3F '?' - { 1380, 33, 31, 34, 3, -25 }, // 0x40 '@' - { 1508, 23, 26, 25, 1, -25 }, // 0x41 'A' - { 1583, 24, 26, 25, 3, -25 }, // 0x42 'B' - { 1661, 24, 26, 25, 4, -25 }, // 0x43 'C' - { 1739, 24, 26, 25, 3, -25 }, // 0x44 'D' - { 1817, 24, 26, 23, 3, -25 }, // 0x45 'E' - { 1895, 23, 26, 21, 3, -25 }, // 0x46 'F' - { 1970, 24, 26, 27, 4, -25 }, // 0x47 'G' - { 2048, 26, 26, 25, 2, -25 }, // 0x48 'H' - { 2133, 10, 26, 10, 2, -25 }, // 0x49 'I' - { 2166, 20, 26, 19, 2, -25 }, // 0x4A 'J' - { 2231, 26, 26, 25, 3, -25 }, // 0x4B 'K' - { 2316, 18, 26, 21, 3, -25 }, // 0x4C 'L' - { 2375, 31, 26, 29, 2, -25 }, // 0x4D 'M' - { 2476, 27, 26, 25, 2, -25 }, // 0x4E 'N' - { 2564, 25, 26, 27, 4, -25 }, // 0x4F 'O' - { 2646, 23, 26, 23, 3, -25 }, // 0x50 'P' - { 2721, 25, 27, 27, 4, -25 }, // 0x51 'Q' - { 2806, 24, 26, 25, 3, -25 }, // 0x52 'R' - { 2884, 22, 26, 23, 3, -25 }, // 0x53 'S' - { 2956, 21, 26, 21, 5, -25 }, // 0x54 'T' - { 3025, 24, 26, 25, 4, -25 }, // 0x55 'U' - { 3103, 22, 26, 23, 6, -25 }, // 0x56 'V' - { 3175, 32, 26, 33, 6, -25 }, // 0x57 'W' - { 3279, 27, 26, 23, 1, -25 }, // 0x58 'X' - { 3367, 22, 26, 23, 6, -25 }, // 0x59 'Y' - { 3439, 25, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3521, 15, 33, 12, 1, -25 }, // 0x5B '[' - { 3583, 5, 25, 10, 5, -24 }, // 0x5C '\' - { 3599, 15, 33, 12, -1, -25 }, // 0x5D ']' - { 3661, 16, 15, 20, 4, -23 }, // 0x5E '^' - { 3691, 21, 3, 19, -2, 5 }, // 0x5F '_' - { 3699, 5, 5, 12, 6, -25 }, // 0x60 '`' - { 3703, 18, 19, 19, 2, -18 }, // 0x61 'a' - { 3746, 20, 26, 21, 2, -25 }, // 0x62 'b' - { 3811, 18, 19, 19, 3, -18 }, // 0x63 'c' - { 3854, 22, 26, 21, 3, -25 }, // 0x64 'd' - { 3926, 19, 19, 19, 2, -18 }, // 0x65 'e' - { 3972, 13, 26, 12, 3, -25 }, // 0x66 'f' - { 4015, 22, 27, 21, 1, -18 }, // 0x67 'g' - { 4090, 20, 26, 21, 2, -25 }, // 0x68 'h' - { 4155, 10, 26, 10, 2, -25 }, // 0x69 'i' - { 4188, 15, 34, 10, -2, -25 }, // 0x6A 'j' - { 4252, 21, 26, 19, 2, -25 }, // 0x6B 'k' - { 4321, 10, 26, 10, 2, -25 }, // 0x6C 'l' - { 4354, 30, 19, 31, 2, -18 }, // 0x6D 'm' - { 4426, 20, 19, 21, 2, -18 }, // 0x6E 'n' - { 4474, 19, 19, 21, 3, -18 }, // 0x6F 'o' - { 4520, 22, 27, 21, 0, -18 }, // 0x70 'p' - { 4595, 20, 27, 21, 3, -18 }, // 0x71 'q' - { 4663, 15, 19, 14, 2, -18 }, // 0x72 'r' - { 4699, 18, 19, 19, 2, -18 }, // 0x73 's' - { 4742, 11, 23, 12, 4, -22 }, // 0x74 't' - { 4774, 20, 19, 21, 3, -18 }, // 0x75 'u' - { 4822, 18, 19, 19, 5, -18 }, // 0x76 'v' - { 4865, 27, 19, 27, 4, -18 }, // 0x77 'w' - { 4930, 22, 19, 19, 1, -18 }, // 0x78 'x' - { 4983, 22, 27, 19, 1, -18 }, // 0x79 'y' - { 5058, 19, 19, 17, 1, -18 }, // 0x7A 'z' - { 5104, 14, 33, 14, 2, -25 }, // 0x7B '{' - { 5162, 9, 33, 10, 2, -25 }, // 0x7C '|' - { 5200, 14, 33, 14, 2, -25 }, // 0x7D '}' - { 5258, 17, 6, 20, 3, -10 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h deleted file mode 100644 index ea65f9b8d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h +++ /dev/null @@ -1,893 +0,0 @@ -const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, - 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, - 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, - 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, - 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, - 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, - 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, - 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, - 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, - 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, - 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, - 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, - 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, - 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, - 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, - 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, - 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, - 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, - 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, - 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, - 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, - 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, - 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, - 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, - 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, - 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, - 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, - 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, - 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, - 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, - 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, - 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, - 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, - 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, - 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, - 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, - 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, - 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, - 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, - 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, - 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, - 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, - 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, - 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, - 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, - 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, - 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, - 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, - 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, - 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, - 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, - 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, - 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, - 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, - 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, - 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, - 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, - 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, - 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, - 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, - 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, - 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, - 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, - 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, - 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, - 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, - 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, - 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, - 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, - 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, - 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, - 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, - 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, - 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, - 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, - 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, - 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, - 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, - 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, - 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, - 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, - 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, - 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, - 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, - 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, - 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, - 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, - 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, - 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, - 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, - 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, - 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, - 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, - 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, - 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, - 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, - 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, - 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, - 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, - 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, - 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, - 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, - 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, - 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, - 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, - 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, - 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, - 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, - 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, - 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, - 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, - 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, - 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, - 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, - 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, - 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, - 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, - 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, - 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, - 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, - 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, - 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, - 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, - 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, - 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, - 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, - 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, - 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, - 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, - 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, - 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, - 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, - 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, - 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, - 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, - 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, - 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, - 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, - 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, - 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, - 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, - 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, - 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, - 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, - 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, - 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, - 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, - 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, - 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, - 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, - 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, - 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, - 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, - 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, - 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, - 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, - 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, - 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, - 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, - 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, - 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, - 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, - 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, - 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, - 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, - 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, - 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, - 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, - 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, - 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, - 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, - 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, - 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, - 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, - 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, - 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, - 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, - 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, - 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, - 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, - 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, - 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, - 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, - 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, - 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, - 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, - 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, - 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, - 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, - 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, - 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, - 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, - 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, - 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, - 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, - 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, - 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, - 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, - 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, - 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, - 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, - 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, - 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, - 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, - 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, - 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, - 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, - 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, - 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, - 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, - 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, - 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, - 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, - 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, - 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, - 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, - 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, - 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, - 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, - 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, - 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, - 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, - 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, - 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, - 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, - 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, - 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, - 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, - 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, - 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, - 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, - 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, - 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, - 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, - 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, - 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, - 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, - 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, - 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, - 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, - 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, - 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, - 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, - 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, - 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, - 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, - 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, - 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, - 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, - 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, - 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, - 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, - 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, - 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, - 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, - 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, - 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, - 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, - 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, - 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, - 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, - 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, - 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, - 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, - 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, - 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, - 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, - 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, - 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, - 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, - 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, - 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, - 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, - 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, - 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, - 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, - 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, - 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, - 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, - 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, - 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, - 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, - 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, - 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, - 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, - 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, - 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, - 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, - 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, - 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, - 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, - 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, - 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, - 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, - 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, - 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, - 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, - 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, - 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, - 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, - 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, - 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, - 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, - 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, - 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, - 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, - 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, - 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, - 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, - 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, - 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, - 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, - 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, - 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, - 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, - 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, - 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, - 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, - 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, - 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, - 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, - 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, - 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, - 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, - 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, - 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, - 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, - 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, - 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, - 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, - 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, - 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, - 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, - 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, - 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, - 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, - 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, - 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, - 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, - 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, - 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, - 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, - 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, - 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, - 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, - 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, - 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, - 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, - 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, - 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, - 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, - 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, - 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, - 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, - 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, - 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, - 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, - 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, - 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, - 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, - 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, - 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, - 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, - 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, - 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, - 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, - 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, - 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, - 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, - 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, - 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, - 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, - 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, - 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, - 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, - 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, - 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, - 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, - 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, - 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, - 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, - 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, - 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, - 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, - 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, - 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, - 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, - 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, - 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, - 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, - 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, - 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, - 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, - 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, - 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, - 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, - 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, - 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, - 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, - 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, - 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, - 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, - 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, - 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, - 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, - 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, - 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, - 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, - 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, - 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, - 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, - 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, - 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, - 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, - 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, - 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, - 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, - 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, - 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, - 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, - 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, - 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, - 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, - 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, - 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, - 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, - 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, - 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, - 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, - 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, - 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, - 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, - 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, - 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, - 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, - 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, - 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, - 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, - 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, - 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, - 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, - 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, - 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, - 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, - 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, - 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, - 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, - 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, - 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, - 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, - 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, - 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, - 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, - 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, - 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, - 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, - 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, - 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, - 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, - 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, - 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, - 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, - 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, - 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, - 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, - 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, - 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, - 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, - 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, - 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, - 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, - 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, - 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, - 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, - 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, - 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, - 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, - 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, - 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, - 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, - 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, - 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, - 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, - 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, - 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, - 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, - 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, - 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, - 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, - 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, - 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, - 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, - 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, - 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, - 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, - 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, - 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, - 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, - 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, - 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, - 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, - 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, - 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, - 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, - 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, - 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, - 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, - 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, - 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, - 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, - 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, - 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, - 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, - 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, - 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, - 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, - 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, - 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, - 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, - 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, - 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, - 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, - 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, - 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, - 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, - 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, - 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, - 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, - 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, - 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, - 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, - 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, - 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, - 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, - 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, - 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, - 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, - 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, - 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, - 0x00, 0x03, 0xF0 }; - -const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 14, 34, 16, 5, -33 }, // 0x21 '!' - { 60, 18, 12, 22, 8, -33 }, // 0x22 '"' - { 87, 29, 33, 26, 2, -31 }, // 0x23 '#' - { 207, 26, 42, 26, 3, -35 }, // 0x24 '$' - { 344, 36, 34, 42, 6, -32 }, // 0x25 '%' - { 497, 29, 35, 34, 4, -33 }, // 0x26 '&' - { 624, 7, 12, 11, 8, -33 }, // 0x27 ''' - { 635, 17, 44, 16, 4, -33 }, // 0x28 '(' - { 729, 17, 44, 16, 0, -34 }, // 0x29 ')' - { 823, 15, 15, 18, 7, -33 }, // 0x2A '*' - { 852, 24, 22, 27, 4, -21 }, // 0x2B '+' - { 918, 10, 15, 13, 1, -6 }, // 0x2C ',' - { 937, 14, 6, 16, 3, -15 }, // 0x2D '-' - { 948, 8, 7, 13, 3, -6 }, // 0x2E '.' - { 955, 20, 34, 13, 0, -32 }, // 0x2F '/' - { 1040, 25, 35, 26, 4, -33 }, // 0x30 '0' - { 1150, 17, 33, 26, 8, -32 }, // 0x31 '1' - { 1221, 29, 34, 26, 1, -33 }, // 0x32 '2' - { 1345, 26, 35, 26, 3, -33 }, // 0x33 '3' - { 1459, 25, 32, 26, 3, -31 }, // 0x34 '4' - { 1559, 27, 34, 26, 3, -32 }, // 0x35 '5' - { 1674, 25, 35, 26, 4, -33 }, // 0x36 '6' - { 1784, 26, 33, 26, 6, -32 }, // 0x37 '7' - { 1892, 26, 35, 26, 3, -33 }, // 0x38 '8' - { 2006, 25, 35, 26, 4, -33 }, // 0x39 '9' - { 2116, 12, 25, 16, 5, -24 }, // 0x3A ':' - { 2154, 14, 33, 16, 3, -24 }, // 0x3B ';' - { 2212, 26, 23, 27, 4, -22 }, // 0x3C '<' - { 2287, 26, 18, 27, 3, -19 }, // 0x3D '=' - { 2346, 26, 23, 27, 1, -21 }, // 0x3E '>' - { 2421, 24, 35, 29, 8, -34 }, // 0x3F '?' - { 2526, 45, 41, 46, 3, -34 }, // 0x40 '@' - { 2757, 32, 34, 34, 1, -33 }, // 0x41 'A' - { 2893, 32, 34, 34, 4, -33 }, // 0x42 'B' - { 3029, 32, 36, 34, 5, -34 }, // 0x43 'C' - { 3173, 32, 34, 34, 4, -33 }, // 0x44 'D' - { 3309, 32, 34, 31, 4, -33 }, // 0x45 'E' - { 3445, 32, 34, 29, 3, -33 }, // 0x46 'F' - { 3581, 33, 36, 37, 5, -34 }, // 0x47 'G' - { 3730, 35, 34, 34, 3, -33 }, // 0x48 'H' - { 3879, 14, 34, 13, 3, -33 }, // 0x49 'I' - { 3939, 27, 35, 26, 3, -33 }, // 0x4A 'J' - { 4058, 37, 34, 34, 3, -33 }, // 0x4B 'K' - { 4216, 24, 34, 29, 4, -33 }, // 0x4C 'L' - { 4318, 41, 34, 39, 3, -33 }, // 0x4D 'M' - { 4493, 35, 34, 34, 3, -33 }, // 0x4E 'N' - { 4642, 34, 36, 37, 5, -34 }, // 0x4F 'O' - { 4795, 31, 34, 31, 4, -33 }, // 0x50 'P' - { 4927, 34, 37, 37, 5, -34 }, // 0x51 'Q' - { 5085, 33, 34, 34, 4, -33 }, // 0x52 'R' - { 5226, 30, 36, 31, 4, -34 }, // 0x53 'S' - { 5361, 28, 34, 29, 7, -33 }, // 0x54 'T' - { 5480, 32, 35, 34, 6, -33 }, // 0x55 'U' - { 5620, 30, 34, 31, 8, -33 }, // 0x56 'V' - { 5748, 43, 34, 44, 8, -33 }, // 0x57 'W' - { 5931, 37, 34, 31, 1, -33 }, // 0x58 'X' - { 6089, 29, 34, 31, 9, -33 }, // 0x59 'Y' - { 6213, 33, 34, 29, 1, -33 }, // 0x5A 'Z' - { 6354, 21, 43, 16, 1, -33 }, // 0x5B '[' - { 6467, 7, 36, 13, 6, -34 }, // 0x5C '\' - { 6499, 21, 43, 16, -1, -33 }, // 0x5D ']' - { 6612, 21, 20, 27, 6, -32 }, // 0x5E '^' - { 6665, 29, 4, 26, -3, 6 }, // 0x5F '_' - { 6680, 7, 7, 16, 8, -35 }, // 0x60 '`' - { 6687, 25, 26, 26, 2, -24 }, // 0x61 'a' - { 6769, 27, 35, 29, 3, -33 }, // 0x62 'b' - { 6888, 25, 26, 26, 4, -24 }, // 0x63 'c' - { 6970, 29, 35, 29, 4, -33 }, // 0x64 'd' - { 7097, 25, 26, 26, 3, -24 }, // 0x65 'e' - { 7179, 18, 34, 16, 4, -33 }, // 0x66 'f' - { 7256, 29, 35, 29, 2, -24 }, // 0x67 'g' - { 7383, 27, 34, 29, 3, -33 }, // 0x68 'h' - { 7498, 14, 34, 13, 3, -33 }, // 0x69 'i' - { 7558, 19, 44, 13, -2, -33 }, // 0x6A 'j' - { 7663, 28, 34, 26, 3, -33 }, // 0x6B 'k' - { 7782, 14, 34, 13, 3, -33 }, // 0x6C 'l' - { 7842, 40, 25, 42, 3, -24 }, // 0x6D 'm' - { 7967, 27, 25, 29, 3, -24 }, // 0x6E 'n' - { 8052, 26, 26, 29, 4, -24 }, // 0x6F 'o' - { 8137, 29, 35, 29, 1, -24 }, // 0x70 'p' - { 8264, 28, 35, 29, 3, -24 }, // 0x71 'q' - { 8387, 20, 25, 18, 3, -24 }, // 0x72 'r' - { 8450, 24, 26, 26, 3, -24 }, // 0x73 's' - { 8528, 14, 32, 16, 5, -30 }, // 0x74 't' - { 8584, 27, 26, 29, 4, -24 }, // 0x75 'u' - { 8672, 25, 25, 26, 6, -24 }, // 0x76 'v' - { 8751, 35, 25, 37, 6, -24 }, // 0x77 'w' - { 8861, 29, 25, 26, 1, -24 }, // 0x78 'x' - { 8952, 29, 35, 26, 2, -24 }, // 0x79 'y' - { 9079, 26, 25, 23, 1, -24 }, // 0x7A 'z' - { 9161, 18, 43, 18, 4, -33 }, // 0x7B '{' - { 9258, 13, 43, 13, 3, -33 }, // 0x7C '|' - { 9328, 18, 43, 18, 2, -33 }, // 0x7D '}' - { 9425, 22, 8, 27, 5, -14 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 10119 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h deleted file mode 100644 index 6250aca3e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h +++ /dev/null @@ -1,227 +0,0 @@ -const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { - 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, - 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, - 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, - 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, - 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, - 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, - 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, - 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, - 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, - 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, - 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, - 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, - 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, - 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, - 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, - 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, - 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, - 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, - 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, - 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, - 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, - 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, - 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, - 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, - 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, - 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, - 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, - 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, - 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, - 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, - 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, - 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, - 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, - 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, - 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, - 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, - 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, - 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, - 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, - 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, - 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, - 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, - 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, - 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, - 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, - 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, - 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, - 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, - 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, - 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, - 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, - 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, - 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, - 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, - 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, - 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, - 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, - 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, - 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, - 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, - 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, - 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, - 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, - 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, - 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, - 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, - 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, - 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, - 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, - 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, - 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, - 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, - 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, - 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, - 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, - 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, - 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, - 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, - 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, - 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, - 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, - 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, - 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, - 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, - 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, - 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, - 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, - 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, - 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, - 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, - 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, - 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, - 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, - 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, - 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, - 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, - 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, - 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, - 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, - 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, - 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, - 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, - 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, - 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, - 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, - 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, - 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, - 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, - 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, - 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, - 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, - 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, - 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, - 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, - 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, - 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, - 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, - 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E }; - -const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 5, 13, 6, 2, -12 }, // 0x21 '!' - { 9, 7, 5, 9, 3, -12 }, // 0x22 '"' - { 14, 11, 12, 10, 1, -11 }, // 0x23 '#' - { 31, 11, 16, 10, 1, -13 }, // 0x24 '$' - { 53, 14, 13, 16, 2, -12 }, // 0x25 '%' - { 76, 12, 13, 13, 2, -12 }, // 0x26 '&' - { 96, 3, 5, 4, 3, -12 }, // 0x27 ''' - { 98, 8, 17, 6, 2, -12 }, // 0x28 '(' - { 115, 8, 17, 6, -2, -13 }, // 0x29 ')' - { 132, 6, 6, 7, 3, -12 }, // 0x2A '*' - { 137, 9, 8, 11, 2, -7 }, // 0x2B '+' - { 146, 4, 6, 5, 0, -2 }, // 0x2C ',' - { 149, 5, 2, 6, 1, -5 }, // 0x2D '-' - { 151, 3, 2, 5, 1, -1 }, // 0x2E '.' - { 152, 8, 13, 5, 0, -12 }, // 0x2F '/' - { 165, 10, 13, 10, 1, -12 }, // 0x30 '0' - { 182, 7, 13, 10, 3, -12 }, // 0x31 '1' - { 194, 11, 13, 10, 1, -12 }, // 0x32 '2' - { 212, 11, 13, 10, 1, -12 }, // 0x33 '3' - { 230, 10, 12, 10, 1, -11 }, // 0x34 '4' - { 245, 11, 13, 10, 1, -12 }, // 0x35 '5' - { 263, 10, 13, 10, 2, -12 }, // 0x36 '6' - { 280, 10, 13, 10, 2, -12 }, // 0x37 '7' - { 297, 11, 13, 10, 1, -12 }, // 0x38 '8' - { 315, 11, 13, 10, 1, -12 }, // 0x39 '9' - { 333, 4, 9, 6, 2, -8 }, // 0x3A ':' - { 338, 5, 12, 6, 1, -8 }, // 0x3B ';' - { 346, 10, 9, 11, 1, -8 }, // 0x3C '<' - { 358, 10, 6, 11, 1, -6 }, // 0x3D '=' - { 366, 10, 9, 11, 1, -7 }, // 0x3E '>' - { 378, 10, 13, 11, 3, -12 }, // 0x3F '?' - { 395, 18, 16, 18, 1, -13 }, // 0x40 '@' - { 431, 13, 13, 13, 0, -12 }, // 0x41 'A' - { 453, 13, 13, 13, 1, -12 }, // 0x42 'B' - { 475, 13, 13, 13, 2, -12 }, // 0x43 'C' - { 497, 13, 13, 13, 1, -12 }, // 0x44 'D' - { 519, 13, 13, 12, 1, -12 }, // 0x45 'E' - { 541, 12, 13, 11, 1, -12 }, // 0x46 'F' - { 561, 12, 13, 14, 2, -12 }, // 0x47 'G' - { 581, 14, 13, 13, 1, -12 }, // 0x48 'H' - { 604, 5, 13, 5, 1, -12 }, // 0x49 'I' - { 613, 11, 13, 10, 1, -12 }, // 0x4A 'J' - { 631, 14, 13, 13, 1, -12 }, // 0x4B 'K' - { 654, 10, 13, 11, 1, -12 }, // 0x4C 'L' - { 671, 16, 13, 15, 1, -12 }, // 0x4D 'M' - { 697, 14, 13, 13, 1, -12 }, // 0x4E 'N' - { 720, 13, 13, 14, 2, -12 }, // 0x4F 'O' - { 742, 13, 13, 12, 1, -12 }, // 0x50 'P' - { 764, 13, 14, 14, 2, -12 }, // 0x51 'Q' - { 787, 13, 13, 13, 1, -12 }, // 0x52 'R' - { 809, 13, 13, 12, 1, -12 }, // 0x53 'S' - { 831, 11, 13, 11, 3, -12 }, // 0x54 'T' - { 849, 13, 13, 13, 2, -12 }, // 0x55 'U' - { 871, 11, 13, 12, 3, -12 }, // 0x56 'V' - { 889, 17, 13, 17, 3, -12 }, // 0x57 'W' - { 917, 14, 13, 12, 0, -12 }, // 0x58 'X' - { 940, 11, 13, 12, 3, -12 }, // 0x59 'Y' - { 958, 12, 13, 11, 1, -12 }, // 0x5A 'Z' - { 978, 8, 17, 6, 0, -12 }, // 0x5B '[' - { 995, 3, 17, 5, 2, -16 }, // 0x5C '\' - { 1002, 8, 17, 6, 0, -13 }, // 0x5D ']' - { 1019, 8, 8, 11, 2, -12 }, // 0x5E '^' - { 1027, 11, 1, 10, -1, 4 }, // 0x5F '_' - { 1029, 3, 2, 6, 3, -12 }, // 0x60 '`' - { 1030, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 1043, 11, 13, 11, 1, -12 }, // 0x62 'b' - { 1061, 10, 10, 10, 1, -9 }, // 0x63 'c' - { 1074, 12, 13, 11, 1, -12 }, // 0x64 'd' - { 1094, 10, 10, 10, 1, -9 }, // 0x65 'e' - { 1107, 6, 13, 6, 2, -12 }, // 0x66 'f' - { 1117, 12, 14, 11, 0, -9 }, // 0x67 'g' - { 1138, 11, 13, 11, 1, -12 }, // 0x68 'h' - { 1156, 5, 13, 5, 1, -12 }, // 0x69 'i' - { 1165, 8, 17, 5, -1, -12 }, // 0x6A 'j' - { 1182, 11, 13, 10, 1, -12 }, // 0x6B 'k' - { 1200, 5, 13, 5, 1, -12 }, // 0x6C 'l' - { 1209, 16, 10, 16, 1, -9 }, // 0x6D 'm' - { 1229, 11, 10, 11, 1, -9 }, // 0x6E 'n' - { 1243, 11, 10, 11, 1, -9 }, // 0x6F 'o' - { 1257, 12, 14, 11, 0, -9 }, // 0x70 'p' - { 1278, 11, 14, 11, 1, -9 }, // 0x71 'q' - { 1298, 8, 10, 7, 1, -9 }, // 0x72 'r' - { 1308, 9, 10, 10, 2, -9 }, // 0x73 's' - { 1320, 6, 12, 6, 2, -11 }, // 0x74 't' - { 1329, 10, 10, 11, 2, -9 }, // 0x75 'u' - { 1342, 10, 10, 10, 2, -9 }, // 0x76 'v' - { 1355, 14, 10, 14, 2, -9 }, // 0x77 'w' - { 1373, 12, 10, 10, 0, -9 }, // 0x78 'x' - { 1388, 11, 14, 10, 1, -9 }, // 0x79 'y' - { 1408, 10, 10, 9, 0, -9 }, // 0x7A 'z' - { 1421, 7, 17, 7, 2, -12 }, // 0x7B '{' - { 1436, 5, 17, 5, 1, -12 }, // 0x7C '|' - { 1447, 7, 17, 7, 0, -13 }, // 0x7D '}' - { 1462, 8, 2, 11, 2, -4 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 2136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h deleted file mode 100644 index efdbd8d11..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h +++ /dev/null @@ -1,302 +0,0 @@ -const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { - 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, - 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, - 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, - 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, - 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, - 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, - 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, - 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, - 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, - 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, - 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, - 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, - 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, - 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, - 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, - 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, - 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, - 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, - 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, - 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, - 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, - 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, - 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, - 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, - 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, - 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, - 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, - 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, - 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, - 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, - 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, - 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, - 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, - 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, - 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, - 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, - 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, - 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, - 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, - 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, - 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, - 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, - 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, - 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, - 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, - 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, - 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, - 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, - 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, - 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, - 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, - 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, - 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, - 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, - 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, - 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, - 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, - 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, - 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, - 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, - 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, - 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, - 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, - 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, - 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, - 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, - 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, - 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, - 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, - 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, - 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, - 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, - 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, - 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, - 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, - 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, - 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, - 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, - 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, - 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, - 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, - 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, - 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, - 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, - 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, - 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, - 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, - 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, - 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, - 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, - 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, - 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, - 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, - 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, - 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, - 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, - 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, - 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, - 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, - 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, - 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, - 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, - 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, - 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, - 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, - 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, - 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, - 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, - 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, - 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, - 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, - 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, - 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, - 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, - 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, - 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, - 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, - 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, - 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, - 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, - 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, - 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, - 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, - 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, - 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, - 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, - 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, - 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, - 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, - 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, - 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, - 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, - 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, - 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, - 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, - 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, - 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, - 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, - 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, - 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, - 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, - 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, - 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, - 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, - 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, - 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, - 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, - 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, - 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, - 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, - 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, - 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, - 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, - 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, - 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, - 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, - 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, - 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, - 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, - 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, - 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, - 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, - 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, - 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, - 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, - 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, - 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, - 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, - 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, - 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, - 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, - 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, - 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, - 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, - 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, - 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, - 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, - 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, - 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, - 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, - 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, - 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, - 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, - 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, - 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, - 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, - 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, - 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38 }; - -const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 6, 18, 7, 3, -17 }, // 0x21 '!' - { 14, 6, 6, 9, 4, -16 }, // 0x22 '"' - { 19, 15, 18, 13, 1, -17 }, // 0x23 '#' - { 53, 13, 21, 13, 2, -17 }, // 0x24 '$' - { 88, 19, 17, 21, 3, -16 }, // 0x25 '%' - { 129, 13, 17, 16, 2, -16 }, // 0x26 '&' - { 157, 2, 6, 5, 4, -16 }, // 0x27 ''' - { 159, 8, 23, 8, 3, -17 }, // 0x28 '(' - { 182, 8, 23, 8, 0, -16 }, // 0x29 ')' - { 205, 8, 8, 9, 4, -17 }, // 0x2A '*' - { 213, 12, 11, 14, 2, -10 }, // 0x2B '+' - { 230, 4, 6, 7, 1, -1 }, // 0x2C ',' - { 233, 6, 2, 8, 2, -7 }, // 0x2D '-' - { 235, 3, 2, 7, 2, -1 }, // 0x2E '.' - { 236, 10, 18, 7, 0, -17 }, // 0x2F '/' - { 259, 12, 17, 13, 2, -16 }, // 0x30 '0' - { 285, 7, 17, 13, 5, -16 }, // 0x31 '1' - { 300, 14, 17, 13, 1, -16 }, // 0x32 '2' - { 330, 12, 17, 13, 2, -16 }, // 0x33 '3' - { 356, 12, 17, 13, 2, -16 }, // 0x34 '4' - { 382, 13, 17, 13, 2, -16 }, // 0x35 '5' - { 410, 12, 17, 13, 2, -16 }, // 0x36 '6' - { 436, 13, 17, 13, 3, -16 }, // 0x37 '7' - { 464, 12, 17, 13, 2, -16 }, // 0x38 '8' - { 490, 12, 17, 13, 2, -16 }, // 0x39 '9' - { 516, 5, 12, 7, 3, -11 }, // 0x3A ':' - { 524, 6, 16, 7, 2, -11 }, // 0x3B ';' - { 536, 13, 12, 14, 2, -11 }, // 0x3C '<' - { 556, 13, 6, 14, 2, -8 }, // 0x3D '=' - { 566, 13, 12, 14, 1, -10 }, // 0x3E '>' - { 586, 11, 18, 13, 4, -17 }, // 0x3F '?' - { 611, 23, 21, 24, 2, -17 }, // 0x40 '@' - { 672, 16, 18, 16, 0, -17 }, // 0x41 'A' - { 708, 15, 18, 16, 2, -17 }, // 0x42 'B' - { 742, 16, 18, 17, 2, -17 }, // 0x43 'C' - { 778, 16, 18, 17, 2, -17 }, // 0x44 'D' - { 814, 16, 18, 16, 2, -17 }, // 0x45 'E' - { 850, 15, 18, 14, 2, -17 }, // 0x46 'F' - { 884, 16, 18, 19, 3, -17 }, // 0x47 'G' - { 920, 17, 18, 17, 2, -17 }, // 0x48 'H' - { 959, 6, 18, 7, 2, -17 }, // 0x49 'I' - { 973, 13, 18, 12, 1, -17 }, // 0x4A 'J' - { 1003, 18, 18, 16, 2, -17 }, // 0x4B 'K' - { 1044, 11, 18, 13, 2, -17 }, // 0x4C 'L' - { 1069, 20, 18, 20, 2, -17 }, // 0x4D 'M' - { 1114, 17, 18, 18, 2, -17 }, // 0x4E 'N' - { 1153, 17, 18, 18, 2, -17 }, // 0x4F 'O' - { 1192, 15, 18, 15, 2, -17 }, // 0x50 'P' - { 1226, 18, 19, 19, 2, -17 }, // 0x51 'Q' - { 1269, 16, 18, 17, 2, -17 }, // 0x52 'R' - { 1305, 15, 18, 16, 2, -17 }, // 0x53 'S' - { 1339, 14, 18, 15, 4, -17 }, // 0x54 'T' - { 1371, 16, 18, 17, 3, -17 }, // 0x55 'U' - { 1407, 15, 18, 15, 4, -17 }, // 0x56 'V' - { 1441, 22, 18, 22, 4, -17 }, // 0x57 'W' - { 1491, 19, 18, 16, 0, -17 }, // 0x58 'X' - { 1534, 16, 18, 16, 4, -17 }, // 0x59 'Y' - { 1570, 17, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1609, 10, 23, 7, 0, -17 }, // 0x5B '[' - { 1638, 3, 18, 7, 4, -17 }, // 0x5C '\' - { 1645, 10, 23, 7, -1, -16 }, // 0x5D ']' - { 1674, 10, 9, 11, 2, -16 }, // 0x5E '^' - { 1686, 14, 1, 13, -1, 4 }, // 0x5F '_' - { 1688, 4, 4, 8, 4, -17 }, // 0x60 '`' - { 1690, 11, 13, 13, 2, -12 }, // 0x61 'a' - { 1708, 13, 18, 13, 1, -17 }, // 0x62 'b' - { 1738, 11, 13, 12, 2, -12 }, // 0x63 'c' - { 1756, 14, 18, 13, 2, -17 }, // 0x64 'd' - { 1788, 12, 13, 13, 2, -12 }, // 0x65 'e' - { 1808, 8, 18, 6, 2, -17 }, // 0x66 'f' - { 1826, 14, 18, 13, 1, -12 }, // 0x67 'g' - { 1858, 12, 18, 13, 1, -17 }, // 0x68 'h' - { 1885, 5, 18, 5, 2, -17 }, // 0x69 'i' - { 1897, 9, 23, 6, -1, -17 }, // 0x6A 'j' - { 1923, 13, 18, 12, 1, -17 }, // 0x6B 'k' - { 1953, 5, 18, 5, 2, -17 }, // 0x6C 'l' - { 1965, 19, 13, 20, 1, -12 }, // 0x6D 'm' - { 1996, 12, 13, 13, 1, -12 }, // 0x6E 'n' - { 2016, 12, 13, 13, 2, -12 }, // 0x6F 'o' - { 2036, 14, 18, 14, 0, -12 }, // 0x70 'p' - { 2068, 13, 18, 13, 2, -12 }, // 0x71 'q' - { 2098, 9, 13, 8, 1, -12 }, // 0x72 'r' - { 2113, 12, 13, 12, 1, -12 }, // 0x73 's' - { 2133, 7, 16, 6, 2, -15 }, // 0x74 't' - { 2147, 12, 13, 13, 2, -12 }, // 0x75 'u' - { 2167, 11, 13, 12, 3, -12 }, // 0x76 'v' - { 2185, 17, 13, 17, 3, -12 }, // 0x77 'w' - { 2213, 14, 13, 12, 0, -12 }, // 0x78 'x' - { 2236, 14, 18, 11, 0, -12 }, // 0x79 'y' - { 2268, 12, 13, 12, 1, -12 }, // 0x7A 'z' - { 2288, 8, 23, 8, 3, -17 }, // 0x7B '{' - { 2311, 6, 23, 6, 1, -17 }, // 0x7C '|' - { 2329, 9, 23, 8, -1, -16 }, // 0x7D '}' - { 2355, 11, 5, 14, 3, -10 } }; // 0x7E '~' - -const GFXfont FreeSansOblique12pt7b PROGMEM = { - (uint8_t *)FreeSansOblique12pt7bBitmaps, - (GFXglyph *)FreeSansOblique12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 3034 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h deleted file mode 100644 index 2a18a3f6a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h +++ /dev/null @@ -1,518 +0,0 @@ -const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { - 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, - 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, - 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, - 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, - 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, - 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, - 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, - 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, - 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, - 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, - 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, - 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, - 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, - 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, - 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, - 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, - 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, - 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, - 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, - 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, - 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, - 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, - 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, - 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, - 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, - 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, - 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, - 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, - 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, - 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, - 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, - 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, - 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, - 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, - 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, - 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, - 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, - 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, - 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, - 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, - 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, - 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, - 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, - 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, - 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, - 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, - 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, - 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, - 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, - 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, - 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, - 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, - 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, - 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, - 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, - 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, - 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, - 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, - 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, - 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, - 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, - 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, - 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, - 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, - 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, - 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, - 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, - 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, - 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, - 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, - 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, - 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, - 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, - 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, - 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, - 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, - 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, - 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, - 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, - 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, - 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, - 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, - 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, - 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, - 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, - 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, - 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, - 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, - 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, - 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, - 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, - 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, - 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, - 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, - 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, - 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, - 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, - 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, - 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, - 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, - 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, - 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, - 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, - 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, - 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, - 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, - 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, - 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, - 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, - 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, - 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, - 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, - 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, - 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, - 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, - 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, - 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, - 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, - 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, - 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, - 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, - 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, - 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, - 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, - 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, - 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, - 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, - 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, - 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, - 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, - 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, - 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, - 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, - 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, - 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, - 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, - 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, - 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, - 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, - 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, - 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, - 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, - 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, - 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, - 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, - 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, - 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, - 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, - 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, - 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, - 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, - 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, - 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, - 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, - 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, - 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, - 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, - 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, - 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, - 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, - 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, - 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, - 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, - 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, - 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, - 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, - 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, - 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, - 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, - 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, - 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, - 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, - 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, - 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, - 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, - 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, - 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, - 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, - 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, - 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, - 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, - 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, - 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, - 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, - 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, - 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, - 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, - 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, - 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, - 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, - 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, - 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, - 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, - 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, - 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, - 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, - 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, - 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, - 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, - 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, - 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, - 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, - 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, - 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, - 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, - 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, - 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, - 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, - 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, - 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, - 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, - 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, - 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, - 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, - 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, - 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, - 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, - 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, - 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, - 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, - 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, - 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, - 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, - 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, - 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, - 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, - 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, - 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, - 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, - 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, - 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, - 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, - 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, - 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, - 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, - 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, - 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, - 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, - 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, - 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, - 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, - 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, - 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, - 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, - 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, - 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, - 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, - 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, - 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, - 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, - 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, - 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, - 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, - 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, - 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, - 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, - 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, - 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, - 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, - 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, - 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, - 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, - 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, - 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, - 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, - 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, - 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, - 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, - 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, - 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, - 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, - 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, - 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, - 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, - 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, - 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, - 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, - 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, - 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, - 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, - 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, - 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, - 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, - 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, - 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, - 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, - 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, - 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, - 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, - 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, - 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, - 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, - 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, - 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, - 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, - 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, - 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, - 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, - 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, - 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, - 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, - 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, - 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, - 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, - 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, - 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, - 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, - 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, - 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, - 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, - 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, - 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, - 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, - 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, - 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, - 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, - 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, - 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, - 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, - 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, - 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, - 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, - 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, - 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, - 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, - 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, - 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, - 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, - 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, - 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, - 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, - 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, - 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, - 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, - 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, - 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, - 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, - 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, - 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, - 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78 }; - -const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 9, 26, 10, 4, -25 }, // 0x21 '!' - { 30, 10, 9, 12, 6, -24 }, // 0x22 '"' - { 42, 21, 25, 19, 2, -24 }, // 0x23 '#' - { 108, 20, 31, 19, 2, -26 }, // 0x24 '$' - { 186, 26, 25, 31, 5, -24 }, // 0x25 '%' - { 268, 20, 25, 23, 3, -24 }, // 0x26 '&' - { 331, 4, 9, 7, 6, -24 }, // 0x27 ''' - { 336, 12, 33, 12, 4, -25 }, // 0x28 '(' - { 386, 12, 33, 12, -1, -24 }, // 0x29 ')' - { 436, 10, 10, 14, 6, -25 }, // 0x2A '*' - { 449, 18, 16, 20, 3, -15 }, // 0x2B '+' - { 485, 5, 8, 10, 2, -2 }, // 0x2C ',' - { 490, 9, 3, 12, 3, -10 }, // 0x2D '-' - { 494, 4, 4, 10, 3, -3 }, // 0x2E '.' - { 496, 15, 26, 10, 0, -25 }, // 0x2F '/' - { 545, 18, 25, 19, 3, -24 }, // 0x30 '0' - { 602, 10, 25, 19, 7, -24 }, // 0x31 '1' - { 634, 20, 25, 19, 2, -24 }, // 0x32 '2' - { 697, 19, 25, 19, 2, -24 }, // 0x33 '3' - { 757, 18, 25, 19, 2, -24 }, // 0x34 '4' - { 814, 20, 25, 19, 2, -24 }, // 0x35 '5' - { 877, 19, 25, 19, 3, -24 }, // 0x36 '6' - { 937, 18, 25, 19, 5, -24 }, // 0x37 '7' - { 994, 19, 25, 19, 3, -24 }, // 0x38 '8' - { 1054, 19, 25, 19, 2, -24 }, // 0x39 '9' - { 1114, 7, 19, 10, 4, -18 }, // 0x3A ':' - { 1131, 8, 24, 10, 3, -18 }, // 0x3B ';' - { 1155, 19, 17, 20, 3, -16 }, // 0x3C '<' - { 1196, 18, 9, 20, 3, -12 }, // 0x3D '=' - { 1217, 19, 17, 20, 2, -15 }, // 0x3E '>' - { 1258, 16, 26, 19, 6, -25 }, // 0x3F '?' - { 1310, 33, 31, 36, 3, -25 }, // 0x40 '@' - { 1438, 23, 26, 23, 0, -25 }, // 0x41 'A' - { 1513, 21, 26, 23, 3, -25 }, // 0x42 'B' - { 1582, 22, 26, 25, 4, -25 }, // 0x43 'C' - { 1654, 23, 26, 25, 3, -25 }, // 0x44 'D' - { 1729, 23, 26, 23, 3, -25 }, // 0x45 'E' - { 1804, 22, 26, 21, 3, -25 }, // 0x46 'F' - { 1876, 24, 26, 27, 4, -25 }, // 0x47 'G' - { 1954, 25, 26, 25, 3, -25 }, // 0x48 'H' - { 2036, 8, 26, 10, 4, -25 }, // 0x49 'I' - { 2062, 18, 26, 18, 2, -25 }, // 0x4A 'J' - { 2121, 25, 26, 23, 3, -25 }, // 0x4B 'K' - { 2203, 16, 26, 19, 3, -25 }, // 0x4C 'L' - { 2255, 29, 26, 30, 3, -25 }, // 0x4D 'M' - { 2350, 25, 26, 26, 3, -25 }, // 0x4E 'N' - { 2432, 24, 26, 27, 4, -25 }, // 0x4F 'O' - { 2510, 22, 26, 23, 3, -25 }, // 0x50 'P' - { 2582, 25, 28, 27, 4, -25 }, // 0x51 'Q' - { 2670, 23, 26, 25, 3, -25 }, // 0x52 'R' - { 2745, 22, 26, 23, 3, -25 }, // 0x53 'S' - { 2817, 20, 26, 21, 6, -25 }, // 0x54 'T' - { 2882, 24, 26, 25, 4, -25 }, // 0x55 'U' - { 2960, 21, 26, 23, 6, -25 }, // 0x56 'V' - { 3029, 32, 26, 33, 6, -25 }, // 0x57 'W' - { 3133, 27, 26, 23, 1, -25 }, // 0x58 'X' - { 3221, 23, 26, 24, 6, -25 }, // 0x59 'Y' - { 3296, 25, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3378, 13, 33, 10, 1, -25 }, // 0x5B '[' - { 3432, 4, 26, 10, 5, -25 }, // 0x5C '\' - { 3445, 13, 33, 10, -1, -24 }, // 0x5D ']' - { 3499, 14, 14, 16, 3, -24 }, // 0x5E '^' - { 3524, 21, 2, 19, -2, 5 }, // 0x5F '_' - { 3530, 6, 5, 12, 6, -25 }, // 0x60 '`' - { 3534, 18, 19, 19, 2, -18 }, // 0x61 'a' - { 3577, 19, 26, 20, 2, -25 }, // 0x62 'b' - { 3639, 16, 19, 18, 3, -18 }, // 0x63 'c' - { 3677, 20, 26, 20, 3, -25 }, // 0x64 'd' - { 3742, 17, 19, 19, 3, -18 }, // 0x65 'e' - { 3783, 11, 26, 9, 2, -25 }, // 0x66 'f' - { 3819, 19, 27, 19, 2, -18 }, // 0x67 'g' - { 3884, 18, 26, 19, 2, -25 }, // 0x68 'h' - { 3943, 8, 26, 8, 2, -25 }, // 0x69 'i' - { 3969, 14, 34, 8, -2, -25 }, // 0x6A 'j' - { 4029, 19, 26, 18, 2, -25 }, // 0x6B 'k' - { 4091, 8, 26, 8, 2, -25 }, // 0x6C 'l' - { 4117, 27, 19, 29, 2, -18 }, // 0x6D 'm' - { 4182, 18, 19, 19, 2, -18 }, // 0x6E 'n' - { 4225, 17, 19, 19, 3, -18 }, // 0x6F 'o' - { 4266, 21, 26, 20, 0, -18 }, // 0x70 'p' - { 4335, 20, 27, 19, 2, -18 }, // 0x71 'q' - { 4403, 13, 19, 11, 2, -18 }, // 0x72 'r' - { 4434, 16, 19, 18, 2, -18 }, // 0x73 's' - { 4472, 10, 23, 9, 3, -22 }, // 0x74 't' - { 4501, 18, 19, 19, 3, -18 }, // 0x75 'u' - { 4544, 16, 19, 17, 4, -18 }, // 0x76 'v' - { 4582, 24, 19, 25, 4, -18 }, // 0x77 'w' - { 4639, 19, 19, 17, 1, -18 }, // 0x78 'x' - { 4685, 20, 27, 17, 0, -18 }, // 0x79 'y' - { 4753, 19, 19, 17, 1, -18 }, // 0x7A 'z' - { 4799, 12, 33, 12, 3, -25 }, // 0x7B '{' - { 4849, 9, 33, 9, 2, -25 }, // 0x7C '|' - { 4887, 12, 33, 12, 0, -24 }, // 0x7D '}' - { 4937, 16, 7, 20, 5, -15 } }; // 0x7E '~' - -const GFXfont FreeSansOblique18pt7b PROGMEM = { - (uint8_t *)FreeSansOblique18pt7bBitmaps, - (GFXglyph *)FreeSansOblique18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5623 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h deleted file mode 100644 index 4c8c8ab02..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h +++ /dev/null @@ -1,840 +0,0 @@ -const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, - 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, - 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, - 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, - 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, - 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, - 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, - 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, - 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, - 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, - 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, - 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, - 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, - 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, - 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, - 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, - 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, - 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, - 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, - 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, - 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, - 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, - 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, - 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, - 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, - 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, - 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, - 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, - 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, - 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, - 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, - 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, - 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, - 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, - 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, - 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, - 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, - 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, - 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, - 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, - 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, - 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, - 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, - 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, - 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, - 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, - 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, - 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, - 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, - 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, - 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, - 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, - 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, - 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, - 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, - 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, - 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, - 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, - 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, - 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, - 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, - 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, - 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, - 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, - 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, - 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, - 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, - 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, - 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, - 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, - 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, - 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, - 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, - 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, - 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, - 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, - 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, - 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, - 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, - 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, - 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, - 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, - 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, - 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, - 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, - 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, - 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, - 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, - 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, - 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, - 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, - 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, - 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, - 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, - 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, - 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, - 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, - 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, - 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, - 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, - 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, - 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, - 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, - 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, - 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, - 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, - 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, - 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, - 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, - 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, - 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, - 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, - 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, - 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, - 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, - 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, - 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, - 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, - 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, - 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, - 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, - 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, - 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, - 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, - 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, - 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, - 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, - 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, - 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, - 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, - 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, - 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, - 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, - 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, - 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, - 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, - 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, - 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, - 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, - 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, - 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, - 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, - 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, - 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, - 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, - 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, - 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, - 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, - 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, - 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, - 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, - 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, - 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, - 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, - 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, - 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, - 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, - 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, - 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, - 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, - 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, - 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, - 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, - 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, - 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, - 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, - 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, - 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, - 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, - 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, - 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, - 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, - 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, - 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, - 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, - 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, - 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, - 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, - 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, - 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, - 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, - 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, - 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, - 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, - 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, - 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, - 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, - 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, - 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, - 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, - 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, - 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, - 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, - 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, - 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, - 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, - 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, - 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, - 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, - 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, - 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, - 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, - 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, - 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, - 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, - 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, - 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, - 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, - 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, - 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, - 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, - 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, - 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, - 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, - 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, - 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, - 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, - 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, - 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, - 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, - 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, - 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, - 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, - 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, - 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, - 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, - 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, - 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, - 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, - 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, - 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, - 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, - 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, - 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, - 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, - 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, - 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, - 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, - 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, - 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, - 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, - 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, - 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, - 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, - 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, - 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, - 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, - 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, - 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, - 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, - 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, - 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, - 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, - 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, - 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, - 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, - 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, - 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, - 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, - 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, - 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, - 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, - 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, - 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, - 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, - 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, - 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, - 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, - 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, - 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, - 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, - 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, - 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, - 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, - 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, - 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, - 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, - 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, - 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, - 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, - 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, - 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, - 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, - 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, - 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, - 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, - 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, - 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, - 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, - 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, - 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, - 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, - 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, - 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, - 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, - 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, - 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, - 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, - 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, - 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, - 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, - 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, - 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, - 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, - 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, - 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, - 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, - 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, - 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, - 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, - 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, - 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, - 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, - 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, - 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, - 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, - 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, - 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, - 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, - 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, - 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, - 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, - 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, - 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, - 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, - 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, - 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, - 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, - 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, - 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, - 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, - 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, - 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, - 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, - 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, - 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, - 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, - 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, - 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, - 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, - 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, - 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, - 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, - 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, - 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, - 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, - 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, - 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, - 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, - 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, - 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, - 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, - 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, - 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, - 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, - 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, - 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, - 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, - 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, - 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, - 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, - 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, - 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, - 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, - 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, - 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, - 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, - 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, - 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, - 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, - 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, - 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, - 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, - 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, - 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, - 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, - 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, - 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, - 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, - 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, - 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, - 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, - 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, - 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, - 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, - 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, - 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, - 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, - 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, - 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, - 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, - 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, - 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, - 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, - 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, - 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, - 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, - 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, - 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, - 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, - 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, - 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, - 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, - 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, - 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, - 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, - 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, - 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, - 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, - 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, - 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, - 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, - 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, - 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, - 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, - 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, - 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, - 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, - 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, - 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, - 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, - 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, - 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, - 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, - 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, - 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, - 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, - 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, - 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, - 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, - 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, - 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, - 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, - 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, - 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, - 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, - 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, - 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, - 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, - 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, - 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, - 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, - 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, - 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, - 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, - 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, - 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, - 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, - 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, - 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, - 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, - 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, - 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, - 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, - 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, - 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, - 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, - 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, - 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, - 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, - 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, - 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, - 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, - 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, - 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, - 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, - 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, - 0x00, 0x1E, 0x00 }; - -const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 11, 34, 13, 6, -33 }, // 0x21 '!' - { 47, 13, 12, 17, 8, -32 }, // 0x22 '"' - { 67, 28, 34, 26, 3, -32 }, // 0x23 '#' - { 186, 26, 42, 26, 3, -35 }, // 0x24 '$' - { 323, 36, 34, 42, 6, -32 }, // 0x25 '%' - { 476, 26, 34, 31, 4, -32 }, // 0x26 '&' - { 587, 5, 12, 9, 8, -32 }, // 0x27 ''' - { 595, 15, 44, 16, 5, -33 }, // 0x28 '(' - { 678, 15, 44, 16, 1, -33 }, // 0x29 ')' - { 761, 14, 13, 18, 8, -33 }, // 0x2A '*' - { 784, 23, 22, 27, 5, -20 }, // 0x2B '+' - { 848, 7, 12, 13, 3, -4 }, // 0x2C ',' - { 859, 12, 4, 16, 5, -14 }, // 0x2D '-' - { 865, 6, 5, 13, 4, -4 }, // 0x2E '.' - { 869, 21, 35, 13, -1, -33 }, // 0x2F '/' - { 961, 23, 34, 26, 5, -32 }, // 0x30 '0' - { 1059, 13, 33, 26, 10, -32 }, // 0x31 '1' - { 1113, 27, 33, 26, 2, -32 }, // 0x32 '2' - { 1225, 25, 34, 26, 3, -32 }, // 0x33 '3' - { 1332, 24, 33, 26, 3, -32 }, // 0x34 '4' - { 1431, 27, 34, 26, 3, -32 }, // 0x35 '5' - { 1546, 24, 34, 26, 4, -32 }, // 0x36 '6' - { 1648, 26, 33, 26, 6, -32 }, // 0x37 '7' - { 1756, 25, 34, 26, 3, -32 }, // 0x38 '8' - { 1863, 24, 34, 26, 4, -32 }, // 0x39 '9' - { 1965, 10, 25, 13, 5, -24 }, // 0x3A ':' - { 1997, 11, 32, 13, 4, -24 }, // 0x3B ';' - { 2041, 26, 23, 27, 4, -22 }, // 0x3C '<' - { 2116, 26, 12, 27, 3, -16 }, // 0x3D '=' - { 2155, 26, 23, 27, 2, -21 }, // 0x3E '>' - { 2230, 20, 35, 26, 9, -34 }, // 0x3F '?' - { 2318, 45, 42, 48, 4, -34 }, // 0x40 '@' - { 2555, 30, 34, 31, 1, -33 }, // 0x41 'A' - { 2683, 29, 34, 31, 4, -33 }, // 0x42 'B' - { 2807, 30, 36, 33, 5, -34 }, // 0x43 'C' - { 2942, 31, 34, 33, 4, -33 }, // 0x44 'D' - { 3074, 31, 34, 31, 4, -33 }, // 0x45 'E' - { 3206, 30, 34, 28, 4, -33 }, // 0x46 'F' - { 3334, 33, 36, 37, 5, -34 }, // 0x47 'G' - { 3483, 33, 34, 34, 4, -33 }, // 0x48 'H' - { 3624, 11, 34, 13, 5, -33 }, // 0x49 'I' - { 3671, 25, 35, 24, 2, -33 }, // 0x4A 'J' - { 3781, 34, 34, 31, 4, -33 }, // 0x4B 'K' - { 3926, 22, 34, 26, 4, -33 }, // 0x4C 'L' - { 4020, 39, 34, 40, 4, -33 }, // 0x4D 'M' - { 4186, 34, 34, 34, 4, -33 }, // 0x4E 'N' - { 4331, 33, 36, 36, 5, -34 }, // 0x4F 'O' - { 4480, 29, 34, 30, 4, -33 }, // 0x50 'P' - { 4604, 33, 38, 36, 5, -34 }, // 0x51 'Q' - { 4761, 30, 34, 33, 4, -33 }, // 0x52 'R' - { 4889, 29, 36, 31, 4, -34 }, // 0x53 'S' - { 5020, 28, 34, 29, 7, -33 }, // 0x54 'T' - { 5139, 31, 35, 34, 6, -33 }, // 0x55 'U' - { 5275, 29, 34, 30, 8, -33 }, // 0x56 'V' - { 5399, 43, 34, 44, 8, -33 }, // 0x57 'W' - { 5582, 36, 34, 31, 1, -33 }, // 0x58 'X' - { 5735, 30, 34, 32, 8, -33 }, // 0x59 'Y' - { 5863, 34, 34, 29, 1, -33 }, // 0x5A 'Z' - { 6008, 18, 44, 13, 1, -33 }, // 0x5B '[' - { 6107, 6, 35, 13, 7, -33 }, // 0x5C '\' - { 6134, 18, 44, 13, -1, -33 }, // 0x5D ']' - { 6233, 17, 18, 22, 6, -32 }, // 0x5E '^' - { 6272, 29, 2, 26, -3, 7 }, // 0x5F '_' - { 6280, 8, 7, 16, 8, -34 }, // 0x60 '`' - { 6287, 23, 27, 26, 3, -25 }, // 0x61 'a' - { 6365, 25, 35, 26, 3, -33 }, // 0x62 'b' - { 6475, 22, 27, 24, 4, -25 }, // 0x63 'c' - { 6550, 27, 35, 26, 4, -33 }, // 0x64 'd' - { 6669, 23, 27, 26, 4, -25 }, // 0x65 'e' - { 6747, 15, 34, 12, 3, -33 }, // 0x66 'f' - { 6811, 27, 36, 26, 2, -25 }, // 0x67 'g' - { 6933, 23, 34, 25, 3, -33 }, // 0x68 'h' - { 7031, 11, 34, 10, 3, -33 }, // 0x69 'i' - { 7078, 18, 44, 11, -2, -33 }, // 0x6A 'j' - { 7177, 25, 34, 24, 3, -33 }, // 0x6B 'k' - { 7284, 11, 34, 10, 3, -33 }, // 0x6C 'l' - { 7331, 36, 26, 38, 3, -25 }, // 0x6D 'm' - { 7448, 23, 26, 25, 3, -25 }, // 0x6E 'n' - { 7523, 23, 27, 26, 4, -25 }, // 0x6F 'o' - { 7601, 27, 36, 26, 1, -25 }, // 0x70 'p' - { 7723, 26, 36, 26, 3, -25 }, // 0x71 'q' - { 7840, 17, 26, 15, 3, -25 }, // 0x72 'r' - { 7896, 21, 27, 24, 3, -25 }, // 0x73 's' - { 7967, 13, 32, 12, 4, -30 }, // 0x74 't' - { 8019, 24, 26, 25, 4, -24 }, // 0x75 'u' - { 8097, 22, 25, 23, 6, -24 }, // 0x76 'v' - { 8166, 33, 25, 34, 6, -24 }, // 0x77 'w' - { 8270, 26, 25, 23, 1, -24 }, // 0x78 'x' - { 8352, 27, 35, 23, 0, -24 }, // 0x79 'y' - { 8471, 25, 25, 23, 1, -24 }, // 0x7A 'z' - { 8550, 16, 44, 16, 5, -33 }, // 0x7B '{' - { 8638, 12, 44, 12, 3, -33 }, // 0x7C '|' - { 8704, 16, 44, 16, -1, -33 }, // 0x7D '}' - { 8792, 21, 7, 27, 6, -19 } }; // 0x7E '~' - -const GFXfont FreeSansOblique24pt7b PROGMEM = { - (uint8_t *)FreeSansOblique24pt7bBitmaps, - (GFXglyph *)FreeSansOblique24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 9483 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h deleted file mode 100644 index 18a6cbe1e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h +++ /dev/null @@ -1,220 +0,0 @@ -const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { - 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, - 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, - 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, - 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, - 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, - 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, - 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, - 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, - 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, - 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, - 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, - 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, - 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, - 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, - 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, - 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, - 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, - 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, - 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, - 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, - 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, - 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, - 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, - 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, - 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, - 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, - 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, - 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, - 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, - 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, - 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, - 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, - 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, - 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, - 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, - 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, - 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, - 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, - 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, - 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, - 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, - 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, - 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, - 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, - 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, - 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, - 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, - 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, - 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, - 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, - 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, - 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, - 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, - 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, - 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, - 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, - 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, - 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, - 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, - 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, - 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, - 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, - 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, - 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, - 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, - 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, - 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, - 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, - 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, - 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, - 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, - 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, - 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, - 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, - 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, - 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, - 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, - 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, - 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, - 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, - 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, - 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, - 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, - 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, - 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, - 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, - 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, - 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, - 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, - 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, - 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, - 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, - 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, - 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, - 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, - 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, - 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, - 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, - 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, - 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, - 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, - 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, - 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, - 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, - 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, - 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, - 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, - 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, - 0xC0 }; - -const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 5, 13, 5, 2, -12 }, // 0x21 '!' - { 9, 5, 4, 6, 3, -12 }, // 0x22 '"' - { 12, 11, 13, 10, 1, -12 }, // 0x23 '#' - { 30, 11, 16, 10, 1, -13 }, // 0x24 '$' - { 52, 15, 13, 16, 2, -12 }, // 0x25 '%' - { 77, 10, 13, 12, 2, -12 }, // 0x26 '&' - { 94, 2, 4, 3, 3, -12 }, // 0x27 ''' - { 95, 7, 17, 6, 2, -12 }, // 0x28 '(' - { 110, 7, 17, 6, -1, -12 }, // 0x29 ')' - { 125, 6, 5, 7, 3, -12 }, // 0x2A '*' - { 129, 9, 8, 11, 2, -7 }, // 0x2B '+' - { 138, 3, 5, 5, 1, -1 }, // 0x2C ',' - { 140, 4, 1, 6, 2, -4 }, // 0x2D '-' - { 141, 2, 1, 5, 2, 0 }, // 0x2E '.' - { 142, 8, 13, 5, 0, -12 }, // 0x2F '/' - { 155, 9, 13, 10, 2, -12 }, // 0x30 '0' - { 170, 5, 13, 10, 4, -12 }, // 0x31 '1' - { 179, 11, 13, 10, 1, -12 }, // 0x32 '2' - { 197, 10, 13, 10, 1, -12 }, // 0x33 '3' - { 214, 9, 13, 10, 1, -12 }, // 0x34 '4' - { 229, 11, 13, 10, 1, -12 }, // 0x35 '5' - { 247, 10, 13, 10, 2, -12 }, // 0x36 '6' - { 264, 10, 13, 10, 2, -12 }, // 0x37 '7' - { 281, 10, 13, 10, 1, -12 }, // 0x38 '8' - { 298, 10, 13, 10, 1, -12 }, // 0x39 '9' - { 315, 4, 9, 5, 2, -8 }, // 0x3A ':' - { 320, 5, 12, 5, 1, -8 }, // 0x3B ';' - { 328, 9, 9, 11, 2, -8 }, // 0x3C '<' - { 339, 10, 4, 11, 1, -5 }, // 0x3D '=' - { 344, 9, 9, 11, 1, -7 }, // 0x3E '>' - { 355, 9, 13, 10, 3, -12 }, // 0x3F '?' - { 370, 18, 16, 18, 1, -12 }, // 0x40 '@' - { 406, 12, 13, 12, 0, -12 }, // 0x41 'A' - { 426, 12, 13, 12, 1, -12 }, // 0x42 'B' - { 446, 12, 13, 13, 2, -12 }, // 0x43 'C' - { 466, 13, 13, 13, 1, -12 }, // 0x44 'D' - { 488, 12, 13, 12, 1, -12 }, // 0x45 'E' - { 508, 12, 13, 11, 1, -12 }, // 0x46 'F' - { 528, 13, 13, 14, 2, -12 }, // 0x47 'G' - { 550, 13, 13, 13, 1, -12 }, // 0x48 'H' - { 572, 4, 13, 5, 2, -12 }, // 0x49 'I' - { 579, 10, 13, 9, 1, -12 }, // 0x4A 'J' - { 596, 14, 13, 12, 1, -12 }, // 0x4B 'K' - { 619, 9, 13, 10, 1, -12 }, // 0x4C 'L' - { 634, 16, 13, 15, 1, -12 }, // 0x4D 'M' - { 660, 13, 13, 13, 1, -12 }, // 0x4E 'N' - { 682, 13, 13, 14, 2, -12 }, // 0x4F 'O' - { 704, 12, 13, 12, 1, -12 }, // 0x50 'P' - { 724, 13, 14, 14, 2, -12 }, // 0x51 'Q' - { 747, 13, 13, 13, 1, -12 }, // 0x52 'R' - { 769, 12, 13, 12, 1, -12 }, // 0x53 'S' - { 789, 10, 13, 11, 3, -12 }, // 0x54 'T' - { 806, 12, 13, 13, 2, -12 }, // 0x55 'U' - { 826, 11, 13, 12, 3, -12 }, // 0x56 'V' - { 844, 16, 13, 17, 3, -12 }, // 0x57 'W' - { 870, 14, 13, 12, 0, -12 }, // 0x58 'X' - { 893, 12, 13, 12, 3, -12 }, // 0x59 'Y' - { 913, 12, 13, 11, 1, -12 }, // 0x5A 'Z' - { 933, 7, 17, 5, 0, -12 }, // 0x5B '[' - { 948, 2, 13, 5, 3, -12 }, // 0x5C '\' - { 952, 7, 17, 5, 0, -12 }, // 0x5D ']' - { 967, 7, 7, 8, 2, -12 }, // 0x5E '^' - { 974, 11, 1, 10, -1, 3 }, // 0x5F '_' - { 976, 3, 3, 6, 3, -12 }, // 0x60 '`' - { 978, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 991, 10, 13, 10, 1, -12 }, // 0x62 'b' - { 1008, 9, 10, 9, 1, -9 }, // 0x63 'c' - { 1020, 11, 13, 10, 1, -12 }, // 0x64 'd' - { 1038, 10, 10, 10, 1, -9 }, // 0x65 'e' - { 1051, 6, 13, 5, 1, -12 }, // 0x66 'f' - { 1061, 10, 14, 10, 0, -9 }, // 0x67 'g' - { 1079, 10, 13, 10, 1, -12 }, // 0x68 'h' - { 1096, 4, 13, 4, 1, -12 }, // 0x69 'i' - { 1103, 6, 17, 4, -1, -12 }, // 0x6A 'j' - { 1116, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 1131, 4, 13, 4, 1, -12 }, // 0x6C 'l' - { 1138, 15, 10, 15, 1, -9 }, // 0x6D 'm' - { 1157, 10, 11, 10, 1, -10 }, // 0x6E 'n' - { 1171, 10, 10, 10, 1, -9 }, // 0x6F 'o' - { 1184, 11, 14, 10, 0, -9 }, // 0x70 'p' - { 1204, 10, 14, 10, 1, -9 }, // 0x71 'q' - { 1222, 7, 10, 6, 1, -9 }, // 0x72 'r' - { 1231, 8, 10, 9, 1, -9 }, // 0x73 's' - { 1241, 4, 12, 5, 2, -11 }, // 0x74 't' - { 1247, 9, 10, 10, 2, -9 }, // 0x75 'u' - { 1259, 9, 10, 9, 2, -9 }, // 0x76 'v' - { 1271, 13, 10, 13, 2, -9 }, // 0x77 'w' - { 1288, 11, 10, 9, 0, -9 }, // 0x78 'x' - { 1302, 11, 14, 9, 0, -9 }, // 0x79 'y' - { 1322, 9, 10, 9, 1, -9 }, // 0x7A 'z' - { 1334, 5, 17, 6, 2, -12 }, // 0x7B '{' - { 1345, 4, 17, 5, 1, -12 }, // 0x7C '|' - { 1354, 5, 17, 6, 0, -12 }, // 0x7D '}' - { 1365, 9, 3, 11, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeSansOblique9pt7b PROGMEM = { - (uint8_t *)FreeSansOblique9pt7bBitmaps, - (GFXglyph *)FreeSansOblique9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 2041 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h deleted file mode 100644 index 48ad3da69..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h +++ /dev/null @@ -1,259 +0,0 @@ -const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, - 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, - 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, - 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, - 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, - 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, - 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, - 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, - 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, - 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, - 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, - 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, - 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, - 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, - 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, - 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, - 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, - 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, - 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, - 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, - 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, - 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, - 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, - 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, - 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, - 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, - 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, - 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, - 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, - 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, - 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, - 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, - 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, - 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, - 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, - 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, - 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, - 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, - 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, - 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, - 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, - 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, - 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, - 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, - 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, - 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, - 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, - 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, - 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, - 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, - 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, - 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, - 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, - 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, - 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, - 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, - 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, - 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, - 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, - 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, - 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, - 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, - 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, - 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, - 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, - 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, - 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, - 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, - 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, - 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, - 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, - 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, - 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, - 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, - 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, - 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, - 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, - 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, - 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, - 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, - 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, - 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, - 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, - 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, - 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, - 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, - 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, - 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, - 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, - 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, - 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, - 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, - 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, - 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, - 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, - 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, - 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, - 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, - 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, - 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, - 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, - 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, - 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, - 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, - 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, - 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, - 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, - 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, - 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, - 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, - 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, - 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, - 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, - 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, - 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, - 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, - 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, - 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, - 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, - 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, - 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, - 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, - 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, - 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, - 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, - 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, - 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, - 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, - 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, - 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, - 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, - 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, - 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, - 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, - 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, - 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, - 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, - 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, - 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, - 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, - 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, - 0x62, 0x41, 0xC0 }; - -const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 2, 16, 8, 3, -15 }, // 0x21 '!' - { 4, 6, 6, 10, 1, -15 }, // 0x22 '"' - { 9, 12, 16, 12, 0, -15 }, // 0x23 '#' - { 33, 10, 18, 12, 1, -16 }, // 0x24 '$' - { 56, 18, 17, 20, 1, -16 }, // 0x25 '%' - { 95, 17, 16, 19, 1, -15 }, // 0x26 '&' - { 129, 2, 6, 5, 1, -15 }, // 0x27 ''' - { 131, 6, 20, 8, 1, -15 }, // 0x28 '(' - { 146, 6, 20, 8, 1, -15 }, // 0x29 ')' - { 161, 8, 10, 12, 3, -14 }, // 0x2A '*' - { 171, 11, 11, 14, 1, -10 }, // 0x2B '+' - { 187, 3, 6, 6, 2, -2 }, // 0x2C ',' - { 190, 6, 1, 8, 1, -5 }, // 0x2D '-' - { 191, 2, 3, 6, 2, -2 }, // 0x2E '.' - { 192, 7, 17, 7, 0, -16 }, // 0x2F '/' - { 207, 10, 17, 12, 1, -16 }, // 0x30 '0' - { 229, 6, 17, 12, 3, -16 }, // 0x31 '1' - { 242, 10, 15, 12, 1, -14 }, // 0x32 '2' - { 261, 10, 16, 12, 1, -15 }, // 0x33 '3' - { 281, 10, 16, 12, 1, -15 }, // 0x34 '4' - { 301, 10, 17, 12, 1, -16 }, // 0x35 '5' - { 323, 10, 17, 12, 1, -16 }, // 0x36 '6' - { 345, 10, 16, 12, 0, -15 }, // 0x37 '7' - { 365, 10, 17, 12, 1, -16 }, // 0x38 '8' - { 387, 10, 18, 12, 1, -16 }, // 0x39 '9' - { 410, 2, 12, 6, 2, -11 }, // 0x3A ':' - { 413, 4, 15, 6, 2, -11 }, // 0x3B ';' - { 421, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 441, 12, 6, 14, 1, -8 }, // 0x3D '=' - { 450, 12, 13, 14, 1, -11 }, // 0x3E '>' - { 470, 8, 17, 11, 2, -16 }, // 0x3F '?' - { 487, 17, 16, 21, 2, -15 }, // 0x40 '@' - { 521, 17, 16, 17, 0, -15 }, // 0x41 'A' - { 555, 12, 16, 15, 1, -15 }, // 0x42 'B' - { 579, 15, 16, 16, 1, -15 }, // 0x43 'C' - { 609, 16, 16, 17, 0, -15 }, // 0x44 'D' - { 641, 14, 16, 15, 0, -15 }, // 0x45 'E' - { 669, 14, 16, 14, 0, -15 }, // 0x46 'F' - { 697, 16, 16, 17, 1, -15 }, // 0x47 'G' - { 729, 16, 16, 17, 0, -15 }, // 0x48 'H' - { 761, 6, 16, 8, 1, -15 }, // 0x49 'I' - { 773, 8, 16, 9, 0, -15 }, // 0x4A 'J' - { 789, 16, 16, 17, 1, -15 }, // 0x4B 'K' - { 821, 15, 16, 15, 0, -15 }, // 0x4C 'L' - { 851, 19, 16, 21, 1, -15 }, // 0x4D 'M' - { 889, 16, 16, 17, 1, -15 }, // 0x4E 'N' - { 921, 15, 16, 17, 1, -15 }, // 0x4F 'O' - { 951, 12, 16, 14, 0, -15 }, // 0x50 'P' - { 975, 16, 20, 17, 1, -15 }, // 0x51 'Q' - { 1015, 15, 16, 16, 0, -15 }, // 0x52 'R' - { 1045, 11, 16, 13, 0, -15 }, // 0x53 'S' - { 1067, 15, 16, 15, 0, -15 }, // 0x54 'T' - { 1097, 16, 16, 17, 1, -15 }, // 0x55 'U' - { 1129, 17, 16, 17, 0, -15 }, // 0x56 'V' - { 1163, 22, 16, 23, 0, -15 }, // 0x57 'W' - { 1207, 17, 16, 17, 0, -15 }, // 0x58 'X' - { 1241, 16, 16, 17, 0, -15 }, // 0x59 'Y' - { 1273, 14, 16, 15, 1, -15 }, // 0x5A 'Z' - { 1301, 5, 20, 8, 2, -15 }, // 0x5B '[' - { 1314, 7, 17, 7, 0, -16 }, // 0x5C '\' - { 1329, 5, 20, 8, 1, -15 }, // 0x5D ']' - { 1342, 10, 9, 11, 1, -15 }, // 0x5E '^' - { 1354, 12, 1, 12, 0, 3 }, // 0x5F '_' - { 1356, 5, 4, 6, 0, -15 }, // 0x60 '`' - { 1359, 10, 11, 10, 1, -10 }, // 0x61 'a' - { 1373, 10, 17, 12, 1, -16 }, // 0x62 'b' - { 1395, 8, 11, 11, 1, -10 }, // 0x63 'c' - { 1406, 10, 17, 12, 1, -16 }, // 0x64 'd' - { 1428, 10, 11, 11, 1, -10 }, // 0x65 'e' - { 1442, 9, 17, 9, 0, -16 }, // 0x66 'f' - { 1462, 12, 16, 11, 0, -10 }, // 0x67 'g' - { 1486, 11, 17, 12, 0, -16 }, // 0x68 'h' - { 1510, 5, 16, 7, 0, -15 }, // 0x69 'i' - { 1520, 6, 21, 8, 0, -15 }, // 0x6A 'j' - { 1536, 11, 17, 12, 1, -16 }, // 0x6B 'k' - { 1560, 5, 17, 6, 0, -16 }, // 0x6C 'l' - { 1571, 18, 11, 19, 0, -10 }, // 0x6D 'm' - { 1596, 11, 11, 12, 0, -10 }, // 0x6E 'n' - { 1612, 10, 11, 12, 1, -10 }, // 0x6F 'o' - { 1626, 11, 16, 12, 0, -10 }, // 0x70 'p' - { 1648, 10, 16, 12, 1, -10 }, // 0x71 'q' - { 1668, 8, 11, 8, 0, -10 }, // 0x72 'r' - { 1679, 7, 11, 9, 1, -10 }, // 0x73 's' - { 1689, 6, 13, 7, 1, -12 }, // 0x74 't' - { 1699, 10, 11, 12, 1, -10 }, // 0x75 'u' - { 1713, 11, 11, 11, 0, -10 }, // 0x76 'v' - { 1729, 16, 11, 16, 0, -10 }, // 0x77 'w' - { 1751, 11, 11, 12, 0, -10 }, // 0x78 'x' - { 1767, 11, 16, 11, 0, -10 }, // 0x79 'y' - { 1789, 10, 11, 10, 0, -10 }, // 0x7A 'z' - { 1803, 5, 21, 12, 2, -16 }, // 0x7B '{' - { 1817, 1, 17, 5, 2, -16 }, // 0x7C '|' - { 1820, 5, 21, 12, 5, -15 }, // 0x7D '}' - { 1834, 12, 3, 12, 0, -6 } }; // 0x7E '~' - -const GFXfont FreeSerif12pt7b PROGMEM = { - (uint8_t *)FreeSerif12pt7bBitmaps, - (GFXglyph *)FreeSerif12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2511 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h deleted file mode 100644 index 7d19dd183..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h +++ /dev/null @@ -1,429 +0,0 @@ -const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { - 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, - 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, - 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, - 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, - 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, - 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, - 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, - 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, - 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, - 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, - 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, - 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, - 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, - 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, - 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, - 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, - 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, - 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, - 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, - 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, - 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, - 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, - 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, - 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, - 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, - 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, - 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, - 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, - 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, - 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, - 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, - 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, - 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, - 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, - 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, - 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, - 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, - 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, - 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, - 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, - 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, - 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, - 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, - 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, - 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, - 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, - 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, - 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, - 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, - 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, - 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, - 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, - 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, - 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, - 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, - 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, - 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, - 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, - 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, - 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, - 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, - 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, - 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, - 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, - 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, - 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, - 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, - 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, - 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, - 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, - 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, - 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, - 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, - 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, - 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, - 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, - 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, - 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, - 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, - 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, - 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, - 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, - 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, - 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, - 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, - 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, - 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, - 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, - 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, - 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, - 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, - 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, - 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, - 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, - 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, - 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, - 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, - 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, - 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, - 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, - 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, - 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, - 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, - 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, - 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, - 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, - 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, - 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, - 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, - 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, - 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, - 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, - 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, - 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, - 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, - 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, - 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, - 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, - 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, - 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, - 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, - 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, - 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, - 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, - 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, - 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, - 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, - 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, - 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, - 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, - 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, - 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, - 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, - 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, - 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, - 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, - 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, - 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, - 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, - 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, - 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, - 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, - 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, - 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, - 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, - 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, - 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, - 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, - 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, - 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, - 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, - 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, - 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, - 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, - 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, - 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, - 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, - 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, - 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, - 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, - 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, - 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, - 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, - 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, - 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, - 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, - 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, - 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, - 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, - 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, - 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, - 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, - 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, - 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, - 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, - 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, - 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, - 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, - 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, - 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, - 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, - 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, - 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, - 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, - 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, - 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, - 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, - 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, - 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, - 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, - 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, - 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, - 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, - 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, - 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, - 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, - 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, - 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, - 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, - 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, - 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, - 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, - 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, - 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, - 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, - 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, - 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, - 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, - 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, - 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, - 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, - 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, - 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, - 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, - 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, - 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, - 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, - 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, - 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, - 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, - 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, - 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, - 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, - 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, - 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, - 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, - 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, - 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, - 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, - 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, - 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, - 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, - 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, - 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, - 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, - 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, - 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, - 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, - 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, - 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, - 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, - 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, - 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, - 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, - 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, - 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, - 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, - 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, - 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, - 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, - 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C }; - -const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 4, 24, 12, 5, -23 }, // 0x21 '!' - { 12, 8, 9, 14, 3, -23 }, // 0x22 '"' - { 21, 17, 23, 17, 0, -22 }, // 0x23 '#' - { 70, 13, 27, 17, 2, -24 }, // 0x24 '$' - { 114, 25, 23, 29, 2, -22 }, // 0x25 '%' - { 186, 25, 25, 27, 1, -24 }, // 0x26 '&' - { 265, 3, 9, 7, 2, -23 }, // 0x27 ''' - { 269, 9, 30, 12, 2, -23 }, // 0x28 '(' - { 303, 9, 30, 12, 1, -22 }, // 0x29 ')' - { 337, 12, 14, 18, 3, -23 }, // 0x2A '*' - { 358, 16, 18, 20, 2, -17 }, // 0x2B '+' - { 394, 4, 9, 9, 2, -3 }, // 0x2C ',' - { 399, 8, 2, 12, 1, -8 }, // 0x2D '-' - { 401, 4, 4, 9, 2, -3 }, // 0x2E '.' - { 403, 10, 24, 10, 0, -23 }, // 0x2F '/' - { 433, 16, 24, 18, 1, -23 }, // 0x30 '0' - { 481, 10, 24, 18, 3, -23 }, // 0x31 '1' - { 511, 16, 24, 17, 1, -23 }, // 0x32 '2' - { 559, 13, 24, 17, 2, -23 }, // 0x33 '3' - { 598, 16, 23, 18, 0, -22 }, // 0x34 '4' - { 644, 13, 24, 17, 2, -23 }, // 0x35 '5' - { 683, 16, 24, 18, 1, -23 }, // 0x36 '6' - { 731, 14, 23, 18, 1, -22 }, // 0x37 '7' - { 772, 12, 25, 18, 2, -24 }, // 0x38 '8' - { 810, 16, 26, 17, 1, -24 }, // 0x39 '9' - { 862, 4, 17, 9, 2, -16 }, // 0x3A ':' - { 871, 5, 22, 9, 2, -16 }, // 0x3B ';' - { 885, 18, 18, 20, 1, -17 }, // 0x3C '<' - { 926, 18, 9, 20, 1, -12 }, // 0x3D '=' - { 947, 18, 18, 20, 1, -17 }, // 0x3E '>' - { 988, 13, 25, 16, 2, -24 }, // 0x3F '?' - { 1029, 24, 25, 30, 3, -24 }, // 0x40 '@' - { 1104, 24, 23, 25, 1, -22 }, // 0x41 'A' - { 1173, 20, 23, 22, 1, -22 }, // 0x42 'B' - { 1231, 22, 24, 23, 1, -23 }, // 0x43 'C' - { 1297, 23, 23, 25, 1, -22 }, // 0x44 'D' - { 1364, 20, 23, 21, 2, -22 }, // 0x45 'E' - { 1422, 17, 23, 20, 2, -22 }, // 0x46 'F' - { 1471, 23, 24, 25, 1, -23 }, // 0x47 'G' - { 1540, 22, 23, 25, 2, -22 }, // 0x48 'H' - { 1604, 9, 23, 11, 2, -22 }, // 0x49 'I' - { 1630, 12, 23, 13, 0, -22 }, // 0x4A 'J' - { 1665, 23, 23, 25, 2, -22 }, // 0x4B 'K' - { 1732, 19, 23, 21, 2, -22 }, // 0x4C 'L' - { 1787, 29, 23, 31, 1, -22 }, // 0x4D 'M' - { 1871, 23, 23, 25, 1, -22 }, // 0x4E 'N' - { 1938, 23, 24, 25, 1, -23 }, // 0x4F 'O' - { 2007, 18, 23, 20, 1, -22 }, // 0x50 'P' - { 2059, 23, 30, 25, 1, -23 }, // 0x51 'Q' - { 2146, 21, 23, 23, 2, -22 }, // 0x52 'R' - { 2207, 16, 24, 19, 1, -23 }, // 0x53 'S' - { 2255, 20, 23, 21, 1, -22 }, // 0x54 'T' - { 2313, 22, 23, 25, 2, -22 }, // 0x55 'U' - { 2377, 24, 23, 25, 0, -22 }, // 0x56 'V' - { 2446, 33, 23, 33, 0, -22 }, // 0x57 'W' - { 2541, 25, 23, 25, 0, -22 }, // 0x58 'X' - { 2613, 24, 23, 25, 1, -22 }, // 0x59 'Y' - { 2682, 21, 23, 21, 0, -22 }, // 0x5A 'Z' - { 2743, 7, 28, 12, 3, -22 }, // 0x5B '[' - { 2768, 10, 24, 10, 0, -23 }, // 0x5C '\' - { 2798, 7, 28, 12, 2, -22 }, // 0x5D ']' - { 2823, 15, 13, 16, 1, -22 }, // 0x5E '^' - { 2848, 18, 2, 17, 0, 3 }, // 0x5F '_' - { 2853, 8, 6, 9, 1, -23 }, // 0x60 '`' - { 2859, 13, 16, 15, 2, -15 }, // 0x61 'a' - { 2885, 16, 25, 17, 1, -24 }, // 0x62 'b' - { 2935, 14, 16, 16, 1, -15 }, // 0x63 'c' - { 2963, 16, 25, 17, 1, -24 }, // 0x64 'd' - { 3013, 13, 16, 16, 1, -15 }, // 0x65 'e' - { 3039, 13, 25, 13, 0, -24 }, // 0x66 'f' - { 3080, 16, 24, 16, 1, -15 }, // 0x67 'g' - { 3128, 16, 25, 17, 1, -24 }, // 0x68 'h' - { 3178, 8, 24, 10, 0, -23 }, // 0x69 'i' - { 3202, 9, 32, 12, 0, -23 }, // 0x6A 'j' - { 3238, 17, 25, 18, 1, -24 }, // 0x6B 'k' - { 3292, 8, 25, 9, 0, -24 }, // 0x6C 'l' - { 3317, 26, 16, 27, 1, -15 }, // 0x6D 'm' - { 3369, 16, 16, 17, 1, -15 }, // 0x6E 'n' - { 3401, 16, 16, 17, 1, -15 }, // 0x6F 'o' - { 3433, 16, 24, 17, 1, -15 }, // 0x70 'p' - { 3481, 16, 24, 17, 1, -15 }, // 0x71 'q' - { 3529, 11, 16, 12, 1, -15 }, // 0x72 'r' - { 3551, 10, 16, 13, 1, -15 }, // 0x73 's' - { 3571, 8, 19, 10, 2, -18 }, // 0x74 't' - { 3590, 16, 16, 17, 1, -15 }, // 0x75 'u' - { 3622, 16, 16, 16, 0, -15 }, // 0x76 'v' - { 3654, 24, 16, 24, 0, -15 }, // 0x77 'w' - { 3702, 17, 16, 17, 0, -15 }, // 0x78 'x' - { 3736, 16, 24, 16, 0, -15 }, // 0x79 'y' - { 3784, 14, 16, 15, 0, -15 }, // 0x7A 'z' - { 3812, 8, 30, 17, 3, -23 }, // 0x7B '{' - { 3842, 2, 24, 7, 2, -23 }, // 0x7C '|' - { 3848, 8, 30, 17, 6, -22 }, // 0x7D '}' - { 3878, 16, 4, 17, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSerif18pt7b PROGMEM = { - (uint8_t *)FreeSerif18pt7bBitmaps, - (GFXglyph *)FreeSerif18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4558 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h deleted file mode 100644 index 99ff3f497..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h +++ /dev/null @@ -1,690 +0,0 @@ -const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { - 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, - 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, - 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, - 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, - 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, - 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, - 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, - 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, - 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, - 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, - 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, - 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, - 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, - 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, - 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, - 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, - 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, - 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, - 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, - 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, - 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, - 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, - 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, - 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, - 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, - 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, - 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, - 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, - 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, - 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, - 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, - 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, - 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, - 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, - 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, - 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, - 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, - 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, - 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, - 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, - 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, - 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, - 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, - 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, - 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, - 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, - 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, - 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, - 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, - 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, - 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, - 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, - 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, - 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, - 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, - 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, - 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, - 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, - 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, - 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, - 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, - 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, - 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, - 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, - 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, - 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, - 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, - 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, - 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, - 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, - 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, - 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, - 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, - 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, - 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, - 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, - 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, - 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, - 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, - 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, - 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, - 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, - 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, - 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, - 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, - 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, - 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, - 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, - 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, - 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, - 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, - 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, - 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, - 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, - 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, - 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, - 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, - 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, - 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, - 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, - 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, - 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, - 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, - 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, - 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, - 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, - 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, - 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, - 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, - 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, - 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, - 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, - 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, - 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, - 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, - 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, - 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, - 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, - 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, - 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, - 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, - 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, - 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, - 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, - 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, - 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, - 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, - 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, - 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, - 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, - 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, - 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, - 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, - 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, - 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, - 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, - 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, - 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, - 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, - 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, - 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, - 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, - 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, - 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, - 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, - 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, - 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, - 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, - 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, - 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, - 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, - 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, - 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, - 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, - 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, - 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, - 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, - 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, - 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, - 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, - 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, - 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, - 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, - 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, - 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, - 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, - 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, - 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, - 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, - 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, - 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, - 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, - 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, - 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, - 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, - 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, - 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, - 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, - 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, - 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, - 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, - 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, - 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, - 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, - 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, - 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, - 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, - 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, - 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, - 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, - 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, - 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, - 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, - 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, - 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, - 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, - 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, - 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, - 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, - 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, - 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, - 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, - 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, - 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, - 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, - 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, - 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, - 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, - 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, - 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, - 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, - 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, - 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, - 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, - 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, - 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, - 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, - 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, - 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, - 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, - 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, - 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, - 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, - 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, - 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, - 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, - 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, - 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, - 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, - 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, - 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, - 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, - 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, - 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, - 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, - 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, - 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, - 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, - 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, - 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, - 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, - 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, - 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, - 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, - 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, - 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, - 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, - 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, - 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, - 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, - 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, - 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, - 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, - 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, - 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, - 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, - 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, - 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, - 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, - 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, - 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, - 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, - 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, - 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, - 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, - 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, - 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, - 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, - 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, - 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, - 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, - 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, - 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, - 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, - 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, - 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, - 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, - 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, - 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, - 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, - 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, - 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, - 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, - 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, - 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, - 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, - 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, - 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, - 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, - 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, - 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, - 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, - 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, - 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, - 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, - 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, - 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, - 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, - 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, - 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, - 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, - 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, - 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, - 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, - 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, - 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, - 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, - 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, - 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, - 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, - 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, - 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, - 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, - 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, - 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, - 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, - 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, - 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, - 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, - 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, - 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, - 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, - 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, - 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, - 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, - 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, - 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, - 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, - 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, - 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, - 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, - 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, - 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, - 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, - 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, - 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, - 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, - 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, - 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, - 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, - 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, - 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, - 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, - 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, - 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, - 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, - 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, - 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, - 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, - 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, - 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, - 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, - 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, - 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, - 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, - 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, - 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, - 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, - 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, - 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, - 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, - 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, - 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, - 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, - 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, - 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, - 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, - 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, - 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, - 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, - 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, - 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, - 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, - 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, - 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, - 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, - 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, - 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, - 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, - 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, - 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, - 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, - 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, - 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, - 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, - 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, - 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, - 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, - 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, - 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, - 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, - 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, - 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, - 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, - 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, - 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, - 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, - 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, - 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, - 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, - 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, - 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, - 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, - 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, - 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, - 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, - 0x07, 0xC0 }; - -const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 5, 32, 16, 6, -31 }, // 0x21 '!' - { 20, 12, 12, 19, 4, -31 }, // 0x22 '"' - { 38, 23, 31, 23, 0, -30 }, // 0x23 '#' - { 128, 19, 37, 24, 2, -33 }, // 0x24 '$' - { 216, 33, 32, 39, 3, -30 }, // 0x25 '%' - { 348, 32, 33, 37, 2, -31 }, // 0x26 '&' - { 480, 4, 12, 9, 3, -31 }, // 0x27 ''' - { 486, 12, 40, 16, 2, -31 }, // 0x28 '(' - { 546, 12, 40, 16, 2, -30 }, // 0x29 ')' - { 606, 16, 19, 24, 4, -30 }, // 0x2A '*' - { 644, 23, 23, 27, 2, -22 }, // 0x2B '+' - { 711, 6, 11, 12, 2, -4 }, // 0x2C ',' - { 720, 11, 2, 16, 2, -10 }, // 0x2D '-' - { 723, 5, 5, 12, 3, -3 }, // 0x2E '.' - { 727, 14, 32, 14, 0, -30 }, // 0x2F '/' - { 783, 22, 33, 23, 1, -31 }, // 0x30 '0' - { 874, 13, 32, 24, 5, -31 }, // 0x31 '1' - { 926, 21, 31, 23, 1, -30 }, // 0x32 '2' - { 1008, 18, 32, 23, 2, -30 }, // 0x33 '3' - { 1080, 21, 31, 24, 1, -30 }, // 0x34 '4' - { 1162, 19, 33, 24, 2, -31 }, // 0x35 '5' - { 1241, 21, 33, 23, 2, -31 }, // 0x36 '6' - { 1328, 20, 31, 24, 1, -30 }, // 0x37 '7' - { 1406, 18, 33, 23, 3, -31 }, // 0x38 '8' - { 1481, 21, 33, 24, 1, -31 }, // 0x39 '9' - { 1568, 5, 22, 12, 4, -20 }, // 0x3A ':' - { 1582, 6, 27, 12, 3, -20 }, // 0x3B ';' - { 1603, 24, 25, 27, 1, -24 }, // 0x3C '<' - { 1678, 24, 11, 27, 1, -16 }, // 0x3D '=' - { 1711, 24, 25, 27, 2, -23 }, // 0x3E '>' - { 1786, 17, 32, 21, 3, -31 }, // 0x3F '?' - { 1854, 32, 33, 41, 4, -31 }, // 0x40 '@' - { 1986, 32, 32, 34, 1, -31 }, // 0x41 'A' - { 2114, 27, 31, 30, 0, -30 }, // 0x42 'B' - { 2219, 28, 33, 31, 2, -31 }, // 0x43 'C' - { 2335, 31, 31, 34, 1, -30 }, // 0x44 'D' - { 2456, 27, 31, 29, 2, -30 }, // 0x45 'E' - { 2561, 24, 31, 27, 2, -30 }, // 0x46 'F' - { 2654, 31, 33, 35, 2, -31 }, // 0x47 'G' - { 2782, 30, 31, 34, 2, -30 }, // 0x48 'H' - { 2899, 13, 31, 15, 1, -30 }, // 0x49 'I' - { 2950, 17, 32, 18, 0, -30 }, // 0x4A 'J' - { 3018, 32, 31, 33, 1, -30 }, // 0x4B 'K' - { 3142, 26, 31, 29, 2, -30 }, // 0x4C 'L' - { 3243, 39, 31, 41, 1, -30 }, // 0x4D 'M' - { 3395, 32, 32, 34, 1, -30 }, // 0x4E 'N' - { 3523, 30, 33, 34, 2, -31 }, // 0x4F 'O' - { 3647, 23, 31, 27, 2, -30 }, // 0x50 'P' - { 3737, 31, 40, 34, 2, -31 }, // 0x51 'Q' - { 3892, 28, 31, 31, 2, -30 }, // 0x52 'R' - { 4001, 21, 33, 25, 2, -31 }, // 0x53 'S' - { 4088, 27, 31, 28, 1, -30 }, // 0x54 'T' - { 4193, 32, 32, 34, 1, -30 }, // 0x55 'U' - { 4321, 32, 32, 33, 0, -30 }, // 0x56 'V' - { 4449, 44, 32, 45, 0, -30 }, // 0x57 'W' - { 4625, 33, 31, 34, 0, -30 }, // 0x58 'X' - { 4753, 32, 31, 33, 0, -30 }, // 0x59 'Y' - { 4877, 27, 31, 29, 1, -30 }, // 0x5A 'Z' - { 4982, 9, 38, 16, 4, -30 }, // 0x5B '[' - { 5025, 14, 32, 14, 0, -30 }, // 0x5C '\' - { 5081, 9, 38, 16, 3, -30 }, // 0x5D ']' - { 5124, 20, 17, 22, 1, -30 }, // 0x5E '^' - { 5167, 24, 2, 23, 0, 5 }, // 0x5F '_' - { 5173, 10, 8, 12, 1, -31 }, // 0x60 '`' - { 5183, 18, 21, 20, 1, -20 }, // 0x61 'a' - { 5231, 21, 32, 24, 1, -31 }, // 0x62 'b' - { 5315, 19, 21, 21, 1, -20 }, // 0x63 'c' - { 5365, 22, 32, 23, 1, -31 }, // 0x64 'd' - { 5453, 18, 21, 21, 1, -20 }, // 0x65 'e' - { 5501, 17, 33, 18, 0, -32 }, // 0x66 'f' - { 5572, 21, 31, 22, 1, -20 }, // 0x67 'g' - { 5654, 22, 32, 23, 0, -31 }, // 0x68 'h' - { 5742, 11, 32, 13, 0, -31 }, // 0x69 'i' - { 5786, 12, 42, 16, 0, -31 }, // 0x6A 'j' - { 5849, 23, 32, 24, 1, -31 }, // 0x6B 'k' - { 5941, 11, 32, 12, 0, -31 }, // 0x6C 'l' - { 5985, 35, 21, 37, 1, -20 }, // 0x6D 'm' - { 6077, 22, 21, 23, 0, -20 }, // 0x6E 'n' - { 6135, 22, 21, 23, 1, -20 }, // 0x6F 'o' - { 6193, 21, 31, 24, 1, -20 }, // 0x70 'p' - { 6275, 21, 31, 23, 1, -20 }, // 0x71 'q' - { 6357, 15, 21, 16, 1, -20 }, // 0x72 'r' - { 6397, 13, 21, 17, 2, -20 }, // 0x73 's' - { 6432, 12, 26, 13, 1, -25 }, // 0x74 't' - { 6471, 22, 21, 23, 1, -20 }, // 0x75 'u' - { 6529, 22, 22, 22, 0, -20 }, // 0x76 'v' - { 6590, 32, 22, 32, 0, -20 }, // 0x77 'w' - { 6678, 22, 21, 23, 0, -20 }, // 0x78 'x' - { 6736, 22, 31, 22, 0, -20 }, // 0x79 'y' - { 6822, 18, 21, 20, 1, -20 }, // 0x7A 'z' - { 6870, 11, 41, 23, 5, -31 }, // 0x7B '{' - { 6927, 3, 32, 9, 3, -30 }, // 0x7C '|' - { 6939, 11, 41, 23, 7, -31 }, // 0x7D '}' - { 6996, 22, 5, 23, 1, -13 } }; // 0x7E '~' - -const GFXfont FreeSerif24pt7b PROGMEM = { - (uint8_t *)FreeSerif24pt7bBitmaps, - (GFXglyph *)FreeSerif24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 7682 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h deleted file mode 100644 index cdb20c77b..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h +++ /dev/null @@ -1,195 +0,0 @@ -const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, - 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, - 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, - 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, - 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, - 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, - 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, - 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, - 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, - 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, - 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, - 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, - 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, - 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, - 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, - 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, - 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, - 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, - 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, - 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, - 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, - 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, - 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, - 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, - 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, - 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, - 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, - 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, - 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, - 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, - 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, - 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, - 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, - 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, - 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, - 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, - 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, - 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, - 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, - 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, - 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, - 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, - 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, - 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, - 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, - 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, - 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, - 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, - 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, - 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, - 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, - 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, - 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, - 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, - 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, - 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, - 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, - 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, - 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, - 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, - 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, - 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, - 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, - 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, - 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, - 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, - 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, - 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, - 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, - 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, - 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, - 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, - 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, - 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, - 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, - 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, - 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, - 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, - 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, - 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, - 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, - 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, - 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, - 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, - 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, - 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, - 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0 }; - -const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 2, 12, 6, 2, -11 }, // 0x21 '!' - { 3, 5, 4, 7, 1, -11 }, // 0x22 '"' - { 6, 9, 12, 9, 0, -11 }, // 0x23 '#' - { 20, 8, 14, 9, 1, -12 }, // 0x24 '$' - { 34, 13, 12, 15, 1, -11 }, // 0x25 '%' - { 54, 13, 13, 14, 1, -12 }, // 0x26 '&' - { 76, 2, 4, 4, 1, -11 }, // 0x27 ''' - { 77, 5, 15, 6, 1, -11 }, // 0x28 '(' - { 87, 5, 15, 6, 0, -11 }, // 0x29 ')' - { 97, 6, 8, 9, 3, -11 }, // 0x2A '*' - { 103, 9, 9, 10, 0, -8 }, // 0x2B '+' - { 114, 2, 3, 4, 2, 0 }, // 0x2C ',' - { 115, 4, 1, 6, 1, -3 }, // 0x2D '-' - { 116, 2, 2, 5, 1, -1 }, // 0x2E '.' - { 117, 5, 12, 5, 0, -11 }, // 0x2F '/' - { 125, 9, 13, 9, 0, -12 }, // 0x30 '0' - { 140, 5, 13, 9, 2, -12 }, // 0x31 '1' - { 149, 8, 12, 9, 1, -11 }, // 0x32 '2' - { 161, 8, 12, 9, 0, -11 }, // 0x33 '3' - { 173, 7, 12, 9, 1, -11 }, // 0x34 '4' - { 184, 8, 12, 9, 0, -11 }, // 0x35 '5' - { 196, 8, 13, 9, 1, -12 }, // 0x36 '6' - { 209, 8, 12, 9, 0, -11 }, // 0x37 '7' - { 221, 7, 13, 9, 1, -12 }, // 0x38 '8' - { 233, 8, 14, 9, 1, -12 }, // 0x39 '9' - { 247, 2, 8, 5, 1, -7 }, // 0x3A ':' - { 249, 3, 10, 5, 1, -7 }, // 0x3B ';' - { 253, 9, 9, 10, 1, -8 }, // 0x3C '<' - { 264, 9, 5, 10, 1, -6 }, // 0x3D '=' - { 270, 10, 9, 10, 0, -8 }, // 0x3E '>' - { 282, 7, 13, 8, 1, -12 }, // 0x3F '?' - { 294, 12, 13, 16, 2, -12 }, // 0x40 '@' - { 314, 13, 12, 13, 0, -11 }, // 0x41 'A' - { 334, 11, 12, 11, 0, -11 }, // 0x42 'B' - { 351, 11, 12, 12, 1, -11 }, // 0x43 'C' - { 368, 12, 12, 13, 0, -11 }, // 0x44 'D' - { 386, 10, 12, 11, 1, -11 }, // 0x45 'E' - { 401, 9, 12, 10, 1, -11 }, // 0x46 'F' - { 415, 12, 12, 13, 1, -11 }, // 0x47 'G' - { 433, 11, 12, 13, 1, -11 }, // 0x48 'H' - { 450, 4, 12, 6, 1, -11 }, // 0x49 'I' - { 456, 6, 12, 7, 0, -11 }, // 0x4A 'J' - { 465, 12, 12, 13, 1, -11 }, // 0x4B 'K' - { 483, 10, 12, 11, 1, -11 }, // 0x4C 'L' - { 498, 15, 12, 16, 0, -11 }, // 0x4D 'M' - { 521, 11, 12, 13, 1, -11 }, // 0x4E 'N' - { 538, 11, 13, 13, 1, -12 }, // 0x4F 'O' - { 556, 9, 12, 10, 1, -11 }, // 0x50 'P' - { 570, 11, 16, 13, 1, -12 }, // 0x51 'Q' - { 592, 11, 12, 12, 1, -11 }, // 0x52 'R' - { 609, 9, 12, 10, 0, -11 }, // 0x53 'S' - { 623, 11, 12, 11, 0, -11 }, // 0x54 'T' - { 640, 11, 12, 13, 1, -11 }, // 0x55 'U' - { 657, 12, 12, 13, 0, -11 }, // 0x56 'V' - { 675, 17, 12, 17, 0, -11 }, // 0x57 'W' - { 701, 13, 12, 13, 0, -11 }, // 0x58 'X' - { 721, 12, 12, 13, 0, -11 }, // 0x59 'Y' - { 739, 11, 12, 11, 0, -11 }, // 0x5A 'Z' - { 756, 3, 15, 6, 2, -11 }, // 0x5B '[' - { 762, 5, 12, 5, 0, -11 }, // 0x5C '\' - { 770, 3, 15, 6, 1, -11 }, // 0x5D ']' - { 776, 8, 7, 8, 0, -11 }, // 0x5E '^' - { 783, 9, 1, 9, 0, 2 }, // 0x5F '_' - { 785, 4, 3, 5, 0, -11 }, // 0x60 '`' - { 787, 7, 8, 8, 1, -7 }, // 0x61 'a' - { 794, 9, 13, 9, 0, -12 }, // 0x62 'b' - { 809, 7, 8, 8, 0, -7 }, // 0x63 'c' - { 816, 9, 13, 9, 0, -12 }, // 0x64 'd' - { 831, 8, 8, 8, 0, -7 }, // 0x65 'e' - { 839, 7, 13, 7, 1, -12 }, // 0x66 'f' - { 851, 10, 12, 8, 0, -7 }, // 0x67 'g' - { 866, 9, 13, 9, 0, -12 }, // 0x68 'h' - { 881, 4, 11, 5, 1, -10 }, // 0x69 'i' - { 887, 5, 15, 6, 0, -10 }, // 0x6A 'j' - { 897, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 912, 4, 13, 5, 1, -12 }, // 0x6C 'l' - { 919, 14, 8, 14, 0, -7 }, // 0x6D 'm' - { 933, 9, 8, 9, 0, -7 }, // 0x6E 'n' - { 942, 9, 8, 9, 0, -7 }, // 0x6F 'o' - { 951, 9, 12, 9, 0, -7 }, // 0x70 'p' - { 965, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 979, 6, 8, 6, 0, -7 }, // 0x72 'r' - { 985, 6, 8, 7, 1, -7 }, // 0x73 's' - { 991, 5, 9, 5, 0, -8 }, // 0x74 't' - { 997, 9, 8, 9, 0, -7 }, // 0x75 'u' - { 1006, 8, 8, 8, 0, -7 }, // 0x76 'v' - { 1014, 12, 8, 12, 0, -7 }, // 0x77 'w' - { 1026, 9, 8, 9, 0, -7 }, // 0x78 'x' - { 1035, 8, 12, 8, 0, -7 }, // 0x79 'y' - { 1047, 7, 8, 7, 1, -7 }, // 0x7A 'z' - { 1054, 5, 16, 9, 1, -12 }, // 0x7B '{' - { 1064, 1, 12, 4, 1, -11 }, // 0x7C '|' - { 1066, 5, 16, 9, 3, -11 }, // 0x7D '}' - { 1076, 9, 3, 9, 0, -5 } }; // 0x7E '~' - -const GFXfont FreeSerif9pt7b PROGMEM = { - (uint8_t *)FreeSerif9pt7bBitmaps, - (GFXglyph *)FreeSerif9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1752 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h deleted file mode 100644 index 1d499811f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h +++ /dev/null @@ -1,271 +0,0 @@ -const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { - 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, - 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, - 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, - 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, - 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, - 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, - 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, - 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, - 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, - 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, - 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, - 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, - 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, - 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, - 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, - 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, - 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, - 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, - 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, - 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, - 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, - 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, - 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, - 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, - 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, - 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, - 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, - 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, - 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, - 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, - 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, - 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, - 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, - 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, - 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, - 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, - 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, - 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, - 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, - 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, - 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, - 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, - 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, - 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, - 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, - 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, - 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, - 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, - 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, - 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, - 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, - 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, - 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, - 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, - 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, - 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, - 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, - 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, - 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, - 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, - 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, - 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, - 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, - 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, - 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, - 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, - 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, - 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, - 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, - 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, - 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, - 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, - 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, - 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, - 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, - 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, - 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, - 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, - 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, - 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, - 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, - 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, - 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, - 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, - 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, - 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, - 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, - 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, - 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, - 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, - 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, - 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, - 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, - 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, - 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, - 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, - 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, - 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, - 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, - 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, - 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, - 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, - 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, - 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, - 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, - 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, - 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, - 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, - 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, - 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, - 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, - 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, - 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, - 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, - 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, - 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, - 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, - 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, - 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, - 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, - 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, - 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, - 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, - 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, - 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, - 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, - 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, - 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, - 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, - 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, - 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, - 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, - 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, - 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, - 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, - 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, - 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, - 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, - 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, - 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, - 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, - 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, - 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, - 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, - 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0 }; - -const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 4, 16, 8, 2, -15 }, // 0x21 '!' - { 8, 9, 7, 13, 2, -15 }, // 0x22 '"' - { 16, 12, 16, 12, 0, -15 }, // 0x23 '#' - { 40, 11, 20, 12, 1, -17 }, // 0x24 '$' - { 68, 18, 16, 24, 3, -15 }, // 0x25 '%' - { 104, 18, 16, 20, 1, -15 }, // 0x26 '&' - { 140, 3, 7, 7, 2, -15 }, // 0x27 ''' - { 143, 6, 21, 8, 1, -16 }, // 0x28 '(' - { 159, 6, 21, 8, 1, -16 }, // 0x29 ')' - { 175, 9, 10, 12, 2, -15 }, // 0x2A '*' - { 187, 12, 12, 16, 2, -11 }, // 0x2B '+' - { 205, 4, 8, 6, 1, -3 }, // 0x2C ',' - { 209, 6, 3, 8, 1, -6 }, // 0x2D '-' - { 212, 4, 4, 6, 1, -3 }, // 0x2E '.' - { 214, 8, 17, 7, -1, -15 }, // 0x2F '/' - { 231, 11, 16, 12, 1, -15 }, // 0x30 '0' - { 253, 9, 16, 12, 1, -15 }, // 0x31 '1' - { 271, 12, 16, 12, 0, -15 }, // 0x32 '2' - { 295, 11, 16, 12, 1, -15 }, // 0x33 '3' - { 317, 10, 16, 12, 1, -15 }, // 0x34 '4' - { 337, 11, 16, 12, 1, -15 }, // 0x35 '5' - { 359, 11, 16, 12, 1, -15 }, // 0x36 '6' - { 381, 11, 16, 12, 0, -15 }, // 0x37 '7' - { 403, 11, 16, 12, 1, -15 }, // 0x38 '8' - { 425, 11, 16, 12, 1, -15 }, // 0x39 '9' - { 447, 4, 11, 8, 2, -10 }, // 0x3A ':' - { 453, 4, 15, 8, 2, -10 }, // 0x3B ';' - { 461, 14, 14, 16, 1, -12 }, // 0x3C '<' - { 486, 14, 8, 16, 1, -9 }, // 0x3D '=' - { 500, 14, 14, 16, 1, -12 }, // 0x3E '>' - { 525, 10, 16, 12, 1, -15 }, // 0x3F '?' - { 545, 16, 16, 22, 3, -15 }, // 0x40 '@' - { 577, 17, 16, 17, 0, -15 }, // 0x41 'A' - { 611, 14, 16, 16, 1, -15 }, // 0x42 'B' - { 639, 15, 16, 17, 1, -15 }, // 0x43 'C' - { 669, 17, 16, 18, 0, -15 }, // 0x44 'D' - { 703, 15, 16, 16, 1, -15 }, // 0x45 'E' - { 733, 14, 16, 15, 1, -15 }, // 0x46 'F' - { 761, 16, 16, 19, 1, -15 }, // 0x47 'G' - { 793, 16, 16, 19, 2, -15 }, // 0x48 'H' - { 825, 8, 16, 9, 1, -15 }, // 0x49 'I' - { 841, 12, 18, 12, 0, -15 }, // 0x4A 'J' - { 868, 17, 16, 19, 2, -15 }, // 0x4B 'K' - { 902, 14, 16, 16, 2, -15 }, // 0x4C 'L' - { 930, 20, 16, 23, 1, -15 }, // 0x4D 'M' - { 970, 15, 16, 17, 1, -15 }, // 0x4E 'N' - { 1000, 17, 16, 19, 1, -15 }, // 0x4F 'O' - { 1034, 12, 16, 15, 2, -15 }, // 0x50 'P' - { 1058, 17, 20, 19, 1, -15 }, // 0x51 'Q' - { 1101, 16, 16, 17, 1, -15 }, // 0x52 'R' - { 1133, 12, 16, 14, 1, -15 }, // 0x53 'S' - { 1157, 15, 16, 15, 0, -15 }, // 0x54 'T' - { 1187, 15, 16, 17, 1, -15 }, // 0x55 'U' - { 1217, 17, 17, 17, 0, -15 }, // 0x56 'V' - { 1254, 23, 16, 24, 0, -15 }, // 0x57 'W' - { 1300, 17, 16, 17, 0, -15 }, // 0x58 'X' - { 1334, 16, 16, 17, 1, -15 }, // 0x59 'Y' - { 1366, 15, 16, 16, 0, -15 }, // 0x5A 'Z' - { 1396, 5, 20, 8, 2, -15 }, // 0x5B '[' - { 1409, 8, 17, 7, -1, -15 }, // 0x5C '\' - { 1426, 5, 20, 8, 2, -15 }, // 0x5D ']' - { 1439, 10, 9, 14, 2, -15 }, // 0x5E '^' - { 1451, 12, 1, 12, 0, 4 }, // 0x5F '_' - { 1453, 5, 4, 8, 0, -16 }, // 0x60 '`' - { 1456, 11, 11, 12, 1, -10 }, // 0x61 'a' - { 1472, 12, 16, 13, 1, -15 }, // 0x62 'b' - { 1496, 9, 11, 10, 1, -10 }, // 0x63 'c' - { 1509, 12, 16, 13, 1, -15 }, // 0x64 'd' - { 1533, 10, 11, 11, 1, -10 }, // 0x65 'e' - { 1547, 8, 16, 9, 1, -15 }, // 0x66 'f' - { 1563, 11, 16, 12, 1, -10 }, // 0x67 'g' - { 1585, 12, 16, 13, 1, -15 }, // 0x68 'h' - { 1609, 6, 16, 7, 1, -15 }, // 0x69 'i' - { 1621, 8, 21, 10, 0, -15 }, // 0x6A 'j' - { 1642, 13, 16, 13, 1, -15 }, // 0x6B 'k' - { 1668, 6, 16, 7, 1, -15 }, // 0x6C 'l' - { 1680, 19, 11, 20, 1, -10 }, // 0x6D 'm' - { 1707, 12, 11, 13, 1, -10 }, // 0x6E 'n' - { 1724, 11, 11, 12, 1, -10 }, // 0x6F 'o' - { 1740, 12, 16, 13, 1, -10 }, // 0x70 'p' - { 1764, 12, 16, 13, 1, -10 }, // 0x71 'q' - { 1788, 10, 11, 10, 1, -10 }, // 0x72 'r' - { 1802, 8, 11, 10, 1, -10 }, // 0x73 's' - { 1813, 8, 15, 8, 1, -14 }, // 0x74 't' - { 1828, 12, 11, 14, 1, -10 }, // 0x75 'u' - { 1845, 11, 11, 12, 0, -10 }, // 0x76 'v' - { 1861, 17, 11, 17, 0, -10 }, // 0x77 'w' - { 1885, 12, 11, 12, 0, -10 }, // 0x78 'x' - { 1902, 11, 16, 12, 0, -10 }, // 0x79 'y' - { 1924, 10, 11, 11, 1, -10 }, // 0x7A 'z' - { 1938, 8, 21, 9, 0, -16 }, // 0x7B '{' - { 1959, 2, 17, 5, 2, -15 }, // 0x7C '|' - { 1964, 8, 21, 9, 2, -16 }, // 0x7D '}' - { 1985, 11, 4, 12, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSerifBold12pt7b PROGMEM = { - (uint8_t *)FreeSerifBold12pt7bBitmaps, - (GFXglyph *)FreeSerifBold12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2663 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h deleted file mode 100644 index 11d3c7ea2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h +++ /dev/null @@ -1,462 +0,0 @@ -const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { - 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, - 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, - 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, - 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, - 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, - 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, - 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, - 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, - 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, - 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, - 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, - 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, - 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, - 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, - 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, - 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, - 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, - 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, - 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, - 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, - 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, - 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, - 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, - 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, - 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, - 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, - 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, - 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, - 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, - 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, - 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, - 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, - 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, - 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, - 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, - 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, - 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, - 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, - 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, - 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, - 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, - 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, - 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, - 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, - 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, - 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, - 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, - 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, - 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, - 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, - 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, - 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, - 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, - 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, - 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, - 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, - 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, - 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, - 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, - 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, - 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, - 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, - 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, - 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, - 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, - 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, - 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, - 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, - 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, - 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, - 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, - 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, - 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, - 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, - 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, - 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, - 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, - 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, - 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, - 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, - 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, - 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, - 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, - 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, - 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, - 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, - 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, - 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, - 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, - 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, - 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, - 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, - 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, - 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, - 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, - 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, - 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, - 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, - 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, - 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, - 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, - 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, - 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, - 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, - 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, - 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, - 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, - 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, - 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, - 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, - 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, - 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, - 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, - 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, - 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, - 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, - 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, - 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, - 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, - 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, - 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, - 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, - 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, - 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, - 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, - 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, - 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, - 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, - 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, - 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, - 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, - 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, - 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, - 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, - 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, - 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, - 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, - 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, - 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, - 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, - 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, - 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, - 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, - 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, - 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, - 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, - 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, - 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, - 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, - 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, - 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, - 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, - 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, - 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, - 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, - 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, - 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, - 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, - 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, - 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, - 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, - 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, - 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, - 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, - 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, - 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, - 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, - 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, - 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, - 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, - 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, - 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, - 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, - 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, - 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, - 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, - 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, - 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, - 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, - 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, - 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, - 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, - 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, - 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, - 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, - 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, - 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, - 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, - 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, - 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, - 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, - 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, - 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, - 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, - 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, - 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, - 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, - 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, - 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, - 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, - 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, - 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, - 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, - 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, - 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, - 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, - 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, - 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, - 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, - 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, - 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, - 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, - 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, - 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, - 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, - 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, - 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, - 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, - 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, - 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, - 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, - 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, - 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, - 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, - 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, - 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, - 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, - 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, - 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, - 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, - 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, - 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, - 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, - 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, - 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, - 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, - 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, - 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, - 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, - 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, - 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, - 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, - 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, - 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, - 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, - 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, - 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, - 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, - 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, - 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, - 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, - 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, - 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, - 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, - 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, - 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, - 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, - 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, - 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, - 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, - 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, - 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, - 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, - 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, - 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, - 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, - 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, - 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, - 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, - 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, - 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, - 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, - 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, - 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, - 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, - 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, - 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, - 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, - 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, - 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, - 0x7C }; - -const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 6, 24, 12, 3, -23 }, // 0x21 '!' - { 18, 13, 10, 19, 3, -23 }, // 0x22 '"' - { 35, 18, 24, 17, 0, -23 }, // 0x23 '#' - { 89, 15, 28, 17, 1, -25 }, // 0x24 '$' - { 142, 27, 24, 35, 4, -23 }, // 0x25 '%' - { 223, 26, 25, 29, 2, -23 }, // 0x26 '&' - { 305, 4, 10, 10, 3, -23 }, // 0x27 ''' - { 310, 9, 30, 12, 2, -23 }, // 0x28 '(' - { 344, 9, 30, 12, 1, -23 }, // 0x29 ')' - { 378, 14, 15, 18, 2, -23 }, // 0x2A '*' - { 405, 19, 19, 24, 2, -17 }, // 0x2B '+' - { 451, 6, 12, 9, 1, -5 }, // 0x2C ',' - { 460, 8, 4, 12, 2, -9 }, // 0x2D '-' - { 464, 6, 6, 9, 1, -5 }, // 0x2E '.' - { 469, 11, 25, 10, -1, -23 }, // 0x2F '/' - { 504, 16, 24, 18, 1, -23 }, // 0x30 '0' - { 552, 12, 24, 18, 3, -23 }, // 0x31 '1' - { 588, 16, 24, 17, 1, -23 }, // 0x32 '2' - { 636, 16, 24, 18, 0, -23 }, // 0x33 '3' - { 684, 15, 24, 18, 1, -23 }, // 0x34 '4' - { 729, 15, 24, 18, 1, -23 }, // 0x35 '5' - { 774, 16, 24, 18, 1, -23 }, // 0x36 '6' - { 822, 16, 24, 17, 1, -23 }, // 0x37 '7' - { 870, 16, 24, 17, 1, -23 }, // 0x38 '8' - { 918, 16, 24, 18, 1, -23 }, // 0x39 '9' - { 966, 6, 16, 12, 3, -15 }, // 0x3A ':' - { 978, 7, 22, 12, 2, -15 }, // 0x3B ';' - { 998, 19, 20, 24, 2, -18 }, // 0x3C '<' - { 1046, 19, 12, 24, 2, -14 }, // 0x3D '=' - { 1075, 19, 20, 24, 3, -18 }, // 0x3E '>' - { 1123, 14, 24, 18, 2, -23 }, // 0x3F '?' - { 1165, 24, 25, 33, 4, -23 }, // 0x40 '@' - { 1240, 24, 24, 25, 1, -23 }, // 0x41 'A' - { 1312, 21, 24, 23, 1, -23 }, // 0x42 'B' - { 1375, 23, 25, 25, 1, -23 }, // 0x43 'C' - { 1447, 23, 24, 26, 1, -23 }, // 0x44 'D' - { 1516, 21, 24, 23, 2, -23 }, // 0x45 'E' - { 1579, 19, 24, 22, 2, -23 }, // 0x46 'F' - { 1636, 25, 25, 27, 1, -23 }, // 0x47 'G' - { 1715, 24, 24, 27, 2, -23 }, // 0x48 'H' - { 1787, 11, 24, 14, 2, -23 }, // 0x49 'I' - { 1820, 16, 27, 18, 0, -23 }, // 0x4A 'J' - { 1874, 25, 24, 27, 2, -23 }, // 0x4B 'K' - { 1949, 21, 24, 23, 2, -23 }, // 0x4C 'L' - { 2012, 31, 24, 33, 1, -23 }, // 0x4D 'M' - { 2105, 23, 24, 25, 1, -23 }, // 0x4E 'N' - { 2174, 25, 25, 27, 1, -23 }, // 0x4F 'O' - { 2253, 19, 24, 22, 2, -23 }, // 0x50 'P' - { 2310, 25, 30, 27, 1, -23 }, // 0x51 'Q' - { 2404, 23, 24, 25, 2, -23 }, // 0x52 'R' - { 2473, 16, 25, 20, 2, -23 }, // 0x53 'S' - { 2523, 21, 24, 23, 1, -23 }, // 0x54 'T' - { 2586, 22, 25, 25, 2, -23 }, // 0x55 'U' - { 2655, 24, 24, 25, 0, -23 }, // 0x56 'V' - { 2727, 34, 25, 34, 0, -23 }, // 0x57 'W' - { 2834, 24, 24, 25, 1, -23 }, // 0x58 'X' - { 2906, 24, 24, 25, 1, -23 }, // 0x59 'Y' - { 2978, 21, 24, 23, 1, -23 }, // 0x5A 'Z' - { 3041, 8, 29, 12, 2, -23 }, // 0x5B '[' - { 3070, 11, 25, 10, -1, -23 }, // 0x5C '\' - { 3105, 8, 29, 12, 2, -23 }, // 0x5D ']' - { 3134, 15, 13, 20, 3, -23 }, // 0x5E '^' - { 3159, 18, 3, 17, 0, 3 }, // 0x5F '_' - { 3166, 8, 6, 12, 0, -23 }, // 0x60 '`' - { 3172, 16, 16, 18, 1, -15 }, // 0x61 'a' - { 3204, 18, 24, 19, 1, -23 }, // 0x62 'b' - { 3258, 14, 16, 15, 1, -15 }, // 0x63 'c' - { 3286, 18, 24, 19, 1, -23 }, // 0x64 'd' - { 3340, 14, 16, 16, 1, -15 }, // 0x65 'e' - { 3368, 11, 24, 14, 2, -23 }, // 0x66 'f' - { 3401, 17, 23, 17, 1, -15 }, // 0x67 'g' - { 3450, 17, 24, 19, 1, -23 }, // 0x68 'h' - { 3501, 7, 24, 10, 2, -23 }, // 0x69 'i' - { 3522, 11, 31, 14, 0, -23 }, // 0x6A 'j' - { 3565, 18, 24, 19, 1, -23 }, // 0x6B 'k' - { 3619, 7, 24, 10, 1, -23 }, // 0x6C 'l' - { 3640, 27, 16, 29, 1, -15 }, // 0x6D 'm' - { 3694, 17, 16, 19, 1, -15 }, // 0x6E 'n' - { 3728, 17, 16, 18, 1, -15 }, // 0x6F 'o' - { 3762, 19, 23, 19, 0, -15 }, // 0x70 'p' - { 3817, 17, 23, 19, 1, -15 }, // 0x71 'q' - { 3866, 13, 16, 15, 1, -15 }, // 0x72 'r' - { 3892, 12, 16, 14, 1, -15 }, // 0x73 's' - { 3916, 10, 21, 12, 1, -20 }, // 0x74 't' - { 3943, 18, 16, 20, 1, -15 }, // 0x75 'u' - { 3979, 17, 16, 17, 0, -15 }, // 0x76 'v' - { 4013, 24, 16, 25, 0, -15 }, // 0x77 'w' - { 4061, 16, 16, 18, 1, -15 }, // 0x78 'x' - { 4093, 16, 23, 17, 0, -15 }, // 0x79 'y' - { 4139, 14, 16, 16, 0, -15 }, // 0x7A 'z' - { 4167, 11, 31, 14, 1, -24 }, // 0x7B '{' - { 4210, 3, 25, 8, 2, -23 }, // 0x7C '|' - { 4220, 11, 31, 14, 3, -24 }, // 0x7D '}' - { 4263, 16, 5, 18, 1, -11 } }; // 0x7E '~' - -const GFXfont FreeSerifBold18pt7b PROGMEM = { - (uint8_t *)FreeSerifBold18pt7bBitmaps, - (GFXglyph *)FreeSerifBold18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4945 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h deleted file mode 100644 index 0eb2d0b1a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h +++ /dev/null @@ -1,759 +0,0 @@ -const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { - 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, - 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, - 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, - 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, - 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, - 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, - 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, - 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, - 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, - 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, - 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, - 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, - 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, - 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, - 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, - 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, - 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, - 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, - 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, - 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, - 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, - 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, - 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, - 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, - 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, - 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, - 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, - 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, - 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, - 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, - 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, - 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, - 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, - 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, - 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, - 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, - 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, - 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, - 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, - 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, - 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, - 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, - 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, - 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, - 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, - 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, - 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, - 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, - 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, - 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, - 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, - 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, - 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, - 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, - 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, - 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, - 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, - 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, - 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, - 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, - 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, - 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, - 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, - 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, - 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, - 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, - 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, - 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, - 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, - 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, - 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, - 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, - 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, - 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, - 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, - 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, - 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, - 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, - 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, - 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, - 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, - 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, - 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, - 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, - 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, - 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, - 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, - 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, - 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, - 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, - 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, - 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, - 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, - 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, - 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, - 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, - 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, - 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, - 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, - 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, - 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, - 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, - 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, - 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, - 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, - 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, - 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, - 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, - 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, - 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, - 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, - 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, - 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, - 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, - 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, - 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, - 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, - 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, - 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, - 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, - 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, - 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, - 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, - 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, - 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, - 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, - 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, - 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, - 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, - 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, - 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, - 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, - 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, - 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, - 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, - 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, - 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, - 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, - 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, - 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, - 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, - 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, - 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, - 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, - 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, - 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, - 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, - 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, - 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, - 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, - 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, - 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, - 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, - 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, - 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, - 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, - 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, - 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, - 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, - 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, - 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, - 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, - 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, - 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, - 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, - 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, - 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, - 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, - 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, - 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, - 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, - 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, - 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, - 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, - 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, - 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, - 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, - 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, - 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, - 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, - 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, - 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, - 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, - 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, - 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, - 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, - 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, - 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, - 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, - 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, - 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, - 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, - 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, - 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, - 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, - 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, - 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, - 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, - 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, - 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, - 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, - 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, - 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, - 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, - 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, - 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, - 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, - 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, - 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, - 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, - 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, - 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, - 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, - 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, - 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, - 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, - 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, - 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, - 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, - 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, - 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, - 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, - 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, - 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, - 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, - 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, - 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, - 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, - 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, - 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, - 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, - 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, - 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, - 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, - 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, - 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, - 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, - 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, - 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, - 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, - 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, - 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, - 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, - 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, - 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, - 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, - 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, - 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, - 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, - 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, - 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, - 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, - 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, - 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, - 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, - 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, - 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, - 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, - 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, - 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, - 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, - 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, - 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, - 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, - 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, - 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, - 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, - 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, - 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, - 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, - 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, - 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, - 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, - 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, - 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, - 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, - 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, - 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, - 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, - 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, - 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, - 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, - 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, - 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, - 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, - 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, - 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, - 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, - 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, - 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, - 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, - 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, - 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, - 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, - 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, - 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, - 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, - 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, - 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, - 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, - 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, - 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, - 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, - 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, - 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, - 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, - 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, - 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, - 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, - 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, - 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, - 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, - 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, - 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, - 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, - 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, - 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, - 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, - 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, - 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, - 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, - 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, - 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, - 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, - 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, - 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, - 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, - 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, - 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, - 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, - 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, - 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, - 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, - 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, - 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, - 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, - 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, - 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, - 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, - 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, - 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, - 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, - 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, - 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, - 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, - 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, - 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, - 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, - 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, - 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, - 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, - 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, - 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, - 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, - 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, - 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, - 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, - 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, - 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, - 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, - 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, - 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, - 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, - 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, - 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, - 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, - 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, - 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, - 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, - 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, - 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, - 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, - 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, - 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, - 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, - 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, - 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, - 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, - 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, - 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, - 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, - 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, - 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, - 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, - 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, - 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, - 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, - 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, - 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, - 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, - 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, - 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, - 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, - 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, - 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, - 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, - 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, - 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, - 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, - 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, - 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, - 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, - 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, - 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, - 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, - 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, - 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, - 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, - 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, - 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, - 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, - 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, - 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, - 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, - 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, - 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, - 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, - 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, - 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, - 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, - 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, - 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, - 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, - 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, - 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, - 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, - 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, - 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, - 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, - 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, - 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, - 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, - 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, - 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, - 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, - 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, - 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, - 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, - 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, - 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, - 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, - 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, - 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, - 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, - 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, - 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, - 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, - 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, - 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, - 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, - 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, - 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, - 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, - 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, - 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, - 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, - 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, - 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, - 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, - 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, - 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, - 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, - 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, - 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, - 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, - 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, - 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, - 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, - 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, - 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, - 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, - 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, - 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, - 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, - 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, - 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, - 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, - 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, - 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, - 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, - 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, - 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, - 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, - 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, - 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, - 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, - 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, - 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, - 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, - 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00 }; - -const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 8, 34, 16, 4, -32 }, // 0x21 '!' - { 34, 17, 13, 26, 4, -32 }, // 0x22 '"' - { 62, 23, 33, 23, 0, -32 }, // 0x23 '#' - { 157, 21, 39, 24, 1, -34 }, // 0x24 '$' - { 260, 35, 34, 47, 6, -32 }, // 0x25 '%' - { 409, 34, 34, 39, 3, -32 }, // 0x26 '&' - { 554, 5, 13, 13, 4, -32 }, // 0x27 ''' - { 563, 12, 41, 16, 2, -32 }, // 0x28 '(' - { 625, 12, 41, 16, 1, -32 }, // 0x29 ')' - { 687, 18, 21, 24, 3, -32 }, // 0x2A '*' - { 735, 26, 25, 32, 3, -24 }, // 0x2B '+' - { 817, 8, 15, 12, 2, -6 }, // 0x2C ',' - { 832, 11, 5, 16, 2, -12 }, // 0x2D '-' - { 839, 8, 8, 12, 2, -6 }, // 0x2E '.' - { 847, 15, 33, 13, -1, -32 }, // 0x2F '/' - { 909, 22, 34, 23, 1, -32 }, // 0x30 '0' - { 1003, 18, 33, 23, 3, -32 }, // 0x31 '1' - { 1078, 21, 33, 24, 1, -32 }, // 0x32 '2' - { 1165, 21, 34, 24, 1, -32 }, // 0x33 '3' - { 1255, 21, 33, 24, 1, -32 }, // 0x34 '4' - { 1342, 20, 32, 23, 2, -31 }, // 0x35 '5' - { 1422, 21, 34, 24, 1, -32 }, // 0x36 '6' - { 1512, 21, 32, 23, 1, -31 }, // 0x37 '7' - { 1596, 21, 34, 23, 1, -32 }, // 0x38 '8' - { 1686, 22, 34, 23, 1, -32 }, // 0x39 '9' - { 1780, 8, 24, 16, 4, -22 }, // 0x3A ':' - { 1804, 9, 31, 16, 3, -22 }, // 0x3B ';' - { 1839, 26, 26, 32, 3, -24 }, // 0x3C '<' - { 1924, 26, 17, 32, 3, -20 }, // 0x3D '=' - { 1980, 26, 26, 32, 3, -24 }, // 0x3E '>' - { 2065, 18, 34, 24, 3, -32 }, // 0x3F '?' - { 2142, 33, 34, 44, 5, -32 }, // 0x40 '@' - { 2283, 32, 33, 34, 1, -32 }, // 0x41 'A' - { 2415, 28, 32, 31, 1, -31 }, // 0x42 'B' - { 2527, 30, 34, 33, 2, -32 }, // 0x43 'C' - { 2655, 32, 32, 34, 1, -31 }, // 0x44 'D' - { 2783, 28, 32, 32, 2, -31 }, // 0x45 'E' - { 2895, 25, 32, 29, 2, -31 }, // 0x46 'F' - { 2995, 33, 34, 36, 2, -32 }, // 0x47 'G' - { 3136, 33, 32, 37, 2, -31 }, // 0x48 'H' - { 3268, 15, 32, 18, 2, -31 }, // 0x49 'I' - { 3328, 22, 37, 24, 0, -31 }, // 0x4A 'J' - { 3430, 34, 32, 36, 2, -31 }, // 0x4B 'K' - { 3566, 28, 32, 31, 2, -31 }, // 0x4C 'L' - { 3678, 43, 32, 45, 0, -31 }, // 0x4D 'M' - { 3850, 31, 32, 34, 1, -31 }, // 0x4E 'N' - { 3974, 33, 34, 37, 2, -32 }, // 0x4F 'O' - { 4115, 26, 32, 30, 2, -31 }, // 0x50 'P' - { 4219, 33, 41, 37, 2, -32 }, // 0x51 'Q' - { 4389, 31, 32, 34, 2, -31 }, // 0x52 'R' - { 4513, 21, 34, 27, 3, -32 }, // 0x53 'S' - { 4603, 28, 32, 30, 1, -31 }, // 0x54 'T' - { 4715, 30, 33, 34, 2, -31 }, // 0x55 'U' - { 4839, 33, 32, 33, 0, -31 }, // 0x56 'V' - { 4971, 45, 33, 46, 1, -31 }, // 0x57 'W' - { 5157, 32, 32, 34, 1, -31 }, // 0x58 'X' - { 5285, 32, 32, 33, 1, -31 }, // 0x59 'Y' - { 5413, 28, 32, 30, 1, -31 }, // 0x5A 'Z' - { 5525, 11, 39, 16, 3, -31 }, // 0x5B '[' - { 5579, 15, 33, 13, -1, -32 }, // 0x5C '\' - { 5641, 11, 39, 16, 2, -31 }, // 0x5D ']' - { 5695, 21, 17, 27, 3, -31 }, // 0x5E '^' - { 5740, 24, 3, 23, 0, 5 }, // 0x5F '_' - { 5749, 11, 9, 16, 0, -33 }, // 0x60 '`' - { 5762, 22, 24, 23, 1, -22 }, // 0x61 'a' - { 5828, 25, 33, 26, 0, -31 }, // 0x62 'b' - { 5932, 19, 24, 20, 1, -22 }, // 0x63 'c' - { 5989, 24, 33, 26, 1, -31 }, // 0x64 'd' - { 6088, 18, 24, 21, 1, -22 }, // 0x65 'e' - { 6142, 17, 33, 18, 1, -32 }, // 0x66 'f' - { 6213, 19, 32, 24, 2, -22 }, // 0x67 'g' - { 6289, 24, 32, 26, 0, -31 }, // 0x68 'h' - { 6385, 11, 33, 14, 1, -32 }, // 0x69 'i' - { 6431, 14, 42, 18, 0, -32 }, // 0x6A 'j' - { 6505, 25, 32, 26, 0, -31 }, // 0x6B 'k' - { 6605, 11, 32, 13, 0, -31 }, // 0x6C 'l' - { 6649, 37, 23, 39, 0, -22 }, // 0x6D 'm' - { 6756, 24, 23, 26, 0, -22 }, // 0x6E 'n' - { 6825, 21, 24, 24, 1, -22 }, // 0x6F 'o' - { 6888, 24, 32, 26, 0, -22 }, // 0x70 'p' - { 6984, 24, 32, 26, 1, -22 }, // 0x71 'q' - { 7080, 19, 23, 20, 0, -22 }, // 0x72 'r' - { 7135, 15, 24, 19, 2, -22 }, // 0x73 's' - { 7180, 14, 31, 16, 1, -29 }, // 0x74 't' - { 7235, 25, 23, 27, 0, -21 }, // 0x75 'u' - { 7307, 22, 23, 23, 0, -21 }, // 0x76 'v' - { 7371, 33, 23, 33, 0, -21 }, // 0x77 'w' - { 7466, 22, 22, 24, 1, -21 }, // 0x78 'x' - { 7527, 21, 31, 23, 0, -21 }, // 0x79 'y' - { 7609, 19, 22, 21, 1, -21 }, // 0x7A 'z' - { 7662, 14, 42, 19, 1, -33 }, // 0x7B '{' - { 7736, 4, 33, 10, 3, -32 }, // 0x7C '|' - { 7753, 14, 42, 19, 4, -33 }, // 0x7D '}' - { 7827, 22, 7, 24, 1, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifBold24pt7b PROGMEM = { - (uint8_t *)FreeSerifBold24pt7bBitmaps, - (GFXglyph *)FreeSerifBold24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8519 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h deleted file mode 100644 index 52dbe36e1..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h +++ /dev/null @@ -1,202 +0,0 @@ -const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, - 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, - 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, - 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, - 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, - 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, - 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, - 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, - 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, - 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, - 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, - 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, - 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, - 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, - 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, - 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, - 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, - 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, - 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, - 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, - 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, - 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, - 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, - 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, - 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, - 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, - 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, - 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, - 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, - 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, - 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, - 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, - 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, - 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, - 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, - 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, - 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, - 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, - 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, - 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, - 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, - 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, - 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, - 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, - 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, - 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, - 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, - 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, - 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, - 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, - 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, - 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, - 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, - 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, - 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, - 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, - 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, - 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, - 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, - 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, - 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, - 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, - 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, - 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, - 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, - 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, - 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, - 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, - 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, - 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, - 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, - 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, - 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, - 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, - 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, - 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, - 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, - 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, - 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, - 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, - 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, - 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, - 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, - 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, - 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, - 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, - 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, - 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, - 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, - 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, - 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, - 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, - 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, - 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E }; - -const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 3, 12, 6, 1, -11 }, // 0x21 '!' - { 5, 6, 5, 10, 2, -11 }, // 0x22 '"' - { 9, 9, 13, 9, 0, -12 }, // 0x23 '#' - { 24, 8, 14, 9, 1, -12 }, // 0x24 '$' - { 38, 14, 12, 18, 2, -11 }, // 0x25 '%' - { 59, 13, 12, 15, 1, -11 }, // 0x26 '&' - { 79, 2, 5, 5, 1, -11 }, // 0x27 ''' - { 81, 4, 15, 6, 1, -11 }, // 0x28 '(' - { 89, 4, 15, 6, 1, -11 }, // 0x29 ')' - { 97, 7, 7, 9, 2, -11 }, // 0x2A '*' - { 104, 9, 9, 12, 1, -8 }, // 0x2B '+' - { 115, 3, 6, 4, 1, -2 }, // 0x2C ',' - { 118, 4, 2, 6, 1, -4 }, // 0x2D '-' - { 119, 3, 3, 4, 1, -2 }, // 0x2E '.' - { 121, 6, 13, 5, 0, -11 }, // 0x2F '/' - { 131, 9, 12, 9, 0, -11 }, // 0x30 '0' - { 145, 6, 12, 9, 1, -11 }, // 0x31 '1' - { 154, 9, 12, 9, 0, -11 }, // 0x32 '2' - { 168, 8, 12, 9, 0, -11 }, // 0x33 '3' - { 180, 8, 12, 9, 1, -11 }, // 0x34 '4' - { 192, 8, 12, 9, 1, -11 }, // 0x35 '5' - { 204, 8, 12, 9, 1, -11 }, // 0x36 '6' - { 216, 9, 12, 9, 0, -11 }, // 0x37 '7' - { 230, 8, 12, 9, 1, -11 }, // 0x38 '8' - { 242, 9, 12, 9, 0, -11 }, // 0x39 '9' - { 256, 3, 9, 6, 1, -8 }, // 0x3A ':' - { 260, 3, 12, 6, 2, -8 }, // 0x3B ';' - { 265, 10, 10, 12, 1, -9 }, // 0x3C '<' - { 278, 10, 5, 12, 1, -6 }, // 0x3D '=' - { 285, 10, 10, 12, 1, -8 }, // 0x3E '>' - { 298, 7, 12, 9, 1, -11 }, // 0x3F '?' - { 309, 13, 12, 17, 2, -11 }, // 0x40 '@' - { 329, 13, 12, 13, 0, -11 }, // 0x41 'A' - { 349, 11, 12, 12, 0, -11 }, // 0x42 'B' - { 366, 11, 12, 13, 1, -11 }, // 0x43 'C' - { 383, 11, 12, 13, 1, -11 }, // 0x44 'D' - { 400, 11, 12, 12, 1, -11 }, // 0x45 'E' - { 417, 10, 12, 11, 1, -11 }, // 0x46 'F' - { 432, 12, 12, 14, 1, -11 }, // 0x47 'G' - { 450, 12, 12, 14, 1, -11 }, // 0x48 'H' - { 468, 5, 12, 7, 1, -11 }, // 0x49 'I' - { 476, 8, 14, 9, 0, -11 }, // 0x4A 'J' - { 490, 13, 12, 14, 1, -11 }, // 0x4B 'K' - { 510, 11, 12, 12, 1, -11 }, // 0x4C 'L' - { 527, 16, 12, 17, 0, -11 }, // 0x4D 'M' - { 551, 11, 12, 13, 1, -11 }, // 0x4E 'N' - { 568, 12, 12, 14, 1, -11 }, // 0x4F 'O' - { 586, 10, 12, 11, 1, -11 }, // 0x50 'P' - { 601, 12, 15, 14, 1, -11 }, // 0x51 'Q' - { 624, 12, 12, 13, 1, -11 }, // 0x52 'R' - { 642, 8, 12, 10, 1, -11 }, // 0x53 'S' - { 654, 12, 12, 12, 0, -11 }, // 0x54 'T' - { 672, 11, 12, 13, 1, -11 }, // 0x55 'U' - { 689, 13, 13, 13, 0, -11 }, // 0x56 'V' - { 711, 18, 12, 18, 0, -11 }, // 0x57 'W' - { 738, 13, 12, 13, 0, -11 }, // 0x58 'X' - { 758, 13, 12, 13, 0, -11 }, // 0x59 'Y' - { 778, 11, 12, 12, 1, -11 }, // 0x5A 'Z' - { 795, 4, 15, 6, 1, -11 }, // 0x5B '[' - { 803, 6, 13, 5, 0, -11 }, // 0x5C '\' - { 813, 4, 15, 6, 1, -11 }, // 0x5D ']' - { 821, 8, 7, 10, 1, -11 }, // 0x5E '^' - { 828, 9, 1, 9, 0, 3 }, // 0x5F '_' - { 830, 4, 3, 6, 0, -12 }, // 0x60 '`' - { 832, 9, 9, 9, 0, -8 }, // 0x61 'a' - { 843, 10, 12, 10, 0, -11 }, // 0x62 'b' - { 858, 7, 9, 8, 0, -8 }, // 0x63 'c' - { 866, 10, 12, 10, 0, -11 }, // 0x64 'd' - { 881, 8, 9, 8, 0, -8 }, // 0x65 'e' - { 890, 7, 12, 7, 0, -11 }, // 0x66 'f' - { 901, 7, 13, 9, 1, -8 }, // 0x67 'g' - { 913, 10, 12, 10, 0, -11 }, // 0x68 'h' - { 928, 5, 12, 5, 0, -11 }, // 0x69 'i' - { 936, 6, 16, 7, 0, -11 }, // 0x6A 'j' - { 948, 10, 12, 10, 0, -11 }, // 0x6B 'k' - { 963, 5, 12, 5, 0, -11 }, // 0x6C 'l' - { 971, 15, 9, 15, 0, -8 }, // 0x6D 'm' - { 988, 10, 9, 10, 0, -8 }, // 0x6E 'n' - { 1000, 9, 9, 9, 0, -8 }, // 0x6F 'o' - { 1011, 10, 13, 10, 0, -8 }, // 0x70 'p' - { 1028, 10, 13, 10, 0, -8 }, // 0x71 'q' - { 1045, 8, 9, 8, 0, -8 }, // 0x72 'r' - { 1054, 5, 9, 7, 1, -8 }, // 0x73 's' - { 1060, 6, 11, 6, 0, -10 }, // 0x74 't' - { 1069, 10, 9, 10, 0, -8 }, // 0x75 'u' - { 1081, 9, 9, 9, 0, -8 }, // 0x76 'v' - { 1092, 12, 9, 13, 0, -8 }, // 0x77 'w' - { 1106, 9, 9, 9, 0, -8 }, // 0x78 'x' - { 1117, 8, 13, 9, 0, -8 }, // 0x79 'y' - { 1130, 7, 9, 8, 1, -8 }, // 0x7A 'z' - { 1138, 5, 16, 7, 0, -12 }, // 0x7B '{' - { 1148, 1, 13, 4, 1, -11 }, // 0x7C '|' - { 1150, 5, 16, 7, 2, -12 }, // 0x7D '}' - { 1160, 8, 2, 9, 1, -4 } }; // 0x7E '~' - -const GFXfont FreeSerifBold9pt7b PROGMEM = { - (uint8_t *)FreeSerifBold9pt7bBitmaps, - (GFXglyph *)FreeSerifBold9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1834 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h deleted file mode 100644 index 1f674e98d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h +++ /dev/null @@ -1,292 +0,0 @@ -const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { - 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, - 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, - 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, - 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, - 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, - 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, - 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, - 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, - 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, - 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, - 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, - 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, - 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, - 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, - 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, - 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, - 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, - 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, - 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, - 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, - 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, - 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, - 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, - 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, - 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, - 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, - 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, - 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, - 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, - 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, - 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, - 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, - 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, - 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, - 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, - 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, - 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, - 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, - 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, - 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, - 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, - 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, - 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, - 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, - 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, - 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, - 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, - 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, - 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, - 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, - 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, - 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, - 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, - 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, - 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, - 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, - 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, - 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, - 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, - 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, - 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, - 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, - 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, - 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, - 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, - 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, - 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, - 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, - 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, - 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, - 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, - 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, - 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, - 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, - 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, - 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, - 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, - 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, - 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, - 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, - 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, - 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, - 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, - 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, - 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, - 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, - 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, - 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, - 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, - 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, - 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, - 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, - 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, - 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, - 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, - 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, - 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, - 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, - 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, - 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, - 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, - 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, - 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, - 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, - 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, - 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, - 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, - 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, - 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, - 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, - 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, - 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, - 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, - 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, - 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, - 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, - 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, - 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, - 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, - 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, - 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, - 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, - 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, - 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, - 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, - 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, - 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, - 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, - 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, - 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, - 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, - 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, - 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, - 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, - 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, - 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, - 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, - 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, - 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, - 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, - 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, - 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, - 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, - 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, - 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, - 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, - 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, - 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, - 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, - 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, - 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, - 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, - 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, - 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, - 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, - 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, - 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, - 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, - 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, - 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, - 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, - 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, - 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, - 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, - 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, - 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, - 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, - 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, - 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, - 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, - 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, - 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, - 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0 }; - -const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 8, 17, 9, 2, -15 }, // 0x21 '!' - { 17, 9, 7, 13, 4, -15 }, // 0x22 '"' - { 25, 14, 16, 12, -1, -15 }, // 0x23 '#' - { 53, 12, 20, 12, 0, -17 }, // 0x24 '$' - { 83, 18, 18, 20, 1, -16 }, // 0x25 '%' - { 124, 16, 17, 19, 0, -15 }, // 0x26 '&' - { 158, 3, 7, 7, 3, -15 }, // 0x27 ''' - { 161, 7, 21, 8, 1, -15 }, // 0x28 '(' - { 180, 7, 21, 8, -1, -15 }, // 0x29 ')' - { 199, 10, 10, 12, 1, -15 }, // 0x2A '*' - { 212, 12, 12, 14, 1, -11 }, // 0x2B '+' - { 230, 5, 8, 6, -2, -3 }, // 0x2C ',' - { 235, 6, 3, 8, 0, -6 }, // 0x2D '-' - { 238, 4, 4, 6, 0, -2 }, // 0x2E '.' - { 240, 10, 16, 8, 0, -15 }, // 0x2F '/' - { 260, 11, 17, 12, 0, -15 }, // 0x30 '0' - { 284, 10, 17, 12, 0, -15 }, // 0x31 '1' - { 306, 11, 17, 12, 0, -15 }, // 0x32 '2' - { 330, 11, 17, 12, 0, -15 }, // 0x33 '3' - { 354, 13, 16, 12, 0, -15 }, // 0x34 '4' - { 380, 12, 17, 12, 0, -15 }, // 0x35 '5' - { 406, 11, 17, 12, 1, -15 }, // 0x36 '6' - { 430, 11, 16, 12, 2, -15 }, // 0x37 '7' - { 452, 11, 17, 12, 0, -15 }, // 0x38 '8' - { 476, 11, 17, 12, 0, -15 }, // 0x39 '9' - { 500, 7, 12, 6, 0, -10 }, // 0x3A ':' - { 511, 8, 15, 6, -1, -10 }, // 0x3B ';' - { 526, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 546, 12, 6, 14, 2, -8 }, // 0x3D '=' - { 555, 13, 13, 14, 1, -12 }, // 0x3E '>' - { 577, 9, 17, 12, 2, -15 }, // 0x3F '?' - { 597, 17, 16, 20, 1, -15 }, // 0x40 '@' - { 631, 16, 17, 17, 0, -15 }, // 0x41 'A' - { 665, 16, 17, 15, 0, -15 }, // 0x42 'B' - { 699, 15, 17, 15, 1, -15 }, // 0x43 'C' - { 731, 18, 17, 17, 0, -15 }, // 0x44 'D' - { 770, 17, 17, 15, 0, -15 }, // 0x45 'E' - { 807, 16, 17, 15, 0, -15 }, // 0x46 'F' - { 841, 17, 17, 17, 1, -15 }, // 0x47 'G' - { 878, 20, 17, 18, 0, -15 }, // 0x48 'H' - { 921, 10, 17, 9, 0, -15 }, // 0x49 'I' - { 943, 14, 18, 12, 0, -15 }, // 0x4A 'J' - { 975, 17, 17, 16, 0, -15 }, // 0x4B 'K' - { 1012, 15, 17, 15, 0, -15 }, // 0x4C 'L' - { 1044, 23, 17, 21, 0, -15 }, // 0x4D 'M' - { 1093, 19, 17, 17, 0, -15 }, // 0x4E 'N' - { 1134, 16, 17, 16, 1, -15 }, // 0x4F 'O' - { 1168, 16, 17, 14, 0, -15 }, // 0x50 'P' - { 1202, 16, 21, 16, 1, -15 }, // 0x51 'Q' - { 1244, 16, 17, 16, 0, -15 }, // 0x52 'R' - { 1278, 12, 17, 12, 0, -15 }, // 0x53 'S' - { 1304, 15, 17, 14, 2, -15 }, // 0x54 'T' - { 1336, 16, 17, 17, 3, -15 }, // 0x55 'U' - { 1370, 16, 16, 17, 3, -15 }, // 0x56 'V' - { 1402, 21, 16, 22, 3, -15 }, // 0x57 'W' - { 1444, 17, 17, 17, 0, -15 }, // 0x58 'X' - { 1481, 14, 17, 15, 3, -15 }, // 0x59 'Y' - { 1511, 15, 17, 13, 0, -15 }, // 0x5A 'Z' - { 1543, 10, 20, 8, -1, -15 }, // 0x5B '[' - { 1568, 6, 16, 10, 3, -15 }, // 0x5C '\' - { 1580, 9, 20, 8, -1, -15 }, // 0x5D ']' - { 1603, 10, 9, 14, 2, -15 }, // 0x5E '^' - { 1615, 12, 1, 12, 0, 4 }, // 0x5F '_' - { 1617, 5, 4, 8, 2, -15 }, // 0x60 '`' - { 1620, 12, 12, 12, 0, -10 }, // 0x61 'a' - { 1638, 11, 18, 12, 1, -16 }, // 0x62 'b' - { 1663, 9, 12, 10, 1, -10 }, // 0x63 'c' - { 1677, 14, 18, 12, 0, -16 }, // 0x64 'd' - { 1709, 9, 12, 10, 1, -10 }, // 0x65 'e' - { 1723, 14, 22, 12, -2, -16 }, // 0x66 'f' - { 1762, 13, 16, 12, -1, -10 }, // 0x67 'g' - { 1788, 13, 18, 13, 0, -16 }, // 0x68 'h' - { 1818, 6, 17, 7, 1, -15 }, // 0x69 'i' - { 1831, 11, 21, 8, -2, -15 }, // 0x6A 'j' - { 1860, 13, 18, 12, 0, -16 }, // 0x6B 'k' - { 1890, 7, 18, 7, 1, -16 }, // 0x6C 'l' - { 1906, 18, 12, 18, 0, -10 }, // 0x6D 'm' - { 1933, 12, 12, 13, 0, -10 }, // 0x6E 'n' - { 1951, 10, 12, 11, 1, -10 }, // 0x6F 'o' - { 1966, 14, 16, 12, -2, -10 }, // 0x70 'p' - { 1994, 12, 16, 12, 0, -10 }, // 0x71 'q' - { 2018, 10, 11, 10, 0, -10 }, // 0x72 'r' - { 2032, 9, 12, 9, 0, -10 }, // 0x73 's' - { 2046, 7, 15, 7, 1, -13 }, // 0x74 't' - { 2060, 12, 12, 13, 1, -10 }, // 0x75 'u' - { 2078, 10, 11, 11, 1, -10 }, // 0x76 'v' - { 2092, 15, 11, 16, 1, -10 }, // 0x77 'w' - { 2113, 13, 12, 11, -1, -10 }, // 0x78 'x' - { 2133, 11, 16, 10, -1, -10 }, // 0x79 'y' - { 2155, 10, 13, 10, 0, -10 }, // 0x7A 'z' - { 2172, 11, 21, 8, 0, -16 }, // 0x7B '{' - { 2201, 2, 16, 6, 3, -15 }, // 0x7C '|' - { 2205, 10, 21, 8, -3, -16 }, // 0x7D '}' - { 2232, 11, 4, 14, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2910 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h deleted file mode 100644 index e24eea61f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h +++ /dev/null @@ -1,500 +0,0 @@ -const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, - 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, - 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, - 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, - 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, - 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, - 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, - 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, - 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, - 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, - 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, - 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, - 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, - 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, - 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, - 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, - 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, - 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, - 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, - 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, - 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, - 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, - 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, - 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, - 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, - 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, - 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, - 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, - 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, - 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, - 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, - 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, - 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, - 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, - 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, - 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, - 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, - 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, - 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, - 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, - 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, - 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, - 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, - 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, - 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, - 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, - 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, - 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, - 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, - 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, - 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, - 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, - 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, - 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, - 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, - 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, - 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, - 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, - 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, - 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, - 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, - 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, - 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, - 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, - 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, - 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, - 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, - 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, - 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, - 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, - 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, - 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, - 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, - 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, - 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, - 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, - 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, - 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, - 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, - 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, - 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, - 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, - 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, - 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, - 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, - 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, - 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, - 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, - 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, - 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, - 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, - 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, - 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, - 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, - 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, - 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, - 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, - 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, - 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, - 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, - 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, - 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, - 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, - 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, - 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, - 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, - 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, - 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, - 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, - 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, - 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, - 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, - 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, - 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, - 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, - 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, - 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, - 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, - 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, - 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, - 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, - 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, - 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, - 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, - 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, - 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, - 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, - 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, - 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, - 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, - 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, - 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, - 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, - 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, - 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, - 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, - 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, - 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, - 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, - 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, - 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, - 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, - 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, - 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, - 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, - 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, - 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, - 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, - 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, - 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, - 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, - 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, - 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, - 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, - 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, - 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, - 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, - 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, - 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, - 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, - 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, - 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, - 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, - 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, - 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, - 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, - 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, - 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, - 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, - 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, - 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, - 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, - 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, - 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, - 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, - 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, - 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, - 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, - 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, - 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, - 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, - 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, - 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, - 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, - 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, - 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, - 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, - 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, - 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, - 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, - 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, - 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, - 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, - 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, - 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, - 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, - 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, - 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, - 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, - 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, - 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, - 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, - 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, - 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, - 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, - 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, - 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, - 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, - 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, - 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, - 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, - 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, - 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, - 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, - 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, - 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, - 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, - 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, - 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, - 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, - 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, - 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, - 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, - 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, - 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, - 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, - 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, - 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, - 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, - 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, - 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, - 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, - 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, - 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, - 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, - 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, - 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, - 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, - 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, - 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, - 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, - 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, - 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, - 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, - 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, - 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, - 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, - 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, - 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, - 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, - 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, - 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, - 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, - 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, - 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, - 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, - 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, - 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, - 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, - 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, - 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, - 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, - 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, - 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, - 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, - 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, - 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, - 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, - 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, - 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, - 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, - 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, - 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, - 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, - 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, - 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, - 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, - 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, - 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, - 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, - 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, - 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, - 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, - 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, - 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, - 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, - 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, - 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, - 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, - 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, - 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, - 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, - 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, - 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, - 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, - 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, - 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, - 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, - 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, - 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, - 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, - 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, - 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, - 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, - 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, - 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, - 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, - 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, - 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, - 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, - 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, - 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, - 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, - 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, - 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, - 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, - 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, - 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, - 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, - 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C }; - -const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 11, 25, 14, 2, -23 }, // 0x21 '!' - { 35, 14, 10, 19, 4, -23 }, // 0x22 '"' - { 53, 20, 25, 17, -1, -24 }, // 0x23 '#' - { 116, 17, 29, 18, 0, -25 }, // 0x24 '$' - { 178, 27, 25, 29, 1, -23 }, // 0x25 '%' - { 263, 25, 25, 27, 0, -23 }, // 0x26 '&' - { 342, 5, 10, 10, 4, -23 }, // 0x27 ''' - { 349, 11, 30, 12, 1, -23 }, // 0x28 '(' - { 391, 11, 30, 12, -2, -23 }, // 0x29 ')' - { 433, 13, 15, 18, 2, -23 }, // 0x2A '*' - { 458, 17, 17, 20, 1, -16 }, // 0x2B '+' - { 495, 7, 11, 9, -2, -4 }, // 0x2C ',' - { 505, 9, 4, 12, 0, -9 }, // 0x2D '-' - { 510, 6, 5, 9, 0, -3 }, // 0x2E '.' - { 514, 14, 25, 12, 0, -23 }, // 0x2F '/' - { 558, 15, 25, 18, 1, -23 }, // 0x30 '0' - { 605, 15, 25, 17, 0, -23 }, // 0x31 '1' - { 652, 16, 25, 18, 0, -23 }, // 0x32 '2' - { 702, 15, 25, 17, 1, -23 }, // 0x33 '3' - { 749, 18, 24, 17, 0, -23 }, // 0x34 '4' - { 803, 17, 25, 18, 0, -23 }, // 0x35 '5' - { 857, 17, 25, 18, 1, -23 }, // 0x36 '6' - { 911, 16, 24, 17, 3, -23 }, // 0x37 '7' - { 959, 17, 25, 18, 0, -23 }, // 0x38 '8' - { 1013, 17, 25, 18, 0, -23 }, // 0x39 '9' - { 1067, 10, 17, 9, 0, -15 }, // 0x3A ':' - { 1089, 11, 22, 9, -1, -15 }, // 0x3B ';' - { 1120, 18, 19, 20, 1, -18 }, // 0x3C '<' - { 1163, 18, 10, 20, 2, -13 }, // 0x3D '=' - { 1186, 18, 19, 20, 2, -18 }, // 0x3E '>' - { 1229, 13, 25, 17, 3, -23 }, // 0x3F '?' - { 1270, 25, 25, 29, 2, -23 }, // 0x40 '@' - { 1349, 23, 25, 24, 0, -23 }, // 0x41 'A' - { 1421, 24, 25, 22, 0, -23 }, // 0x42 'B' - { 1496, 23, 25, 22, 1, -23 }, // 0x43 'C' - { 1568, 26, 25, 25, 0, -23 }, // 0x44 'D' - { 1650, 23, 25, 22, 0, -23 }, // 0x45 'E' - { 1722, 23, 25, 21, 0, -23 }, // 0x46 'F' - { 1794, 24, 25, 25, 2, -23 }, // 0x47 'G' - { 1869, 29, 25, 26, 0, -23 }, // 0x48 'H' - { 1960, 15, 25, 13, 0, -23 }, // 0x49 'I' - { 2007, 20, 27, 17, 0, -23 }, // 0x4A 'J' - { 2075, 25, 25, 23, 0, -23 }, // 0x4B 'K' - { 2154, 22, 25, 21, 0, -23 }, // 0x4C 'L' - { 2223, 33, 25, 31, 0, -23 }, // 0x4D 'M' - { 2327, 27, 25, 25, 0, -23 }, // 0x4E 'N' - { 2412, 23, 25, 24, 1, -23 }, // 0x4F 'O' - { 2484, 23, 25, 21, 0, -23 }, // 0x50 'P' - { 2556, 23, 31, 24, 1, -23 }, // 0x51 'Q' - { 2646, 24, 25, 23, 0, -23 }, // 0x52 'R' - { 2721, 18, 25, 18, 0, -23 }, // 0x53 'S' - { 2778, 21, 25, 21, 3, -23 }, // 0x54 'T' - { 2844, 24, 25, 25, 4, -23 }, // 0x55 'U' - { 2919, 24, 25, 25, 4, -23 }, // 0x56 'V' - { 2994, 31, 25, 32, 4, -23 }, // 0x57 'W' - { 3091, 25, 25, 24, 0, -23 }, // 0x58 'X' - { 3170, 21, 25, 22, 4, -23 }, // 0x59 'Y' - { 3236, 21, 25, 20, 0, -23 }, // 0x5A 'Z' - { 3302, 14, 30, 12, -1, -23 }, // 0x5B '[' - { 3355, 10, 25, 14, 4, -23 }, // 0x5C '\' - { 3387, 14, 30, 12, -2, -23 }, // 0x5D ']' - { 3440, 16, 13, 20, 2, -23 }, // 0x5E '^' - { 3466, 18, 3, 17, 0, 3 }, // 0x5F '_' - { 3473, 7, 6, 12, 3, -23 }, // 0x60 '`' - { 3479, 18, 17, 18, 0, -15 }, // 0x61 'a' - { 3518, 16, 26, 17, 1, -24 }, // 0x62 'b' - { 3570, 13, 17, 15, 1, -15 }, // 0x63 'c' - { 3598, 19, 25, 18, 1, -23 }, // 0x64 'd' - { 3658, 13, 17, 15, 1, -15 }, // 0x65 'e' - { 3686, 21, 32, 17, -3, -24 }, // 0x66 'f' - { 3770, 19, 23, 17, -1, -15 }, // 0x67 'g' - { 3825, 17, 25, 19, 1, -23 }, // 0x68 'h' - { 3879, 9, 25, 10, 1, -23 }, // 0x69 'i' - { 3908, 16, 31, 12, -3, -23 }, // 0x6A 'j' - { 3970, 17, 25, 18, 1, -23 }, // 0x6B 'k' - { 4024, 11, 25, 10, 1, -23 }, // 0x6C 'l' - { 4059, 26, 17, 27, 0, -15 }, // 0x6D 'm' - { 4115, 18, 17, 18, 0, -15 }, // 0x6E 'n' - { 4154, 15, 17, 17, 1, -15 }, // 0x6F 'o' - { 4186, 19, 23, 17, -2, -15 }, // 0x70 'p' - { 4241, 16, 23, 17, 1, -15 }, // 0x71 'q' - { 4287, 15, 16, 14, 0, -15 }, // 0x72 'r' - { 4317, 13, 17, 12, 0, -15 }, // 0x73 's' - { 4345, 10, 22, 10, 1, -20 }, // 0x74 't' - { 4373, 17, 17, 19, 1, -15 }, // 0x75 'u' - { 4410, 13, 16, 15, 2, -15 }, // 0x76 'v' - { 4436, 19, 16, 23, 3, -15 }, // 0x77 'w' - { 4474, 18, 17, 17, -1, -15 }, // 0x78 'x' - { 4513, 17, 23, 15, -2, -15 }, // 0x79 'y' - { 4562, 15, 19, 14, 0, -15 }, // 0x7A 'z' - { 4598, 15, 32, 12, 0, -24 }, // 0x7B '{' - { 4658, 3, 25, 9, 4, -23 }, // 0x7C '|' - { 4668, 15, 32, 12, -5, -24 }, // 0x7D '}' - { 4728, 16, 5, 20, 2, -11 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5410 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h deleted file mode 100644 index fcb857ef9..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h +++ /dev/null @@ -1,793 +0,0 @@ -const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { - 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, - 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, - 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, - 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, - 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, - 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, - 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, - 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, - 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, - 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, - 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, - 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, - 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, - 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, - 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, - 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, - 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, - 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, - 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, - 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, - 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, - 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, - 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, - 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, - 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, - 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, - 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, - 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, - 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, - 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, - 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, - 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, - 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, - 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, - 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, - 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, - 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, - 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, - 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, - 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, - 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, - 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, - 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, - 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, - 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, - 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, - 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, - 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, - 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, - 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, - 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, - 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, - 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, - 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, - 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, - 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, - 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, - 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, - 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, - 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, - 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, - 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, - 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, - 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, - 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, - 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, - 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, - 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, - 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, - 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, - 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, - 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, - 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, - 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, - 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, - 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, - 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, - 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, - 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, - 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, - 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, - 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, - 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, - 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, - 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, - 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, - 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, - 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, - 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, - 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, - 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, - 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, - 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, - 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, - 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, - 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, - 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, - 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, - 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, - 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, - 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, - 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, - 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, - 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, - 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, - 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, - 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, - 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, - 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, - 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, - 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, - 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, - 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, - 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, - 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, - 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, - 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, - 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, - 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, - 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, - 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, - 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, - 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, - 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, - 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, - 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, - 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, - 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, - 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, - 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, - 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, - 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, - 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, - 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, - 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, - 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, - 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, - 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, - 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, - 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, - 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, - 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, - 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, - 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, - 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, - 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, - 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, - 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, - 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, - 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, - 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, - 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, - 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, - 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, - 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, - 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, - 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, - 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, - 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, - 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, - 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, - 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, - 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, - 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, - 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, - 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, - 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, - 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, - 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, - 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, - 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, - 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, - 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, - 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, - 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, - 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, - 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, - 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, - 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, - 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, - 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, - 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, - 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, - 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, - 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, - 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, - 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, - 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, - 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, - 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, - 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, - 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, - 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, - 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, - 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, - 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, - 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, - 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, - 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, - 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, - 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, - 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, - 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, - 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, - 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, - 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, - 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, - 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, - 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, - 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, - 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, - 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, - 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, - 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, - 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, - 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, - 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, - 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, - 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, - 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, - 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, - 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, - 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, - 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, - 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, - 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, - 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, - 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, - 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, - 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, - 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, - 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, - 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, - 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, - 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, - 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, - 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, - 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, - 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, - 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, - 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, - 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, - 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, - 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, - 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, - 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, - 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, - 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, - 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, - 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, - 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, - 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, - 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, - 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, - 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, - 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, - 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, - 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, - 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, - 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, - 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, - 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, - 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, - 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, - 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, - 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, - 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, - 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, - 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, - 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, - 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, - 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, - 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, - 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, - 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, - 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, - 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, - 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, - 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, - 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, - 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, - 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, - 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, - 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, - 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, - 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, - 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, - 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, - 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, - 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, - 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, - 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, - 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, - 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, - 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, - 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, - 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, - 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, - 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, - 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, - 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, - 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, - 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, - 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, - 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, - 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, - 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, - 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, - 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, - 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, - 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, - 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, - 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, - 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, - 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, - 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, - 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, - 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, - 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, - 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, - 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, - 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, - 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, - 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, - 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, - 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, - 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, - 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, - 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, - 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, - 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, - 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, - 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, - 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, - 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, - 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, - 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, - 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, - 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, - 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, - 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, - 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, - 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, - 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, - 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, - 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, - 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, - 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, - 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, - 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, - 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, - 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, - 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, - 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, - 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, - 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, - 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, - 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, - 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, - 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, - 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, - 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, - 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, - 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, - 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, - 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, - 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, - 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, - 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, - 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, - 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, - 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, - 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, - 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, - 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, - 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, - 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, - 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, - 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, - 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, - 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, - 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, - 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, - 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, - 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, - 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, - 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, - 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, - 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, - 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, - 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, - 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, - 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, - 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, - 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, - 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, - 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, - 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, - 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, - 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, - 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, - 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, - 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, - 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, - 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, - 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, - 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, - 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, - 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, - 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, - 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, - 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, - 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, - 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, - 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, - 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, - 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, - 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, - 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, - 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, - 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, - 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, - 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, - 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, - 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, - 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, - 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, - 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, - 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, - 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, - 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, - 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, - 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, - 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, - 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, - 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, - 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, - 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, - 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, - 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, - 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, - 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, - 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, - 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, - 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, - 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, - 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, - 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, - 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, - 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, - 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, - 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, - 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, - 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, - 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, - 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, - 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, - 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, - 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, - 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, - 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, - 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, - 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, - 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, - 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, - 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, - 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, - 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, - 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, - 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, - 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, - 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, - 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, - 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, - 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, - 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, - 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, - 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, - 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, - 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, - 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, - 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, - 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, - 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, - 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, - 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, - 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, - 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, - 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, - 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, - 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, - 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, - 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, - 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, - 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, - 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, - 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, - 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, - 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, - 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, - 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, - 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, - 0x00 }; - -const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 15, 33, 18, 3, -31 }, // 0x21 '!' - { 62, 19, 13, 26, 6, -31 }, // 0x22 '"' - { 93, 27, 33, 23, -2, -32 }, // 0x23 '#' - { 205, 24, 39, 24, -1, -33 }, // 0x24 '$' - { 322, 35, 32, 39, 2, -30 }, // 0x25 '%' - { 462, 33, 33, 37, 0, -31 }, // 0x26 '&' - { 599, 7, 13, 13, 6, -31 }, // 0x27 ''' - { 611, 14, 41, 16, 1, -31 }, // 0x28 '(' - { 683, 14, 41, 16, -2, -31 }, // 0x29 ')' - { 755, 19, 20, 23, 3, -31 }, // 0x2A '*' - { 803, 22, 23, 27, 2, -22 }, // 0x2B '+' - { 867, 10, 15, 12, -3, -5 }, // 0x2C ',' - { 886, 12, 5, 16, 0, -12 }, // 0x2D '-' - { 894, 8, 7, 12, 0, -5 }, // 0x2E '.' - { 901, 19, 33, 16, 0, -31 }, // 0x2F '/' - { 980, 22, 33, 23, 1, -31 }, // 0x30 '0' - { 1071, 20, 32, 23, 0, -31 }, // 0x31 '1' - { 1151, 22, 32, 23, 1, -31 }, // 0x32 '2' - { 1239, 22, 33, 24, 0, -31 }, // 0x33 '3' - { 1330, 25, 32, 23, 0, -31 }, // 0x34 '4' - { 1430, 24, 32, 24, 0, -30 }, // 0x35 '5' - { 1526, 23, 32, 24, 1, -30 }, // 0x36 '6' - { 1618, 23, 31, 23, 3, -30 }, // 0x37 '7' - { 1708, 21, 33, 23, 1, -31 }, // 0x38 '8' - { 1795, 23, 33, 23, 0, -31 }, // 0x39 '9' - { 1890, 13, 22, 12, 0, -20 }, // 0x3A ':' - { 1926, 15, 30, 12, -2, -20 }, // 0x3B ';' - { 1983, 24, 25, 27, 1, -23 }, // 0x3C '<' - { 2058, 24, 14, 27, 3, -18 }, // 0x3D '=' - { 2100, 24, 25, 27, 3, -23 }, // 0x3E '>' - { 2175, 18, 33, 24, 4, -31 }, // 0x3F '?' - { 2250, 33, 33, 39, 3, -31 }, // 0x40 '@' - { 2387, 31, 32, 33, 0, -31 }, // 0x41 'A' - { 2511, 31, 31, 30, 0, -30 }, // 0x42 'B' - { 2632, 29, 33, 29, 2, -31 }, // 0x43 'C' - { 2752, 35, 31, 34, 0, -30 }, // 0x44 'D' - { 2888, 32, 31, 30, 0, -30 }, // 0x45 'E' - { 3012, 31, 31, 29, 0, -30 }, // 0x46 'F' - { 3133, 32, 33, 33, 2, -31 }, // 0x47 'G' - { 3265, 39, 31, 35, 0, -30 }, // 0x48 'H' - { 3417, 21, 31, 18, 0, -30 }, // 0x49 'I' - { 3499, 27, 36, 23, 0, -30 }, // 0x4A 'J' - { 3621, 34, 31, 31, 0, -30 }, // 0x4B 'K' - { 3753, 29, 31, 29, 0, -30 }, // 0x4C 'L' - { 3866, 44, 32, 41, 0, -30 }, // 0x4D 'M' - { 4042, 37, 32, 33, 0, -30 }, // 0x4E 'N' - { 4190, 31, 33, 32, 2, -31 }, // 0x4F 'O' - { 4318, 31, 31, 28, 0, -30 }, // 0x50 'P' - { 4439, 31, 42, 32, 2, -31 }, // 0x51 'Q' - { 4602, 32, 31, 31, 0, -30 }, // 0x52 'R' - { 4726, 24, 33, 24, 0, -31 }, // 0x53 'S' - { 4825, 27, 31, 28, 4, -30 }, // 0x54 'T' - { 4930, 32, 32, 34, 5, -30 }, // 0x55 'U' - { 5058, 31, 32, 33, 6, -30 }, // 0x56 'V' - { 5182, 41, 32, 44, 6, -30 }, // 0x57 'W' - { 5346, 34, 31, 33, 0, -30 }, // 0x58 'X' - { 5478, 28, 31, 30, 6, -30 }, // 0x59 'Y' - { 5587, 28, 31, 26, 0, -30 }, // 0x5A 'Z' - { 5696, 19, 38, 16, -2, -30 }, // 0x5B '[' - { 5787, 13, 33, 19, 6, -31 }, // 0x5C '\' - { 5841, 19, 38, 16, -3, -30 }, // 0x5D ']' - { 5932, 21, 17, 27, 3, -30 }, // 0x5E '^' - { 5977, 24, 3, 23, 0, 5 }, // 0x5F '_' - { 5986, 10, 9, 16, 4, -32 }, // 0x60 '`' - { 5998, 22, 23, 24, 1, -21 }, // 0x61 'a' - { 6062, 22, 33, 23, 1, -31 }, // 0x62 'b' - { 6153, 18, 23, 20, 1, -21 }, // 0x63 'c' - { 6205, 25, 34, 24, 1, -32 }, // 0x64 'd' - { 6312, 18, 23, 20, 1, -21 }, // 0x65 'e' - { 6364, 28, 41, 23, -4, -31 }, // 0x66 'f' - { 6508, 25, 31, 23, -1, -21 }, // 0x67 'g' - { 6605, 23, 34, 26, 1, -32 }, // 0x68 'h' - { 6703, 12, 33, 14, 2, -31 }, // 0x69 'i' - { 6753, 22, 42, 16, -4, -31 }, // 0x6A 'j' - { 6869, 24, 34, 24, 1, -32 }, // 0x6B 'k' - { 6971, 13, 34, 14, 2, -32 }, // 0x6C 'l' - { 7027, 35, 23, 36, 0, -21 }, // 0x6D 'm' - { 7128, 23, 23, 25, 0, -21 }, // 0x6E 'n' - { 7195, 20, 23, 22, 1, -21 }, // 0x6F 'o' - { 7253, 27, 31, 23, -4, -21 }, // 0x70 'p' - { 7358, 22, 31, 23, 1, -21 }, // 0x71 'q' - { 7444, 20, 22, 19, 0, -21 }, // 0x72 'r' - { 7499, 16, 23, 17, 0, -21 }, // 0x73 's' - { 7545, 13, 29, 13, 2, -27 }, // 0x74 't' - { 7593, 22, 23, 25, 2, -21 }, // 0x75 'u' - { 7657, 17, 23, 21, 3, -21 }, // 0x76 'v' - { 7706, 27, 23, 31, 3, -21 }, // 0x77 'w' - { 7784, 24, 23, 22, -1, -21 }, // 0x78 'x' - { 7853, 23, 31, 20, -3, -21 }, // 0x79 'y' - { 7943, 19, 25, 19, 0, -20 }, // 0x7A 'z' - { 8003, 20, 41, 16, 0, -31 }, // 0x7B '{' - { 8106, 4, 33, 13, 5, -31 }, // 0x7C '|' - { 8123, 20, 41, 16, -6, -31 }, // 0x7D '}' - { 8226, 21, 7, 27, 3, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8917 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h deleted file mode 100644 index 47711ee7c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h +++ /dev/null @@ -1,215 +0,0 @@ -const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { - 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, - 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, - 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, - 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, - 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, - 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, - 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, - 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, - 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, - 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, - 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, - 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, - 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, - 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, - 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, - 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, - 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, - 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, - 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, - 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, - 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, - 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, - 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, - 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, - 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, - 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, - 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, - 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, - 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, - 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, - 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, - 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, - 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, - 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, - 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, - 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, - 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, - 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, - 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, - 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, - 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, - 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, - 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, - 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, - 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, - 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, - 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, - 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, - 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, - 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, - 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, - 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, - 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, - 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, - 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, - 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, - 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, - 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, - 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, - 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, - 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, - 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, - 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, - 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, - 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, - 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, - 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, - 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, - 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, - 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, - 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, - 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, - 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, - 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, - 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, - 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, - 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, - 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, - 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, - 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, - 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, - 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, - 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, - 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, - 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, - 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, - 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, - 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, - 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, - 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, - 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, - 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, - 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, - 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, - 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, - 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, - 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, - 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, - 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, - 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, - 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, - 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, - 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, - 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, - 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, - 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, - 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, - 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, - 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, - 0x71, 0x8F }; - -const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 6, 13, 7, 1, -11 }, // 0x21 '!' - { 10, 6, 5, 10, 3, -11 }, // 0x22 '"' - { 14, 11, 13, 9, -1, -12 }, // 0x23 '#' - { 32, 11, 15, 9, -1, -12 }, // 0x24 '$' - { 53, 14, 13, 15, 1, -11 }, // 0x25 '%' - { 76, 13, 13, 14, 0, -11 }, // 0x26 '&' - { 98, 2, 5, 5, 3, -11 }, // 0x27 ''' - { 100, 5, 16, 6, 1, -11 }, // 0x28 '(' - { 110, 5, 16, 6, -1, -11 }, // 0x29 ')' - { 120, 8, 8, 9, 1, -11 }, // 0x2A '*' - { 128, 9, 9, 10, 0, -8 }, // 0x2B '+' - { 139, 3, 6, 5, -1, -2 }, // 0x2C ',' - { 142, 5, 2, 6, 0, -4 }, // 0x2D '-' - { 144, 3, 3, 4, 0, -1 }, // 0x2E '.' - { 146, 7, 12, 6, 0, -11 }, // 0x2F '/' - { 157, 9, 13, 9, 0, -11 }, // 0x30 '0' - { 172, 8, 13, 9, 0, -11 }, // 0x31 '1' - { 185, 9, 13, 9, 0, -11 }, // 0x32 '2' - { 200, 9, 13, 9, 0, -11 }, // 0x33 '3' - { 215, 9, 12, 9, 0, -11 }, // 0x34 '4' - { 229, 9, 13, 9, 0, -11 }, // 0x35 '5' - { 244, 9, 13, 9, 1, -11 }, // 0x36 '6' - { 259, 9, 12, 9, 1, -11 }, // 0x37 '7' - { 273, 8, 13, 9, 0, -11 }, // 0x38 '8' - { 286, 9, 13, 9, 0, -11 }, // 0x39 '9' - { 301, 5, 9, 5, 0, -7 }, // 0x3A ':' - { 307, 5, 11, 5, 0, -7 }, // 0x3B ';' - { 314, 9, 10, 10, 1, -9 }, // 0x3C '<' - { 326, 9, 5, 10, 1, -6 }, // 0x3D '=' - { 332, 9, 10, 10, 1, -9 }, // 0x3E '>' - { 344, 8, 13, 9, 1, -11 }, // 0x3F '?' - { 357, 13, 13, 15, 1, -12 }, // 0x40 '@' - { 379, 12, 13, 13, 0, -11 }, // 0x41 'A' - { 399, 12, 13, 12, 0, -11 }, // 0x42 'B' - { 419, 12, 13, 11, 1, -11 }, // 0x43 'C' - { 439, 14, 13, 13, 0, -11 }, // 0x44 'D' - { 462, 13, 13, 11, 0, -11 }, // 0x45 'E' - { 484, 13, 13, 11, 0, -11 }, // 0x46 'F' - { 506, 12, 13, 13, 1, -11 }, // 0x47 'G' - { 526, 15, 13, 14, 0, -11 }, // 0x48 'H' - { 551, 8, 13, 7, 0, -11 }, // 0x49 'I' - { 564, 10, 14, 9, 0, -11 }, // 0x4A 'J' - { 582, 13, 13, 12, 0, -11 }, // 0x4B 'K' - { 604, 12, 13, 11, 0, -11 }, // 0x4C 'L' - { 624, 17, 13, 16, 0, -11 }, // 0x4D 'M' - { 652, 14, 13, 13, 0, -11 }, // 0x4E 'N' - { 675, 12, 13, 12, 1, -11 }, // 0x4F 'O' - { 695, 12, 13, 11, 0, -11 }, // 0x50 'P' - { 715, 12, 16, 12, 1, -11 }, // 0x51 'Q' - { 739, 12, 13, 12, 0, -11 }, // 0x52 'R' - { 759, 9, 13, 9, 0, -11 }, // 0x53 'S' - { 774, 11, 13, 11, 2, -11 }, // 0x54 'T' - { 792, 12, 13, 13, 2, -11 }, // 0x55 'U' - { 812, 12, 12, 13, 2, -11 }, // 0x56 'V' - { 830, 16, 12, 17, 2, -11 }, // 0x57 'W' - { 854, 13, 13, 13, 0, -11 }, // 0x58 'X' - { 876, 11, 13, 11, 2, -11 }, // 0x59 'Y' - { 894, 11, 13, 10, 0, -11 }, // 0x5A 'Z' - { 912, 8, 15, 6, -1, -11 }, // 0x5B '[' - { 927, 5, 12, 7, 2, -11 }, // 0x5C '\' - { 935, 7, 15, 6, -1, -11 }, // 0x5D ']' - { 949, 8, 7, 10, 1, -11 }, // 0x5E '^' - { 956, 9, 1, 9, 0, 3 }, // 0x5F '_' - { 958, 4, 3, 6, 2, -11 }, // 0x60 '`' - { 960, 9, 9, 9, 0, -7 }, // 0x61 'a' - { 971, 8, 14, 9, 0, -12 }, // 0x62 'b' - { 985, 8, 9, 8, 0, -7 }, // 0x63 'c' - { 994, 10, 14, 9, 0, -12 }, // 0x64 'd' - { 1012, 7, 9, 7, 0, -7 }, // 0x65 'e' - { 1020, 11, 17, 9, -2, -12 }, // 0x66 'f' - { 1044, 9, 12, 9, 0, -7 }, // 0x67 'g' - { 1058, 9, 14, 10, 0, -12 }, // 0x68 'h' - { 1074, 5, 13, 5, 1, -11 }, // 0x69 'i' - { 1083, 9, 16, 6, -1, -11 }, // 0x6A 'j' - { 1101, 10, 14, 9, 0, -12 }, // 0x6B 'k' - { 1119, 5, 14, 5, 1, -12 }, // 0x6C 'l' - { 1128, 13, 9, 14, 0, -7 }, // 0x6D 'm' - { 1143, 8, 9, 9, 0, -7 }, // 0x6E 'n' - { 1152, 8, 9, 9, 0, -7 }, // 0x6F 'o' - { 1161, 10, 12, 9, -2, -7 }, // 0x70 'p' - { 1176, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 1190, 8, 8, 7, 0, -7 }, // 0x72 'r' - { 1198, 6, 9, 6, 0, -7 }, // 0x73 's' - { 1205, 5, 12, 5, 1, -10 }, // 0x74 't' - { 1213, 8, 9, 10, 1, -7 }, // 0x75 'u' - { 1222, 7, 8, 8, 1, -7 }, // 0x76 'v' - { 1229, 10, 8, 12, 1, -7 }, // 0x77 'w' - { 1239, 10, 9, 9, -1, -7 }, // 0x78 'x' - { 1251, 9, 12, 8, -1, -7 }, // 0x79 'y' - { 1265, 8, 9, 7, 0, -7 }, // 0x7A 'z' - { 1274, 8, 16, 6, 0, -12 }, // 0x7B '{' - { 1290, 1, 12, 5, 2, -11 }, // 0x7C '|' - { 1292, 8, 16, 6, -2, -12 }, // 0x7D '}' - { 1308, 8, 2, 10, 1, -4 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1982 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h deleted file mode 100644 index 52332a7ad..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h +++ /dev/null @@ -1,271 +0,0 @@ -const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { - 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, - 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, - 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, - 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, - 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, - 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, - 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, - 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, - 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, - 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, - 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, - 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, - 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, - 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, - 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, - 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, - 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, - 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, - 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, - 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, - 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, - 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, - 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, - 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, - 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, - 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, - 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, - 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, - 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, - 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, - 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, - 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, - 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, - 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, - 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, - 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, - 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, - 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, - 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, - 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, - 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, - 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, - 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, - 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, - 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, - 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, - 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, - 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, - 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, - 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, - 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, - 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, - 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, - 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, - 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, - 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, - 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, - 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, - 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, - 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, - 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, - 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, - 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, - 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, - 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, - 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, - 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, - 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, - 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, - 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, - 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, - 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, - 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, - 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, - 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, - 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, - 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, - 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, - 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, - 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, - 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, - 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, - 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, - 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, - 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, - 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, - 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, - 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, - 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, - 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, - 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, - 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, - 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, - 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, - 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, - 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, - 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, - 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, - 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, - 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, - 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, - 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, - 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, - 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, - 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, - 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, - 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, - 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, - 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, - 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, - 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, - 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, - 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, - 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, - 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, - 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, - 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, - 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, - 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, - 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, - 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, - 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, - 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, - 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, - 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, - 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, - 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, - 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, - 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, - 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, - 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, - 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, - 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, - 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, - 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, - 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, - 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, - 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, - 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, - 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, - 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, - 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, - 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, - 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, - 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, - 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, - 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, - 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, - 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, - 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, - 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, - 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, - 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, - 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, - 0x18, 0x8C, 0x0F, 0x00 }; - -const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 6, 16, 8, 1, -15 }, // 0x21 '!' - { 12, 7, 6, 8, 3, -15 }, // 0x22 '"' - { 18, 13, 16, 12, 0, -15 }, // 0x23 '#' - { 44, 12, 20, 12, 0, -17 }, // 0x24 '$' - { 74, 17, 17, 20, 2, -16 }, // 0x25 '%' - { 111, 15, 16, 19, 2, -15 }, // 0x26 '&' - { 141, 2, 6, 5, 4, -15 }, // 0x27 ''' - { 143, 7, 20, 8, 1, -15 }, // 0x28 '(' - { 161, 7, 20, 8, 0, -15 }, // 0x29 ')' - { 179, 8, 10, 12, 4, -15 }, // 0x2A '*' - { 189, 11, 11, 16, 2, -10 }, // 0x2B '+' - { 205, 3, 6, 6, 0, -2 }, // 0x2C ',' - { 208, 5, 1, 8, 1, -5 }, // 0x2D '-' - { 209, 2, 3, 6, 1, -2 }, // 0x2E '.' - { 210, 11, 16, 7, 0, -15 }, // 0x2F '/' - { 232, 11, 17, 12, 1, -16 }, // 0x30 '0' - { 256, 9, 17, 12, 1, -16 }, // 0x31 '1' - { 276, 10, 15, 12, 1, -14 }, // 0x32 '2' - { 295, 10, 16, 12, 1, -15 }, // 0x33 '3' - { 315, 11, 16, 12, 0, -15 }, // 0x34 '4' - { 337, 11, 16, 12, 0, -15 }, // 0x35 '5' - { 359, 12, 17, 12, 1, -16 }, // 0x36 '6' - { 385, 11, 16, 12, 2, -15 }, // 0x37 '7' - { 407, 11, 17, 12, 1, -16 }, // 0x38 '8' - { 431, 11, 17, 12, 1, -16 }, // 0x39 '9' - { 455, 4, 11, 6, 1, -10 }, // 0x3A ':' - { 461, 5, 14, 6, 0, -10 }, // 0x3B ';' - { 470, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 490, 12, 6, 16, 2, -8 }, // 0x3D '=' - { 499, 12, 13, 14, 2, -12 }, // 0x3E '>' - { 519, 9, 16, 11, 3, -15 }, // 0x3F '?' - { 537, 16, 16, 19, 2, -15 }, // 0x40 '@' - { 569, 15, 15, 16, 0, -14 }, // 0x41 'A' - { 598, 14, 16, 14, 0, -15 }, // 0x42 'B' - { 626, 16, 16, 15, 1, -15 }, // 0x43 'C' - { 658, 16, 16, 17, 0, -15 }, // 0x44 'D' - { 690, 16, 16, 14, 0, -15 }, // 0x45 'E' - { 722, 16, 16, 14, 0, -15 }, // 0x46 'F' - { 754, 16, 16, 17, 1, -15 }, // 0x47 'G' - { 786, 19, 16, 17, 0, -15 }, // 0x48 'H' - { 824, 9, 16, 8, 0, -15 }, // 0x49 'I' - { 842, 12, 16, 10, 0, -15 }, // 0x4A 'J' - { 866, 17, 16, 15, 0, -15 }, // 0x4B 'K' - { 900, 14, 16, 14, 0, -15 }, // 0x4C 'L' - { 928, 21, 16, 20, 0, -15 }, // 0x4D 'M' - { 970, 18, 16, 16, 0, -15 }, // 0x4E 'N' - { 1006, 15, 16, 16, 1, -15 }, // 0x4F 'O' - { 1036, 14, 16, 14, 0, -15 }, // 0x50 'P' - { 1064, 15, 20, 16, 1, -15 }, // 0x51 'Q' - { 1102, 14, 16, 15, 0, -15 }, // 0x52 'R' - { 1130, 12, 16, 11, 0, -15 }, // 0x53 'S' - { 1154, 15, 16, 14, 2, -15 }, // 0x54 'T' - { 1184, 16, 16, 17, 3, -15 }, // 0x55 'U' - { 1216, 15, 16, 16, 3, -15 }, // 0x56 'V' - { 1246, 20, 16, 21, 3, -15 }, // 0x57 'W' - { 1286, 16, 16, 16, 0, -15 }, // 0x58 'X' - { 1318, 13, 16, 14, 3, -15 }, // 0x59 'Y' - { 1344, 15, 16, 14, 0, -15 }, // 0x5A 'Z' - { 1374, 8, 20, 9, 1, -15 }, // 0x5B '[' - { 1394, 8, 16, 12, 3, -15 }, // 0x5C '\' - { 1410, 7, 20, 9, 1, -15 }, // 0x5D ']' - { 1428, 10, 9, 10, 0, -15 }, // 0x5E '^' - { 1440, 12, 1, 12, 0, 3 }, // 0x5F '_' - { 1442, 4, 4, 6, 3, -15 }, // 0x60 '`' - { 1444, 12, 11, 12, 0, -10 }, // 0x61 'a' - { 1461, 10, 16, 11, 1, -15 }, // 0x62 'b' - { 1481, 9, 11, 10, 1, -10 }, // 0x63 'c' - { 1494, 13, 16, 12, 0, -15 }, // 0x64 'd' - { 1520, 8, 11, 10, 1, -10 }, // 0x65 'e' - { 1531, 14, 22, 10, -2, -16 }, // 0x66 'f' - { 1570, 12, 16, 11, -1, -10 }, // 0x67 'g' - { 1594, 12, 16, 12, 0, -15 }, // 0x68 'h' - { 1618, 5, 16, 6, 1, -15 }, // 0x69 'i' - { 1628, 9, 21, 7, -2, -15 }, // 0x6A 'j' - { 1652, 11, 16, 11, 0, -15 }, // 0x6B 'k' - { 1674, 6, 16, 6, 1, -15 }, // 0x6C 'l' - { 1686, 17, 11, 17, 0, -10 }, // 0x6D 'm' - { 1710, 12, 11, 12, 0, -10 }, // 0x6E 'n' - { 1727, 10, 11, 11, 1, -10 }, // 0x6F 'o' - { 1741, 13, 16, 11, -2, -10 }, // 0x70 'p' - { 1767, 11, 16, 12, 0, -10 }, // 0x71 'q' - { 1789, 9, 11, 9, 0, -10 }, // 0x72 'r' - { 1802, 9, 11, 8, 0, -10 }, // 0x73 's' - { 1815, 6, 13, 6, 1, -12 }, // 0x74 't' - { 1825, 11, 11, 12, 1, -10 }, // 0x75 'u' - { 1841, 10, 11, 11, 1, -10 }, // 0x76 'v' - { 1855, 14, 11, 16, 2, -10 }, // 0x77 'w' - { 1875, 12, 11, 10, -1, -10 }, // 0x78 'x' - { 1892, 11, 16, 11, 0, -10 }, // 0x79 'y' - { 1914, 9, 13, 9, 0, -10 }, // 0x7A 'z' - { 1929, 9, 21, 10, 1, -16 }, // 0x7B '{' - { 1953, 1, 16, 7, 3, -15 }, // 0x7C '|' - { 1955, 9, 21, 10, 0, -16 }, // 0x7D '}' - { 1979, 11, 3, 13, 1, -6 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic12pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic12pt7bBitmaps, - (GFXglyph *)FreeSerifItalic12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2656 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h deleted file mode 100644 index 666ae7eb2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h +++ /dev/null @@ -1,450 +0,0 @@ -const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, - 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, - 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, - 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, - 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, - 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, - 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, - 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, - 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, - 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, - 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, - 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, - 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, - 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, - 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, - 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, - 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, - 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, - 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, - 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, - 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, - 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, - 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, - 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, - 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, - 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, - 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, - 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, - 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, - 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, - 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, - 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, - 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, - 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, - 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, - 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, - 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, - 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, - 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, - 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, - 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, - 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, - 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, - 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, - 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, - 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, - 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, - 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, - 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, - 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, - 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, - 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, - 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, - 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, - 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, - 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, - 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, - 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, - 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, - 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, - 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, - 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, - 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, - 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, - 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, - 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, - 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, - 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, - 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, - 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, - 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, - 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, - 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, - 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, - 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, - 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, - 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, - 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, - 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, - 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, - 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, - 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, - 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, - 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, - 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, - 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, - 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, - 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, - 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, - 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, - 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, - 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, - 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, - 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, - 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, - 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, - 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, - 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, - 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, - 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, - 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, - 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, - 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, - 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, - 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, - 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, - 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, - 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, - 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, - 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, - 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, - 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, - 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, - 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, - 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, - 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, - 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, - 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, - 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, - 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, - 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, - 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, - 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, - 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, - 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, - 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, - 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, - 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, - 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, - 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, - 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, - 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, - 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, - 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, - 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, - 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, - 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, - 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, - 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, - 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, - 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, - 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, - 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, - 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, - 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, - 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, - 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, - 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, - 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, - 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, - 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, - 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, - 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, - 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, - 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, - 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, - 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, - 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, - 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, - 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, - 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, - 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, - 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, - 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, - 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, - 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, - 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, - 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, - 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, - 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, - 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, - 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, - 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, - 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, - 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, - 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, - 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, - 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, - 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, - 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, - 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, - 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, - 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, - 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, - 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, - 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, - 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, - 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, - 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, - 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, - 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, - 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, - 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, - 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, - 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, - 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, - 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, - 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, - 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, - 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, - 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, - 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, - 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, - 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, - 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, - 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, - 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, - 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, - 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, - 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, - 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, - 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, - 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, - 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, - 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, - 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, - 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, - 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, - 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, - 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, - 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, - 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, - 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, - 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, - 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, - 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, - 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, - 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, - 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, - 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, - 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, - 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, - 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, - 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, - 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, - 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, - 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, - 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, - 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, - 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, - 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, - 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, - 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, - 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, - 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, - 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, - 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, - 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, - 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, - 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, - 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, - 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, - 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, - 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, - 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, - 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, - 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, - 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, - 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, - 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, - 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, - 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, - 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, - 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, - 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, - 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, - 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, - 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, - 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, - 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, - 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, - 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, - 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, - 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, - 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, - 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, - 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, - 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, - 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, - 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, - 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, - 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, - 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, - 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, - 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, - 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, - 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, - 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, - 0xF8, 0x7F, 0xC0, 0x07, 0x80 }; - -const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 10, 23, 12, 1, -22 }, // 0x21 '!' - { 29, 12, 9, 12, 4, -22 }, // 0x22 '"' - { 43, 19, 23, 17, 0, -22 }, // 0x23 '#' - { 98, 15, 29, 17, 1, -25 }, // 0x24 '$' - { 153, 25, 23, 29, 3, -22 }, // 0x25 '%' - { 225, 22, 23, 27, 3, -22 }, // 0x26 '&' - { 289, 5, 9, 7, 4, -22 }, // 0x27 ''' - { 295, 9, 29, 12, 1, -22 }, // 0x28 '(' - { 328, 9, 29, 12, 1, -22 }, // 0x29 ')' - { 361, 12, 14, 18, 5, -22 }, // 0x2A '*' - { 382, 16, 18, 24, 4, -17 }, // 0x2B '+' - { 418, 5, 8, 9, -1, -2 }, // 0x2C ',' - { 423, 8, 2, 12, 2, -8 }, // 0x2D '-' - { 425, 4, 4, 9, 1, -3 }, // 0x2E '.' - { 427, 16, 23, 10, 0, -22 }, // 0x2F '/' - { 473, 17, 24, 17, 1, -23 }, // 0x30 '0' - { 524, 12, 24, 17, 2, -23 }, // 0x31 '1' - { 560, 16, 23, 17, 1, -22 }, // 0x32 '2' - { 606, 17, 24, 18, 0, -23 }, // 0x33 '3' - { 657, 17, 24, 17, 0, -23 }, // 0x34 '4' - { 708, 16, 23, 18, 0, -22 }, // 0x35 '5' - { 754, 17, 24, 18, 1, -23 }, // 0x36 '6' - { 805, 16, 23, 17, 3, -22 }, // 0x37 '7' - { 851, 16, 24, 18, 1, -23 }, // 0x38 '8' - { 899, 16, 24, 17, 1, -23 }, // 0x39 '9' - { 947, 7, 15, 9, 2, -14 }, // 0x3A ':' - { 961, 9, 20, 9, 1, -14 }, // 0x3B ';' - { 984, 18, 18, 20, 2, -17 }, // 0x3C '<' - { 1025, 18, 9, 23, 3, -12 }, // 0x3D '=' - { 1046, 18, 18, 20, 2, -17 }, // 0x3E '>' - { 1087, 12, 23, 16, 4, -22 }, // 0x3F '?' - { 1122, 24, 23, 27, 2, -22 }, // 0x40 '@' - { 1191, 21, 23, 23, 0, -22 }, // 0x41 'A' - { 1252, 21, 23, 21, 0, -22 }, // 0x42 'B' - { 1313, 21, 23, 21, 2, -22 }, // 0x43 'C' - { 1374, 25, 23, 25, 0, -22 }, // 0x44 'D' - { 1446, 22, 23, 20, 0, -22 }, // 0x45 'E' - { 1510, 22, 23, 20, 0, -22 }, // 0x46 'F' - { 1574, 23, 23, 24, 2, -22 }, // 0x47 'G' - { 1641, 27, 23, 25, 0, -22 }, // 0x48 'H' - { 1719, 14, 23, 11, 0, -22 }, // 0x49 'I' - { 1760, 17, 23, 15, 0, -22 }, // 0x4A 'J' - { 1809, 25, 23, 22, 0, -22 }, // 0x4B 'K' - { 1881, 20, 23, 20, 0, -22 }, // 0x4C 'L' - { 1939, 31, 23, 29, 0, -22 }, // 0x4D 'M' - { 2029, 26, 23, 24, 0, -22 }, // 0x4E 'N' - { 2104, 23, 23, 23, 1, -22 }, // 0x4F 'O' - { 2171, 22, 23, 20, 0, -22 }, // 0x50 'P' - { 2235, 23, 29, 23, 1, -22 }, // 0x51 'Q' - { 2319, 21, 23, 22, 0, -22 }, // 0x52 'R' - { 2380, 17, 23, 16, 0, -22 }, // 0x53 'S' - { 2429, 20, 23, 21, 3, -22 }, // 0x54 'T' - { 2487, 23, 23, 25, 4, -22 }, // 0x55 'U' - { 2554, 21, 23, 23, 5, -22 }, // 0x56 'V' - { 2615, 29, 23, 31, 5, -22 }, // 0x57 'W' - { 2699, 24, 23, 23, 0, -22 }, // 0x58 'X' - { 2768, 19, 23, 21, 4, -22 }, // 0x59 'Y' - { 2823, 22, 23, 20, 0, -22 }, // 0x5A 'Z' - { 2887, 13, 28, 14, 1, -22 }, // 0x5B '[' - { 2933, 12, 23, 17, 4, -22 }, // 0x5C '\' - { 2968, 12, 28, 14, 1, -22 }, // 0x5D ']' - { 3010, 15, 13, 15, 0, -22 }, // 0x5E '^' - { 3035, 18, 2, 17, 0, 3 }, // 0x5F '_' - { 3040, 6, 6, 9, 5, -22 }, // 0x60 '`' - { 3045, 15, 15, 17, 1, -14 }, // 0x61 'a' - { 3074, 16, 24, 17, 1, -23 }, // 0x62 'b' - { 3122, 13, 15, 14, 1, -14 }, // 0x63 'c' - { 3147, 17, 24, 18, 1, -23 }, // 0x64 'd' - { 3198, 13, 15, 14, 1, -14 }, // 0x65 'e' - { 3223, 20, 31, 15, -3, -23 }, // 0x66 'f' - { 3301, 16, 22, 15, -1, -14 }, // 0x67 'g' - { 3345, 16, 24, 17, 1, -23 }, // 0x68 'h' - { 3393, 9, 23, 9, 1, -22 }, // 0x69 'i' - { 3419, 15, 30, 10, -3, -22 }, // 0x6A 'j' - { 3476, 15, 24, 16, 1, -23 }, // 0x6B 'k' - { 3521, 8, 25, 9, 1, -23 }, // 0x6C 'l' - { 3546, 24, 15, 25, 0, -14 }, // 0x6D 'm' - { 3591, 17, 15, 17, 0, -14 }, // 0x6E 'n' - { 3623, 15, 15, 17, 1, -14 }, // 0x6F 'o' - { 3652, 20, 22, 16, -3, -14 }, // 0x70 'p' - { 3707, 16, 22, 17, 1, -14 }, // 0x71 'q' - { 3751, 13, 15, 13, 1, -14 }, // 0x72 'r' - { 3776, 13, 15, 12, 0, -14 }, // 0x73 's' - { 3801, 9, 18, 8, 1, -17 }, // 0x74 't' - { 3822, 15, 15, 17, 1, -14 }, // 0x75 'u' - { 3851, 14, 15, 16, 2, -14 }, // 0x76 'v' - { 3878, 22, 15, 24, 1, -14 }, // 0x77 'w' - { 3920, 16, 15, 15, -1, -14 }, // 0x78 'x' - { 3950, 16, 22, 16, 0, -14 }, // 0x79 'y' - { 3994, 14, 18, 14, 0, -14 }, // 0x7A 'z' - { 4026, 12, 30, 14, 2, -23 }, // 0x7B '{' - { 4071, 2, 23, 10, 4, -22 }, // 0x7C '|' - { 4077, 12, 31, 14, 0, -24 }, // 0x7D '}' - { 4124, 17, 4, 19, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic18pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic18pt7bBitmaps, - (GFXglyph *)FreeSerifItalic18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4805 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h deleted file mode 100644 index 75da1e057..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h +++ /dev/null @@ -1,737 +0,0 @@ -const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, - 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, - 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, - 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, - 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, - 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, - 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, - 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, - 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, - 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, - 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, - 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, - 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, - 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, - 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, - 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, - 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, - 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, - 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, - 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, - 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, - 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, - 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, - 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, - 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, - 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, - 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, - 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, - 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, - 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, - 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, - 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, - 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, - 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, - 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, - 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, - 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, - 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, - 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, - 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, - 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, - 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, - 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, - 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, - 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, - 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, - 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, - 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, - 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, - 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, - 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, - 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, - 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, - 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, - 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, - 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, - 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, - 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, - 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, - 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, - 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, - 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, - 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, - 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, - 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, - 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, - 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, - 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, - 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, - 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, - 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, - 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, - 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, - 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, - 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, - 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, - 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, - 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, - 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, - 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, - 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, - 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, - 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, - 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, - 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, - 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, - 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, - 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, - 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, - 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, - 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, - 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, - 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, - 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, - 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, - 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, - 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, - 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, - 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, - 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, - 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, - 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, - 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, - 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, - 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, - 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 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, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, - 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, - 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, - 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, - 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, - 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, - 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, - 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, - 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, - 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, - 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, - 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, - 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, - 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, - 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, - 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, - 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, - 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, - 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, - 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, - 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, - 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, - 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, - 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, - 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, - 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, - 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, - 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, - 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, - 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, - 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, - 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, - 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, - 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, - 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, - 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, - 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, - 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, - 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, - 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, - 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, - 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, - 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, - 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, - 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, - 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, - 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, - 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, - 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, - 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, - 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, - 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, - 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, - 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, - 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, - 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, - 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, - 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, - 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, - 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, - 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, - 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, - 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, - 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, - 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, - 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, - 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, - 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, - 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, - 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, - 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, - 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, - 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, - 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, - 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, - 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, - 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, - 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, - 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, - 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, - 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, - 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, - 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, - 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, - 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, - 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, - 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, - 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, - 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, - 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, - 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, - 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, - 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, - 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, - 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, - 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, - 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, - 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, - 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, - 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, - 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, - 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, - 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, - 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, - 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, - 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, - 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, - 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, - 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, - 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, - 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, - 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, - 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, - 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, - 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, - 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, - 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, - 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, - 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, - 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, - 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, - 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, - 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, - 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, - 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, - 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, - 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, - 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, - 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, - 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, - 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, - 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, - 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, - 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, - 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, - 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, - 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, - 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, - 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, - 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, - 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, - 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, - 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, - 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, - 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, - 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, - 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, - 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, - 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, - 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, - 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, - 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, - 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, - 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, - 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, - 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, - 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, - 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, - 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, - 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, - 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, - 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, - 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, - 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, - 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, - 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, - 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, - 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, - 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, - 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, - 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, - 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, - 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, - 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, - 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, - 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, - 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, - 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, - 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, - 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, - 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, - 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, - 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, - 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, - 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, - 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, - 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, - 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, - 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, - 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, - 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, - 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, - 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, - 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, - 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, - 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, - 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, - 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, - 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, - 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, - 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, - 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, - 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, - 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, - 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, - 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, - 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, - 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, - 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, - 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, - 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, - 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, - 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, - 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, - 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, - 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, - 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, - 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, - 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, - 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, - 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, - 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, - 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, - 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, - 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, - 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, - 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, - 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, - 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, - 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, - 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, - 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, - 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, - 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, - 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, - 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, - 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, - 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, - 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, - 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, - 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, - 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, - 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, - 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, - 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, - 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, - 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, - 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, - 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, - 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, - 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, - 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, - 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, - 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, - 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, - 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, - 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, - 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, - 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, - 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, - 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, - 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, - 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, - 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, - 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, - 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, - 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, - 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, - 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, - 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, - 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, - 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, - 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, - 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, - 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, - 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, - 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, - 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, - 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, - 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, - 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, - 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, - 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, - 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, - 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, - 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, - 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, - 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, - 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, - 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, - 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, - 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, - 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, - 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, - 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, - 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, - 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, - 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, - 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, - 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, - 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, - 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, - 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, - 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, - 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, - 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, - 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, - 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, - 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, - 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, - 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, - 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, - 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, - 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, - 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, - 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, - 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, - 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, - 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, - 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, - 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, - 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, - 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, - 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, - 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, - 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, - 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, - 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00 }; - -const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 12, 32, 16, 2, -30 }, // 0x21 '!' - { 48, 14, 12, 16, 6, -31 }, // 0x22 '"' - { 69, 25, 31, 23, 0, -30 }, // 0x23 '#' - { 166, 21, 38, 24, 2, -33 }, // 0x24 '$' - { 266, 33, 32, 39, 4, -30 }, // 0x25 '%' - { 398, 30, 33, 37, 4, -31 }, // 0x26 '&' - { 522, 5, 12, 9, 6, -31 }, // 0x27 ''' - { 530, 13, 39, 16, 2, -30 }, // 0x28 '(' - { 594, 13, 39, 16, 0, -30 }, // 0x29 ')' - { 658, 16, 20, 23, 7, -31 }, // 0x2A '*' - { 698, 23, 23, 32, 4, -22 }, // 0x2B '+' - { 765, 7, 11, 12, -1, -4 }, // 0x2C ',' - { 775, 11, 3, 16, 2, -11 }, // 0x2D '-' - { 780, 5, 5, 12, 1, -3 }, // 0x2E '.' - { 784, 21, 33, 14, 0, -31 }, // 0x2F '/' - { 871, 21, 31, 23, 2, -30 }, // 0x30 '0' - { 953, 17, 32, 23, 2, -31 }, // 0x31 '1' - { 1021, 21, 31, 24, 0, -30 }, // 0x32 '2' - { 1103, 22, 32, 23, 0, -31 }, // 0x33 '3' - { 1191, 22, 32, 23, 0, -31 }, // 0x34 '4' - { 1279, 22, 32, 24, 0, -31 }, // 0x35 '5' - { 1367, 23, 32, 23, 1, -31 }, // 0x36 '6' - { 1459, 21, 32, 23, 4, -31 }, // 0x37 '7' - { 1543, 22, 32, 23, 1, -31 }, // 0x38 '8' - { 1631, 22, 33, 23, 1, -31 }, // 0x39 '9' - { 1722, 9, 22, 12, 2, -20 }, // 0x3A ':' - { 1747, 11, 27, 12, 1, -20 }, // 0x3B ';' - { 1785, 23, 25, 27, 3, -24 }, // 0x3C '<' - { 1857, 24, 12, 31, 4, -17 }, // 0x3D '=' - { 1893, 24, 25, 27, 3, -24 }, // 0x3E '>' - { 1968, 16, 33, 21, 6, -31 }, // 0x3F '?' - { 2034, 33, 33, 37, 3, -31 }, // 0x40 '@' - { 2171, 29, 31, 31, 0, -30 }, // 0x41 'A' - { 2284, 28, 31, 28, 0, -30 }, // 0x42 'B' - { 2393, 30, 33, 29, 2, -31 }, // 0x43 'C' - { 2517, 33, 31, 33, 0, -30 }, // 0x44 'D' - { 2645, 29, 31, 27, 0, -30 }, // 0x45 'E' - { 2758, 29, 31, 27, 0, -30 }, // 0x46 'F' - { 2871, 31, 33, 32, 2, -31 }, // 0x47 'G' - { 2999, 36, 31, 33, 0, -30 }, // 0x48 'H' - { 3139, 18, 31, 15, 0, -30 }, // 0x49 'I' - { 3209, 23, 32, 20, 0, -30 }, // 0x4A 'J' - { 3301, 33, 31, 30, 0, -30 }, // 0x4B 'K' - { 3429, 27, 31, 27, 0, -30 }, // 0x4C 'L' - { 3534, 42, 31, 39, 0, -30 }, // 0x4D 'M' - { 3697, 35, 32, 32, 0, -30 }, // 0x4E 'N' - { 3837, 30, 33, 31, 2, -31 }, // 0x4F 'O' - { 3961, 29, 31, 27, 0, -30 }, // 0x50 'P' - { 4074, 30, 41, 31, 2, -31 }, // 0x51 'Q' - { 4228, 28, 31, 29, 0, -30 }, // 0x52 'R' - { 4337, 23, 33, 21, 0, -31 }, // 0x53 'S' - { 4432, 27, 31, 28, 4, -30 }, // 0x54 'T' - { 4537, 31, 32, 33, 5, -30 }, // 0x55 'U' - { 4661, 29, 32, 31, 6, -30 }, // 0x56 'V' - { 4777, 39, 32, 42, 6, -30 }, // 0x57 'W' - { 4933, 32, 31, 31, 0, -30 }, // 0x58 'X' - { 5057, 26, 31, 28, 5, -30 }, // 0x59 'Y' - { 5158, 29, 31, 26, 0, -30 }, // 0x5A 'Z' - { 5271, 17, 39, 18, 1, -31 }, // 0x5B '[' - { 5354, 17, 33, 23, 5, -31 }, // 0x5C '\' - { 5425, 17, 39, 18, 1, -31 }, // 0x5D ']' - { 5508, 20, 17, 20, 0, -31 }, // 0x5E '^' - { 5551, 24, 2, 23, 0, 5 }, // 0x5F '_' - { 5557, 8, 8, 12, 6, -31 }, // 0x60 '`' - { 5565, 21, 21, 23, 1, -20 }, // 0x61 'a' - { 5621, 21, 33, 22, 1, -31 }, // 0x62 'b' - { 5708, 18, 22, 19, 1, -20 }, // 0x63 'c' - { 5758, 24, 33, 23, 1, -31 }, // 0x64 'd' - { 5857, 18, 22, 19, 1, -20 }, // 0x65 'e' - { 5907, 27, 42, 20, -4, -31 }, // 0x66 'f' - { 6049, 21, 31, 21, -1, -20 }, // 0x67 'g' - { 6131, 21, 32, 23, 1, -31 }, // 0x68 'h' - { 6215, 10, 32, 12, 2, -30 }, // 0x69 'i' - { 6255, 19, 41, 13, -3, -30 }, // 0x6A 'j' - { 6353, 21, 33, 21, 1, -31 }, // 0x6B 'k' - { 6440, 11, 33, 12, 2, -31 }, // 0x6C 'l' - { 6486, 31, 21, 34, 1, -20 }, // 0x6D 'm' - { 6568, 21, 21, 23, 1, -20 }, // 0x6E 'n' - { 6624, 21, 22, 22, 1, -20 }, // 0x6F 'o' - { 6682, 27, 31, 22, -4, -20 }, // 0x70 'p' - { 6787, 21, 31, 23, 1, -20 }, // 0x71 'q' - { 6869, 17, 21, 17, 1, -20 }, // 0x72 'r' - { 6914, 17, 22, 16, 0, -20 }, // 0x73 's' - { 6961, 12, 26, 11, 1, -24 }, // 0x74 't' - { 7000, 20, 22, 23, 1, -20 }, // 0x75 'u' - { 7055, 18, 22, 21, 3, -20 }, // 0x76 'v' - { 7105, 30, 22, 32, 2, -20 }, // 0x77 'w' - { 7188, 22, 22, 20, -1, -20 }, // 0x78 'x' - { 7249, 21, 31, 22, 1, -20 }, // 0x79 'y' - { 7331, 17, 24, 18, 0, -19 }, // 0x7A 'z' - { 7382, 17, 40, 19, 2, -31 }, // 0x7B '{' - { 7467, 3, 33, 13, 5, -31 }, // 0x7C '|' - { 7480, 16, 41, 19, 0, -32 }, // 0x7D '}' - { 7562, 22, 6, 25, 2, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic24pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic24pt7bBitmaps, - (GFXglyph *)FreeSerifItalic24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8251 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h deleted file mode 100644 index 34e6b8df2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h +++ /dev/null @@ -1,202 +0,0 @@ -const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { - 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, - 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, - 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, - 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, - 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, - 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, - 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, - 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, - 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, - 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, - 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, - 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, - 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, - 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, - 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, - 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, - 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, - 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, - 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, - 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, - 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, - 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, - 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, - 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, - 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, - 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, - 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, - 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, - 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, - 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, - 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, - 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, - 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, - 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, - 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, - 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, - 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, - 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, - 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, - 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, - 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, - 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, - 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, - 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, - 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, - 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, - 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, - 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, - 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, - 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, - 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, - 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, - 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, - 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, - 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, - 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, - 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, - 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, - 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, - 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, - 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, - 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, - 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, - 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, - 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, - 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, - 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, - 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, - 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, - 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, - 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, - 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, - 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, - 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, - 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, - 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, - 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, - 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, - 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, - 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, - 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, - 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, - 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, - 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, - 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, - 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, - 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, - 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, - 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, - 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, - 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, - 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, - 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, - 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, - 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E }; - -const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 4, 12, 6, 1, -11 }, // 0x21 '!' - { 6, 5, 4, 6, 3, -11 }, // 0x22 '"' - { 9, 10, 12, 9, 0, -11 }, // 0x23 '#' - { 24, 9, 15, 9, 1, -12 }, // 0x24 '$' - { 41, 14, 12, 15, 1, -11 }, // 0x25 '%' - { 62, 12, 12, 14, 1, -11 }, // 0x26 '&' - { 80, 2, 4, 4, 3, -11 }, // 0x27 ''' - { 81, 6, 15, 6, 1, -11 }, // 0x28 '(' - { 93, 6, 15, 6, 0, -11 }, // 0x29 ')' - { 105, 6, 8, 9, 3, -11 }, // 0x2A '*' - { 111, 9, 9, 12, 1, -8 }, // 0x2B '+' - { 122, 2, 4, 5, 0, -1 }, // 0x2C ',' - { 123, 4, 1, 6, 1, -3 }, // 0x2D '-' - { 124, 2, 2, 5, 0, -1 }, // 0x2E '.' - { 125, 8, 12, 5, 0, -11 }, // 0x2F '/' - { 137, 9, 13, 9, 1, -12 }, // 0x30 '0' - { 152, 6, 13, 9, 1, -12 }, // 0x31 '1' - { 162, 8, 12, 9, 1, -11 }, // 0x32 '2' - { 174, 9, 12, 9, 0, -11 }, // 0x33 '3' - { 188, 9, 12, 9, 0, -11 }, // 0x34 '4' - { 202, 9, 12, 9, 0, -11 }, // 0x35 '5' - { 216, 9, 13, 9, 1, -12 }, // 0x36 '6' - { 231, 9, 12, 9, 1, -11 }, // 0x37 '7' - { 245, 9, 13, 9, 1, -12 }, // 0x38 '8' - { 260, 9, 13, 9, 0, -12 }, // 0x39 '9' - { 275, 4, 8, 4, 1, -7 }, // 0x3A ':' - { 279, 4, 10, 4, 1, -7 }, // 0x3B ';' - { 284, 9, 9, 10, 1, -8 }, // 0x3C '<' - { 295, 9, 5, 12, 2, -6 }, // 0x3D '=' - { 301, 9, 9, 10, 1, -8 }, // 0x3E '>' - { 312, 7, 12, 8, 2, -11 }, // 0x3F '?' - { 323, 13, 12, 14, 1, -11 }, // 0x40 '@' - { 343, 11, 11, 12, 0, -10 }, // 0x41 'A' - { 359, 11, 12, 11, 0, -11 }, // 0x42 'B' - { 376, 12, 12, 11, 1, -11 }, // 0x43 'C' - { 394, 13, 12, 13, 0, -11 }, // 0x44 'D' - { 414, 12, 12, 10, 0, -11 }, // 0x45 'E' - { 432, 12, 12, 10, 0, -11 }, // 0x46 'F' - { 450, 12, 12, 12, 1, -11 }, // 0x47 'G' - { 468, 14, 12, 13, 0, -11 }, // 0x48 'H' - { 489, 7, 12, 6, 0, -11 }, // 0x49 'I' - { 500, 9, 12, 8, 0, -11 }, // 0x4A 'J' - { 514, 13, 12, 12, 0, -11 }, // 0x4B 'K' - { 534, 11, 12, 10, 0, -11 }, // 0x4C 'L' - { 551, 16, 12, 15, 0, -11 }, // 0x4D 'M' - { 575, 13, 12, 12, 0, -11 }, // 0x4E 'N' - { 595, 11, 12, 12, 1, -11 }, // 0x4F 'O' - { 612, 11, 12, 10, 0, -11 }, // 0x50 'P' - { 629, 11, 15, 12, 1, -11 }, // 0x51 'Q' - { 650, 11, 12, 11, 0, -11 }, // 0x52 'R' - { 667, 10, 12, 8, 0, -11 }, // 0x53 'S' - { 682, 11, 12, 11, 2, -11 }, // 0x54 'T' - { 699, 12, 12, 13, 2, -11 }, // 0x55 'U' - { 717, 11, 12, 12, 2, -11 }, // 0x56 'V' - { 734, 15, 12, 16, 2, -11 }, // 0x57 'W' - { 757, 12, 12, 12, 0, -11 }, // 0x58 'X' - { 775, 10, 12, 11, 2, -11 }, // 0x59 'Y' - { 790, 11, 12, 10, 0, -11 }, // 0x5A 'Z' - { 807, 7, 15, 7, 0, -11 }, // 0x5B '[' - { 821, 6, 12, 9, 2, -11 }, // 0x5C '\' - { 830, 6, 15, 7, 1, -11 }, // 0x5D ']' - { 842, 8, 7, 8, 0, -11 }, // 0x5E '^' - { 849, 9, 1, 9, 0, 2 }, // 0x5F '_' - { 851, 3, 3, 5, 2, -11 }, // 0x60 '`' - { 853, 9, 8, 9, 0, -7 }, // 0x61 'a' - { 862, 9, 12, 9, 0, -11 }, // 0x62 'b' - { 876, 8, 8, 7, 0, -7 }, // 0x63 'c' - { 884, 9, 12, 9, 0, -11 }, // 0x64 'd' - { 898, 7, 8, 7, 0, -7 }, // 0x65 'e' - { 905, 11, 17, 8, -1, -12 }, // 0x66 'f' - { 929, 9, 12, 8, 0, -7 }, // 0x67 'g' - { 943, 9, 12, 9, 0, -11 }, // 0x68 'h' - { 957, 4, 12, 4, 1, -11 }, // 0x69 'i' - { 963, 7, 16, 5, -1, -11 }, // 0x6A 'j' - { 977, 8, 12, 8, 0, -11 }, // 0x6B 'k' - { 989, 4, 12, 5, 1, -11 }, // 0x6C 'l' - { 995, 13, 8, 13, 0, -7 }, // 0x6D 'm' - { 1008, 8, 8, 9, 0, -7 }, // 0x6E 'n' - { 1016, 9, 8, 9, 0, -7 }, // 0x6F 'o' - { 1025, 10, 12, 8, -1, -7 }, // 0x70 'p' - { 1040, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 1054, 7, 8, 7, 0, -7 }, // 0x72 'r' - { 1061, 7, 8, 6, 0, -7 }, // 0x73 's' - { 1068, 5, 9, 4, 0, -8 }, // 0x74 't' - { 1074, 8, 8, 9, 1, -7 }, // 0x75 'u' - { 1082, 7, 8, 8, 1, -7 }, // 0x76 'v' - { 1089, 11, 8, 12, 1, -7 }, // 0x77 'w' - { 1100, 9, 8, 8, -1, -7 }, // 0x78 'x' - { 1109, 9, 12, 9, 0, -7 }, // 0x79 'y' - { 1123, 8, 9, 7, 0, -7 }, // 0x7A 'z' - { 1132, 6, 15, 7, 1, -11 }, // 0x7B '{' - { 1144, 1, 12, 5, 2, -11 }, // 0x7C '|' - { 1146, 7, 16, 7, 0, -12 }, // 0x7D '}' - { 1160, 8, 3, 10, 1, -5 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic9pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic9pt7bBitmaps, - (GFXglyph *)FreeSerifItalic9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1835 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h deleted file mode 100644 index ac41f31cd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h +++ /dev/null @@ -1,131 +0,0 @@ -// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, -// stylized font with all characters within a 6 pixel height. - -const uint8_t Org_01Bitmaps[] PROGMEM = { - 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, - 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, - 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, - 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, - 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, - 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, - 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, - 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, - 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, - 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, - 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, - 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, - 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, - 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, - 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, - 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, - 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, - 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, - 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, - 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, - 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, - 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, - 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0 }; - -const GFXglyph Org_01Glyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' - { 1, 3, 1, 4, 0, -4 }, // 0x22 '"' - { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' - { 6, 5, 5, 6, 0, -4 }, // 0x24 '$' - { 10, 5, 5, 6, 0, -4 }, // 0x25 '%' - { 14, 5, 5, 6, 0, -4 }, // 0x26 '&' - { 18, 1, 1, 2, 0, -4 }, // 0x27 ''' - { 19, 2, 5, 3, 0, -4 }, // 0x28 '(' - { 21, 2, 5, 3, 0, -4 }, // 0x29 ')' - { 23, 3, 3, 4, 0, -3 }, // 0x2A '*' - { 25, 3, 3, 4, 0, -3 }, // 0x2B '+' - { 27, 1, 2, 2, 0, 0 }, // 0x2C ',' - { 28, 4, 1, 5, 0, -2 }, // 0x2D '-' - { 29, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 30, 5, 5, 6, 0, -4 }, // 0x2F '/' - { 34, 5, 5, 6, 0, -4 }, // 0x30 '0' - { 38, 1, 5, 2, 0, -4 }, // 0x31 '1' - { 39, 5, 5, 6, 0, -4 }, // 0x32 '2' - { 43, 5, 5, 6, 0, -4 }, // 0x33 '3' - { 47, 5, 5, 6, 0, -4 }, // 0x34 '4' - { 51, 5, 5, 6, 0, -4 }, // 0x35 '5' - { 55, 5, 5, 6, 0, -4 }, // 0x36 '6' - { 59, 5, 5, 6, 0, -4 }, // 0x37 '7' - { 63, 5, 5, 6, 0, -4 }, // 0x38 '8' - { 67, 5, 5, 6, 0, -4 }, // 0x39 '9' - { 71, 1, 4, 2, 0, -3 }, // 0x3A ':' - { 72, 1, 4, 2, 0, -3 }, // 0x3B ';' - { 73, 3, 5, 4, 0, -4 }, // 0x3C '<' - { 75, 4, 3, 5, 0, -3 }, // 0x3D '=' - { 77, 3, 5, 4, 0, -4 }, // 0x3E '>' - { 79, 5, 5, 6, 0, -4 }, // 0x3F '?' - { 83, 5, 5, 6, 0, -4 }, // 0x40 '@' - { 87, 5, 5, 6, 0, -4 }, // 0x41 'A' - { 91, 5, 5, 6, 0, -4 }, // 0x42 'B' - { 95, 5, 5, 6, 0, -4 }, // 0x43 'C' - { 99, 5, 5, 6, 0, -4 }, // 0x44 'D' - { 103, 5, 5, 6, 0, -4 }, // 0x45 'E' - { 107, 5, 5, 6, 0, -4 }, // 0x46 'F' - { 111, 5, 5, 6, 0, -4 }, // 0x47 'G' - { 115, 5, 5, 6, 0, -4 }, // 0x48 'H' - { 119, 5, 5, 6, 0, -4 }, // 0x49 'I' - { 123, 5, 5, 6, 0, -4 }, // 0x4A 'J' - { 127, 5, 5, 6, 0, -4 }, // 0x4B 'K' - { 131, 5, 5, 6, 0, -4 }, // 0x4C 'L' - { 135, 5, 5, 6, 0, -4 }, // 0x4D 'M' - { 139, 5, 5, 6, 0, -4 }, // 0x4E 'N' - { 143, 5, 5, 6, 0, -4 }, // 0x4F 'O' - { 147, 5, 5, 6, 0, -4 }, // 0x50 'P' - { 151, 5, 5, 6, 0, -4 }, // 0x51 'Q' - { 155, 5, 5, 6, 0, -4 }, // 0x52 'R' - { 159, 5, 5, 6, 0, -4 }, // 0x53 'S' - { 163, 5, 5, 6, 0, -4 }, // 0x54 'T' - { 167, 5, 5, 6, 0, -4 }, // 0x55 'U' - { 171, 5, 5, 6, 0, -4 }, // 0x56 'V' - { 175, 5, 5, 6, 0, -4 }, // 0x57 'W' - { 179, 5, 5, 6, 0, -4 }, // 0x58 'X' - { 183, 5, 5, 6, 0, -4 }, // 0x59 'Y' - { 187, 5, 5, 6, 0, -4 }, // 0x5A 'Z' - { 191, 2, 5, 3, 0, -4 }, // 0x5B '[' - { 193, 5, 5, 6, 0, -4 }, // 0x5C '\' - { 197, 2, 5, 3, 0, -4 }, // 0x5D ']' - { 199, 3, 2, 4, 0, -4 }, // 0x5E '^' - { 200, 5, 1, 6, 0, 1 }, // 0x5F '_' - { 201, 1, 1, 2, 0, -4 }, // 0x60 '`' - { 202, 4, 4, 5, 0, -3 }, // 0x61 'a' - { 204, 4, 5, 5, 0, -4 }, // 0x62 'b' - { 207, 4, 4, 5, 0, -3 }, // 0x63 'c' - { 209, 4, 5, 5, 0, -4 }, // 0x64 'd' - { 212, 4, 4, 5, 0, -3 }, // 0x65 'e' - { 214, 3, 5, 4, 0, -4 }, // 0x66 'f' - { 216, 4, 5, 5, 0, -3 }, // 0x67 'g' - { 219, 4, 5, 5, 0, -4 }, // 0x68 'h' - { 222, 1, 4, 2, 0, -3 }, // 0x69 'i' - { 223, 2, 5, 3, 0, -3 }, // 0x6A 'j' - { 225, 4, 5, 5, 0, -4 }, // 0x6B 'k' - { 228, 1, 5, 2, 0, -4 }, // 0x6C 'l' - { 229, 5, 4, 6, 0, -3 }, // 0x6D 'm' - { 232, 4, 4, 5, 0, -3 }, // 0x6E 'n' - { 234, 4, 4, 5, 0, -3 }, // 0x6F 'o' - { 236, 4, 5, 5, 0, -3 }, // 0x70 'p' - { 239, 4, 5, 5, 0, -3 }, // 0x71 'q' - { 242, 4, 4, 5, 0, -3 }, // 0x72 'r' - { 244, 4, 4, 5, 0, -3 }, // 0x73 's' - { 246, 5, 5, 6, 0, -4 }, // 0x74 't' - { 250, 4, 4, 5, 0, -3 }, // 0x75 'u' - { 252, 4, 4, 5, 0, -3 }, // 0x76 'v' - { 254, 5, 4, 6, 0, -3 }, // 0x77 'w' - { 257, 4, 4, 5, 0, -3 }, // 0x78 'x' - { 259, 4, 5, 5, 0, -3 }, // 0x79 'y' - { 262, 4, 4, 5, 0, -3 }, // 0x7A 'z' - { 264, 3, 5, 4, 0, -4 }, // 0x7B '{' - { 266, 1, 5, 2, 0, -4 }, // 0x7C '|' - { 267, 3, 5, 4, 0, -4 }, // 0x7D '}' - { 269, 5, 3, 6, 0, -3 } }; // 0x7E '~' - -const GFXfont Org_01 PROGMEM = { - (uint8_t *)Org_01Bitmaps, - (GFXglyph *)Org_01Glyphs, - 0x20, 0x7E, 7 }; - -// Approx. 943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h deleted file mode 100644 index 0ed654374..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h +++ /dev/null @@ -1,123 +0,0 @@ -// Picopixel by Sebastian Weber. A tiny font -// with all characters within a 6 pixel height. - -const uint8_t PicopixelBitmaps[] PROGMEM = { - 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, - 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, - 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, - 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, - 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, - 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, - 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, - 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, - 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, - 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, - 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, - 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, - 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, - 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, - 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A }; - -const GFXglyph PicopixelGlyphs[] PROGMEM = { - { 0, 0, 0, 2, 0, 1 }, // 0x20 ' ' - { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' - { 1, 3, 2, 4, 0, -4 }, // 0x22 '"' - { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' - { 6, 3, 6, 4, 0, -4 }, // 0x24 '$' - { 9, 3, 5, 4, 0, -4 }, // 0x25 '%' - { 11, 4, 5, 5, 0, -4 }, // 0x26 '&' - { 14, 1, 2, 2, 0, -4 }, // 0x27 ''' - { 15, 2, 5, 3, 0, -4 }, // 0x28 '(' - { 17, 2, 5, 3, 0, -4 }, // 0x29 ')' - { 19, 3, 3, 4, 0, -3 }, // 0x2A '*' - { 21, 3, 3, 4, 0, -3 }, // 0x2B '+' - { 23, 2, 2, 3, 0, 0 }, // 0x2C ',' - { 24, 3, 1, 4, 0, -2 }, // 0x2D '-' - { 25, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 26, 3, 5, 4, 0, -4 }, // 0x2F '/' - { 28, 3, 5, 4, 0, -4 }, // 0x30 '0' - { 30, 2, 5, 3, 0, -4 }, // 0x31 '1' - { 32, 3, 5, 4, 0, -4 }, // 0x32 '2' - { 34, 3, 5, 4, 0, -4 }, // 0x33 '3' - { 36, 3, 5, 4, 0, -4 }, // 0x34 '4' - { 38, 3, 5, 4, 0, -4 }, // 0x35 '5' - { 40, 3, 5, 4, 0, -4 }, // 0x36 '6' - { 42, 3, 5, 4, 0, -4 }, // 0x37 '7' - { 44, 3, 5, 4, 0, -4 }, // 0x38 '8' - { 46, 3, 5, 4, 0, -4 }, // 0x39 '9' - { 48, 1, 3, 2, 0, -3 }, // 0x3A ':' - { 49, 2, 4, 3, 0, -3 }, // 0x3B ';' - { 50, 2, 3, 3, 0, -3 }, // 0x3C '<' - { 51, 3, 3, 4, 0, -3 }, // 0x3D '=' - { 53, 2, 3, 3, 0, -3 }, // 0x3E '>' - { 54, 3, 5, 4, 0, -4 }, // 0x3F '?' - { 56, 3, 5, 4, 0, -4 }, // 0x40 '@' - { 58, 3, 5, 4, 0, -4 }, // 0x41 'A' - { 60, 3, 5, 4, 0, -4 }, // 0x42 'B' - { 62, 3, 5, 4, 0, -4 }, // 0x43 'C' - { 64, 3, 5, 4, 0, -4 }, // 0x44 'D' - { 66, 3, 5, 4, 0, -4 }, // 0x45 'E' - { 68, 3, 5, 4, 0, -4 }, // 0x46 'F' - { 70, 3, 5, 4, 0, -4 }, // 0x47 'G' - { 72, 3, 5, 4, 0, -4 }, // 0x48 'H' - { 74, 1, 5, 2, 0, -4 }, // 0x49 'I' - { 75, 3, 5, 4, 0, -4 }, // 0x4A 'J' - { 77, 3, 5, 4, 0, -4 }, // 0x4B 'K' - { 79, 3, 5, 4, 0, -4 }, // 0x4C 'L' - { 81, 5, 5, 6, 0, -4 }, // 0x4D 'M' - { 85, 4, 5, 5, 0, -4 }, // 0x4E 'N' - { 88, 3, 5, 4, 0, -4 }, // 0x4F 'O' - { 90, 3, 5, 4, 0, -4 }, // 0x50 'P' - { 92, 3, 6, 4, 0, -4 }, // 0x51 'Q' - { 95, 3, 5, 4, 0, -4 }, // 0x52 'R' - { 97, 3, 5, 4, 0, -4 }, // 0x53 'S' - { 99, 3, 5, 4, 0, -4 }, // 0x54 'T' - { 101, 3, 5, 4, 0, -4 }, // 0x55 'U' - { 103, 3, 5, 4, 0, -4 }, // 0x56 'V' - { 105, 5, 5, 6, 0, -4 }, // 0x57 'W' - { 109, 3, 5, 4, 0, -4 }, // 0x58 'X' - { 111, 3, 5, 4, 0, -4 }, // 0x59 'Y' - { 113, 3, 5, 4, 0, -4 }, // 0x5A 'Z' - { 115, 2, 5, 3, 0, -4 }, // 0x5B '[' - { 117, 3, 5, 4, 0, -4 }, // 0x5C '\' - { 119, 2, 5, 3, 0, -4 }, // 0x5D ']' - { 121, 3, 2, 4, 0, -4 }, // 0x5E '^' - { 122, 4, 1, 4, 0, 1 }, // 0x5F '_' - { 123, 2, 2, 3, 0, -4 }, // 0x60 '`' - { 124, 3, 4, 4, 0, -3 }, // 0x61 'a' - { 126, 3, 5, 4, 0, -4 }, // 0x62 'b' - { 128, 3, 3, 4, 0, -2 }, // 0x63 'c' - { 130, 3, 5, 4, 0, -4 }, // 0x64 'd' - { 132, 3, 4, 4, 0, -3 }, // 0x65 'e' - { 134, 2, 5, 3, 0, -4 }, // 0x66 'f' - { 136, 3, 5, 4, 0, -3 }, // 0x67 'g' - { 138, 3, 5, 4, 0, -4 }, // 0x68 'h' - { 140, 1, 5, 2, 0, -4 }, // 0x69 'i' - { 141, 2, 6, 3, 0, -4 }, // 0x6A 'j' - { 143, 3, 5, 4, 0, -4 }, // 0x6B 'k' - { 145, 2, 5, 3, 0, -4 }, // 0x6C 'l' - { 147, 5, 3, 6, 0, -2 }, // 0x6D 'm' - { 149, 3, 3, 4, 0, -2 }, // 0x6E 'n' - { 151, 3, 3, 4, 0, -2 }, // 0x6F 'o' - { 153, 3, 4, 4, 0, -2 }, // 0x70 'p' - { 155, 3, 4, 4, 0, -2 }, // 0x71 'q' - { 157, 2, 3, 3, 0, -2 }, // 0x72 'r' - { 158, 3, 4, 4, 0, -3 }, // 0x73 's' - { 160, 2, 5, 3, 0, -4 }, // 0x74 't' - { 162, 3, 3, 4, 0, -2 }, // 0x75 'u' - { 164, 3, 3, 4, 0, -2 }, // 0x76 'v' - { 166, 5, 3, 6, 0, -2 }, // 0x77 'w' - { 168, 3, 3, 4, 0, -2 }, // 0x78 'x' - { 170, 3, 4, 4, 0, -2 }, // 0x79 'y' - { 172, 3, 4, 4, 0, -3 }, // 0x7A 'z' - { 174, 3, 5, 4, 0, -4 }, // 0x7B '{' - { 176, 1, 6, 2, 0, -4 }, // 0x7C '|' - { 177, 3, 5, 4, 0, -4 }, // 0x7D '}' - { 179, 4, 2, 5, 0, -3 } }; // 0x7E '~' - -const GFXfont Picopixel PROGMEM = { - (uint8_t *)PicopixelBitmaps, - (GFXglyph *)PicopixelGlyphs, - 0x20, 0x7E, 7 }; - -// Approx. 852 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b deleted file mode 100644 index d77676c21..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b +++ /dev/null @@ -1,130 +0,0 @@ -/** -** The FontStruction “Tiny3x3a” -** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is -** licensed under a Creative Commons Attribution Non-commercial Share Alike license -** (http://creativecommons.org/licenses/by-nc-sa/3.0/). -** “Tiny3x3a” was originally cloned (copied) from the FontStruction -** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant -** Grant, which is licensed under a Creative Commons Attribution Non-commercial -** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). -* -* Converted by eadmaster with fontconvert -**/ - -const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { - 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, - 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, - 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, - 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, - 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, - 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, - 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, - 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, - 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, - 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, - 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, - 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78 }; - -const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 4, 0, 1 }, // 0x20 ' ' - { 0, 1, 2, 3, 1, -2 }, // 0x21 '!' - { 1, 3, 2, 4, 0, -2 }, // 0x22 '"' - { 2, 3, 3, 4, 0, -2 }, // 0x23 '#' - { 4, 3, 3, 4, 0, -2 }, // 0x24 '$' - { 6, 3, 3, 4, 0, -2 }, // 0x25 '%' - { 8, 3, 3, 4, 0, -2 }, // 0x26 '&' - { 10, 1, 1, 3, 1, -2 }, // 0x27 ''' - { 11, 2, 3, 3, 0, -2 }, // 0x28 '(' - { 12, 2, 3, 4, 1, -2 }, // 0x29 ')' - { 13, 2, 2, 4, 1, -2 }, // 0x2A '*' - { 14, 3, 3, 4, 0, -2 }, // 0x2B '+' - { 16, 1, 2, 2, 0, 0 }, // 0x2C ',' - { 17, 3, 1, 4, 0, -1 }, // 0x2D '-' - { 18, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 19, 3, 3, 4, 0, -2 }, // 0x2F '/' - { 21, 3, 3, 4, 0, -2 }, // 0x30 '0' - { 23, 2, 3, 3, 0, -2 }, // 0x31 '1' - { 24, 3, 3, 4, 0, -2 }, // 0x32 '2' - { 26, 3, 3, 4, 0, -2 }, // 0x33 '3' - { 28, 3, 3, 4, 0, -2 }, // 0x34 '4' - { 30, 3, 3, 4, 0, -2 }, // 0x35 '5' - { 32, 3, 3, 4, 0, -2 }, // 0x36 '6' - { 34, 3, 3, 4, 0, -2 }, // 0x37 '7' - { 36, 3, 3, 4, 0, -2 }, // 0x38 '8' - { 38, 3, 3, 4, 0, -2 }, // 0x39 '9' - { 40, 1, 3, 3, 1, -2 }, // 0x3A ':' - { 41, 2, 3, 3, 0, -1 }, // 0x3B ';' - { 42, 2, 3, 3, 0, -2 }, // 0x3C '<' - { 43, 3, 3, 4, 0, -2 }, // 0x3D '=' - { 45, 2, 3, 4, 1, -2 }, // 0x3E '>' - { 46, 2, 3, 4, 1, -2 }, // 0x3F '?' - { 47, 3, 3, 4, 0, -2 }, // 0x40 '@' - { 49, 3, 3, 4, 0, -2 }, // 0x41 'A' - { 51, 3, 3, 4, 0, -2 }, // 0x42 'B' - { 53, 3, 3, 4, 0, -2 }, // 0x43 'C' - { 55, 3, 3, 4, 0, -2 }, // 0x44 'D' - { 57, 3, 3, 4, 0, -2 }, // 0x45 'E' - { 59, 3, 3, 4, 0, -2 }, // 0x46 'F' - { 61, 3, 3, 4, 0, -2 }, // 0x47 'G' - { 63, 3, 3, 4, 0, -2 }, // 0x48 'H' - { 65, 1, 3, 3, 1, -2 }, // 0x49 'I' - { 66, 3, 3, 4, 0, -2 }, // 0x4A 'J' - { 68, 3, 3, 4, 0, -2 }, // 0x4B 'K' - { 70, 3, 3, 4, 0, -2 }, // 0x4C 'L' - { 72, 3, 3, 4, 0, -2 }, // 0x4D 'M' - { 74, 3, 3, 4, 0, -2 }, // 0x4E 'N' - { 76, 3, 3, 4, 0, -2 }, // 0x4F 'O' - { 78, 3, 3, 4, 0, -2 }, // 0x50 'P' - { 80, 3, 3, 4, 0, -2 }, // 0x51 'Q' - { 82, 3, 3, 4, 0, -2 }, // 0x52 'R' - { 84, 3, 3, 4, 0, -2 }, // 0x53 'S' - { 86, 3, 3, 4, 0, -2 }, // 0x54 'T' - { 88, 3, 3, 4, 0, -2 }, // 0x55 'U' - { 90, 3, 3, 4, 0, -2 }, // 0x56 'V' - { 92, 3, 3, 4, 0, -2 }, // 0x57 'W' - { 94, 3, 3, 4, 0, -2 }, // 0x58 'X' - { 96, 3, 3, 4, 0, -2 }, // 0x59 'Y' - { 98, 3, 3, 4, 0, -2 }, // 0x5A 'Z' - { 100, 2, 3, 3, 0, -2 }, // 0x5B '[' - { 101, 3, 3, 4, 0, -2 }, // 0x5C '\' - { 103, 2, 3, 4, 1, -2 }, // 0x5D ']' - { 104, 3, 2, 4, 0, -2 }, // 0x5E '^' - { 105, 3, 1, 4, 0, 0 }, // 0x5F '_' - { 106, 2, 2, 3, 0, -2 }, // 0x60 '`' - { 107, 2, 2, 3, 0, -1 }, // 0x61 'a' - { 108, 2, 3, 3, 0, -2 }, // 0x62 'b' - { 109, 2, 2, 3, 0, -1 }, // 0x63 'c' - { 110, 2, 3, 3, 0, -2 }, // 0x64 'd' - { 111, 2, 2, 3, 0, -1 }, // 0x65 'e' - { 112, 2, 3, 3, 0, -2 }, // 0x66 'f' - { 113, 2, 3, 3, 0, -1 }, // 0x67 'g' - { 114, 2, 3, 3, 0, -2 }, // 0x68 'h' - { 115, 1, 2, 2, 0, -1 }, // 0x69 'i' - { 116, 2, 3, 3, 0, -1 }, // 0x6A 'j' - { 117, 3, 3, 4, 0, -2 }, // 0x6B 'k' - { 119, 2, 3, 3, 0, -2 }, // 0x6C 'l' - { 120, 3, 2, 4, 0, -1 }, // 0x6D 'm' - { 121, 3, 2, 4, 0, -1 }, // 0x6E 'n' - { 122, 2, 2, 3, 0, -1 }, // 0x6F 'o' - { 123, 2, 3, 3, 0, -1 }, // 0x70 'p' - { 124, 2, 3, 3, 0, -1 }, // 0x71 'q' - { 125, 2, 2, 3, 0, -1 }, // 0x72 'r' - { 126, 2, 2, 3, 0, -1 }, // 0x73 's' - { 127, 3, 3, 4, 0, -2 }, // 0x74 't' - { 129, 3, 2, 4, 0, -1 }, // 0x75 'u' - { 130, 3, 2, 4, 0, -1 }, // 0x76 'v' - { 131, 3, 2, 4, 0, -1 }, // 0x77 'w' - { 132, 2, 2, 3, 0, -1 }, // 0x78 'x' - { 133, 3, 3, 4, 0, -1 }, // 0x79 'y' - { 135, 2, 2, 3, 0, -1 }, // 0x7A 'z' - { 136, 3, 3, 4, 0, -2 }, // 0x7B '{' - { 138, 1, 4, 3, 1, -2 }, // 0x7C '|' - { 139, 3, 3, 4, 0, -2 }, // 0x7D '}' - { 141, 3, 2, 4, 0, -2 } }; // 0x7E '~' - -const GFXfont Tiny3x3a2pt7b PROGMEM = { - (uint8_t *)Tiny3x3a2pt7bBitmaps, - (GFXglyph *)Tiny3x3a2pt7bGlyphs, - 0x20, 0x7E, 4 }; - -// Approx. 814 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h deleted file mode 100644 index dad420dcd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h +++ /dev/null @@ -1,474 +0,0 @@ -/** -** The original 3x5 font is licensed under the 3-clause BSD license: -** -** Copyright 1999 Brian J. Swetland -** Copyright 1999 Vassilii Khachaturov -** Portions (of vt100.c/vt100.h) copyright Dan Marks -** -** 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. -** 3. The name of the authors may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -** -** Modifications to Tom Thumb for improved readability are from Robey Pointer, -** see: -** http://robey.lag.net/2010/01/23/tiny-monospace-font.html -** -** The original author does not have any objection to relicensing of Robey -** Pointer's modifications (in this file) in a more permissive license. See -** the discussion at the above blog, and also here: -** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license -** -** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, -** with the help of this Python script: -** https://gist.github.com/skelliam/322d421f028545f16f6d -** William Skellenger (williamj@skellenger.net) -** Twitter: @skelliam -** -*/ - -#define TOMTHUMB_USE_EXTENDED 0 - -const uint8_t TomThumbBitmaps[] PROGMEM = { - 0x00, /* 0x20 space */ - 0x80, 0x80, 0x80, 0x00, 0x80, /* 0x21 exclam */ - 0xA0, 0xA0, /* 0x22 quotedbl */ - 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /* 0x23 numbersign */ - 0x60, 0xC0, 0x60, 0xC0, 0x40, /* 0x24 dollar */ - 0x80, 0x20, 0x40, 0x80, 0x20, /* 0x25 percent */ - 0xC0, 0xC0, 0xE0, 0xA0, 0x60, /* 0x26 ampersand */ - 0x80, 0x80, /* 0x27 quotesingle */ - 0x40, 0x80, 0x80, 0x80, 0x40, /* 0x28 parenleft */ - 0x80, 0x40, 0x40, 0x40, 0x80, /* 0x29 parenright */ - 0xA0, 0x40, 0xA0, /* 0x2A asterisk */ - 0x40, 0xE0, 0x40, /* 0x2B plus */ - 0x40, 0x80, /* 0x2C comma */ - 0xE0, /* 0x2D hyphen */ - 0x80, /* 0x2E period */ - 0x20, 0x20, 0x40, 0x80, 0x80, /* 0x2F slash */ - 0x60, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x30 zero */ - 0x40, 0xC0, 0x40, 0x40, 0x40, /* 0x31 one */ - 0xC0, 0x20, 0x40, 0x80, 0xE0, /* 0x32 two */ - 0xC0, 0x20, 0x40, 0x20, 0xC0, /* 0x33 three */ - 0xA0, 0xA0, 0xE0, 0x20, 0x20, /* 0x34 four */ - 0xE0, 0x80, 0xC0, 0x20, 0xC0, /* 0x35 five */ - 0x60, 0x80, 0xE0, 0xA0, 0xE0, /* 0x36 six */ - 0xE0, 0x20, 0x40, 0x80, 0x80, /* 0x37 seven */ - 0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /* 0x38 eight */ - 0xE0, 0xA0, 0xE0, 0x20, 0xC0, /* 0x39 nine */ - 0x80, 0x00, 0x80, /* 0x3A colon */ - 0x40, 0x00, 0x40, 0x80, /* 0x3B semicolon */ - 0x20, 0x40, 0x80, 0x40, 0x20, /* 0x3C less */ - 0xE0, 0x00, 0xE0, /* 0x3D equal */ - 0x80, 0x40, 0x20, 0x40, 0x80, /* 0x3E greater */ - 0xE0, 0x20, 0x40, 0x00, 0x40, /* 0x3F question */ - 0x40, 0xA0, 0xE0, 0x80, 0x60, /* 0x40 at */ - 0x40, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x41 A */ - 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /* 0x42 B */ - 0x60, 0x80, 0x80, 0x80, 0x60, /* 0x43 C */ - 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x44 D */ - 0xE0, 0x80, 0xE0, 0x80, 0xE0, /* 0x45 E */ - 0xE0, 0x80, 0xE0, 0x80, 0x80, /* 0x46 F */ - 0x60, 0x80, 0xE0, 0xA0, 0x60, /* 0x47 G */ - 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x48 H */ - 0xE0, 0x40, 0x40, 0x40, 0xE0, /* 0x49 I */ - 0x20, 0x20, 0x20, 0xA0, 0x40, /* 0x4A J */ - 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /* 0x4B K */ - 0x80, 0x80, 0x80, 0x80, 0xE0, /* 0x4C L */ - 0xA0, 0xE0, 0xE0, 0xA0, 0xA0, /* 0x4D M */ - 0xA0, 0xE0, 0xE0, 0xE0, 0xA0, /* 0x4E N */ - 0x40, 0xA0, 0xA0, 0xA0, 0x40, /* 0x4F O */ - 0xC0, 0xA0, 0xC0, 0x80, 0x80, /* 0x50 P */ - 0x40, 0xA0, 0xA0, 0xE0, 0x60, /* 0x51 Q */ - 0xC0, 0xA0, 0xE0, 0xC0, 0xA0, /* 0x52 R */ - 0x60, 0x80, 0x40, 0x20, 0xC0, /* 0x53 S */ - 0xE0, 0x40, 0x40, 0x40, 0x40, /* 0x54 T */ - 0xA0, 0xA0, 0xA0, 0xA0, 0x60, /* 0x55 U */ - 0xA0, 0xA0, 0xA0, 0x40, 0x40, /* 0x56 V */ - 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, /* 0x57 W */ - 0xA0, 0xA0, 0x40, 0xA0, 0xA0, /* 0x58 X */ - 0xA0, 0xA0, 0x40, 0x40, 0x40, /* 0x59 Y */ - 0xE0, 0x20, 0x40, 0x80, 0xE0, /* 0x5A Z */ - 0xE0, 0x80, 0x80, 0x80, 0xE0, /* 0x5B bracketleft */ - 0x80, 0x40, 0x20, /* 0x5C backslash */ - 0xE0, 0x20, 0x20, 0x20, 0xE0, /* 0x5D bracketright */ - 0x40, 0xA0, /* 0x5E asciicircum */ - 0xE0, /* 0x5F underscore */ - 0x80, 0x40, /* 0x60 grave */ - 0xC0, 0x60, 0xA0, 0xE0, /* 0x61 a */ - 0x80, 0xC0, 0xA0, 0xA0, 0xC0, /* 0x62 b */ - 0x60, 0x80, 0x80, 0x60, /* 0x63 c */ - 0x20, 0x60, 0xA0, 0xA0, 0x60, /* 0x64 d */ - 0x60, 0xA0, 0xC0, 0x60, /* 0x65 e */ - 0x20, 0x40, 0xE0, 0x40, 0x40, /* 0x66 f */ - 0x60, 0xA0, 0xE0, 0x20, 0x40, /* 0x67 g */ - 0x80, 0xC0, 0xA0, 0xA0, 0xA0, /* 0x68 h */ - 0x80, 0x00, 0x80, 0x80, 0x80, /* 0x69 i */ - 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /* 0x6A j */ - 0x80, 0xA0, 0xC0, 0xC0, 0xA0, /* 0x6B k */ - 0xC0, 0x40, 0x40, 0x40, 0xE0, /* 0x6C l */ - 0xE0, 0xE0, 0xE0, 0xA0, /* 0x6D m */ - 0xC0, 0xA0, 0xA0, 0xA0, /* 0x6E n */ - 0x40, 0xA0, 0xA0, 0x40, /* 0x6F o */ - 0xC0, 0xA0, 0xA0, 0xC0, 0x80, /* 0x70 p */ - 0x60, 0xA0, 0xA0, 0x60, 0x20, /* 0x71 q */ - 0x60, 0x80, 0x80, 0x80, /* 0x72 r */ - 0x60, 0xC0, 0x60, 0xC0, /* 0x73 s */ - 0x40, 0xE0, 0x40, 0x40, 0x60, /* 0x74 t */ - 0xA0, 0xA0, 0xA0, 0x60, /* 0x75 u */ - 0xA0, 0xA0, 0xE0, 0x40, /* 0x76 v */ - 0xA0, 0xE0, 0xE0, 0xE0, /* 0x77 w */ - 0xA0, 0x40, 0x40, 0xA0, /* 0x78 x */ - 0xA0, 0xA0, 0x60, 0x20, 0x40, /* 0x79 y */ - 0xE0, 0x60, 0xC0, 0xE0, /* 0x7A z */ - 0x60, 0x40, 0x80, 0x40, 0x60, /* 0x7B braceleft */ - 0x80, 0x80, 0x00, 0x80, 0x80, /* 0x7C bar */ - 0xC0, 0x40, 0x20, 0x40, 0xC0, /* 0x7D braceright */ - 0x60, 0xC0, /* 0x7E asciitilde */ -#if (TOMTHUMB_USE_EXTENDED) - 0x80, 0x00, 0x80, 0x80, 0x80, /* 0xA1 exclamdown */ - 0x40, 0xE0, 0x80, 0xE0, 0x40, /* 0xA2 cent */ - 0x60, 0x40, 0xE0, 0x40, 0xE0, /* 0xA3 sterling */ - 0xA0, 0x40, 0xE0, 0x40, 0xA0, /* 0xA4 currency */ - 0xA0, 0xA0, 0x40, 0xE0, 0x40, /* 0xA5 yen */ - 0x80, 0x80, 0x00, 0x80, 0x80, /* 0xA6 brokenbar */ - 0x60, 0x40, 0xA0, 0x40, 0xC0, /* 0xA7 section */ - 0xA0, /* 0xA8 dieresis */ - 0x60, 0x80, 0x60, /* 0xA9 copyright */ - 0x60, 0xA0, 0xE0, 0x00, 0xE0, /* 0xAA ordfeminine */ - 0x40, 0x80, 0x40, /* 0xAB guillemotleft */ - 0xE0, 0x20, /* 0xAC logicalnot */ - 0xC0, /* 0xAD softhyphen */ - 0xC0, 0xC0, 0xA0, /* 0xAE registered */ - 0xE0, /* 0xAF macron */ - 0x40, 0xA0, 0x40, /* 0xB0 degree */ - 0x40, 0xE0, 0x40, 0x00, 0xE0, /* 0xB1 plusminus */ - 0xC0, 0x40, 0x60, /* 0xB2 twosuperior */ - 0xE0, 0x60, 0xE0, /* 0xB3 threesuperior */ - 0x40, 0x80, /* 0xB4 acute */ - 0xA0, 0xA0, 0xA0, 0xC0, 0x80, /* 0xB5 mu */ - 0x60, 0xA0, 0x60, 0x60, 0x60, /* 0xB6 paragraph */ - 0xE0, 0xE0, 0xE0, /* 0xB7 periodcentered */ - 0x40, 0x20, 0xC0, /* 0xB8 cedilla */ - 0x80, 0x80, 0x80, /* 0xB9 onesuperior */ - 0x40, 0xA0, 0x40, 0x00, 0xE0, /* 0xBA ordmasculine */ - 0x80, 0x40, 0x80, /* 0xBB guillemotright */ - 0x80, 0x80, 0x00, 0x60, 0x20, /* 0xBC onequarter */ - 0x80, 0x80, 0x00, 0xC0, 0x60, /* 0xBD onehalf */ - 0xC0, 0xC0, 0x00, 0x60, 0x20, /* 0xBE threequarters */ - 0x40, 0x00, 0x40, 0x80, 0xE0, /* 0xBF questiondown */ - 0x40, 0x20, 0x40, 0xE0, 0xA0, /* 0xC0 Agrave */ - 0x40, 0x80, 0x40, 0xE0, 0xA0, /* 0xC1 Aacute */ - 0xE0, 0x00, 0x40, 0xE0, 0xA0, /* 0xC2 Acircumflex */ - 0x60, 0xC0, 0x40, 0xE0, 0xA0, /* 0xC3 Atilde */ - 0xA0, 0x40, 0xA0, 0xE0, 0xA0, /* 0xC4 Adieresis */ - 0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /* 0xC5 Aring */ - 0x60, 0xC0, 0xE0, 0xC0, 0xE0, /* 0xC6 AE */ - 0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /* 0xC7 Ccedilla */ - 0x40, 0x20, 0xE0, 0xC0, 0xE0, /* 0xC8 Egrave */ - 0x40, 0x80, 0xE0, 0xC0, 0xE0, /* 0xC9 Eacute */ - 0xE0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCA Ecircumflex */ - 0xA0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCB Edieresis */ - 0x40, 0x20, 0xE0, 0x40, 0xE0, /* 0xCC Igrave */ - 0x40, 0x80, 0xE0, 0x40, 0xE0, /* 0xCD Iacute */ - 0xE0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCE Icircumflex */ - 0xA0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCF Idieresis */ - 0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD0 Eth */ - 0xC0, 0x60, 0xA0, 0xE0, 0xA0, /* 0xD1 Ntilde */ - 0x40, 0x20, 0xE0, 0xA0, 0xE0, /* 0xD2 Ograve */ - 0x40, 0x80, 0xE0, 0xA0, 0xE0, /* 0xD3 Oacute */ - 0xE0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD4 Ocircumflex */ - 0xC0, 0x60, 0xE0, 0xA0, 0xE0, /* 0xD5 Otilde */ - 0xA0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD6 Odieresis */ - 0xA0, 0x40, 0xA0, /* 0xD7 multiply */ - 0x60, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD8 Oslash */ - 0x80, 0x40, 0xA0, 0xA0, 0xE0, /* 0xD9 Ugrave */ - 0x20, 0x40, 0xA0, 0xA0, 0xE0, /* 0xDA Uacute */ - 0xE0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDB Ucircumflex */ - 0xA0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDC Udieresis */ - 0x20, 0x40, 0xA0, 0xE0, 0x40, /* 0xDD Yacute */ - 0x80, 0xE0, 0xA0, 0xE0, 0x80, /* 0xDE Thorn */ - 0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /* 0xDF germandbls */ - 0x40, 0x20, 0x60, 0xA0, 0xE0, /* 0xE0 agrave */ - 0x40, 0x80, 0x60, 0xA0, 0xE0, /* 0xE1 aacute */ - 0xE0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE2 acircumflex */ - 0x60, 0xC0, 0x60, 0xA0, 0xE0, /* 0xE3 atilde */ - 0xA0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE4 adieresis */ - 0x60, 0x60, 0x60, 0xA0, 0xE0, /* 0xE5 aring */ - 0x60, 0xE0, 0xE0, 0xC0, /* 0xE6 ae */ - 0x60, 0x80, 0x60, 0x20, 0x40, /* 0xE7 ccedilla */ - 0x40, 0x20, 0x60, 0xE0, 0x60, /* 0xE8 egrave */ - 0x40, 0x80, 0x60, 0xE0, 0x60, /* 0xE9 eacute */ - 0xE0, 0x00, 0x60, 0xE0, 0x60, /* 0xEA ecircumflex */ - 0xA0, 0x00, 0x60, 0xE0, 0x60, /* 0xEB edieresis */ - 0x80, 0x40, 0x80, 0x80, 0x80, /* 0xEC igrave */ - 0x40, 0x80, 0x40, 0x40, 0x40, /* 0xED iacute */ - 0xE0, 0x00, 0x40, 0x40, 0x40, /* 0xEE icircumflex */ - 0xA0, 0x00, 0x40, 0x40, 0x40, /* 0xEF idieresis */ - 0x60, 0xC0, 0x60, 0xA0, 0x60, /* 0xF0 eth */ - 0xC0, 0x60, 0xC0, 0xA0, 0xA0, /* 0xF1 ntilde */ - 0x40, 0x20, 0x40, 0xA0, 0x40, /* 0xF2 ograve */ - 0x40, 0x80, 0x40, 0xA0, 0x40, /* 0xF3 oacute */ - 0xE0, 0x00, 0x40, 0xA0, 0x40, /* 0xF4 ocircumflex */ - 0xC0, 0x60, 0x40, 0xA0, 0x40, /* 0xF5 otilde */ - 0xA0, 0x00, 0x40, 0xA0, 0x40, /* 0xF6 odieresis */ - 0x40, 0x00, 0xE0, 0x00, 0x40, /* 0xF7 divide */ - 0x60, 0xE0, 0xA0, 0xC0, /* 0xF8 oslash */ - 0x80, 0x40, 0xA0, 0xA0, 0x60, /* 0xF9 ugrave */ - 0x20, 0x40, 0xA0, 0xA0, 0x60, /* 0xFA uacute */ - 0xE0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFB ucircumflex */ - 0xA0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFC udieresis */ - 0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /* 0xFD yacute */ - 0x80, 0xC0, 0xA0, 0xC0, 0x80, /* 0xFE thorn */ - 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /* 0xFF ydieresis */ - 0x00, /* 0x11D gcircumflex */ - 0x60, 0xC0, 0xE0, 0xC0, 0x60, /* 0x152 OE */ - 0x60, 0xE0, 0xC0, 0xE0, /* 0x153 oe */ - 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x160 Scaron */ - 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x161 scaron */ - 0xA0, 0x00, 0xA0, 0x40, 0x40, /* 0x178 Ydieresis */ - 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17D Zcaron */ - 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17E zcaron */ - 0x00, /* 0xEA4 uni0EA4 */ - 0x00, /* 0x13A0 uni13A0 */ - 0x80, /* 0x2022 bullet */ - 0xA0, /* 0x2026 ellipsis */ - 0x60, 0xE0, 0xE0, 0xC0, 0x60, /* 0x20AC Euro */ - 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /* 0xFFFD uniFFFD */ -#endif /* (TOMTHUMB_USE_EXTENDED) */ - }; - - -/* {offset, width, height, advance cursor, x offset, y offset} */ -const GFXglyph TomThumbGlyphs[] PROGMEM = { - { 0, 8, 1, 2, 0, -5 }, /* 0x20 space */ - { 1, 8, 5, 2, 0, -5 }, /* 0x21 exclam */ - { 6, 8, 2, 4, 0, -5 }, /* 0x22 quotedbl */ - { 8, 8, 5, 4, 0, -5 }, /* 0x23 numbersign */ - { 13, 8, 5, 4, 0, -5 }, /* 0x24 dollar */ - { 18, 8, 5, 4, 0, -5 }, /* 0x25 percent */ - { 23, 8, 5, 4, 0, -5 }, /* 0x26 ampersand */ - { 28, 8, 2, 2, 0, -5 }, /* 0x27 quotesingle */ - { 30, 8, 5, 3, 0, -5 }, /* 0x28 parenleft */ - { 35, 8, 5, 3, 0, -5 }, /* 0x29 parenright */ - { 40, 8, 3, 4, 0, -5 }, /* 0x2A asterisk */ - { 43, 8, 3, 4, 0, -4 }, /* 0x2B plus */ - { 46, 8, 2, 3, 0, -2 }, /* 0x2C comma */ - { 48, 8, 1, 4, 0, -3 }, /* 0x2D hyphen */ - { 49, 8, 1, 2, 0, -1 }, /* 0x2E period */ - { 50, 8, 5, 4, 0, -5 }, /* 0x2F slash */ - { 55, 8, 5, 4, 0, -5 }, /* 0x30 zero */ - { 60, 8, 5, 3, 0, -5 }, /* 0x31 one */ - { 65, 8, 5, 4, 0, -5 }, /* 0x32 two */ - { 70, 8, 5, 4, 0, -5 }, /* 0x33 three */ - { 75, 8, 5, 4, 0, -5 }, /* 0x34 four */ - { 80, 8, 5, 4, 0, -5 }, /* 0x35 five */ - { 85, 8, 5, 4, 0, -5 }, /* 0x36 six */ - { 90, 8, 5, 4, 0, -5 }, /* 0x37 seven */ - { 95, 8, 5, 4, 0, -5 }, /* 0x38 eight */ - { 100, 8, 5, 4, 0, -5 }, /* 0x39 nine */ - { 105, 8, 3, 2, 0, -4 }, /* 0x3A colon */ - { 108, 8, 4, 3, 0, -4 }, /* 0x3B semicolon */ - { 112, 8, 5, 4, 0, -5 }, /* 0x3C less */ - { 117, 8, 3, 4, 0, -4 }, /* 0x3D equal */ - { 120, 8, 5, 4, 0, -5 }, /* 0x3E greater */ - { 125, 8, 5, 4, 0, -5 }, /* 0x3F question */ - { 130, 8, 5, 4, 0, -5 }, /* 0x40 at */ - { 135, 8, 5, 4, 0, -5 }, /* 0x41 A */ - { 140, 8, 5, 4, 0, -5 }, /* 0x42 B */ - { 145, 8, 5, 4, 0, -5 }, /* 0x43 C */ - { 150, 8, 5, 4, 0, -5 }, /* 0x44 D */ - { 155, 8, 5, 4, 0, -5 }, /* 0x45 E */ - { 160, 8, 5, 4, 0, -5 }, /* 0x46 F */ - { 165, 8, 5, 4, 0, -5 }, /* 0x47 G */ - { 170, 8, 5, 4, 0, -5 }, /* 0x48 H */ - { 175, 8, 5, 4, 0, -5 }, /* 0x49 I */ - { 180, 8, 5, 4, 0, -5 }, /* 0x4A J */ - { 185, 8, 5, 4, 0, -5 }, /* 0x4B K */ - { 190, 8, 5, 4, 0, -5 }, /* 0x4C L */ - { 195, 8, 5, 4, 0, -5 }, /* 0x4D M */ - { 200, 8, 5, 4, 0, -5 }, /* 0x4E N */ - { 205, 8, 5, 4, 0, -5 }, /* 0x4F O */ - { 210, 8, 5, 4, 0, -5 }, /* 0x50 P */ - { 215, 8, 5, 4, 0, -5 }, /* 0x51 Q */ - { 220, 8, 5, 4, 0, -5 }, /* 0x52 R */ - { 225, 8, 5, 4, 0, -5 }, /* 0x53 S */ - { 230, 8, 5, 4, 0, -5 }, /* 0x54 T */ - { 235, 8, 5, 4, 0, -5 }, /* 0x55 U */ - { 240, 8, 5, 4, 0, -5 }, /* 0x56 V */ - { 245, 8, 5, 4, 0, -5 }, /* 0x57 W */ - { 250, 8, 5, 4, 0, -5 }, /* 0x58 X */ - { 255, 8, 5, 4, 0, -5 }, /* 0x59 Y */ - { 260, 8, 5, 4, 0, -5 }, /* 0x5A Z */ - { 265, 8, 5, 4, 0, -5 }, /* 0x5B bracketleft */ - { 270, 8, 3, 4, 0, -4 }, /* 0x5C backslash */ - { 273, 8, 5, 4, 0, -5 }, /* 0x5D bracketright */ - { 278, 8, 2, 4, 0, -5 }, /* 0x5E asciicircum */ - { 280, 8, 1, 4, 0, -1 }, /* 0x5F underscore */ - { 281, 8, 2, 3, 0, -5 }, /* 0x60 grave */ - { 283, 8, 4, 4, 0, -4 }, /* 0x61 a */ - { 287, 8, 5, 4, 0, -5 }, /* 0x62 b */ - { 292, 8, 4, 4, 0, -4 }, /* 0x63 c */ - { 296, 8, 5, 4, 0, -5 }, /* 0x64 d */ - { 301, 8, 4, 4, 0, -4 }, /* 0x65 e */ - { 305, 8, 5, 4, 0, -5 }, /* 0x66 f */ - { 310, 8, 5, 4, 0, -4 }, /* 0x67 g */ - { 315, 8, 5, 4, 0, -5 }, /* 0x68 h */ - { 320, 8, 5, 2, 0, -5 }, /* 0x69 i */ - { 325, 8, 6, 4, 0, -5 }, /* 0x6A j */ - { 331, 8, 5, 4, 0, -5 }, /* 0x6B k */ - { 336, 8, 5, 4, 0, -5 }, /* 0x6C l */ - { 341, 8, 4, 4, 0, -4 }, /* 0x6D m */ - { 345, 8, 4, 4, 0, -4 }, /* 0x6E n */ - { 349, 8, 4, 4, 0, -4 }, /* 0x6F o */ - { 353, 8, 5, 4, 0, -4 }, /* 0x70 p */ - { 358, 8, 5, 4, 0, -4 }, /* 0x71 q */ - { 363, 8, 4, 4, 0, -4 }, /* 0x72 r */ - { 367, 8, 4, 4, 0, -4 }, /* 0x73 s */ - { 371, 8, 5, 4, 0, -5 }, /* 0x74 t */ - { 376, 8, 4, 4, 0, -4 }, /* 0x75 u */ - { 380, 8, 4, 4, 0, -4 }, /* 0x76 v */ - { 384, 8, 4, 4, 0, -4 }, /* 0x77 w */ - { 388, 8, 4, 4, 0, -4 }, /* 0x78 x */ - { 392, 8, 5, 4, 0, -4 }, /* 0x79 y */ - { 397, 8, 4, 4, 0, -4 }, /* 0x7A z */ - { 401, 8, 5, 4, 0, -5 }, /* 0x7B braceleft */ - { 406, 8, 5, 2, 0, -5 }, /* 0x7C bar */ - { 411, 8, 5, 4, 0, -5 }, /* 0x7D braceright */ - { 416, 8, 2, 4, 0, -5 }, /* 0x7E asciitilde */ -#if (TOMTHUMB_USE_EXTENDED) - { 418, 8, 5, 2, 0, -5 }, /* 0xA1 exclamdown */ - { 423, 8, 5, 4, 0, -5 }, /* 0xA2 cent */ - { 428, 8, 5, 4, 0, -5 }, /* 0xA3 sterling */ - { 433, 8, 5, 4, 0, -5 }, /* 0xA4 currency */ - { 438, 8, 5, 4, 0, -5 }, /* 0xA5 yen */ - { 443, 8, 5, 2, 0, -5 }, /* 0xA6 brokenbar */ - { 448, 8, 5, 4, 0, -5 }, /* 0xA7 section */ - { 453, 8, 1, 4, 0, -5 }, /* 0xA8 dieresis */ - { 454, 8, 3, 4, 0, -5 }, /* 0xA9 copyright */ - { 457, 8, 5, 4, 0, -5 }, /* 0xAA ordfeminine */ - { 462, 8, 3, 3, 0, -5 }, /* 0xAB guillemotleft */ - { 465, 8, 2, 4, 0, -4 }, /* 0xAC logicalnot */ - { 467, 8, 1, 3, 0, -3 }, /* 0xAD softhyphen */ - { 468, 8, 3, 4, 0, -5 }, /* 0xAE registered */ - { 471, 8, 1, 4, 0, -5 }, /* 0xAF macron */ - { 472, 8, 3, 4, 0, -5 }, /* 0xB0 degree */ - { 475, 8, 5, 4, 0, -5 }, /* 0xB1 plusminus */ - { 480, 8, 3, 4, 0, -5 }, /* 0xB2 twosuperior */ - { 483, 8, 3, 4, 0, -5 }, /* 0xB3 threesuperior */ - { 486, 8, 2, 3, 0, -5 }, /* 0xB4 acute */ - { 488, 8, 5, 4, 0, -5 }, /* 0xB5 mu */ - { 493, 8, 5, 4, 0, -5 }, /* 0xB6 paragraph */ - { 498, 8, 3, 4, 0, -4 }, /* 0xB7 periodcentered */ - { 501, 8, 3, 4, 0, -3 }, /* 0xB8 cedilla */ - { 504, 8, 3, 2, 0, -5 }, /* 0xB9 onesuperior */ - { 507, 8, 5, 4, 0, -5 }, /* 0xBA ordmasculine */ - { 512, 8, 3, 3, 0, -5 }, /* 0xBB guillemotright */ - { 515, 8, 5, 4, 0, -5 }, /* 0xBC onequarter */ - { 520, 8, 5, 4, 0, -5 }, /* 0xBD onehalf */ - { 525, 8, 5, 4, 0, -5 }, /* 0xBE threequarters */ - { 530, 8, 5, 4, 0, -5 }, /* 0xBF questiondown */ - { 535, 8, 5, 4, 0, -5 }, /* 0xC0 Agrave */ - { 540, 8, 5, 4, 0, -5 }, /* 0xC1 Aacute */ - { 545, 8, 5, 4, 0, -5 }, /* 0xC2 Acircumflex */ - { 550, 8, 5, 4, 0, -5 }, /* 0xC3 Atilde */ - { 555, 8, 5, 4, 0, -5 }, /* 0xC4 Adieresis */ - { 560, 8, 5, 4, 0, -5 }, /* 0xC5 Aring */ - { 565, 8, 5, 4, 0, -5 }, /* 0xC6 AE */ - { 570, 8, 6, 4, 0, -5 }, /* 0xC7 Ccedilla */ - { 576, 8, 5, 4, 0, -5 }, /* 0xC8 Egrave */ - { 581, 8, 5, 4, 0, -5 }, /* 0xC9 Eacute */ - { 586, 8, 5, 4, 0, -5 }, /* 0xCA Ecircumflex */ - { 591, 8, 5, 4, 0, -5 }, /* 0xCB Edieresis */ - { 596, 8, 5, 4, 0, -5 }, /* 0xCC Igrave */ - { 601, 8, 5, 4, 0, -5 }, /* 0xCD Iacute */ - { 606, 8, 5, 4, 0, -5 }, /* 0xCE Icircumflex */ - { 611, 8, 5, 4, 0, -5 }, /* 0xCF Idieresis */ - { 616, 8, 5, 4, 0, -5 }, /* 0xD0 Eth */ - { 621, 8, 5, 4, 0, -5 }, /* 0xD1 Ntilde */ - { 626, 8, 5, 4, 0, -5 }, /* 0xD2 Ograve */ - { 631, 8, 5, 4, 0, -5 }, /* 0xD3 Oacute */ - { 636, 8, 5, 4, 0, -5 }, /* 0xD4 Ocircumflex */ - { 641, 8, 5, 4, 0, -5 }, /* 0xD5 Otilde */ - { 646, 8, 5, 4, 0, -5 }, /* 0xD6 Odieresis */ - { 651, 8, 3, 4, 0, -4 }, /* 0xD7 multiply */ - { 654, 8, 5, 4, 0, -5 }, /* 0xD8 Oslash */ - { 659, 8, 5, 4, 0, -5 }, /* 0xD9 Ugrave */ - { 664, 8, 5, 4, 0, -5 }, /* 0xDA Uacute */ - { 669, 8, 5, 4, 0, -5 }, /* 0xDB Ucircumflex */ - { 674, 8, 5, 4, 0, -5 }, /* 0xDC Udieresis */ - { 679, 8, 5, 4, 0, -5 }, /* 0xDD Yacute */ - { 684, 8, 5, 4, 0, -5 }, /* 0xDE Thorn */ - { 689, 8, 6, 4, 0, -5 }, /* 0xDF germandbls */ - { 695, 8, 5, 4, 0, -5 }, /* 0xE0 agrave */ - { 700, 8, 5, 4, 0, -5 }, /* 0xE1 aacute */ - { 705, 8, 5, 4, 0, -5 }, /* 0xE2 acircumflex */ - { 710, 8, 5, 4, 0, -5 }, /* 0xE3 atilde */ - { 715, 8, 5, 4, 0, -5 }, /* 0xE4 adieresis */ - { 720, 8, 5, 4, 0, -5 }, /* 0xE5 aring */ - { 725, 8, 4, 4, 0, -4 }, /* 0xE6 ae */ - { 729, 8, 5, 4, 0, -4 }, /* 0xE7 ccedilla */ - { 734, 8, 5, 4, 0, -5 }, /* 0xE8 egrave */ - { 739, 8, 5, 4, 0, -5 }, /* 0xE9 eacute */ - { 744, 8, 5, 4, 0, -5 }, /* 0xEA ecircumflex */ - { 749, 8, 5, 4, 0, -5 }, /* 0xEB edieresis */ - { 754, 8, 5, 3, 0, -5 }, /* 0xEC igrave */ - { 759, 8, 5, 3, 0, -5 }, /* 0xED iacute */ - { 764, 8, 5, 4, 0, -5 }, /* 0xEE icircumflex */ - { 769, 8, 5, 4, 0, -5 }, /* 0xEF idieresis */ - { 774, 8, 5, 4, 0, -5 }, /* 0xF0 eth */ - { 779, 8, 5, 4, 0, -5 }, /* 0xF1 ntilde */ - { 784, 8, 5, 4, 0, -5 }, /* 0xF2 ograve */ - { 789, 8, 5, 4, 0, -5 }, /* 0xF3 oacute */ - { 794, 8, 5, 4, 0, -5 }, /* 0xF4 ocircumflex */ - { 799, 8, 5, 4, 0, -5 }, /* 0xF5 otilde */ - { 804, 8, 5, 4, 0, -5 }, /* 0xF6 odieresis */ - { 809, 8, 5, 4, 0, -5 }, /* 0xF7 divide */ - { 814, 8, 4, 4, 0, -4 }, /* 0xF8 oslash */ - { 818, 8, 5, 4, 0, -5 }, /* 0xF9 ugrave */ - { 823, 8, 5, 4, 0, -5 }, /* 0xFA uacute */ - { 828, 8, 5, 4, 0, -5 }, /* 0xFB ucircumflex */ - { 833, 8, 5, 4, 0, -5 }, /* 0xFC udieresis */ - { 838, 8, 6, 4, 0, -5 }, /* 0xFD yacute */ - { 844, 8, 5, 4, 0, -4 }, /* 0xFE thorn */ - { 849, 8, 6, 4, 0, -5 }, /* 0xFF ydieresis */ - { 855, 8, 1, 2, 0, -1 }, /* 0x11D gcircumflex */ - { 856, 8, 5, 4, 0, -5 }, /* 0x152 OE */ - { 861, 8, 4, 4, 0, -4 }, /* 0x153 oe */ - { 865, 8, 5, 4, 0, -5 }, /* 0x160 Scaron */ - { 870, 8, 5, 4, 0, -5 }, /* 0x161 scaron */ - { 875, 8, 5, 4, 0, -5 }, /* 0x178 Ydieresis */ - { 880, 8, 5, 4, 0, -5 }, /* 0x17D Zcaron */ - { 885, 8, 5, 4, 0, -5 }, /* 0x17E zcaron */ - { 890, 8, 1, 2, 0, -1 }, /* 0xEA4 uni0EA4 */ - { 891, 8, 1, 2, 0, -1 }, /* 0x13A0 uni13A0 */ - { 892, 8, 1, 2, 0, -3 }, /* 0x2022 bullet */ - { 893, 8, 1, 4, 0, -1 }, /* 0x2026 ellipsis */ - { 894, 8, 5, 4, 0, -5 }, /* 0x20AC Euro */ - { 899, 8, 5, 4, 0, -5 }, /* 0xFFFD uniFFFD */ -#endif /* (TOMTHUMB_USE_EXTENDED) */ -}; - -const GFXfont TomThumb PROGMEM = { - (uint8_t *)TomThumbBitmaps, - (GFXglyph *)TomThumbGlyphs, - 0x20, 0x7E, 6 }; diff --git a/lib/Adafruit_GFX-1.2.2.07/README.md b/lib/Adafruit_GFX-1.2.2.07/README.md deleted file mode 100644 index 21f2bc8eb..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Adafruit GFX Library - -This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be 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 and open-source hardware by purchasing products from Adafruit! - -Written by Limor Fried/Ladyada for Adafruit Industries. -BSD license, check license.txt for more information. -All text above must be included in any redistribution. - -Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. - -# Useful Resources - -- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code - -- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 - -- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, #include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font. - -- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX .h format. - ---- - -### Roadmap - -The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add ungainly workarounds. - -Highly unlikely to merge any changes for additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is (this also creates liabilities for tools and documentation). If you *must* have a more sophisticated font format, consider creating a fork with the features required for your project. For similar reasons, also unlikely to add any more bitmap formats, it's getting messy. - -Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile deleted file mode 100644 index 47f5a0e15..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: fontconvert - -CC = gcc -CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include -LIBS = -lfreetype - -fontconvert: fontconvert.c - $(CC) $(CFLAGS) $< $(LIBS) -o $@ - strip $@ - -clean: - rm -f fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c deleted file mode 100644 index bfd21103c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c +++ /dev/null @@ -1,284 +0,0 @@ -/* -TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' -Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. - -NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing -fonts to be used with the Adafruit_GFX Arduino library. - -For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: - ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h - -REQUIRES FREETYPE LIBRARY. www.freetype.org - -Currently this only extracts the printable 7-bit ASCII chars of a font. -Will eventually extend with some int'l chars a la ftGFX, not there yet. -Keep 7-bit fonts around as an option in that case, more compact. - -See notes at end for glyph nomenclature & other tidbits. -*/ - -#include -#include -#include -#include -#include FT_GLYPH_H -#include "../gfxfont.h" // Adafruit_GFX font structures - -#define DPI 141 // Approximate res. of Adafruit 2.8" TFT - -// Accumulate bits for output, with periodic hexadecimal byte write -void enbit(uint8_t value) { - static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; - if(value) sum |= bit; // Set bit if needed - if(!(bit >>= 1)) { // Advance to next bit, end of byte reached? - if(!firstCall) { // Format output table nicely - if(++row >= 12) { // Last entry on line? - printf(",\n "); // Newline format output - row = 0; // Reset row counter - } else { // Not end of line - printf(", "); // Simple comma delim - } - } - printf("0x%02X", sum); // Write byte value - sum = 0; // Clear for next byte - bit = 0x80; // Reset bit counter - firstCall = 0; // Formatting flag - } -} - -int main(int argc, char *argv[]) { - int i, j, err, size, first=' ', last='~', - bitmapOffset = 0, x, y, byte; - char *fontName, c, *ptr; - FT_Library library; - FT_Face face; - FT_Glyph glyph; - FT_Bitmap *bitmap; - FT_BitmapGlyphRec *g; - GFXglyph *table; - uint8_t bit; - - // Parse command line. Valid syntaxes are: - // fontconvert [filename] [size] - // fontconvert [filename] [size] [last char] - // fontconvert [filename] [size] [first char] [last char] - // Unless overridden, default first and last chars are - // ' ' (space) and '~', respectively - - if(argc < 3) { - fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", - argv[0]); - return 1; - } - - size = atoi(argv[2]); - - if(argc == 4) { - last = atoi(argv[3]); - } else if(argc == 5) { - first = atoi(argv[3]); - last = atoi(argv[4]); - } - - if(last < first) { - i = first; - first = last; - last = i; - } - - ptr = strrchr(argv[1], '/'); // Find last slash in filename - if(ptr) ptr++; // First character of filename (path stripped) - else ptr = argv[1]; // No path; font in local dir. - - // Allocate space for font name and glyph table - if((!(fontName = malloc(strlen(ptr) + 20))) || - (!(table = (GFXglyph *)malloc((last - first + 1) * - sizeof(GFXglyph))))) { - fprintf(stderr, "Malloc error\n"); - return 1; - } - - // Derive font table names from filename. Period (filename - // extension) is truncated and replaced with the font size & bits. - strcpy(fontName, ptr); - ptr = strrchr(fontName, '.'); // Find last period (file ext) - if(!ptr) ptr = &fontName[strlen(fontName)]; // If none, append - // Insert font size and 7/8 bit. fontName was alloc'd w/extra - // space to allow this, we're not sprintfing into Forbidden Zone. - sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); - // Space and punctuation chars in name replaced w/ underscores. - for(i=0; (c=fontName[i]); i++) { - if(isspace(c) || ispunct(c)) fontName[i] = '_'; - } - - // Init FreeType lib, load font - if((err = FT_Init_FreeType(&library))) { - fprintf(stderr, "FreeType init error: %d", err); - return err; - } - if((err = FT_New_Face(library, argv[1], 0, &face))) { - fprintf(stderr, "Font load error: %d", err); - FT_Done_FreeType(library); - return err; - } - - // << 6 because '26dot6' fixed-point format - FT_Set_Char_Size(face, size << 6, 0, DPI, 0); - - // Currently all symbols from 'first' to 'last' are processed. - // Fonts may contain WAY more glyphs than that, but this code - // will need to handle encoding stuff to deal with extracting - // the right symbols, and that's not done yet. - // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); - - printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); - - // Process glyphs and output huge bitmap data array - for(i=first, j=0; i<=last; i++, j++) { - // MONO renderer provides clean image with perfect crop - // (no wasted pixels) via bitmap struct. - if((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { - fprintf(stderr, "Error %d loading char '%c'\n", - err, i); - continue; - } - - if((err = FT_Render_Glyph(face->glyph, - FT_RENDER_MODE_MONO))) { - fprintf(stderr, "Error %d rendering char '%c'\n", - err, i); - continue; - } - - if((err = FT_Get_Glyph(face->glyph, &glyph))) { - fprintf(stderr, "Error %d getting glyph '%c'\n", - err, i); - continue; - } - - bitmap = &face->glyph->bitmap; - g = (FT_BitmapGlyphRec *)glyph; - - // Minimal font and per-glyph information is stored to - // reduce flash space requirements. Glyph bitmaps are - // fully bit-packed; no per-scanline pad, though end of - // each character may be padded to next byte boundary - // when needed. 16-bit offset means 64K max for bitmaps, - // code currently doesn't check for overflow. (Doesn't - // check that size & offsets are within bounds either for - // that matter...please convert fonts responsibly.) - table[j].bitmapOffset = bitmapOffset; - table[j].width = bitmap->width; - table[j].height = bitmap->rows; - table[j].xAdvance = face->glyph->advance.x >> 6; - table[j].xOffset = g->left; - table[j].yOffset = 1 - g->top; - - for(y=0; y < bitmap->rows; y++) { - for(x=0;x < bitmap->width; x++) { - byte = x / 8; - bit = 0x80 >> (x & 7); - enbit(bitmap->buffer[ - y * bitmap->pitch + byte] & bit); - } - } - - // Pad end of char bitmap to next byte boundary if needed - int n = (bitmap->width * bitmap->rows) & 7; - if(n) { // Pixel count not an even multiple of 8? - n = 8 - n; // # bits to next multiple - while(n--) enbit(0); - } - bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; - - FT_Done_Glyph(glyph); - } - - printf(" };\n\n"); // End bitmap array - - // Output glyph attributes table (one per character) - printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); - for(i=first, j=0; i<=last; i++, j++) { - printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", - table[j].bitmapOffset, - table[j].width, - table[j].height, - table[j].xAdvance, - table[j].xOffset, - table[j].yOffset); - if(i < last) { - printf(", // 0x%02X", i); - if((i >= ' ') && (i <= '~')) { - printf(" '%c'", i); - } - putchar('\n'); - } - } - printf(" }; // 0x%02X", last); - if((last >= ' ') && (last <= '~')) printf(" '%c'", last); - printf("\n\n"); - - // Output font structure - printf("const GFXfont %s PROGMEM = {\n", fontName); - printf(" (uint8_t *)%sBitmaps,\n", fontName); - printf(" (GFXglyph *)%sGlyphs,\n", fontName); - if (face->size->metrics.height == 0) { - // No face height info, assume fixed width and get from a glyph. - printf(" 0x%02X, 0x%02X, %d };\n\n", - first, last, table[0].height); - } else { - printf(" 0x%02X, 0x%02X, %ld };\n\n", - first, last, face->size->metrics.height >> 6); - } - printf("// Approx. %d bytes\n", - bitmapOffset + (last - first + 1) * 7 + 7); - // Size estimate is based on AVR struct and pointer sizes; - // actual size may vary. - - FT_Done_FreeType(library); - - return 0; -} - -/* ------------------------------------------------------------------------- - -Character metrics are slightly different from classic GFX & ftGFX. -In classic GFX: cursor position is the upper-left pixel of each 5x7 -character; lower extent of most glyphs (except those w/descenders) -is +6 pixels in Y direction. -W/new GFX fonts: cursor position is on baseline, where baseline is -'inclusive' (containing the bottom-most row of pixels in most symbols, -except those with descenders; ftGFX is one pixel lower). - -Cursor Y will be moved automatically when switching between classic -and new fonts. If you switch fonts, any print() calls will continue -along the same baseline. - - ...........#####.. -- yOffset - ..........######.. - ..........######.. - .........#######.. - ........#########. - * = Cursor pos. ........#########. - .......##########. - ......#####..####. - ......#####..####. - *.#.. .....#####...####. - .#.#. ....############## - #...# ...############### - #...# ...############### - ##### ..#####......##### - #...# .#####.......##### -====== #...# ====== #*###.........#### ======= Baseline - || xOffset - -glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space -(+Y is down), from the cursor position to the top-left pixel of the -glyph bitmap. i.e. yOffset is typically negative, xOffset is typically -zero but a few glyphs will have other values (even negative xOffsets -sometimes, totally normal). glyph->xAdvance is the distance to move -the cursor on the X axis after drawing the corresponding symbol. - -There's also some changes with regard to 'background' color and new GFX -fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. -*/ diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md deleted file mode 100644 index 361078b60..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md +++ /dev/null @@ -1,88 +0,0 @@ -### A short guide to use fontconvert.c to create your own fonts using MinGW. - -#### STEP 1: INSTALL MinGW - -Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). -Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). -I suggest installing with the "Graphical User Interface Installer". -To complete your initial installation you should further install some "packages". -For our purpose you should only install the "Basic Setup" packages. -To do that: - -1. Open the MinGW Installation Manager -2. From the left panel click "Basic Setup". -3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" -and click "Mark for installation" -4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". - - -#### STEP 2: INSTALL Freetype Library - -To read about the freetype project visit [freetype.org](https://www.freetype.org/). -To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) -and choose "freetype-2.7.tar.gz" file (or a newer version if available). -To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. -(I also renamed the folder to "ft27") -Before you build the library it's good to read these articles: -* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) -* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) -* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) - -Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). -Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. -To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. -Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. -Enter "ft27" directory using the cd commands: -``` -cd /c -cd ft27 -``` - -and then type one by one the commands: -``` -./configure --prefix=/mingw -make -make install -``` -Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". -That, hopefully, means that you have installed the library correctly !! - -#### STEP 3: Build fontconvert.c - -Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. -Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). -Change the commands so in the end the program looks like : -``` -all: fontconvert - -CC = gcc -CFLAGS = -Wall -I c:/mingw/include/freetype2 -LIBS = -lfreetype - -fontconvert: fontconvert.c - $(CC) $(CFLAGS) $< $(LIBS) -o $@ - -clean: - rm -f fontconvert -``` -Go back in the command prompt and with a cd command enter the fontconvert directory. -``` -cd /c/adafruit_gfx_library\fontconvert -``` -Give the command: -``` -make -``` -This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. - -#### STEP 4: Create your own font header files - -Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. -So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: -``` -./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h -``` -You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). - -Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee -and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh deleted file mode 100644 index 35f07ea52..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Ugly little Bash script, generates a set of .h files for GFX using -# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), -# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, -# bold, oblique or italic, and bold+oblique or bold+italic; and four -# sizes: 9, 12, 18 and 24 point. No real error checking or anything, -# this just powers through all the combinations, calling the fontconvert -# utility and redirecting the output to a .h file for each combo. - -# Adafruit_GFX repository does not include the source outline fonts -# (huge zipfile, different license) but they're easily acquired: -# http://savannah.gnu.org/projects/freefont/ - -convert=./fontconvert -inpath=~/Desktop/freefont/ -outpath=../Fonts/ -fonts=(FreeMono FreeSans FreeSerif) -styles=("" Bold Italic BoldItalic Oblique BoldOblique) -sizes=(9 12 18 24) - -for f in ${fonts[*]} -do - for index in ${!styles[*]} - do - st=${styles[$index]} - for si in ${sizes[*]} - do - infile=$inpath$f$st".ttf" - if [ -f $infile ] # Does source combination exist? - then - outfile=$outpath$f$st$si"pt7b.h" -# printf "%s %s %s > %s\n" $convert $infile $si $outfile - $convert $infile $si > $outfile - fi - done - done -done diff --git a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h deleted file mode 100644 index 07381eddd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h +++ /dev/null @@ -1,24 +0,0 @@ -// Font structures for newer Adafruit_GFX (1.1 and later). -// Example fonts are included in 'Fonts' directory. -// To use a font in your Arduino sketch, #include the corresponding .h -// file and pass address of GFXfont struct to setFont(). Pass NULL to -// revert to 'classic' fixed-space bitmap font. - -#ifndef _GFXFONT_H_ -#define _GFXFONT_H_ - -typedef struct { // Data stored PER GLYPH - uint16_t bitmapOffset; // Pointer into GFXfont->bitmap - uint8_t width, height; // Bitmap dimensions in pixels - uint8_t xAdvance; // Distance to advance cursor (x axis) - int8_t xOffset, yOffset; // Dist from cursor pos to UL corner -} GFXglyph; - -typedef struct { // Data stored for FONT AS A WHOLE: - uint8_t *bitmap; // Glyph bitmaps, concatenated - GFXglyph *glyph; // Glyph array - uint8_t first, last; // ASCII extents - uint8_t yAdvance; // Newline distance (y axis) -} GFXfont; - -#endif // _GFXFONT_H_ diff --git a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c deleted file mode 100644 index 6f88bd23a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c +++ /dev/null @@ -1,276 +0,0 @@ -// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. -// See gfxfont.h for newer custom bitmap font info. - -#ifndef FONT5X7_H -#define FONT5X7_H - -#ifdef __AVR__ - #include - #include -#elif defined(ESP8266) - #include -#else - #define PROGMEM -#endif - -// Standard ASCII 5x7 font - -static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, - 0x00, 0x18, 0x3C, 0x18, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, - 0x00, 0x18, 0x24, 0x18, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, - 0x30, 0x48, 0x3A, 0x06, 0x0E, - 0x26, 0x29, 0x79, 0x29, 0x26, - 0x40, 0x7F, 0x05, 0x05, 0x07, - 0x40, 0x7F, 0x05, 0x25, 0x3F, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, - 0x14, 0x22, 0x7F, 0x22, 0x14, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, - 0x06, 0x09, 0x7F, 0x01, 0x7F, - 0x00, 0x66, 0x89, 0x95, 0x6A, - 0x60, 0x60, 0x60, 0x60, 0x60, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, - 0x08, 0x04, 0x7E, 0x04, 0x08, - 0x10, 0x20, 0x7E, 0x20, 0x10, - 0x08, 0x08, 0x2A, 0x1C, 0x08, - 0x08, 0x1C, 0x2A, 0x08, 0x08, - 0x1E, 0x10, 0x10, 0x10, 0x10, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, - 0x30, 0x38, 0x3E, 0x38, 0x30, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, - 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, 0x56, 0x20, 0x50, - 0x00, 0x08, 0x07, 0x03, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, - 0x08, 0x08, 0x3E, 0x08, 0x08, - 0x00, 0x80, 0x70, 0x30, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x60, 0x60, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, - 0x3E, 0x51, 0x49, 0x45, 0x3E, - 0x00, 0x42, 0x7F, 0x40, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, - 0x21, 0x41, 0x49, 0x4D, 0x33, - 0x18, 0x14, 0x12, 0x7F, 0x10, - 0x27, 0x45, 0x45, 0x45, 0x39, - 0x3C, 0x4A, 0x49, 0x49, 0x31, - 0x41, 0x21, 0x11, 0x09, 0x07, - 0x36, 0x49, 0x49, 0x49, 0x36, - 0x46, 0x49, 0x49, 0x29, 0x1E, - 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x00, 0x41, 0x22, 0x14, 0x08, - 0x02, 0x01, 0x59, 0x09, 0x06, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, - 0x7C, 0x12, 0x11, 0x12, 0x7C, - 0x7F, 0x49, 0x49, 0x49, 0x36, - 0x3E, 0x41, 0x41, 0x41, 0x22, - 0x7F, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x49, 0x49, 0x49, 0x41, - 0x7F, 0x09, 0x09, 0x09, 0x01, - 0x3E, 0x41, 0x41, 0x51, 0x73, - 0x7F, 0x08, 0x08, 0x08, 0x7F, - 0x00, 0x41, 0x7F, 0x41, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, - 0x7F, 0x08, 0x14, 0x22, 0x41, - 0x7F, 0x40, 0x40, 0x40, 0x40, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, - 0x7F, 0x04, 0x08, 0x10, 0x7F, - 0x3E, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x09, 0x09, 0x09, 0x06, - 0x3E, 0x41, 0x51, 0x21, 0x5E, - 0x7F, 0x09, 0x19, 0x29, 0x46, - 0x26, 0x49, 0x49, 0x49, 0x32, - 0x03, 0x01, 0x7F, 0x01, 0x03, - 0x3F, 0x40, 0x40, 0x40, 0x3F, - 0x1F, 0x20, 0x40, 0x20, 0x1F, - 0x3F, 0x40, 0x38, 0x40, 0x3F, - 0x63, 0x14, 0x08, 0x14, 0x63, - 0x03, 0x04, 0x78, 0x04, 0x03, - 0x61, 0x59, 0x49, 0x4D, 0x43, - 0x00, 0x7F, 0x41, 0x41, 0x41, - 0x02, 0x04, 0x08, 0x10, 0x20, - 0x00, 0x41, 0x41, 0x41, 0x7F, - 0x04, 0x02, 0x01, 0x02, 0x04, - 0x40, 0x40, 0x40, 0x40, 0x40, - 0x00, 0x03, 0x07, 0x08, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, - 0x7F, 0x28, 0x44, 0x44, 0x38, - 0x38, 0x44, 0x44, 0x44, 0x28, - 0x38, 0x44, 0x44, 0x28, 0x7F, - 0x38, 0x54, 0x54, 0x54, 0x18, - 0x00, 0x08, 0x7E, 0x09, 0x02, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, - 0x7F, 0x08, 0x04, 0x04, 0x78, - 0x00, 0x44, 0x7D, 0x40, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, - 0x7C, 0x08, 0x04, 0x04, 0x78, - 0x38, 0x44, 0x44, 0x44, 0x38, - 0xFC, 0x18, 0x24, 0x24, 0x18, - 0x18, 0x24, 0x24, 0x18, 0xFC, - 0x7C, 0x08, 0x04, 0x04, 0x08, - 0x48, 0x54, 0x54, 0x54, 0x24, - 0x04, 0x04, 0x3F, 0x44, 0x24, - 0x3C, 0x40, 0x40, 0x20, 0x7C, - 0x1C, 0x20, 0x40, 0x20, 0x1C, - 0x3C, 0x40, 0x30, 0x40, 0x3C, - 0x44, 0x28, 0x10, 0x28, 0x44, - 0x4C, 0x90, 0x90, 0x90, 0x7C, - 0x44, 0x64, 0x54, 0x4C, 0x44, - 0x00, 0x08, 0x36, 0x41, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, - 0x3C, 0x26, 0x23, 0x26, 0x3C, - 0x1E, 0xA1, 0xA1, 0x61, 0x12, - 0x3A, 0x40, 0x40, 0x20, 0x7A, - 0x38, 0x54, 0x54, 0x55, 0x59, - 0x21, 0x55, 0x55, 0x79, 0x41, - 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut - 0x21, 0x55, 0x54, 0x78, 0x40, - 0x20, 0x54, 0x55, 0x79, 0x40, - 0x0C, 0x1E, 0x52, 0x72, 0x12, - 0x39, 0x55, 0x55, 0x55, 0x59, - 0x39, 0x54, 0x54, 0x54, 0x59, - 0x39, 0x55, 0x54, 0x54, 0x58, - 0x00, 0x00, 0x45, 0x7C, 0x41, - 0x00, 0x02, 0x45, 0x7D, 0x42, - 0x00, 0x01, 0x45, 0x7C, 0x40, - 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut - 0xF0, 0x28, 0x25, 0x28, 0xF0, - 0x7C, 0x54, 0x55, 0x45, 0x00, - 0x20, 0x54, 0x54, 0x7C, 0x54, - 0x7C, 0x0A, 0x09, 0x7F, 0x49, - 0x32, 0x49, 0x49, 0x49, 0x32, - 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut - 0x32, 0x4A, 0x48, 0x48, 0x30, - 0x3A, 0x41, 0x41, 0x21, 0x7A, - 0x3A, 0x42, 0x40, 0x20, 0x78, - 0x00, 0x9D, 0xA0, 0xA0, 0x7D, - 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut - 0x3D, 0x40, 0x40, 0x40, 0x3D, - 0x3C, 0x24, 0xFF, 0x24, 0x24, - 0x48, 0x7E, 0x49, 0x43, 0x66, - 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, - 0xFF, 0x09, 0x29, 0xF6, 0x20, - 0xC0, 0x88, 0x7E, 0x09, 0x03, - 0x20, 0x54, 0x54, 0x79, 0x41, - 0x00, 0x00, 0x44, 0x7D, 0x41, - 0x30, 0x48, 0x48, 0x4A, 0x32, - 0x38, 0x40, 0x40, 0x22, 0x7A, - 0x00, 0x7A, 0x0A, 0x0A, 0x72, - 0x7D, 0x0D, 0x19, 0x31, 0x7D, - 0x26, 0x29, 0x29, 0x2F, 0x28, - 0x26, 0x29, 0x29, 0x29, 0x26, - 0x30, 0x48, 0x4D, 0x40, 0x20, - 0x38, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x38, - 0x2F, 0x10, 0xC8, 0xAC, 0xBA, - 0x2F, 0x10, 0x28, 0x34, 0xFA, - 0x00, 0x00, 0x7B, 0x00, 0x00, - 0x08, 0x14, 0x2A, 0x14, 0x22, - 0x22, 0x14, 0x2A, 0x14, 0x08, - 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code - 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block - 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block - 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x10, 0x10, 0x10, 0xFF, 0x00, - 0x14, 0x14, 0x14, 0xFF, 0x00, - 0x10, 0x10, 0xFF, 0x00, 0xFF, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x14, 0x14, 0x14, 0xFC, 0x00, - 0x14, 0x14, 0xF7, 0x00, 0xFF, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x14, 0x14, 0xF4, 0x04, 0xFC, - 0x14, 0x14, 0x17, 0x10, 0x1F, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0x1F, 0x00, - 0x10, 0x10, 0x10, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0xF0, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0xFF, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x14, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x00, 0x00, 0x1F, 0x10, 0x17, - 0x00, 0x00, 0xFC, 0x04, 0xF4, - 0x14, 0x14, 0x17, 0x10, 0x17, - 0x14, 0x14, 0xF4, 0x04, 0xF4, - 0x00, 0x00, 0xFF, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0xF7, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x17, 0x14, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0xF4, 0x14, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x00, 0x00, 0x1F, 0x10, 0x1F, - 0x00, 0x00, 0x00, 0x1F, 0x14, - 0x00, 0x00, 0x00, 0xFC, 0x14, - 0x00, 0x00, 0xF0, 0x10, 0xF0, - 0x10, 0x10, 0xFF, 0x10, 0xFF, - 0x14, 0x14, 0x14, 0xFF, 0x14, - 0x10, 0x10, 0x10, 0x1F, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x10, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x38, 0x44, 0x44, 0x38, 0x44, - 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta - 0x7E, 0x02, 0x02, 0x06, 0x06, - 0x02, 0x7E, 0x02, 0x7E, 0x02, - 0x63, 0x55, 0x49, 0x41, 0x63, - 0x38, 0x44, 0x44, 0x3C, 0x04, - 0x40, 0x7E, 0x20, 0x1E, 0x20, - 0x06, 0x02, 0x7E, 0x02, 0x02, - 0x99, 0xA5, 0xE7, 0xA5, 0x99, - 0x1C, 0x2A, 0x49, 0x2A, 0x1C, - 0x4C, 0x72, 0x01, 0x72, 0x4C, - 0x30, 0x4A, 0x4D, 0x4D, 0x30, - 0x30, 0x48, 0x78, 0x48, 0x30, - 0xBC, 0x62, 0x5A, 0x46, 0x3D, - 0x3E, 0x49, 0x49, 0x49, 0x00, - 0x7E, 0x01, 0x01, 0x01, 0x7E, - 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, - 0x44, 0x44, 0x5F, 0x44, 0x44, - 0x40, 0x51, 0x4A, 0x44, 0x40, - 0x40, 0x44, 0x4A, 0x51, 0x40, - 0x00, 0x00, 0xFF, 0x01, 0x03, - 0xE0, 0x80, 0xFF, 0x00, 0x00, - 0x08, 0x08, 0x6B, 0x6B, 0x08, - 0x36, 0x12, 0x36, 0x24, 0x36, - 0x06, 0x0F, 0x09, 0x0F, 0x06, - 0x00, 0x00, 0x18, 0x18, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x00, - 0x30, 0x40, 0xFF, 0x01, 0x01, - 0x00, 0x1F, 0x01, 0x01, 0x1E, - 0x00, 0x19, 0x1D, 0x17, 0x12, - 0x00, 0x3C, 0x3C, 0x3C, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP -}; -#endif // FONT5X7_H diff --git a/lib/Adafruit_GFX-1.2.2.07/library.properties b/lib/Adafruit_GFX-1.2.2.07/library.properties deleted file mode 100644 index c6b0c4751..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Adafruit GFX Library -version=1.2.2 -author=Adafruit -maintainer=Adafruit -sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. -paragraph=Install this library in addition to the display library for your hardware. -category=Display -url=https://github.com/adafruit/Adafruit-GFX-Library -architectures=* diff --git a/lib/Adafruit_GFX-1.2.2.07/license.txt b/lib/Adafruit_GFX-1.2.2.07/license.txt deleted file mode 100644 index 7492e93a1..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/license.txt +++ /dev/null @@ -1,24 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2012 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. diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp deleted file mode 100644 index fd7039173..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp +++ /dev/null @@ -1,672 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/ - ----> http://www.adafruit.com/products/ - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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 - -#include "Adafruit_LEDBackpack.h" -#include "Adafruit_GFX.h" - -#ifndef _BV - #define _BV(bit) (1<<(bit)) -#endif - -#ifndef _swap_int16_t -#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } -#endif - -static const uint8_t numbertable[] = { - 0x3F, /* 0 */ - 0x06, /* 1 */ - 0x5B, /* 2 */ - 0x4F, /* 3 */ - 0x66, /* 4 */ - 0x6D, /* 5 */ - 0x7D, /* 6 */ - 0x07, /* 7 */ - 0x7F, /* 8 */ - 0x6F, /* 9 */ - 0x77, /* a */ - 0x7C, /* b */ - 0x39, /* C */ - 0x5E, /* d */ - 0x79, /* E */ - 0x71, /* F */ -}; - -static const uint16_t alphafonttable[] PROGMEM = { - -0b0000000000000001, -0b0000000000000010, -0b0000000000000100, -0b0000000000001000, -0b0000000000010000, -0b0000000000100000, -0b0000000001000000, -0b0000000010000000, -0b0000000100000000, -0b0000001000000000, -0b0000010000000000, -0b0000100000000000, -0b0001000000000000, -0b0010000000000000, -0b0100000000000000, -0b1000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0001001011001001, -0b0001010111000000, -0b0001001011111001, -0b0000000011100011, -0b0000010100110000, -0b0001001011001000, -0b0011101000000000, -0b0001011100000000, -0b0000000000000000, // -0b0000000000000110, // ! -0b0000001000100000, // " -0b0001001011001110, // # -0b0001001011101101, // $ -0b0000110000100100, // % -0b0010001101011101, // & -0b0000010000000000, // ' -0b0010010000000000, // ( -0b0000100100000000, // ) -0b0011111111000000, // * -0b0001001011000000, // + -0b0000100000000000, // , -0b0000000011000000, // - -0b0000000000000000, // . -0b0000110000000000, // / -0b0000110000111111, // 0 -0b0000000000000110, // 1 -0b0000000011011011, // 2 -0b0000000010001111, // 3 -0b0000000011100110, // 4 -0b0010000001101001, // 5 -0b0000000011111101, // 6 -0b0000000000000111, // 7 -0b0000000011111111, // 8 -0b0000000011101111, // 9 -0b0001001000000000, // : -0b0000101000000000, // ; -0b0010010000000000, // < -0b0000000011001000, // = -0b0000100100000000, // > -0b0001000010000011, // ? -0b0000001010111011, // @ -0b0000000011110111, // A -0b0001001010001111, // B -0b0000000000111001, // C -0b0001001000001111, // D -0b0000000011111001, // E -0b0000000001110001, // F -0b0000000010111101, // G -0b0000000011110110, // H -0b0001001000000000, // I -0b0000000000011110, // J -0b0010010001110000, // K -0b0000000000111000, // L -0b0000010100110110, // M -0b0010000100110110, // N -0b0000000000111111, // O -0b0000000011110011, // P -0b0010000000111111, // Q -0b0010000011110011, // R -0b0000000011101101, // S -0b0001001000000001, // T -0b0000000000111110, // U -0b0000110000110000, // V -0b0010100000110110, // W -0b0010110100000000, // X -0b0001010100000000, // Y -0b0000110000001001, // Z -0b0000000000111001, // [ -0b0010000100000000, // -0b0000000000001111, // ] -0b0000110000000011, // ^ -0b0000000000001000, // _ -0b0000000100000000, // ` -0b0001000001011000, // a -0b0010000001111000, // b -0b0000000011011000, // c -0b0000100010001110, // d -0b0000100001011000, // e -0b0000000001110001, // f -0b0000010010001110, // g -0b0001000001110000, // h -0b0001000000000000, // i -0b0000000000001110, // j -0b0011011000000000, // k -0b0000000000110000, // l -0b0001000011010100, // m -0b0001000001010000, // n -0b0000000011011100, // o -0b0000000101110000, // p -0b0000010010000110, // q -0b0000000001010000, // r -0b0010000010001000, // s -0b0000000001111000, // t -0b0000000000011100, // u -0b0010000000000100, // v -0b0010100000010100, // w -0b0010100011000000, // x -0b0010000000001100, // y -0b0000100001001000, // z -0b0000100101001001, // { -0b0001001000000000, // | -0b0010010010001001, // } -0b0000010100100000, // ~ -0b0011111111111111, - -}; -void Adafruit_LEDBackpack::setBrightness(uint8_t b) { - if (b > 15) b = 15; - Wire.beginTransmission(i2c_addr); - Wire.write(HT16K33_CMD_BRIGHTNESS | b); - Wire.endTransmission(); -} - -void Adafruit_LEDBackpack::blinkRate(uint8_t b) { - Wire.beginTransmission(i2c_addr); - if (b > 3) b = 0; // turn off if not sure - - Wire.write(HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1)); - Wire.endTransmission(); -} - -Adafruit_LEDBackpack::Adafruit_LEDBackpack(void) { -} - -void Adafruit_LEDBackpack::begin(uint8_t _addr = 0x70) { - i2c_addr = _addr; - - Wire.begin(); - - Wire.beginTransmission(i2c_addr); - Wire.write(0x21); // turn on oscillator - Wire.endTransmission(); - blinkRate(HT16K33_BLINK_OFF); - - setBrightness(15); // max brightness -} - -void Adafruit_LEDBackpack::writeDisplay(void) { - Wire.beginTransmission(i2c_addr); - Wire.write((uint8_t)0x00); // start at address $00 - - for (uint8_t i=0; i<8; i++) { - Wire.write(displaybuffer[i] & 0xFF); - Wire.write(displaybuffer[i] >> 8); - } - Wire.endTransmission(); -} - -void Adafruit_LEDBackpack::clear(void) { - for (uint8_t i=0; i<8; i++) { - displaybuffer[i] = 0; - } -} - -/******************************* QUAD ALPHANUM OBJECT */ - -Adafruit_AlphaNum4::Adafruit_AlphaNum4(void) { - -} - -void Adafruit_AlphaNum4::writeDigitRaw(uint8_t n, uint16_t bitmask) { - displaybuffer[n] = bitmask; -} - -void Adafruit_AlphaNum4::writeDigitAscii(uint8_t n, uint8_t a, boolean d) { - uint16_t font = pgm_read_word(alphafonttable+a); - - displaybuffer[n] = font; - - /* - Serial.print(a, DEC); - Serial.print(" / '"); Serial.write(a); - Serial.print("' = 0x"); Serial.println(font, HEX); - */ - - if (d) displaybuffer[n] |= (1<<14); -} - -/******************************* 24 BARGRAPH OBJECT */ - -Adafruit_24bargraph::Adafruit_24bargraph(void) { - -} - -void Adafruit_24bargraph::setBar(uint8_t bar, uint8_t color) { - uint16_t a, c; - - if (bar < 12) - c = bar / 4; - else - c = (bar - 12) / 4; - - a = bar % 4; - if (bar >= 12) - a += 4; - - //Serial.print("Ano = "); Serial.print(a); Serial.print(" Cath = "); Serial.println(c); - if (color == LED_RED) { - // Turn on red LED. - displaybuffer[c] |= _BV(a); - // Turn off green LED. - displaybuffer[c] &= ~_BV(a+8); - } else if (color == LED_YELLOW) { - // Turn on red and green LED. - displaybuffer[c] |= _BV(a) | _BV(a+8); - } else if (color == LED_OFF) { - // Turn off red and green LED. - displaybuffer[c] &= ~_BV(a) & ~_BV(a+8); - } else if (color == LED_GREEN) { - // Turn on green LED. - displaybuffer[c] |= _BV(a+8); - // Turn off red LED. - displaybuffer[c] &= ~_BV(a); - } -} - - -/******************************* 16x8 MATRIX OBJECT */ - -Adafruit_8x16matrix::Adafruit_8x16matrix(void) : Adafruit_GFX(8, 16) { -} - -void Adafruit_8x16matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 2: - _swap_int16_t(x, y); - x = 16 - x - 1; - break; - case 3: - x = 16 - x - 1; - y = 8 - y - 1; - break; - case 0: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - /* - Serial.print("("); Serial.print(x); - Serial.print(","); Serial.print(y); - Serial.println(")"); - */ - - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 16)) return; - - if (color) { - displaybuffer[y] |= 1 << x; - } else { - displaybuffer[y] &= ~(1 << x); - } -} - -/******************************* 16x8 MINI MATRIX OBJECT */ - -Adafruit_8x16minimatrix::Adafruit_8x16minimatrix(void) : Adafruit_GFX(8, 16) { -} - -void Adafruit_8x16minimatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - - if ((y < 0) || (x < 0)) return; - if ((getRotation() % 2 == 0) && ((y >= 16) || (x >= 8))) return; - if ((getRotation() % 2 == 1) && ((x >= 16) || (y >= 8))) return; - - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 2: - if (y >= 8) { - x += 8; - y -= 8; - } - _swap_int16_t(x, y); - break; - case 3: - x = 16 - x - 1; - if (x >= 8) { - x -= 8; - y += 8; - } - break; - case 0: - y = 16 - y - 1; - x = 8 - x - 1; - if (y >= 8) { - x += 8; - y -= 8; - } - _swap_int16_t(x, y); - break; - case 1: - y = 8 - y - 1; - if (x >= 8) { - x -= 8; - y += 8; - } - break; - } - - if (color) { - displaybuffer[x] |= 1 << y; - } else { - displaybuffer[x] &= ~(1 << y); - } -} - -/******************************* 8x8 MATRIX OBJECT */ - -Adafruit_8x8matrix::Adafruit_8x8matrix(void) : Adafruit_GFX(8, 8) { -} - -void Adafruit_8x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 8)) return; - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 1: - _swap_int16_t(x, y); - x = 8 - x - 1; - break; - case 2: - x = 8 - x - 1; - y = 8 - y - 1; - break; - case 3: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - - // wrap around the x - x += 7; - x %= 8; - - - if (color) { - displaybuffer[y] |= 1 << x; - } else { - displaybuffer[y] &= ~(1 << x); - } -} - -/******************************* 8x8 BICOLOR MATRIX OBJECT */ - -Adafruit_BicolorMatrix::Adafruit_BicolorMatrix(void) : Adafruit_GFX(8, 8) { -} - -void Adafruit_BicolorMatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 8)) return; - - switch (getRotation()) { - case 1: - _swap_int16_t(x, y); - x = 8 - x - 1; - break; - case 2: - x = 8 - x - 1; - y = 8 - y - 1; - break; - case 3: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - - if (color == LED_GREEN) { - // Turn on green LED. - displaybuffer[y] |= 1 << x; - // Turn off red LED. - displaybuffer[y] &= ~(1 << (x+8)); - } else if (color == LED_RED) { - // Turn on red LED. - displaybuffer[y] |= 1 << (x+8); - // Turn off green LED. - displaybuffer[y] &= ~(1 << x); - } else if (color == LED_YELLOW) { - // Turn on green and red LED. - displaybuffer[y] |= (1 << (x+8)) | (1 << x); - } else if (color == LED_OFF) { - // Turn off green and red LED. - displaybuffer[y] &= ~(1 << x) & ~(1 << (x+8)); - } -} - -/******************************* 7 SEGMENT OBJECT */ - -Adafruit_7segment::Adafruit_7segment(void) { - position = 0; -} - -void Adafruit_7segment::print(unsigned long n, int base) -{ - if (base == 0) write(n); - else printNumber(n, base); -} - -void Adafruit_7segment::print(char c, int base) -{ - print((long) c, base); -} - -void Adafruit_7segment::print(unsigned char b, int base) -{ - print((unsigned long) b, base); -} - -void Adafruit_7segment::print(int n, int base) -{ - print((long) n, base); -} - -void Adafruit_7segment::print(unsigned int n, int base) -{ - print((unsigned long) n, base); -} - -void Adafruit_7segment::println(void) { - position = 0; -} - -void Adafruit_7segment::println(char c, int base) -{ - print(c, base); - println(); -} - -void Adafruit_7segment::println(unsigned char b, int base) -{ - print(b, base); - println(); -} - -void Adafruit_7segment::println(int n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(unsigned int n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(long n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(unsigned long n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(double n, int digits) -{ - print(n, digits); - println(); -} - -void Adafruit_7segment::print(double n, int digits) -{ - printFloat(n, digits); -} - - -size_t Adafruit_7segment::write(uint8_t c) { - - uint8_t r = 0; - - if (c == '\n') position = 0; - if (c == '\r') position = 0; - - if ((c >= '0') && (c <= '9')) { - writeDigitNum(position, c-'0'); - r = 1; - } - - position++; - if (position == 2) position++; - - return r; -} - -void Adafruit_7segment::writeDigitRaw(uint8_t d, uint8_t bitmask) { - if (d > 4) return; - displaybuffer[d] = bitmask; -} - -void Adafruit_7segment::drawColon(boolean state) { - if (state) - displaybuffer[2] = 0x2; - else - displaybuffer[2] = 0; -} - -void Adafruit_7segment::writeColon(void) { - Wire.beginTransmission(i2c_addr); - Wire.write((uint8_t)0x04); // start at address $02 - - Wire.write(displaybuffer[2] & 0xFF); - Wire.write(displaybuffer[2] >> 8); - - Wire.endTransmission(); -} - -void Adafruit_7segment::writeDigitNum(uint8_t d, uint8_t num, boolean dot) { - if (d > 4) return; - - writeDigitRaw(d, numbertable[num] | (dot << 7)); -} - -void Adafruit_7segment::print(long n, int base) -{ - printNumber(n, base); -} - -void Adafruit_7segment::printNumber(long n, uint8_t base) -{ - printFloat(n, 0, base); -} - -void Adafruit_7segment::printFloat(double n, uint8_t fracDigits, uint8_t base) -{ - uint8_t numericDigits = 4; // available digits on display - boolean isNegative = false; // true if the number is negative - - // is the number negative? - if(n < 0) { - isNegative = true; // need to draw sign later - --numericDigits; // the sign will take up one digit - n *= -1; // pretend the number is positive - } - - // calculate the factor required to shift all fractional digits - // into the integer part of the number - double toIntFactor = 1.0; - for(int i = 0; i < fracDigits; ++i) toIntFactor *= base; - - // create integer containing digits to display by applying - // shifting factor and rounding adjustment - uint32_t displayNumber = n * toIntFactor + 0.5; - - // calculate upper bound on displayNumber given - // available digits on display - uint32_t tooBig = 1; - for(int i = 0; i < numericDigits; ++i) tooBig *= base; - - // if displayNumber is too large, try fewer fractional digits - while(displayNumber >= tooBig) { - --fracDigits; - toIntFactor /= base; - displayNumber = n * toIntFactor + 0.5; - } - - // did toIntFactor shift the decimal off the display? - if (toIntFactor < 1) { - printError(); - } else { - // otherwise, display the number - int8_t displayPos = 4; - - if (displayNumber) //if displayNumber is not 0 - { - for(uint8_t i = 0; displayNumber || i <= fracDigits; ++i) { - boolean displayDecimal = (fracDigits != 0 && i == fracDigits); - writeDigitNum(displayPos--, displayNumber % base, displayDecimal); - if(displayPos == 2) writeDigitRaw(displayPos--, 0x00); - displayNumber /= base; - } - } - else { - writeDigitNum(displayPos--, 0, false); - } - - // display negative sign if negative - if(isNegative) writeDigitRaw(displayPos--, 0x40); - - // clear remaining display positions - while(displayPos >= 0) writeDigitRaw(displayPos--, 0x00); - } -} - -void Adafruit_7segment::printError(void) { - for(uint8_t i = 0; i < SEVENSEG_DIGITS; ++i) { - writeDigitRaw(i, (i == 2 ? 0x00 : 0x40)); - } -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h deleted file mode 100644 index 7b468f305..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/ - ----> http://www.adafruit.com/products/ - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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 Adafruit_LEDBackpack_h -#define Adafruit_LEDBackpack_h - -#if (ARDUINO >= 100) - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - - - #include - -#include "Adafruit_GFX.h" - -#define LED_ON 1 -#define LED_OFF 0 - -#define LED_RED 1 -#define LED_YELLOW 2 -#define LED_GREEN 3 - - - -#define HT16K33_BLINK_CMD 0x80 -#define HT16K33_BLINK_DISPLAYON 0x01 -#define HT16K33_BLINK_OFF 0 -#define HT16K33_BLINK_2HZ 1 -#define HT16K33_BLINK_1HZ 2 -#define HT16K33_BLINK_HALFHZ 3 - -#define HT16K33_CMD_BRIGHTNESS 0xE0 - -#define SEVENSEG_DIGITS 5 - - -// this is the raw HT16K33 controller -class Adafruit_LEDBackpack { - public: - Adafruit_LEDBackpack(void); - void begin(uint8_t _addr); - void setBrightness(uint8_t b); - void blinkRate(uint8_t b); - void writeDisplay(void); - void clear(void); - - uint16_t displaybuffer[8]; - - void init(uint8_t a); - protected: - uint8_t i2c_addr; -}; - -class Adafruit_AlphaNum4 : public Adafruit_LEDBackpack { - public: - Adafruit_AlphaNum4(void); - - void writeDigitRaw(uint8_t n, uint16_t bitmask); - void writeDigitAscii(uint8_t n, uint8_t ascii, boolean dot = false); - - private: - - -}; - -class Adafruit_24bargraph : public Adafruit_LEDBackpack { - public: - Adafruit_24bargraph(void); - - void setBar(uint8_t bar, uint8_t color); - - private: -}; - - -class Adafruit_8x16matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x16matrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_8x16minimatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x16minimatrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_8x8matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x8matrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_BicolorMatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_BicolorMatrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - - -#define DEC 10 -#define HEX 16 -#define OCT 8 -#define BIN 2 -#define BYTE 0 - -class Adafruit_7segment : public Adafruit_LEDBackpack { - public: - Adafruit_7segment(void); - size_t write(uint8_t c); - - void print(char, int = BYTE); - void print(unsigned char, int = BYTE); - void print(int, int = DEC); - void print(unsigned int, int = DEC); - void print(long, int = DEC); - void print(unsigned long, int = DEC); - void print(double, int = 2); - void println(char, int = BYTE); - void println(unsigned char, int = BYTE); - void println(int, int = DEC); - void println(unsigned int, int = DEC); - void println(long, int = DEC); - void println(unsigned long, int = DEC); - void println(double, int = 2); - void println(void); - - void writeDigitRaw(uint8_t x, uint8_t bitmask); - void writeDigitNum(uint8_t x, uint8_t num, boolean dot = false); - void drawColon(boolean state); - void printNumber(long, uint8_t = 2); - void printFloat(double, uint8_t = 2, uint8_t = DEC); - void printError(void); - - void writeColon(void); - - private: - uint8_t position; -}; -#endif // Adafruit_LEDBackpack_h - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.md b/lib/Adafruit_LED_Backpack-1.1.6/README.md deleted file mode 100644 index 3834b6e1f..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Adafruit-LED-Backpack-Library - - -## Compatibility - -MCU | Tested Works | Doesn't Work | Not Tested | Notes ------------------ | :----------: | :----------: | :---------: | ----- -Atmega328 @ 16MHz | X | | | -Atmega328 @ 12MHz | X | | | -Atmega32u4 @ 16MHz | X | | | -Atmega32u4 @ 8MHz | X | | | -ESP8266 | X | | | -Atmega2560 @ 16MHz | X | | | -ATSAM3X8E | X | | | Use SDA/SCL on pins 20 & 21 -ATSAM21D | X | | | -ATtiny85 @ 16MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed -ATtiny85 @ 8MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed - - * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini - * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V - * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 - * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro - * ESP8266 : Adafruit Huzzah - * ATmega2560 @ 16MHz : Arduino Mega - * ATSAM3X8E : Arduino Due - * ATSAM21D : Arduino Zero, M0 Pro - * ATtiny85 @ 16MHz : Adafruit Trinket 5V - * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V - - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.txt b/lib/Adafruit_LED_Backpack-1.1.6/README.txt deleted file mode 100644 index 268d96a8c..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/README.txt +++ /dev/null @@ -1,26 +0,0 @@ -This is a library for the Adafruit LED Backpacks -This library works with the Adafruit Mini 8x8 and 7-Segment LED Backpacks - ----> http://www.adafruit.com/products/881 - ----> http://www.adafruit.com/products/880 - ----> http://www.adafruit.com/products/879 - ----> http://www.adafruit.com/products/878 - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - -These displays use I2C to communicate, 2 pins are required to -interface. There are multiple selectable I2C addresses. For backpacks -with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks -with 3 Address Select pins: 0x70 thru 0x77 - - -Written by Limor Fried/Ladyada for Adafruit Industries. -MIT license, all text above must be included in any redistribution - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_LEDBackpack. Check that the Adafruit_LEDBackpack folder contains Adafruit_LEDBackpack.cpp and Adafruit_LEDBackpack. - -Place the Adafruit_LEDBackpack library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE - -**** Also requires the Adafruit_GFX library for Arduino. **** -Download it from here: - https://github.com/adafruit/Adafruit-GFX-Library \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino deleted file mode 100644 index faf8247dd..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -#ifndef _BV - #define _BV(bit) (1<<(bit)) -#endif - - -Adafruit_LEDBackpack matrix = Adafruit_LEDBackpack(); - -uint8_t counter = 0; - -void setup() { - Serial.begin(9600); - Serial.println("HT16K33 test"); - - matrix.begin(0x70); // pass in the address -} - -void loop() { - // paint one LED per row. The HT16K33 internal memory looks like - // a 8x16 bit matrix (8 rows, 16 columns) - for (uint8_t i=0; i<8; i++) { - // draw a diagonal row of pixels - matrix.displaybuffer[i] = _BV((counter+i) % 16) | _BV((counter+i+8) % 16) ; - } - // write the changes we just made to the display - matrix.writeDisplay(); - delay(100); - - counter++; - if (counter >= 16) counter = 0; -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino deleted file mode 100644 index d9ed552e3..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED 24 Bargraph Backpack - ----> http://www.adafruit.com/products/721 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_24bargraph bar = Adafruit_24bargraph(); - -void setup() { - Serial.begin(9600); - Serial.println("HT16K33 Bi-Color Bargraph test"); - - bar.begin(0x70); // pass in the address - - for (uint8_t b=0; b<24; b++ ){ - if ((b % 3) == 0) bar.setBar(b, LED_RED); - if ((b % 3) == 1) bar.setBar(b, LED_YELLOW); - if ((b % 3) == 2) bar.setBar(b, LED_GREEN); - } - bar.writeDisplay(); - delay(2000); -} - - -void loop() { - for (uint8_t b=0; b<24; b++) { - bar.setBar(b, LED_RED); - bar.writeDisplay(); - delay(50); - bar.setBar(b, LED_OFF); - bar.writeDisplay(); - } - for (uint8_t b=0; b<24; b++) { - bar.setBar(b, LED_GREEN); - bar.writeDisplay(); - delay(50); - bar.setBar(b, LED_OFF); - bar.writeDisplay(); - } - - for (uint8_t b=0; b<24; b++) { - bar.setBar(23-b, LED_YELLOW); - bar.writeDisplay(); - delay(50); - bar.setBar(23-b, LED_OFF); - bar.writeDisplay(); - } -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde deleted file mode 100644 index 01088032a..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); - -void setup() { - Serial.begin(9600); - Serial.println("8x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_YELLOW); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_RED); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_GREEN); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,7, LED_YELLOW); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,8, LED_RED); - matrix.fillRect(2,2, 4,4, LED_GREEN); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,3, 3, LED_YELLOW); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextSize(1); - matrix.setTextColor(LED_GREEN); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(3); - matrix.setTextColor(LED_RED); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino deleted file mode 100644 index 5ffb542c2..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino +++ /dev/null @@ -1,178 +0,0 @@ -// Clock example using a seven segment display & DS1307 real-time clock. -// -// Must have the Adafruit RTClib library installed too! See: -// https://github.com/adafruit/RTClib -// -// Designed specifically to work with the Adafruit LED 7-Segment backpacks -// and DS1307 real-time clock breakout: -// ----> http://www.adafruit.com/products/881 -// ----> http://www.adafruit.com/products/880 -// ----> http://www.adafruit.com/products/879 -// ----> http://www.adafruit.com/products/878 -// ----> https://www.adafruit.com/products/264 -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by Tony DiCola for Adafruit Industries. -// Released under a MIT license: https://opensource.org/licenses/MIT - -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - - -// Set to false to display time in 12 hour format, or true to use 24 hour: -#define TIME_24_HOUR false - -// I2C address of the display. Stick with the default address of 0x70 -// unless you've changed the address jumpers on the back of the display. -#define DISPLAY_ADDRESS 0x70 - - -// Create display and DS1307 objects. These are global variables that -// can be accessed from both the setup and loop function below. -Adafruit_7segment clockDisplay = Adafruit_7segment(); -RTC_DS1307 rtc = RTC_DS1307(); - -// Keep track of the hours, minutes, seconds displayed by the clock. -// Start off at 0:00:00 as a signal that the time should be read from -// the DS1307 to initialize it. -int hours = 0; -int minutes = 0; -int seconds = 0; - -// Remember if the colon was drawn on the display so it can be blinked -// on and off every second. -bool blinkColon = false; - - -void setup() { - // Setup function runs once at startup to initialize the display - // and DS1307 clock. - - // Setup Serial port to print debug output. - Serial.begin(115200); - Serial.println("Clock starting!"); - - // Setup the display. - clockDisplay.begin(DISPLAY_ADDRESS); - - // Setup the DS1307 real-time clock. - rtc.begin(); - - // Set the DS1307 clock if it hasn't been set before. - bool setClockTime = !rtc.isrunning(); - // Alternatively you can force the clock to be set again by - // uncommenting this line: - //setClockTime = true; - if (setClockTime) { - Serial.println("Setting DS1307 time!"); - // This line sets the DS1307 time to the exact date and time the - // sketch was compiled: - rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); - // Alternatively you can set the RTC with an explicit date & time, - // for example to set January 21, 2014 at 3am you would uncomment: - //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); - } -} - -void loop() { - // Loop function runs over and over again to implement the clock logic. - - // Check if it's the top of the hour and get a new time reading - // from the DS1307. This helps keep the clock accurate by fixing - // any drift. - if (minutes == 0) { - // Get the time from the DS1307. - DateTime now = rtc.now(); - // Print out the time for debug purposes: - Serial.print("Read date & time from DS1307: "); - Serial.print(now.year(), DEC); - Serial.print('/'); - Serial.print(now.month(), DEC); - Serial.print('/'); - Serial.print(now.day(), DEC); - Serial.print(' '); - Serial.print(now.hour(), DEC); - Serial.print(':'); - Serial.print(now.minute(), DEC); - Serial.print(':'); - Serial.print(now.second(), DEC); - Serial.println(); - // Now set the hours and minutes. - hours = now.hour(); - minutes = now.minute(); - } - - // Show the time on the display by turning it into a numeric - // value, like 3:30 turns into 330, by multiplying the hour by - // 100 and then adding the minutes. - int displayValue = hours*100 + minutes; - - // Do 24 hour to 12 hour format conversion when required. - if (!TIME_24_HOUR) { - // Handle when hours are past 12 by subtracting 12 hours (1200 value). - if (hours > 12) { - displayValue -= 1200; - } - // Handle hour 0 (midnight) being shown as 12. - else if (hours == 0) { - displayValue += 1200; - } - } - - // Now print the time value to the display. - clockDisplay.print(displayValue, DEC); - - // Add zero padding when in 24 hour mode and it's midnight. - // In this case the print function above won't have leading 0's - // which can look confusing. Go in and explicitly add these zeros. - if (TIME_24_HOUR && hours == 0) { - // Pad hour 0. - clockDisplay.writeDigitNum(1, 0); - // Also pad when the 10's minute is 0 and should be padded. - if (minutes < 10) { - clockDisplay.writeDigitNum(2, 0); - } - } - - // Blink the colon by flipping its value every loop iteration - // (which happens every second). - blinkColon = !blinkColon; - clockDisplay.drawColon(blinkColon); - - // Now push out to the display the new values that were set above. - clockDisplay.writeDisplay(); - - // Pause for a second for time to elapse. This value is in milliseconds - // so 1000 milliseconds = 1 second. - delay(1000); - - // Now increase the seconds by one. - seconds += 1; - // If the seconds go above 59 then the minutes should increase and - // the seconds should wrap back to 0. - if (seconds > 59) { - seconds = 0; - minutes += 1; - // Again if the minutes go above 59 then the hour should increase and - // the minutes should wrap back to 0. - if (minutes > 59) { - minutes = 0; - hours += 1; - // Note that when the minutes are 0 (i.e. it's the top of a new hour) - // then the start of the loop will read the actual time from the DS1307 - // again. Just to be safe though we'll also increment the hour and wrap - // back to 0 if it goes above 23 (i.e. past midnight). - if (hours > 23) { - hours = 0; - } - } - } - - // Loop code is finished, it will jump back to the start of the loop - // function again! -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino deleted file mode 100644 index a6054969c..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino +++ /dev/null @@ -1,159 +0,0 @@ -// Clock example using a seven segment display & GPS for time. -// -// Must have the Adafruit GPS library installed too! See: -// https://github.com/adafruit/Adafruit-GPS-Library -// -// Designed specifically to work with the Adafruit LED 7-Segment backpacks -// and ultimate GPS breakout/shield: -// ----> http://www.adafruit.com/products/881 -// ----> http://www.adafruit.com/products/880 -// ----> http://www.adafruit.com/products/879 -// ----> http://www.adafruit.com/products/878 -// ----> http://www.adafruit.com/products/746 -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by Tony DiCola for Adafruit Industries. -// Released under a MIT license: https://opensource.org/licenses/MIT - -#include -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - - -// Set to false to display time in 12 hour format, or true to use 24 hour: -#define TIME_24_HOUR false - -// Offset the hours from UTC (universal time) to your local time by changing -// this value. The GPS time will be in UTC so lookup the offset for your -// local time from a site like: -// https://en.wikipedia.org/wiki/List_of_UTC_time_offsets -// This value, -7, will set the time to UTC-7 or Pacific Standard Time during -// daylight savings time. -#define HOUR_OFFSET -7 - -// I2C address of the display. Stick with the default address of 0x70 -// unless you've changed the address jumpers on the back of the display. -#define DISPLAY_ADDRESS 0x70 - - -// Create display and GPS objects. These are global variables that -// can be accessed from both the setup and loop function below. -Adafruit_7segment clockDisplay = Adafruit_7segment(); -SoftwareSerial gpsSerial(8, 7); // GPS breakout/shield will use a - // software serial connection with - // TX = pin 8 and RX = pin 7. -Adafruit_GPS gps(&gpsSerial); - - -void setup() { - // Setup function runs once at startup to initialize the display and GPS. - - // Setup Serial port to print debug output. - Serial.begin(115200); - Serial.println("Clock starting!"); - - // Setup the display. - clockDisplay.begin(DISPLAY_ADDRESS); - - // Setup the GPS using a 9600 baud connection (the default for most - // GPS modules). - gps.begin(9600); - - // Configure GPS to onlu output minimum data (location, time, fix). - gps.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); - - // Use a 1 hz, once a second, update rate. - gps.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - - // Enable the interrupt to parse GPS data. - enableGPSInterrupt(); -} - -void loop() { - // Loop function runs over and over again to implement the clock logic. - - // Check if GPS has new data and parse it. - if (gps.newNMEAreceived()) { - gps.parse(gps.lastNMEA()); - } - - // Grab the current hours, minutes, seconds from the GPS. - // This will only be set once the GPS has a fix! Make sure to add - // a coin cell battery so the GPS will save the time between power-up/down. - int hours = gps.hour + HOUR_OFFSET; // Add hour offset to convert from UTC - // to local time. - // Handle when UTC + offset wraps around to a negative or > 23 value. - if (hours < 0) { - hours = 24+hours; - } - if (hours > 23) { - hours = 24-hours; - } - int minutes = gps.minute; - int seconds = gps.seconds; - - // Show the time on the display by turning it into a numeric - // value, like 3:30 turns into 330, by multiplying the hour by - // 100 and then adding the minutes. - int displayValue = hours*100 + minutes; - - // Do 24 hour to 12 hour format conversion when required. - if (!TIME_24_HOUR) { - // Handle when hours are past 12 by subtracting 12 hours (1200 value). - if (hours > 12) { - displayValue -= 1200; - } - // Handle hour 0 (midnight) being shown as 12. - else if (hours == 0) { - displayValue += 1200; - } - } - - // Now print the time value to the display. - clockDisplay.print(displayValue, DEC); - - // Add zero padding when in 24 hour mode and it's midnight. - // In this case the print function above won't have leading 0's - // which can look confusing. Go in and explicitly add these zeros. - if (TIME_24_HOUR && hours == 0) { - // Pad hour 0. - clockDisplay.writeDigitNum(1, 0); - // Also pad when the 10's minute is 0 and should be padded. - if (minutes < 10) { - clockDisplay.writeDigitNum(2, 0); - } - } - - // Blink the colon by turning it on every even second and off - // every odd second. The modulus operator is very handy here to - // check if a value is even (modulus 2 equals 0) or odd (modulus 2 - // equals 1). - clockDisplay.drawColon(seconds % 2 == 0); - - // Now push out to the display the new values that were set above. - clockDisplay.writeDisplay(); - - // Loop code is finished, it will jump back to the start of the loop - // function again! Don't add any delays because the parsing needs to - // happen all the time! -} - -SIGNAL(TIMER0_COMPA_vect) { - // Use a timer interrupt once a millisecond to check for new GPS data. - // This piggybacks on Arduino's internal clock timer for the millis() - // function. - gps.read(); -} - -void enableGPSInterrupt() { - // Function to enable the timer interrupt that will parse GPS data. - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino deleted file mode 100644 index b724e1d19..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit 16x8 LED Matrix backpacks - ----> http://www.adafruit.com/products/2035 - ----> http://www.adafruit.com/products/2036 - ----> http://www.adafruit.com/products/2037 - ----> http://www.adafruit.com/products/2038 - ----> http://www.adafruit.com/products/2039 - ----> http://www.adafruit.com/products/2040 - ----> http://www.adafruit.com/products/2041 - ----> http://www.adafruit.com/products/2042 - ----> http://www.adafruit.com/products/2043 - ----> http://www.adafruit.com/products/2044 - ----> http://www.adafruit.com/products/2052 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x16matrix matrix = Adafruit_8x16matrix(); - -void setup() { - Serial.begin(9600); - Serial.println("16x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,15, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,16, LED_ON); - matrix.fillRect(2,2, 4,12, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,8, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(2); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-64; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - matrix.setRotation(1); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino deleted file mode 100644 index 650da459e..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino +++ /dev/null @@ -1,120 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x8matrix matrix = Adafruit_8x8matrix(); - -void setup() { - Serial.begin(9600); - Serial.println("8x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,7, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,8, LED_ON); - matrix.fillRect(2,2, 4,4, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,3, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(3); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino deleted file mode 100644 index b8d29e549..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks & FeatherWings - - Designed specifically to work with the Adafruit 16x8 LED Matrix FeatherWing - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix(); - -void setup() { - //while (!Serial); - Serial.begin(9600); - Serial.println("16x8 LED Mini Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,15, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,16, LED_ON); - matrix.fillRect(2,2, 4,12, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,8, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(2); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-64; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - matrix.setRotation(1); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino deleted file mode 100644 index 70cb050e4..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino +++ /dev/null @@ -1,73 +0,0 @@ -// Demo the quad alphanumeric display LED backpack kit -// scrolls through every character, then scrolls Serial -// input onto the display - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); - -void setup() { - Serial.begin(9600); - - alpha4.begin(0x70); // pass in the address - - alpha4.writeDigitRaw(3, 0x0); - alpha4.writeDigitRaw(0, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(0, 0x0); - alpha4.writeDigitRaw(1, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(1, 0x0); - alpha4.writeDigitRaw(2, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(2, 0x0); - alpha4.writeDigitRaw(3, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - - alpha4.clear(); - alpha4.writeDisplay(); - - // display every character, - for (uint8_t i='!'; i<='z'; i++) { - alpha4.writeDigitAscii(0, i); - alpha4.writeDigitAscii(1, i+1); - alpha4.writeDigitAscii(2, i+2); - alpha4.writeDigitAscii(3, i+3); - alpha4.writeDisplay(); - - delay(300); - } - Serial.println("Start typing to display!"); -} - - -char displaybuffer[4] = {' ', ' ', ' ', ' '}; - -void loop() { - while (! Serial.available()) return; - - char c = Serial.read(); - if (! isprint(c)) return; // only printable! - - // scroll down display - displaybuffer[0] = displaybuffer[1]; - displaybuffer[1] = displaybuffer[2]; - displaybuffer[2] = displaybuffer[3]; - displaybuffer[3] = c; - - // set every digit to the buffer - alpha4.writeDigitAscii(0, displaybuffer[0]); - alpha4.writeDigitAscii(1, displaybuffer[1]); - alpha4.writeDigitAscii(2, displaybuffer[2]); - alpha4.writeDigitAscii(3, displaybuffer[3]); - - // write it out! - alpha4.writeDisplay(); - delay(200); -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino deleted file mode 100644 index 827ea85e5..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino +++ /dev/null @@ -1,72 +0,0 @@ -// Demo the quad alphanumeric display LED backpack kit -// Displays a short message and then scrolls through every character - -// For use with Gemma or Trinket (Attiny85) - -#include -#include - - -// Connect + pins to 3-5V -// Connect GND to ground -// Connect Data to #0 -// Connect Clock to #2 - -#include -#include "Adafruit_LEDBackpack.h" - -char *message = "Hello world! "; - -Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); - -void setup() { - // This is the auto-speed doubler line, keep it in, it will - // automatically double the speed when 16Mhz is selected! - if (F_CPU == 16000000) clock_prescale_set(clock_div_1); - - alpha4.begin(0x70); // pass in the address - - alpha4.writeDigitRaw(3, 0x0); - alpha4.writeDigitRaw(0, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(0, 0x0); - alpha4.writeDigitRaw(1, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(1, 0x0); - alpha4.writeDigitRaw(2, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(2, 0x0); - alpha4.writeDigitRaw(3, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - - alpha4.clear(); - alpha4.writeDisplay(); - - // send a message! - for (uint8_t i=0; i -#include -#include -#include "Adafruit_LEDBackpack.h" - -// Because the two eye matrices share the same address, only four -// matrix objects are needed for the five displays: -#define MATRIX_EYES 0 -#define MATRIX_MOUTH_LEFT 1 -#define MATRIX_MOUTH_MIDDLE 2 -#define MATRIX_MOUTH_RIGHT 3 -Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects - Adafruit_8x8matrix(), Adafruit_8x8matrix(), - Adafruit_8x8matrix(), Adafruit_8x8matrix() }; - -// Rather than assigning matrix addresses sequentially in a loop, each -// has a spot in this array. This makes it easier if you inadvertently -// install one or more matrices in the wrong physical position -- -// re-order the addresses in this table and you can still refer to -// matrices by index above, no other code or wiring needs to change. -static const uint8_t matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; - -static const uint8_t PROGMEM // Bitmaps are stored in program memory - blinkImg[][8] = { // Eye animation frames - { B00111100, // Fully open eye - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B00000000, - B00111100, - B11111111, - B11111111, - B11111111, - B00111100, - B00000000 }, - { B00000000, - B00000000, - B00000000, - B00111100, - B11111111, - B01111110, - B00011000, - B00000000 }, - { B00000000, // Fully closed eye - B00000000, - B00000000, - B00000000, - B10000001, - B01111110, - B00000000, - B00000000 } }, - mouthImg[][24] = { // Mouth animation frames - { B00000000, B00000000, B00000000, // Mouth position A - B00000000, B00000000, B00000000, - B01111111, B11111111, B11111110, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position B - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00000111, B00000000, B11100000, - B00000000, B11111111, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position C - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00001000, B00000000, B00010000, - B00000110, B00000000, B01100000, - B00000001, B11000011, B10000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position D - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00100000, B00000000, B00000100, - B00010000, B00000000, B00001000, - B00001100, B00000000, B00110000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position E - B00000000, B00111100, B00000000, - B00011111, B11000011, B11111000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00111100, B00000000, // Mouth position F - B00000000, B11000011, B00000000, - B00001111, B00000000, B11110000, - B00000001, B00000000, B10000000, - B00000000, B11000011, B00000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 } }; - -uint8_t - blinkIndex[] = { 1, 2, 3, 4, 3, 2, 1 }, // Blink bitmap sequence - blinkCountdown = 100, // Countdown to next blink (in frames) - gazeCountdown = 75, // Countdown to next eye movement - gazeFrames = 50, // Duration of eye movement (smaller = faster) - mouthPos = 0, // Current image number for mouth - mouthCountdown = 10; // Countdown to next mouth change -int8_t - eyeX = 3, eyeY = 3, // Current eye position - newX = 3, newY = 3, // Next eye position - dX = 0, dY = 0; // Distance from prior to new position - -void setup() { - - // Seed random number generator from an unused analog input: - randomSeed(analogRead(A0)); - - // Initialize each matrix object: - for(uint8_t i=0; i<4; i++) { - matrix[i].begin(matrixAddr[i]); - // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: - // matrix[i].setRotation(3); - } -} - -void loop() { - - // Draw eyeball in current state of blinkyness (no pupil). Note that - // only one eye needs to be drawn. Because the two eye matrices share - // the same address, the same data will be received by both. - matrix[MATRIX_EYES].clear(); - // When counting down to the next blink, show the eye in the fully- - // open state. On the last few counts (during the blink), look up - // the corresponding bitmap index. - matrix[MATRIX_EYES].drawBitmap(0, 0, - blinkImg[ - (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? - blinkIndex[blinkCountdown] : // Yes, look up bitmap # - 0 // No, show bitmap 0 - ], 8, 8, LED_ON); - // Decrement blink counter. At end, set random time for next blink. - if(--blinkCountdown == 0) blinkCountdown = random(5, 180); - - // Add a pupil (2x2 black square) atop the blinky eyeball bitmap. - // Periodically, the pupil moves to a new position... - if(--gazeCountdown <= gazeFrames) { - // Eyes are in motion - draw pupil at interim position - matrix[MATRIX_EYES].fillRect( - newX - (dX * gazeCountdown / gazeFrames), - newY - (dY * gazeCountdown / gazeFrames), - 2, 2, LED_OFF); - if(gazeCountdown == 0) { // Last frame? - eyeX = newX; eyeY = newY; // Yes. What's new is old, then... - do { // Pick random positions until one is within the eye circle - newX = random(7); newY = random(7); - dX = newX - 3; dY = newY - 3; - } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras - dX = newX - eyeX; // Horizontal distance to move - dY = newY - eyeY; // Vertical distance to move - gazeFrames = random(3, 15); // Duration of eye movement - gazeCountdown = random(gazeFrames, 120); // Count to end of next movement - } - } else { - // Not in motion yet -- draw pupil at current static position - matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); - } - - // Draw mouth, switch to new random image periodically - drawMouth(mouthImg[mouthPos]); - if(--mouthCountdown == 0) { - mouthPos = random(6); // Random image - // If the 'neutral' position was chosen, there's a 1-in-5 chance we'll - // select a longer hold time. This gives the appearance of periodic - // pauses in speech (e.g. between sentences, etc.). - mouthCountdown = ((mouthPos == 0) && (random(5) == 0)) ? - random(10, 40) : // Longer random duration - random(2, 8); // Shorter random duration - } - - // Refresh all of the matrices in one quick pass - for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); - - delay(20); // ~50 FPS -} - -// Draw mouth image across three adjacent displays -void drawMouth(const uint8_t *img) { - for(uint8_t i=0; i<3; i++) { - matrix[MATRIX_MOUTH_LEFT + i].clear(); - matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); - } -} - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino deleted file mode 100644 index 0a4f70c74..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino +++ /dev/null @@ -1,81 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED 7-Segment backpacks - ----> http://www.adafruit.com/products/881 - ----> http://www.adafruit.com/products/880 - ----> http://www.adafruit.com/products/879 - ----> http://www.adafruit.com/products/878 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include // Enable this line if using Arduino Uno, Mega, etc. -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_7segment matrix = Adafruit_7segment(); - -void setup() { -#ifndef __AVR_ATtiny85__ - Serial.begin(9600); - Serial.println("7 Segment Backpack Test"); -#endif - matrix.begin(0x70); -} - -void loop() { - // try to print a number thats too long - matrix.print(10000, DEC); - matrix.writeDisplay(); - delay(500); - - // print a hex number - matrix.print(0xBEEF, HEX); - matrix.writeDisplay(); - delay(500); - - // print a floating point - matrix.print(12.34); - matrix.writeDisplay(); - delay(500); - - // print with print/println - for (uint16_t counter = 0; counter < 9999; counter++) { - matrix.println(counter); - matrix.writeDisplay(); - delay(10); - } - - // method #2 - draw each digit - uint16_t blinkcounter = 0; - boolean drawDots = false; - for (uint16_t counter = 0; counter < 9999; counter ++) { - matrix.writeDigitNum(0, (counter / 1000), drawDots); - matrix.writeDigitNum(1, (counter / 100) % 10, drawDots); - matrix.drawColon(drawDots); - matrix.writeDigitNum(3, (counter / 10) % 10, drawDots); - matrix.writeDigitNum(4, counter % 10, drawDots); - - blinkcounter+=50; - if (blinkcounter < 500) { - drawDots = false; - } else if (blinkcounter < 1000) { - drawDots = true; - } else { - blinkcounter = 0; - } - matrix.writeDisplay(); - delay(10); - } -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde deleted file mode 100644 index b3c521bcc..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde +++ /dev/null @@ -1,336 +0,0 @@ -// 'wavface' example sketch for Adafruit I2C 8x8 LED backpacks -// and Wave Shield: -// -// www.adafruit.com/products/870 www.adafruit.com/products/1049 -// www.adafruit.com/products/871 www.adafruit.com/products/1050 -// www.adafruit.com/products/872 www.adafruit.com/products/1051 -// www.adafruit.com/products/959 www.adafruit.com/products/1052 -// www.adafruit.com/products/94 -// -// Requires Adafruit_LEDBackpack, Adafruit_GFX libraries and WaveHC -// libraries. -// -// This sketch shows animation roughly synchronized to prerecorded -// speech. It's fairly complex and may be overwhelming to novice -// programmers, who may want to start with the 'matrix8x8' example -// and then 'roboface' before working through this code. Also, much -// of the comments relating to the face animation have been stripped -// here for brevity...refer to the 'roboface' sketch if you have any -// questions how that part works. -// -// Additional hardware required: sounds are triggered using three -// normally-open momentary buttons connected to Digital pins 6, 7, 8 -// and GND. (e.g. www.adafruit.com/products/1009 ) -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by P. Burgess for Adafruit Industries, parts adapted from -// 'PiSpeakHC' sketch included with WaveHC library. -// BSD license, all text above must be included in any redistribution. - -#include -#include -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - -// These WAV files should be in the root level of the SD card: -static const char PROGMEM - wav0[] = "beware_i.wav", - wav1[] = "ihunger.wav", - wav2[] = "run_cowd.wav"; -static const char * const wavname[] PROGMEM = { wav0, wav1, wav2 }; -// PROGMEM makes frequent appearances throughout this code, reason being that -// the SD card library requires gobs of precious RAM (leaving very little to -// our own sketch). PROGMEM lets us put fixed data into program flash memory, -// which is considerably more spacious. String tables are paritcularly nasty. -// See www.arduino.cc/en/Reference/PROGMEM for more info. - -SdReader card; // This object holds the information for the card -FatVolume vol; // This holds the information for the partition on the card -FatReader root; // This holds the information for the volumes root directory -FatReader file; // This object represent the WAV file for a phrase -WaveHC wave; // A single wave object -- only one sound is played at a time - -// Because the two eye matrices share the same address, only four -// matrix objects are needed for the five displays: -#define MATRIX_EYES 0 -#define MATRIX_MOUTH_LEFT 1 -#define MATRIX_MOUTH_MIDDLE 2 -#define MATRIX_MOUTH_RIGHT 3 -Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects - Adafruit_8x8matrix(), Adafruit_8x8matrix(), - Adafruit_8x8matrix(), Adafruit_8x8matrix() }; - -// Rather than assigning matrix addresses sequentially in a loop, each -// has a spot in this array. This makes it easier if you inadvertently -// install one or more matrices in the wrong physical position -- -// re-order the addresses in this table and you can still refer to -// matrices by index above, no other code or wiring needs to change. -static const uint8_t PROGMEM matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; - -static const uint8_t PROGMEM // Bitmaps are stored in program memory - blinkImg[][8] = { // Eye animation frames - { B00111100, // Fully open eye - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B00000000, - B00111100, - B11111111, - B11111111, - B11111111, - B00111100, - B00000000 }, - { B00000000, - B00000000, - B00000000, - B00111100, - B11111111, - B01111110, - B00011000, - B00000000 }, - { B00000000, // Fully closed eye - B00000000, - B00000000, - B00000000, - B10000001, - B01111110, - B00000000, - B00000000 } }, - mouthImg[][24] = { // Mouth animation frames - { B00000000, B00000000, B00000000, // Mouth position A - B00000000, B00000000, B00000000, - B01111111, B11111111, B11111110, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position B - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00000111, B00000000, B11100000, - B00000000, B11111111, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position C - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00001000, B00000000, B00010000, - B00000110, B00000000, B01100000, - B00000001, B11000011, B10000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position D - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00100000, B00000000, B00000100, - B00010000, B00000000, B00001000, - B00001100, B00000000, B00110000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position E - B00000000, B00111100, B00000000, - B00011111, B11000011, B11111000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00111100, B00000000, // Mouth position F - B00000000, B11000011, B00000000, - B00001111, B00000000, B11110000, - B00000001, B00000000, B10000000, - B00000000, B11000011, B00000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 } }; - -// Animation sequences corresponding to each WAV. First number in -// each pair is a mouth bitmap index. Second number is the hold -// time (in frames). 255 marks end of list. -// There is no 'magic' here, the software is NOT deriving mouth -// position from the sound...the tables were determined by hand, -// just as animators do it. Further explanation here: -// http://www.idleworm.com/how/anm/03t/talk1.shtml - -static const uint8_t PROGMEM - seq1[] = { 0, 2, 2, 5, 5, 3, 3, 7, // "Beware, I live!" - 4, 5, 3, 4, 2, 5, 4, 3, - 3, 4, 1, 5, 3, 5, 255 }, - seq2[] = { 0, 1, 3, 5, 1, 5, 4, 2, // "I hunger!" - 3, 2, 1, 2, 4, 4, 1, 3, - 4, 2, 255 }, - seq3[] = { 0, 1, 1, 2, 3, 6, 2, 5, // "Run, coward!" - 0, 1, 4, 4, 5, 2, 1, 5, - 3, 6, 1, 4, 255 }; -static const uint8_t * const anim[] = { seq1, seq2, seq3 }; - -const uint8_t - blinkIndex[] PROGMEM = { 1, 2, 3, 4, 3, 2, 1 }; // Blink bitmap sequence -uint8_t - blinkCountdown = 100, // Countdown to next blink (in frames) - gazeCountdown = 75, // Countdown to next eye movement - gazeFrames = 50, // Duration of eye movement (smaller = faster) - mouthPos = 0, // Current image number for mouth - mouthCountdown = 10, // Countdown to next mouth change - newPos = 255, // New mouth position for current frame - *seq, // Animation sequence currently being played back - idx, // Current array index within animation sequence - prevBtn = 99, // Button # pressed on last loop() iteration - btnCount = 0; // Number of iterations same button has been held -int8_t - eyeX = 3, eyeY = 3, // Current eye position - newX = 3, newY = 3, // Next eye position - dX = 0, dY = 0; // Distance from prior to new position - -void setup() { - - Serial.begin(9600); - - Serial.println(F("WAV face")); - - if(!card.init()) Serial.println(F("Card init. failed!")); - if(!vol.init(card)) Serial.println(F("No partition!")); - if(!root.openRoot(vol)) Serial.println(F("Couldn't open dir")); - Serial.println(F("Files found:")); - root.ls(); - - // Seed random number generator from an unused analog input: - randomSeed(analogRead(A0)); - - // Initialize each matrix object: - for(uint8_t i=0; i<4; i++) { - matrix[i].begin(pgm_read_byte(&matrixAddr[i])); - // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: - // matrix[i].setRotation(3); - } - - // Enable pull-up resistors on three button inputs. - // Other end of each button then connects to GND. - for(uint8_t i=6; i<=8; i++) { - pinMode(i, INPUT); - digitalWrite(i, HIGH); // Enable pullup - } -} - -void loop() { - - uint8_t i; - - // Draw eyeball in current state of blinkyness (no pupil). - matrix[MATRIX_EYES].clear(); - matrix[MATRIX_EYES].drawBitmap(0, 0, - blinkImg[ - (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? - pgm_read_byte(&blinkIndex[blinkCountdown]) : // Yes, look up bitmap # - 0 // No, show bitmap 0 - ], 8, 8, LED_ON); - // Decrement blink counter. At end, set random time for next blink. - if(--blinkCountdown == 0) blinkCountdown = random(5, 180); - - if(--gazeCountdown <= gazeFrames) { - // Eyes are in motion - draw pupil at interim position - matrix[MATRIX_EYES].fillRect( - newX - (dX * gazeCountdown / gazeFrames), - newY - (dY * gazeCountdown / gazeFrames), - 2, 2, LED_OFF); - if(gazeCountdown == 0) { // Last frame? - eyeX = newX; eyeY = newY; // Yes. What's new is old, then... - do { // Pick random positions until one is within the eye circle - newX = random(7); newY = random(7); - dX = newX - 3; dY = newY - 3; - } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras - dX = newX - eyeX; // Horizontal distance to move - dY = newY - eyeY; // Vertical distance to move - gazeFrames = random(3, 15); // Duration of eye movement - gazeCountdown = random(gazeFrames, 120); // Count to end of next movement - } - } else { - // Not in motion yet -- draw pupil at current static position - matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); - } - - // Scan buttons 6, 7, 8 looking for first button pressed... - for(i=0; (i<3) && (digitalRead(i+6) == HIGH); i++); - - if(i < 3) { // Anything pressed? Yes! - if(i == prevBtn) { // Same as last time we checked? Good! - if(++btnCount == 3) { // 3 passes to 'debounce' button input - playfile((char *)pgm_read_word(&wavname[i])); // Start WAV - // Look up animation sequence # corresponding to this WAV... - seq = (uint8_t *)pgm_read_word(&anim[i]); - idx = 0; // Begin at first byte of data - newPos = pgm_read_byte(&seq[idx++]); // Initial mouth pos - mouthCountdown = pgm_read_byte(&seq[idx++]); // Hold time for pos - } - } else btnCount = 0; // Different button than before - start count over - prevBtn = i; - } else prevBtn = 99; // No buttons pressed - - if(newPos != 255) { // Is the mouth in motion? - if(--mouthCountdown == 0) { // Count down frames to next position - newPos = pgm_read_byte(&seq[idx++]); // New mouth position - if(newPos == 255) { // End of list? - mouthPos = 0; // Yes, set mouth to neutral position - } else { - mouthPos = newPos; // Set mouth to new position - mouthCountdown = pgm_read_byte(&seq[idx++]); // Read hold time - } - } - } else mouthPos = 0; // Mouth not in motion -- set to neutral position - - drawMouth(mouthImg[mouthPos]); - - // Refresh all matrices in one quick pass - for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); - - delay(20); -} - -// Draw mouth image across three adjacent displays -void drawMouth(const uint8_t *img) { - for(uint8_t i=0; i<3; i++) { - matrix[MATRIX_MOUTH_LEFT + i].clear(); - matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); - } -} - -// Open and start playing a WAV file -void playfile(const char *name) { - char filename[13]; // 8.3+NUL - - if(wave.isplaying) wave.stop(); // Stop any currently-playing WAV - - strcpy_P(filename, name); // Copy name out of PROGMEM into RAM - - if(!file.open(root, filename)) { - Serial.print(F("Couldn't open file ")); - Serial.println(filename); - return; - } - if(!wave.create(file)) { - Serial.println(F("Not a valid WAV")); - return; - } - wave.play(); -} - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav deleted file mode 100644 index f27bd6f3bd914634ace3182349ce404c713cfdb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20802 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

MPVIBi>ZPEZ6y{NWPHD)}|8P zc#4#;Mf|=_rdVlm5=1bQut@oGAw!6H(*PnYpS-w|waI90eYAeA!JnU+D*M#Twzr@E z))U`;dhd{uOx7lnxoSkmSD3AYtI?lboXJ-w!l)FH4|TC+YBCr~)sD|5a73?U&?J^{ zqkeq&(VdwfLO;6iP@fd0>g4r@x28SPzI`uj-u$f=p*20TI#J5I#KXfvsT6T!rcYkG zb?x3qU;OM|Jwj0io=D0^NHa<%b8ZEb*0$$hKT~1~7V0O@)`RMy=B?Wf?r&kk9nY;z z`{n%yUVmlRt{wXa6qwoP)<_r~ZG&`{kjGUMTCF27Hh1#!oolmEhubP)i3CDDX%FTn zD}JpMk#ThT9sr1CuSj_2y>MY|##3~t`CNy}G zmHAUw?pzoT*gd$Ahx&8V%ZpQ!l@QAA*xxj)cBUs!T)r~xSC2Hm{=M(*9b_w=>6~3A zq<6EVT(LPEO_yVC!WOX01v&!9J(+?}EtE;=Jxr}5mXC#UleLIJp;IvighqdEYP!C% zHs(~&kL_+|YTdc|Y|_AL+4k&rpWQX6By6ED&TZe{(nlL&A87GrN`$=4wV{3piP=Sac(8!3AzzJyXR=1 zL?KXENd=49-^D?#WT;fHkLAN|Tq##56k3%~j(aFl$(86-0ywuLoJnupR+45FiVB7Wh>nbn&7Hb@e!^#VSX4Ssy0&uu+}Z2b=c6W#QN>f(6XUa!WBGi> zrPHBep;o6f5b}{ejz+K3yW)jhf^wJ<4g{^z=nIF_)rI4gfDw0D&#zDTwF<3xZ~*4L2te9{TeCrA=Z!UuAaY4%=8ltzwlOAfc;I=rOS|MW6>YRy)k<&ZK z=sMKG)_F3Ms~6VC95Ona+tb`5wZ*HD^iEIs)QFDXGo*5*$0urqh(j?vERzqlf}>zc z1!~Z#x&1>@+@w*WHqvZR>kK9WHy9mMx;$C*=rsm8i!F!ZI#!%qJ~6a`hg-M$cV2o-oR_2)&16@TarI*_oK0 z)i=y&KhWCC){+hjE*HoIBf~tcBSa-evrZMG?O-dNJ|eSFrP<>P^953^*Yk(?DyiHY zDb-J`7D*j$;EhNKsyuh*+QUbuG8R$yo-NH>9D4n;GclKD-{nbqt;j?N(J?;09B+DvQUJ|)Ov3rVxV<<)EKiR#k1%jedo zDU{EbGCCRnL%4WxV;4zsVRX+*BJL^3`#S1hL=J3ItnYb@w7V+N%_W(kDi89$*D z(T?tV<>}}49@+KED+fB7n+7FfksgyujRx@$O=d*3cIXu~qQRD9(0lCamB2SlBnYUm zcD(e$%UfCn=2&fU6c*zn+n;-K^QPBYrBL^sUoYFF0|$2OJ<=m}=ZX`HRkwY2VHYZ3 zaR!ea?&#|s;9>rd&4fx=d;_M?c%p7=FrV|=NQWon(o5NFMsLf(rnWw=*5u1V-&-4v zxm-bq!4yiz;>AL4ypnJkv;=|3OySbp>Qo-E2^piey=Ry$)CV%jc$y+D202$CLr`lp z6-y>On2a;n-gJ~9Hv~%a=dPcwhTTqsXow+|X$gx~EaubNJGh8Mh{q-xt70mejoV;u zsbFF8!o80_zrRwQs3kn%>g>|_yAK}RTqy-js7An4`Ad`2Coe5SyJH2=qL-lymgg2~ z#k5y19Bkd+#3bUi(|6vvy}ncl8lkB|Y_UwhO?goMz_GnscJ!+KrQ_G%y}y!+=VNB2 zp1{4O+4(a!F4QQK6aY$^o*G|0xxT)XbE>(_kvcIbnyB*B%zQNw_7jNK;!R{T=~y!5w`hbT-B9(YJ()`0?@8uECOv7>Td8Du z{=`(mA1$U`MhgX4ZDwpNlMGpPMyp;d&=@g;lY&JjV#jfvgfCHPwR%^Ka`}T~;{aP| z1cx3!zP>sZby`d+?uY=hT6B7gLBj0oqQN>Dt;|%TRK6T_g>p$J>Gy?-Gqd?fdMxj^ zxDxSbu`)JV$^@-?RK;gVZHemSL@rjSX1$n{$yP{(hCnpz^@QVIql`1q*3>D1KJUcI z3s+YPKBH8~2N2C{jg`}ZNQ6}L23lHrp&}VglBg{jG|Du%8gUgC&R@N-nDa-*iav~> zVpL%)4pnt69!i8Q8XU^2TrLyOqPvsehnl71X@Q9i0XF>?a2nY7PMYPc+=E19h> z%}-93DGNqg5drkVnc{RcnaTQ%QhMJ2lgZZy@|l1q7z@}fIuV00($h68vqdui(63J? zofu~GSd5;qpNd5S9zrEo@P|5%9PNcpsWiJ#4w#5g6#7*vKo#efmRA?Y!Zx#qRErvZ zR>;>T%9X5_aCmWqSQc}V_ZsC& zn^Py%hsw1Kl^x3#Crd$J#D|F)Jk+RA+kLUou^0@pNzUa-Rk+oRyHmx4-{T|=GWI~{ zAV6ve>7tUURKA!`1svXJ$nElYeW9S8aFBYXQYIFQWjX^Q)mh9Yn>!FMjivm~KrCoA zSVQqxtT=sqWp!yR7K(+eS|#oe*sN407ESm}sNSd+u;gZ^5pyRiqp@I!N)=;Hz1l>Y zHBieEfbQtc9=l#5&=7j5(&7)g9nMfZ9L*&>q{D7hO0^of*6FhnzC@Tb;aWt_9pT7S zD1lppv8d0YC;X|T7e`QsT?dIE9d-rtrF1ss!HHmsvS^I{sFw^CY7;rX-RJZ8>^iv) zmGFdWM=X~B7jjy4qLCr7P6lD^4~N{|P$=j!s&u4HD`bh)gwu*O-s!U1NKB&=08vAF zgPF0>bSy}sT13EL@+GL%Zqk`tc2vTLne)4R>4~Mq+Gr`}#B>BEW7DO!px2WaUt9#R z$rgyYQK7&PhgN-0xd7DA)8MN(n7TX&Gu$dqcO&S=sin8j{3812Dm z#P9V}K8sc+RVoB*p3>~|yF=MRI%qTE0L*G}Um_QSoAfy_rBaInl`2zWF25axmC=f0 zCNhxDh3rnRMQ3u`Q85p(IWdV4^+tU*Z>CyG#^bR>Dqumxh{Yu52yuTZ>hfmFg@{e3 zk+V56=yf8oNZ9N01zlE?R;@Q0=ka1g3IiBQObgoBc|BT(tB z!AKyQ4%rARfk@N_J@i6^$M3O|o@ko#xB?-+9RoZT!+|K$>J11&IPI9u;xHjn1tJqk zHAb614z7}h;mM5_Bk-aLSMi}}_lMm!FXXwj&!3DsNleC-YH?g4)HoC6A{ES6(=JpZ z)kt9x6Qh6zPEG-rT#Jz!m4x1TtZhVPvVf6pVCKYf4b*@ZcQloxLaDe5H|X?)#bUKO zL+M;HV1c@UK_49AsSOslF9bf&KrCe(w#s7nrK)qw(+RgX5wRgWHbUCeVx2cTIS~(+ zrwblbVIYhE-5O1vcq$u*9xoYpXvK)lYfn` zZuQ18A&cG|pdc{VV%(0&l(uMjJRMBc<|`qi8n>CDz&88+u29s8nLRF>$%qOFdWHd!cHrJ>oig>TPRiQQH2t>SV^bZVgd2&J*8 zSx<(eq>3{ z!<1i{>Q9FJ$<$w)=Fg`6v+2Gz^v|aMS2O&DVPBca6OKmX$z&>>0n6q#ET7BezqXAd z*@iXVv0>>AOMPw0KU?A}i*H!$Ym5GcMZPvb68~h>Us&ibEC|TBKMF5x9zk;24e&Tlot3SdJGo>azfA?zOOMzlgt0DQsZ!gz!f!QEGCS+uI2$9RXsixbz>0pG$v2&4kbz%SZEA#32TI{a!}D!5I7Z} zH&E0-_!|B7<#Uq}3n2O30;p`OQBTl`Fgy3ZwX0v{0to=ZXxVjen8Q$d3-c!`9)!`u zGABx73zx1f#xP!2hsc>*I5BFM^zMIicRR}vo>)6ImnLE5)ceZI>nEq9xE8RHw|8_( z?eUPF)7Ll5<_W}71+=z~M4>nZ4gJmI8M~S*z^SOs=nddnC9`W#VNXs}DNH3B>Fz$Z zw}od66``wSGY7g@N~y-3idm$zmUaPV@ki|@AJzEnC|&Qwl|b3Cn7u87YEQaaaA^@O zN(S8SL^=_1>Hv5G8j996tRh`@y=bUw7;z?Y0gzVA7Tjn9toD0Nus#wNn^vT8XQtN9 z)Z+oWmfLe^`_4YZn;)eNGBF)E4$PUU&t*x#fFyb~2E$ex4FIp%LemDJJ&xjHK!x9I z;t+{S&Y^4+(ftDgb98)VDMKnpS`IZg9UDPI*<8ddVF+-U6?OVEj6f>K@pjnJ~0y|EG|qW2RMHH`pKL_#S)Q}(^FW!eE;fHP|xdU z6UoZ>!cxvA8)(|uU>KIpO#1X1nV82_Iy1BDr%En_#}~_#h(@QkIqX)QQf+qoliAYD z+WK7DZ8wwAwAV;@-Fo3rTT_qJ5~;A;BD&0xnO&O>>A9Up zM=)P7J2RE12+2Sf&m66m13t2Kcl>OLk;l`EN$8|C!S5N~nm-0`#(kRhH}rZQ6y zNC>yPWmu-MIrOMIo{UA3)un};%L=8&rm5>)|;EIMQkpYj?0lrRQ7n( zBB!@^3KSv~8qW3giGV@SPg8p+XP`Wq2$;k)1{%y4lMa0rOR31Yv6w&SC{>k7V*=bIY};71Qf1LBC03Fvu9d$?fVC z5#jPEi6bKDFw`KVT0K1#F#(6C$K6z-G@5p5`Gb9I5RB*zu#jkUsNMi8Bb6Ip zSewuLoDt|aCIR}a7X1e3Fqo(ZR=83)JsQDPDgzJ`^QA~EXcP|~In)PXG?ug|BnlC& zn*;MOl_zDx9fLCQ5RZsY0FKG)Y8&DTM2I~(eR8?rP;$9SvxBNE%t7IAl8H1%Zz35@ zMoEO-+u1KP5(d)e0Tcm~s|?m)ZY*in8wn#w>8w_&PzV^r!-HZoRhm0<^Sw{sKV5L> z$y6PrEOX06yJDoJl}CiDYZvAsdUnf>-Hq0Jd9E1Jv)gv=XBfk^mFbAb$ZgsF>H&^9 zSwFLuHSs!IhDFB6)M~w$4I6=i!0pM&>FH`v$L((Jlvslqo%@)gxr{|L<(I8!I#f<*K)YNprr4q>H5-eDnJAGjxW)$|dG4yV4d~%^^mku=T z>s4AnA(IVQWVH5yVF*|}RGJ1tj&|&5uTUmbyE6r^nmx>5bLm{YFI&o`f=;_x#g`k@ zVueB?l`DYdVR6M8y+URn8`VN6H8!4dV1(OF2IBETZDA&DSMxatFz|DyPfw&nxXS1- zD2%~keX;CDL|TiQ&Cz-D)3q418CK~COXmZp58)PzN-PobwVt3I+FB1#@iMkR2EbJ) zmClzUgj^uf*r>wv@_fc+vub&LhYz)Y^v?;LuT3H3_IEIKu0&;NwdynAxP&3n;huCc zgy~&Q1WqF{_#)B5^mNiJ8*XjmsFey!v|MWpULOdIAOplIWxvCNal4yZ1q4;96kyHs zBaGJlZ6cG!oy|vLA%j#fG(eZ5sNR{Jn4KzkaYxVwIPbtPlg)<`T&z+mFig&*%S`@E zwO;ZXjBW>NaC)dB43Wv}$K@)uNNlh}89zM%{i9taFdSYrm-`b3z+6Hd6GB}Ejt+ZQQL z*Nbtt4&)qrcDM8kREU;@&d=-(CdMW+4%Fnfp?CneuS+-9mrpGhL*W3X1jm>;d0}m= zG&SZWNRxDgtu@<1#cH(6VX0E+ z6k3bT;z?B|5+17&gSOP=^Luoc+Y`8DGt3iLW3 zE}tqz(uE)fY-b+Cw8xLH)gvaog5EhG)nV>*ZE+!Ek%(0S;3K3UnMha0CV?0b^)(&X ze`rvm0McS|5;Rc?ZtuaZdj^D3Lm;09mcefKcwC`a1SCCPgP6zaIee_Adq}F+sZCb1 z4kMlZphc}S<1(Ozq<}B_L*Ycw>hMGCu*3+g8i8~LWGh;wV6byY$QPo}?9Z<)rY(@# z`i9yLv~@2oudThcZCH*13XutUTtM^p_Z>Uf$v1fX;llJp7L+A`I;fz1 z6Vqvf14BG6t&gi#D-C9|8Cn>>5z$+Xh{5G^TS+SF3&ea@(xMhhFq;vc(}ppw9_3&cZ~w6t);OLZJ=^jcIxmgeUcs1J{X1K>j!^KushC0>We{;?_w- ztRcDtcLC4=Iv7%~AwY9wwp;abg~^*3on4rlo5}@UxPmpn;L^Hi^bs0pp|nbk&FzDi zR~NubDYFK5TA^HkO7hgD%NI^fG_WR@(dee!?)Vs-WA#)$7j;_gm{cUk9PVIdVsUjU zO<9#}I*ZxYFEaWv6ZK*OFi5Da1Oky%C8jeJ1|zI5*#bo%Dnvr>p~(n;wzjl54SlBF z;X?Vefu5!vTMstxJ;GF@5UzkjxIxJi!U?YnRREDPFsv}@fY1aOF&TjS64QBVL`6^q zVA+*h4h>owEoyVSoHkS{5KB12Org?f zF#<%RMQ{tMvjh?`mxGD~DR3*V2NY*)_E2YA$I&JbRdR&_CE<%DGF8B4?KUTYXv}5= zbUq=kJ2pDAR2!cej|0GKHL2uAFXi#4E913=g`(G>C$vHyTL^9+2CjP|6-;I$UhpO( zrs8v%{XN~s_U}4EW3hQM+!F|=psoesMLH2rrDAYym(>ids@+aHop!gEBuu!`Xfo+l zV$N`1+mQo1x4iQ58*glH<7n*h%HsNs$DjV<_y6?Ye*dGZ=gv$7F%efL>Tlk=|3Hse zDS=oWt@K&>Oqfs|s+IFbKzp`-$D6ObeQ@9Y1N+)IAXgooU%&D2F zfBF8yo6F^tO9OTG&Lceo!z?;oY4=0HGcmWeI59e2N+&`#y;jPk(Ykx-L;XWcj!+?& zAvh%Ec(OFTIKQ|&U!Q=u%ckOfvkuV!%_x!Zh6hJjBRwrmd$zy+!ZY7}@&|8iZ|>`7 zsO{0wg|jywefrBk{-0ld`G?Qmf9L*{dOiU#p@`Oc^l1AKv`s)`1*3`lXeJsjLW5w& ztbkQ35k#Q`e}UGV#}z<12vu1)TbUT2T|K?FG(9$2D^V_&%j>gfq$2+C5NMV5?|9?I zhNOPeD=$9t#{MoLsBCA?fcEa!|K(r4{PLgw_`6?x@^F13A8`jhfiLN@>wlTj|*3dB{D=0@SDW~Ch=Gz-<>kAL}};f`VN#BV-+cx?{)Y*Z!aKYZXwdv`}i z@36R0>ss6(2{5~ZK`3DwW&)Cf&?;4G0R8kD4QBJlpoBVcVzE9^ijaCBM-6hh!EDm& z$R6&du_}9rnUj#BBNzcGu->|^I!epcfbDqAAkMpUwm}q{K=_A z06M|`Bl{1vboC8%wDq$1BDF1?FXf_vCJh?)|YPgw3i;=uj=CIwOVmBZYSM#H|6yv^YO&!+|qa|mM&%77F@;YYiVNwSFE&o+^*= zKJmon-TfN>=*so$GsT(tG<4^fMK95kdYL{@TD)-g!!LgJ=i`F2~%Q;jjvpO@S{)fT)BO&?8FiJ zkv$zkgH~k&srBV|KD<4hDosRnjD8xefrpI!;Plko zLWU$M4+20gse=7Qg+wr2o5})-5+}q$9V!y&Y^0xxJUE>}b!W;3`NC|xq+Q#AFkY1 zpMLRpZSmA>NW-Cb9y!)GA~ty~LOLH>21xe@cD1k}`pe@{P|;Q6xR5>2wB@-UJoDt{ z&Cj(BvVnncYcUtj>)iJmY(v`o#9Pn5+QQRfj&vo7BN)Osy6w4d!c1*yI(U?0q)KD8 z`MJ?J<??cki9d`y42@tEp+<>(6cP zmNdYjOXn9?ubi(mRD0V&2k^ubPi$%%6xlL!XHH$XcXcvg)pOhSA2@RG?W0`8V0NWy z{Q%n( zn>usn<6r*jXTSM$J!cVj?|Obig#X5X#_7*3oLO61S(%Pv+)i-KExTLTQXFJ3m#<2U!L--8OOFf4La$j!4bBOnmBdq-G}GLBZ-)a*R}VR?`--f4Po(v&wlgIU;h4XJ%X{1ZQt6(>h6>{ zi^s2j_>14Xx4yiPw+g%Wz4GnNPwa0x!m+067asle_rHGc(o8vO0@)G zj{MAQZFX%o9Su7Suw%nuRw*nt6_YOF_B8F>-`-9GfzH&)YmYzs^?&{Ezr8ybBShW% z_V#N7iQMdkhoArMpa1^$q+bK-v8P^m`>oeo<*rm7WXqrZ_MiUvlPeXcY~bK4-+uC$ z*Y>qD4ODgIC!>2M{=>2Sz{8xT%k4};NpxShirVyO&dWOQNu z+QW~3_S@gScY3zy)$zFcV7?4{HQxE;m;dnJ|M+k*8MI3K+lDxNl_Oi9Us%6=bv6u} z3pDg@wn_tRb2R0rMrUWn!rq__ktvjVBW4N4e1S|3gmrvW1QoQ(In0694xZ8N zb^2ionA01uYxqNKm7Fms)T0u)(Tp1{J}+*xS}m|7<50Rdpf_-uVN(dSPeTKPY(A4V z)Zf`VJkT}369_d>Fi24&A`&Svvm>0V&M(#`<`>6;qy-hyx`&m(Ze?n-v&WZb@;*D% zJ$zd4zzCDhMyyUdV8V?}HBzxmDpeb-UVkJW@&-a66VYjvz?$<#A~C2zsBkC}B2hU9 z*c=8&z-NJm5LKZ%Igooiu289zAZ8!sHX4C>R|;T246Ya;uNQAUx_@#sh|9#>zFvV+ zrgH`3m8tR3VlEvp$;E0FhpDpr9qwdxi~{mB?>8B6om{3AbJ#=O!%_qqR=ve+wqbhE zG2jLRkWx6|aJyV2j@cY$jY^LLpDdRkYAJ`yVG86bXl z8L!O4e$soV#)2l;O9B!jU#<+hL~mU^33VzUu02DX{#Ke?V++T_3E2JN!6Y0GBvRN) zq|y+Opr=aJseIT+D5VkxjVm_*4nF~cujz6+>eLCLY}vhc_tss#a+CmixKvEWl0KL{ zqZ!qbp-6UO>GbhZ0Ca6#u zk*Hci?>M+?&)!2_B7#ci0OOcSdIEkcRCrL`lXjag6f4$O*Cyk3oruS2s9yw)opMm1 zynm^d$fRAMJ{u7m$xu99J8|LsD!{^K1*2pCj@?K5`j}cEM(c}bFRYD+eRd6-Hr&%A zP-_kDOlfp99VT@O8N08KEs`0$0A$TBFV0LPsi5D2a0fd(2L=b}LZ!*$_XQ&npW6Z5 z6h@GwnGB{zrp>TlV9pkHB+RhBQq7ONlKTB(=PK0Rz98)5V0s5MlYJ$Y(* zc50$T5lTLn&7!p(>1D8`7<6f50N8KX#sQ3_N(D9~kKm6qG+Tu*ng9-+_`)PdxTnUIW61n2!^z8A)YLq1ODmj0k zwSAb)SLkekaI!KpGch(=NqOwhcnP4x7-32ECb)@2Dhq8U$Ok}58HuEK(pE3}gkaV6s@PJ7=EFloGXhXw%l}1N6Jg||j00Kb}v7!T4uq1$+H5@^u;^5BF0G?=SY-n}Poy||a(%WmTF6w&Ap&H^HZy6It1P}?7_=TP zD((eW3B< zTo6>!-2hlq`pueElw`XfyO2liN-((V*)j?UdiLa zLSVLo>?;(ZUOlEi>Kmnmv%itpAO0~%W07Qej&j1(! zk}0PHB)>)+2Q7}7u$VAVQs}f01}YVb8I8D!Ak3tf3OYs0iGbOR>FwsAP$vMHEsrn0&z(=5sy&e2nC=ZiKDO~Q7MyaU^A)3Y9~S4 zXM?U4z^Z82V==(jAW{(e$pG-fjJQ1jTF%l~DL*{M`Vc?_f*-j)lDC@qtj63I;+U zzsKu#*ljklfvOk*|Gn0R+k?XP6XOOUnE@6eSv=g*%i%KtK*ZS*-Sp0 ziogtl0ts%?1ry?Ozy?j&I{>1mhFrxC-Vax;(;_md0?6LRz=7lkjzTE9{Qjbi} zk=OvxhATB$;0ocifndPrYxp0m8IY7sCWv`ETpV07EFCbHkkqs=H%7wjfH`xzoEEro zJ(RlAhH?O=!3lF+ERGd3g*^BnFr1J&Y&M6}6A1X=pV#9c%`lp%9zq$m1cTTBh8FaN zjnn}6G`!aev7*sH@Ss?uHfY2IMfn|s0Rk4L0Pe%)0&!so5?F)^`Jn=`T1;@lMuvgZ zV}^-=Gw9*%kTA?P(g}|02Y+>fn`{g@1e47LD+FjuA?BdO2n50#i67Fi7XTt#!&{6H z0s#2K+OK;t;fCk%nh4Gt85lY_y6;suSX z88&R_fdz$W0F57Liov1b-3`Gcl;`%1G0|v^mWB(MY|f3y^}$CQIW7>1$5Wt?Dr90* z2rkfS(j!udOaU@M7z&64KX@pNqD&~1NI*gZ`{SWL3x)tg1j2sYMDf))B-IJ z!e3uF5(mB^LzVLOz2V%|{K zv2GsfgftT?&z`t&eSK;YwzEe;u_;k&r2>ftRH9*@!yk=<%qs|gO$XDdMGQJeDut_q z4x{1gZrEhvvw{v2QAtFw4jb%^gx~{a6;RJm1mX@70{9(i(y3Ii21)rmkwgmWY!2)# z(x@Sun!#PbxyS}09*kv66SK!pu1%%fMkS~3*xqg10m<^ghWHzgKl#z6Y5>>EU}x)V zTbfyVs|WtF!<|PLD@n>tH1=t}evrnI>YSPBQ|Hzu%aEcRI&N=!FIyzy$utD$aRUyB zR2V@vlaD}e8Hr|rl$kE3{0>lV(+7tI@&+7jf|U&VDu`aFieP#`FzX7YiiJ!j2l_S8 z(z{_xVIp6troDt(%;-6`Z`U!F)|sd*p1XDD%5v7BmPc1|j(G4f4oev9A*7Uw_ybzS=}$XC8vZ3T*ymaWLLtg$Vj)oiv%wm8q^o2ROJHBYy0)t%>gzPIMN z-cWBI_((oZ&7s+3w_0OINFvLYAq$ET!8Vfo1PBlyfrHL23I-ejf`5~GU_DmVednCJ z&)#dVwN70OkLAdcqoc2%P@&Jn(6!VmGJ^&np7rDS%HG11V^Uh$!sn@yHJpW{^qhn zBZSpz$OS~Gt}HuPbS5DNHnBLd$a*#rzI0}WaBE5~j9A?olSm1TojdDhF-caI8(e%k zt#4Lqw*6>@K+dU1Ly}Bp_Mj=60Htz11 zsZ_q0OU%sU-pcJKw;N32`tjp4WU&75!{>L}eC+Dm7qjNl&ApmI=Toy2GYeVSsq{O6 zXHwbZ!qjX=@XC!qQVc`qag3n#`tac4`_FFFWi)j8LWpn%n@z*Du<(`RfBMbKX{j-A zu<*qf8?>|0V z(penE^ug_SAK&VTSRs7j$T!c%g?g2Xk6)h&Eyj}BJi+m5ZE1P?{&#=!lSj)Y9$zH< zhRzygi9i>xk7cC#=1x;6=EK*nT{w1XfpnLa9XuAAzB-TO3R{KE({uBwWOVM@WKOmWE;oN|Dz7${ zsz!P3=DNqA`3&XwBJcU4pwbysZ|^*K?@l)`>Ez^@BX3;E8NH2`kk2k&pUl%*Ywym` z!lP3OnxOpE&7I8}o0_^fj=J6cN?Xa#UwHGi3< zr%s)lDti5;mWG6)j8`XW z^6pr4_?hFGi4b(ONoq^87}P&rHDt z70X%P=$7UD>y1TvP(z(pyd=e?r zJTGfZE|Jb*a?l$LZ``}l(ij@&+(5!97Kx0VdFzdHi;Ta#-msfphs;x=)7v}fX{E?a zhCqhOaHJ>^*sY&=67+V=1+>v$IkQJRv(Xl{eZQoySs%=we>3t>1n3 zR!hQ41V!uR`tq>vkjd%m3u%lbDY}G~aDt>5R`$E=H{ZE44D@oVv%Wj1wAP0eE*Bn~ zMUCd>t@T=K*pko!u0hn+tMv-ZbNABJ5-6qD+x14%z@lT9uP>4UE!wssX)J;e zg412=86+hzqF+@7x4%;1GV>Er#vANE`oYis<1gP|w<*59{qW)L{=E$gUATB=p7MtG zp5JY8u}eo@zlu7;yNAOX7rS!w%}Lx{yLYo;^NGtxzH(%Su5LYgcTG-SKRXe{{f!4V zSNjbiS7KSIwz;>vU8Cb;C(p$=*HTQ!lnQf~u4k3z_Ja?e4*mK{yRmVwx_t2DUSG~k zPvr!LG55uLm^T~I2kw;lkFP<(zNTB0?;Jr-9?9H1bD8I?+J`$kX6 z&s{h>S3t6izqHkt)6>_l9Dn0Nj4iLO1**v~w?@wB~ZP zR$(*A+3}e)hU0Q=?Z)1!$BMpQm>(OT1~|^-l1ZeHC1@lxlc3Dz+TNN+6PivEis|<@ z`Ub0eLOxeYB`{g@`rA7#udHK<=7p&aa>6f|GF~nXSOUqHM1j#v8e=(5QCSpIY_~C}=~l(SlhfzF{jF0AC9Uc(yrUGt^V6ZC zq84L028)IZl;AgOmQf#6cv>J3+HMb)w-1)9t)()@NHU2KqUyB*S*tbmQZ^M@Kp5U= z_5+UO@z_ixgQ-E;Ew{@&l8r6I;!_u|EaHmcHyje9i&;Xqg5J*lYRjgQQ|I3L)~Rce ze4!{f7Q>isZFy_SBq?3NDXYDC_t_7g-Fx_8tsMAVp0K(*_n$r47;JC)ye#DB<`7=A zdu!{vyA3vz2u*}Av$c8e>8)->N>83UdwD!YJN^AzJ8hFMq%+yf!qu@9mM`#eW%hwVmLT#+yJX}(8iF|7O^yL`EYmMRB)?QD}OrAP+?AWzL4mW$- z+bb@C#Kyk!&DXC)Q<&N9d4{IShNU~TilsOXla7YQPM^ARWjuisC@t~?A*r@67mGZb zk7qLJe2KSwzaB`Eqhs-f7?RD=7SvVW#F51GrSWJiiYnEW8xQUd)coAVE7O;bpAM0# z9yD|YpgcKo;ljD|<4KHC8@;lnLsJ_cJAeFa2-6(DyS>w|TDqptg%XLU=O-t}C&PcP*zeym52A3+w?WGI`$dD}$|J z2P&H)@zm^-sVm>DBEN@8J?PnlbXuX3^W+J$VgO? zk!3QMp^Vz{-mQa!-KD_fk;ueMWcu>>?99~Fu{eqpc-^Wl?cTjJEC*$&L~0TPGYt>k zdH=)bPj*{@VHhl-1(seJjdAzU%|YE16*iklV~XK4*KXdw(XA-x;@o^_{MsU6G}rf5 zo7J+zW>c|PJe5z+&!h;NAT z$P*|SK{H?`#WZ-hj3gPJ7e>lY;#o;IZBvs4fgkZ1l7-0?&2$Zc<=`Sg7Fj@ShF~Pk zaBM}fElp7r0WPCQ(#(ggRRI^^8c`DHQjt+z-*aqTfhJ3fimZa1Q8|`}wZni6L35Jn z!UeWv8oJCeR1rZ*X(U2*xKbJkKf}=#2pdPiee0SkaGW6O4n*2C3x(k8TDsMucFCnhhuiVq9WzjO5`yU>PG3s9Ub< zn6Q^TOL4GfU6mzScWceS)OZ4;;cc1`bjvbbQ{*^~z)8WZ03WP75{1JK!|sWrk4;^K zt)wVk;8n-2n zl>w{{aIl!kGn(J-wp?9?l+;W^BykKIk*R86a5RA+I0Ff4j<(IVbrqJu3*0EHL`~NX z*RvF`9AI~O+3?CHKgx66_hBa>zZjtUngTumv=w`E&~yd9;^=$Y3%7!2AAz=>d%%f72n zB}f*_QfQpFA+aEHMNw5DYl}r%^_tz5FX080l2sWD6vI$p1@J?SD#of-Oho`RilL&{ zT3Pma&;_iZio67O>s8CTD6n*~#7UCsctN=ew}B#z4tuO~3#ARZmPx_WT`aHk;^3q`Dy17Z%XT-AkA0{oCTsVZ1}b}pL5q;h|~ zqmhi;>lj#U;`Fz^esr>Ec6JXsVo7T4J$n4^N5A;n|MtH={`l|z@|~VY+N*az{PSP^ zyQdG||KRpUnFxn*Z}raehg&Vp=2yH*j2+&nlf!SaoV?>`*KxtY`7 z_>(ur3q~`*=gxfNbFX~jmEZs5zx?DYUkq~wHhJtzpZ?6TMZS6P;m`l>KmX!cpNpP< z{jGVnaq#q3xiFtGmxkTCT$1{S&!64vD~wd#dhpK8{TppIcJ0`g|MGy18>g}(7 z=H=0_zyHdg#*}_fh@5%tb6>rVSGJ%2^l$#h|Niyk20rulm;UHf#vDHW@spkg-Jldh z{msY!_OJfzb{UJ8%G*zV_^?SVoc`*kUjFjcVz714l!@@!*ItEDUwL_)s_*Uv`Ri|e z;gy$Pzc7v0_TT^6Up#J7p;KS^^k=`5wuajkQF8TCE9cQs^-Cwhw7YV9r%cDLe)}u0zVfe6M1|)5^LK}OcKq0vKl`O4 zN3RyV^+)e+nz@NfQDv}E#^*0i5Vf_9uC8@=`(kSR#A|O%lhxhlfA-fuy}#4o`clSEZ5EY{_~&yr(eB)V@bt$%?%o^)!p2@_1( zLb!knmaWO6K;RUTNTky7XsSrCW^H+6t!J}%F0v4bMnfr5tMu1b93nAw_Q;q2@RKjU zeB|PIoK=Y&9SmtDpPSr(XU1(J6!#ouz|E-}~vW ze*Mdj4x4N$vM@6-8J@m2H#ZYP0oGevhqw23wp$Vs3r~$lbIHZ&^T&^!8J|yNNoXCW zU#^xtg+zf8sL(6{7U)8bQZ&0>Q?bgvu?U|W1XG&OnY#J5kLzcLX?7YI4%_Lr7g z7DwY4PD+|6DI$pxBvAqfOtfnKjosBwMJ^@hubn>n+86)e55MrWlXIDpQd_VaoQKE6cs*m42sHuXdK(&80SI`k8Cv)8kiWz)8t-(B*B{ zgl-BThoAt6Eg-kPN@PRh7tW1`a-7rM+#Ysn6_d^`Ts`^b*FXR2A0Iz={7i_n`v*@y z`uVSZ{*w>id-7y|d1J2!LiOs2H{bg9Rj@ZU?|=CH?>*ZGj+;&A(IU7CTq!z5t?iwaYPs94c9y!; zN?F0v3)e1Potj(BLJ&;XmhsdASQ=`j(P~;i4-2dXEyOBU%B|JmQnzgS^%`_OxN7Xe z`3omcoV_xW<$=Qbuq%eBx`rrApxqd*1X>;C+|K6h$L~LXc7LtnRdms+lufG^h=oN^ zl3~K?Z0-!}mZ^a!NaXVvkBG23+VyOsu;HAdY)JB4Yv>OJ$`&| zr)@EX=+uQ1PzDQ;*uvQLv5C3NXwHL!?cKeNrf0JG@c7xY(-7foiD1k|Z?JV^eXz8# z(O=!av$L_e)(XnLgcb7%gqL~MR)`Xgp|B8|mz_qZS@&hKfE01wv<(I9U9b<)JXTC5 zkP=#Cz|C-*OKYnG*eYKhNt^;kF`xxFJQIz;V=-Cet=iJYk}s4HXr8ogd*#4$oxoLP zwp1ty7R>Lt1~{=YkSCx{1`xhRyVoBK2K~A%QTbFVnJNHb8PRlI;jtWqqzE2tZ`ccL zh0G+=*;Km7iAJqk_dSaPgA>OnUb2Bc>G1bS1jNsaS)6LK?g5Ph@c=uUOMrm~#-pkm z5>1vesVt$mt$wdn1A&WY!;{w+ifS3$l0m!Gs8xZc!WMgAZd5b|iANVB@zhAyfke^` z-ygAK3CNLcDnOoPSpznYrWZpg3OMJW*RHxcTP)-j7b1Dq9IeI~2@1vVf{{yI2|Nur zAIKsknaB{b+w68Ko&)6~LHIGz4m<`NAWYyL%XF&s*7Ekv!=2S0 zkRc%AF9Z+|V#gL}5;lzGS(=2L;(()yB5+Ke1;$Texl|gVgwe4Zh`*67EZcqn+c^jz zs*!LWxOlZ$wRPQefY$@}1+gcPNIHv+Mg%Iay&&K$!-HNheZLA(ssRXtPRYj?=H?)P zh+sFm?PjOb>U8TSM_{=OES&%;1k$I`?yRh@0(AKn3?vZwbUKwTz(JBI>*aR09RP2} zGRbT<4Pq1~fn6i<0wzK#TCSsxbjU~oNCE?Sm(3w1Ah4hx4Fl*NNebFXO6a3y!($}2 zKv(MmRm#NXCSYY8_&$60pMC$`?W$17B^Tm(h$$|D-2mrzOsRzDlZiN3_ec>yx4UuU z#zxChxk54?jpb;tLe|#SSNc_zBB)Xl&Y)tkbP*>Zx)x-!?tlZ}f$mg6T!F{{5e&ac znjw)K0s;*f?kGhJjl&AG4wA53b%auCel`@%GG=XM@BWjU-N1MFd;~lyT=D|1+=0Zj zL`JWN+&XT1mj_9x7Kh}fk2TIEWJbtR;}Ic0OD#ifn^f8d;uH{ zfngQjmuNT-0L&TDY!x(DP%WF9VXL5&A=W^aRSt|C2C~9({i-JeFwc%pj$OPK!_?~1 z-u-vB2g_|R(c<7b*Vk@8dU&|kw}|*G*u0C-KKAb2-R^hl8XB2j%%#JLk?`!#3*` zSHuet^g=9-t3k6Iv}!6~CrOqlN#Su?cSM|EV6*ZRuh=h&U01+8AV3L+`)ezKEJ{>nF_J3Mng{3tI18IjQ2>SnEo%U<79=A;E>44`00q`>mVJ}Q3!rSE z_*p?xRVZ-qL@=Dd2wn&I%R+3~k!l6Na;=dBhKvO!>AAY90yt@sQEmcS0W2y{)Q{n+HyooC_88dd1TH zio>FXTozNyRaMf#n<2r!AElV8>ZV9g+6bK;Tf|4FU`3RGT8ACsRKuyjBHDogPJ&nV zRHl&5kz_Us=LddoZP@cA9#4hSyjyc2gKn+|Y<7NPY9T?Iovod=3q}u|g3M%P@Ybr` zcG(iq=xhSZ#ZaxWx&&lF$R|_Td>WLpCjdEx<{u|5V8W77X;i>Wq*a4KaMgikM^P*U z3C&U?J5ZENokB~nK-({yECv1^L((c7nNb+d$~;Lz1<7E{3M@{rs^96saW@EdIOOOp z_uDXZHc@1u6~}?+5P>Fw3&)@%z)R;z@GApD5e2Yq1Qy6|%ZIc8G)f@^FY5siCBQJ10oM?0 z6IrutP#~~u45L|g)IeAoN`#kHMR%*Miq2wa2`ZVCZNNJyIIsr63syZ}0WmDoNHSey z1+ZD{daKncdp_iM5%>n4O+(`@|E8gecs5zUdBgU6*M~nW};5d=xp^(H%zh9LK8H978TEOOHGEwLYi{Ug_B&$6OKn#n`C0K}QwX=Qe z=6Z$CB@iS$1M0r2lt{A*r)veR(e4jA4Nw7-m#l#cshhiw%1tQ>6?&Zcn-?S*EJ`o);y_{%F=W; z4&~l71<@*(4Z4JJwl5VEFu5HlAtMS8Vgu2nU+LkbHzdd#YG255}fbj6piO{AScaoyRJd| zg#&d4&Q>Ze+y|8htDMpSzN;;VDPgP*o)=w6p$wkS6H4Gqq@as5n7dd>3OaQIx*-xv z;8YF~03RjW;c*sd4V)wHbPbM0;~CBgAhk5QP#|eEhq6}1V&F?7xyZz9b`;%edvgPJ z03b+~tE+2+nk%8HlHTZhRBHNah|m<#hhs+gLPt2SK)*!v&af%uF-^|L2(R0QpvtVI z2_;O@B`jT#Ee_5^_#&p&>N3GwGMZ-{&j|uCAD&JymV%}!Z?NpsC|6l(h@=J_F+V?* z6kG*Kvz~>=Vw7J~i@4n%I0`t)CYdFjc7-qDQqWMbBB_BVtpyd6LQxu+Y#iZ6(x($Wojtp}6eiN9h0q|!qQ}ekjiZilqTBZc0Jo4yS7{m1) zg(+qd`C>7Xqu~euJVc7qTvL5f$57oP0|4wx2Vez^L=03j_}Cn$Y9m8_^nES{vIaH~ uxSdQBf?*mX|N3`-sq8oW?*G^4-~OK4KfaIu`?D9X;As@3e|**G|NjSvt?Ekv diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav deleted file mode 100644 index babb864ecf9412bb83e60897d43a1afb59a19db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16096 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 AIRF3v diff --git a/lib/Adafruit_LED_Backpack-1.1.6/library.properties b/lib/Adafruit_LED_Backpack-1.1.6/library.properties deleted file mode 100644 index e04636907..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Adafruit LED Backpack Library -version=1.1.6 -author=Adafruit -maintainer=Adafruit -sentence=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks -paragraph=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks -category=Display -url=https://github.com/adafruit/Adafruit-LED-Backpack-Library -architectures=* diff --git a/lib/Adafruit_LED_Backpack-1.1.6/license.txt b/lib/Adafruit_LED_Backpack-1.1.6/license.txt deleted file mode 100644 index fee1e9c31..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Adafruit Industries - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index f0e26146f..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,46 +0,0 @@ -Thank you for opening an issue on an Adafruit Arduino library repository. To -improve the speed of resolution please review the following guidelines and -common troubleshooting steps below before creating the issue: - -- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use - the forums at http://forums.adafruit.com to ask questions and troubleshoot why - something isn't working as expected. In many cases the problem is a common issue - that you will more quickly receive help from the forum community. GitHub issues - are meant for known defects in the code. If you don't know if there is a defect - in the code then start with troubleshooting on the forum first. - -- **If following a tutorial or guide be sure you didn't miss a step.** Carefully - check all of the steps and commands to run have been followed. Consult the - forum if you're unsure or have questions about steps in a guide/tutorial. - -- **For Arduino projects check these very common issues to ensure they don't apply**: - - - For uploading sketches or communicating with the board make sure you're using - a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes - very hard to tell the difference between a data and charge cable! Try using the - cable with other devices or swapping to another cable to confirm it is not - the problem. - - - **Be sure you are supplying adequate power to the board.** Check the specs of - your board and plug in an external power supply. In many cases just - plugging a board into your computer is not enough to power it and other - peripherals. - - - **Double check all soldering joints and connections.** Flakey connections - cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. - - - **Ensure you are using an official Arduino or Adafruit board.** We can't - guarantee a clone board will have the same functionality and work as expected - with this code and don't support them. - -If you're sure this issue is a defect in the code and checked the steps above -please fill in the following fields to provide enough troubleshooting information. -You may delete the guideline and text above to just leave the following details: - -- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** - -- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO - VERSION HERE** - -- List the steps to reproduce the problem below (if possible attach a sketch or - copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7b641eb86..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,26 +0,0 @@ -Thank you for creating a pull request to contribute to Adafruit's GitHub code! -Before you open the request please review the following guidelines and tips to -help it be more easily integrated: - -- **Describe the scope of your change--i.e. what the change does and what parts - of the code were modified.** This will help us understand any risks of integrating - the code. - -- **Describe any known limitations with your change.** For example if the change - doesn't apply to a supported platform of the library please mention it. - -- **Please run any tests or examples that can exercise your modified code.** We - strive to not break users of the code and running tests/examples helps with this - process. - -Thank you again for contributing! We will try to test and integrate the change -as soon as we can, but be aware we have many GitHub repositories to manage and -can't immediately respond to every request. There is no need to bump or check in -on a pull request (it will clutter the discussion of the request). - -Also don't be worried if the request is closed or not integrated--sometimes the -priorities of Adafruit's GitHub code (education, ease of use) might not match the -priorities of the pull request. Don't fret, the open source community thrives on -forks and GitHub makes it easy to keep your changes in a forked repo. - -After reviewing the guidelines above you can delete this text from the pull request. diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp deleted file mode 100644 index 570a33584..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp +++ /dev/null @@ -1,729 +0,0 @@ -/********************************************************************* -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen below must be included in any redistribution -*********************************************************************/ - -#ifdef __AVR__ - #include -#elif defined(ESP8266) || defined(ESP32) - #include -#else - #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#endif - -#if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) && !defined(ESP32) && !defined(__arc__) - #include -#endif - -#include - -#include -#include -#include "Adafruit_GFX.h" -#include "Adafruit_SSD1306.h" - -// the memory buffer for the LCD - -static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, -0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, -#if (SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH > 96*16) -0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, -0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, -0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, -0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, -0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, -0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, -0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, -0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, -0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, -0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, -0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, -0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, -0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, -0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, -0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -#if (SSD1306_LCDHEIGHT == 64) -0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, -0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, -0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, -0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, -0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, -0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, -0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, -0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, -0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, -0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, -0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, -0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, -0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif -#endif -}; - -#define ssd1306_swap(a, b) { int16_t t = a; a = b; b = t; } - -// the most basic function, set a single pixel -void Adafruit_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) - return; - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 1: - ssd1306_swap(x, y); - x = WIDTH - x - 1; - break; - case 2: - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - break; - case 3: - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - break; - } - - // x is which column - switch (color) - { - case WHITE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] |= (1 << (y&7)); break; - case BLACK: buffer[x+ (y/8)*SSD1306_LCDWIDTH] &= ~(1 << (y&7)); break; - case INVERSE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] ^= (1 << (y&7)); break; - } - -} - -Adafruit_SSD1306::Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - cs = CS; - rst = RST; - dc = DC; - sclk = SCLK; - sid = SID; - hwSPI = false; -} - -// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset -Adafruit_SSD1306::Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - dc = DC; - rst = RST; - cs = CS; - hwSPI = true; -} - -// initializer for I2C - we only indicate the reset pin! -Adafruit_SSD1306::Adafruit_SSD1306(int8_t reset) : -Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - sclk = dc = cs = sid = -1; - rst = reset; -} - - -void Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) { - _vccstate = vccstate; - _i2caddr = i2caddr; - - // set pin directions - if (sid != -1){ - pinMode(dc, OUTPUT); - pinMode(cs, OUTPUT); -#ifdef HAVE_PORTREG - csport = portOutputRegister(digitalPinToPort(cs)); - cspinmask = digitalPinToBitMask(cs); - dcport = portOutputRegister(digitalPinToPort(dc)); - dcpinmask = digitalPinToBitMask(dc); -#endif - if (!hwSPI){ - // set pins for software-SPI - pinMode(sid, OUTPUT); - pinMode(sclk, OUTPUT); -#ifdef HAVE_PORTREG - clkport = portOutputRegister(digitalPinToPort(sclk)); - clkpinmask = digitalPinToBitMask(sclk); - mosiport = portOutputRegister(digitalPinToPort(sid)); - mosipinmask = digitalPinToBitMask(sid); -#endif - } - if (hwSPI){ - SPI.begin(); -#ifdef SPI_HAS_TRANSACTION - SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); -#else - SPI.setClockDivider (4); -#endif - } - } - else - { - // I2C Init - Wire.begin(); -#ifdef __SAM3X8E__ - // Force 400 KHz I2C, rawr! (Uses pins 20, 21 for SDA, SCL) - TWI1->TWI_CWGR = 0; - TWI1->TWI_CWGR = ((VARIANT_MCK / (2 * 400000)) - 4) * 0x101; -#endif - } - if ((reset) && (rst >= 0)) { - // Setup reset pin direction (used by both SPI and I2C) - pinMode(rst, OUTPUT); - digitalWrite(rst, HIGH); - // VDD (3.3V) goes high at start, lets just chill for a ms - delay(1); - // bring reset low - digitalWrite(rst, LOW); - // wait 10ms - delay(10); - // bring out of reset - digitalWrite(rst, HIGH); - // turn on VCC (9V?) - } - - // Init sequence - ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE - ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 - ssd1306_command(0x80); // the suggested ratio 0x80 - - ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 - ssd1306_command(SSD1306_LCDHEIGHT - 1); - - ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 - ssd1306_command(0x0); // no offset - ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 - ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x10); } - else - { ssd1306_command(0x14); } - ssd1306_command(SSD1306_MEMORYMODE); // 0x20 - ssd1306_command(0x00); // 0x0 act like ks0108 - ssd1306_command(SSD1306_SEGREMAP | 0x1); - ssd1306_command(SSD1306_COMSCANDEC); - - #if defined SSD1306_128_32 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x02); - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - ssd1306_command(0x8F); - -#elif defined SSD1306_128_64 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x12); - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x9F); } - else - { ssd1306_command(0xCF); } - -#elif defined SSD1306_96_16 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x2); //ada x12 - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x10); } - else - { ssd1306_command(0xAF); } - -#endif - - ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x22); } - else - { ssd1306_command(0xF1); } - ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB - ssd1306_command(0x40); - ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 - ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 - - ssd1306_command(SSD1306_DEACTIVATE_SCROLL); - - ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel -} - - -void Adafruit_SSD1306::invertDisplay(uint8_t i) { - if (i) { - ssd1306_command(SSD1306_INVERTDISPLAY); - } else { - ssd1306_command(SSD1306_NORMALDISPLAY); - } -} - -void Adafruit_SSD1306::ssd1306_command(uint8_t c) { - if (sid != -1) - { - // SPI -#ifdef HAVE_PORTREG - *csport |= cspinmask; - *dcport &= ~dcpinmask; - *csport &= ~cspinmask; -#else - digitalWrite(cs, HIGH); - digitalWrite(dc, LOW); - digitalWrite(cs, LOW); -#endif - fastSPIwrite(c); -#ifdef HAVE_PORTREG - *csport |= cspinmask; -#else - digitalWrite(cs, HIGH); -#endif - } - else - { - // I2C - uint8_t control = 0x00; // Co = 0, D/C = 0 - Wire.beginTransmission(_i2caddr); - Wire.write(control); - Wire.write(c); - Wire.endTransmission(); - } -} - -// startscrollright -// Activate a right handed scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X00); - ssd1306_command(0XFF); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrollleft -// Activate a right handed scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrollleft(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_LEFT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X00); - ssd1306_command(0XFF); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrolldiagright -// Activate a diagonal scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrolldiagright(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); - ssd1306_command(0X00); - ssd1306_command(SSD1306_LCDHEIGHT); - ssd1306_command(SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X01); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrolldiagleft -// Activate a diagonal scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); - ssd1306_command(0X00); - ssd1306_command(SSD1306_LCDHEIGHT); - ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X01); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -void Adafruit_SSD1306::stopscroll(void){ - ssd1306_command(SSD1306_DEACTIVATE_SCROLL); -} - -// Dim the display -// dim = true: display is dimmed -// dim = false: display is normal -void Adafruit_SSD1306::dim(boolean dim) { - uint8_t contrast; - - if (dim) { - contrast = 0; // Dimmed display - } else { - if (_vccstate == SSD1306_EXTERNALVCC) { - contrast = 0x9F; - } else { - contrast = 0xCF; - } - } - // the range of contrast to too small to be really useful - // it is useful to dim the display - ssd1306_command(SSD1306_SETCONTRAST); - ssd1306_command(contrast); -} - -void Adafruit_SSD1306::display(void) { - ssd1306_command(SSD1306_COLUMNADDR); - ssd1306_command(0); // Column start address (0 = reset) - ssd1306_command(SSD1306_LCDWIDTH-1); // Column end address (127 = reset) - - ssd1306_command(SSD1306_PAGEADDR); - ssd1306_command(0); // Page start address (0 = reset) - #if SSD1306_LCDHEIGHT == 64 - ssd1306_command(7); // Page end address - #endif - #if SSD1306_LCDHEIGHT == 32 - ssd1306_command(3); // Page end address - #endif - #if SSD1306_LCDHEIGHT == 16 - ssd1306_command(1); // Page end address - #endif - - if (sid != -1) - { - // SPI -#ifdef HAVE_PORTREG - *csport |= cspinmask; - *dcport |= dcpinmask; - *csport &= ~cspinmask; -#else - digitalWrite(cs, HIGH); - digitalWrite(dc, HIGH); - digitalWrite(cs, LOW); -#endif - - for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { - fastSPIwrite(buffer[i]); - } -#ifdef HAVE_PORTREG - *csport |= cspinmask; -#else - digitalWrite(cs, HIGH); -#endif - } - else - { - // save I2C bitrate -#ifdef TWBR - uint8_t twbrbackup = TWBR; - TWBR = 12; // upgrade to 400KHz! -#endif - - //Serial.println(TWBR, DEC); - //Serial.println(TWSR & 0x3, DEC); - - // I2C - for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { - // send a bunch of data in one xmission - Wire.beginTransmission(_i2caddr); - WIRE_WRITE(0x40); - for (uint8_t x=0; x<16; x++) { - WIRE_WRITE(buffer[i]); - i++; - } - i--; - Wire.endTransmission(); - } -#ifdef TWBR - TWBR = twbrbackup; -#endif - } -} - -// clear everything -void Adafruit_SSD1306::clearDisplay(void) { - memset(buffer, 0, (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8)); -} - - -inline void Adafruit_SSD1306::fastSPIwrite(uint8_t d) { - - if(hwSPI) { - (void)SPI.transfer(d); - } else { - for(uint8_t bit = 0x80; bit; bit >>= 1) { -#ifdef HAVE_PORTREG - *clkport &= ~clkpinmask; - if(d & bit) *mosiport |= mosipinmask; - else *mosiport &= ~mosipinmask; - *clkport |= clkpinmask; -#else - digitalWrite(sclk, LOW); - if(d & bit) digitalWrite(sid, HIGH); - else digitalWrite(sid, LOW); - digitalWrite(sclk, HIGH); -#endif - } - } -} - -void Adafruit_SSD1306::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { - boolean bSwap = false; - switch(rotation) { - case 0: - // 0 degree rotation, do nothing - break; - case 1: - // 90 degree rotation, swap x & y for rotation, then invert x - bSwap = true; - ssd1306_swap(x, y); - x = WIDTH - x - 1; - break; - case 2: - // 180 degree rotation, invert x and y - then shift y around for height. - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - x -= (w-1); - break; - case 3: - // 270 degree rotation, swap x & y for rotation, then invert y and adjust y for w (not to become h) - bSwap = true; - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - y -= (w-1); - break; - } - - if(bSwap) { - drawFastVLineInternal(x, y, w, color); - } else { - drawFastHLineInternal(x, y, w, color); - } -} - -void Adafruit_SSD1306::drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) { - // Do bounds/limit checks - if(y < 0 || y >= HEIGHT) { return; } - - // make sure we don't try to draw below 0 - if(x < 0) { - w += x; - x = 0; - } - - // make sure we don't go off the edge of the display - if( (x + w) > WIDTH) { - w = (WIDTH - x); - } - - // if our width is now negative, punt - if(w <= 0) { return; } - - // set up the pointer for movement through the buffer - register uint8_t *pBuf = buffer; - // adjust the buffer pointer for the current row - pBuf += ((y/8) * SSD1306_LCDWIDTH); - // and offset x columns in - pBuf += x; - - register uint8_t mask = 1 << (y&7); - - switch (color) - { - case WHITE: while(w--) { *pBuf++ |= mask; }; break; - case BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; - case INVERSE: while(w--) { *pBuf++ ^= mask; }; break; - } -} - -void Adafruit_SSD1306::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { - bool bSwap = false; - switch(rotation) { - case 0: - break; - case 1: - // 90 degree rotation, swap x & y for rotation, then invert x and adjust x for h (now to become w) - bSwap = true; - ssd1306_swap(x, y); - x = WIDTH - x - 1; - x -= (h-1); - break; - case 2: - // 180 degree rotation, invert x and y - then shift y around for height. - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - y -= (h-1); - break; - case 3: - // 270 degree rotation, swap x & y for rotation, then invert y - bSwap = true; - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - break; - } - - if(bSwap) { - drawFastHLineInternal(x, y, h, color); - } else { - drawFastVLineInternal(x, y, h, color); - } -} - - -void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color) { - - // do nothing if we're off the left or right side of the screen - if(x < 0 || x >= WIDTH) { return; } - - // make sure we don't try to draw below 0 - if(__y < 0) { - // __y is negative, this will subtract enough from __h to account for __y being 0 - __h += __y; - __y = 0; - - } - - // make sure we don't go past the height of the display - if( (__y + __h) > HEIGHT) { - __h = (HEIGHT - __y); - } - - // if our height is now negative, punt - if(__h <= 0) { - return; - } - - // this display doesn't need ints for coordinates, use local byte registers for faster juggling - register uint8_t y = __y; - register uint8_t h = __h; - - - // set up the pointer for fast movement through the buffer - register uint8_t *pBuf = buffer; - // adjust the buffer pointer for the current row - pBuf += ((y/8) * SSD1306_LCDWIDTH); - // and offset x columns in - pBuf += x; - - // do the first partial byte, if necessary - this requires some masking - register uint8_t mod = (y&7); - if(mod) { - // mask off the high n bits we want to set - mod = 8-mod; - - // note - lookup table results in a nearly 10% performance improvement in fill* functions - // register uint8_t mask = ~(0xFF >> (mod)); - static uint8_t premask[8] = {0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; - register uint8_t mask = premask[mod]; - - // adjust the mask if we're not going to reach the end of this byte - if( h < mod) { - mask &= (0XFF >> (mod-h)); - } - - switch (color) - { - case WHITE: *pBuf |= mask; break; - case BLACK: *pBuf &= ~mask; break; - case INVERSE: *pBuf ^= mask; break; - } - - // fast exit if we're done here! - if(h= 8) { - if (color == INVERSE) { // separate copy of the code so we don't impact performance of the black/white write version with an extra comparison per loop - do { - *pBuf=~(*pBuf); - - // adjust the buffer forward 8 rows worth of data - pBuf += SSD1306_LCDWIDTH; - - // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) - h -= 8; - } while(h >= 8); - } - else { - // store a local value to work with - register uint8_t val = (color == WHITE) ? 255 : 0; - - do { - // write our value in - *pBuf = val; - - // adjust the buffer forward 8 rows worth of data - pBuf += SSD1306_LCDWIDTH; - - // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) - h -= 8; - } while(h >= 8); - } - } - - // now do the final partial byte, if necessary - if(h) { - mod = h & 7; - // this time we want to mask the low bits of the byte, vs the high bits we did above - // register uint8_t mask = (1 << mod) - 1; - // note - lookup table results in a nearly 10% performance improvement in fill* functions - static uint8_t postmask[8] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F }; - register uint8_t mask = postmask[mod]; - switch (color) - { - case WHITE: *pBuf |= mask; break; - case BLACK: *pBuf &= ~mask; break; - case INVERSE: *pBuf ^= mask; break; - } - } -} diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h deleted file mode 100644 index 1d43dfddf..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h +++ /dev/null @@ -1,186 +0,0 @@ -/********************************************************************* -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ -#ifndef _Adafruit_SSD1306_H_ -#define _Adafruit_SSD1306_H_ - -#if ARDUINO >= 100 - #include "Arduino.h" - #define WIRE_WRITE Wire.write -#else - #include "WProgram.h" - #define WIRE_WRITE Wire.send -#endif - -#if defined(__SAM3X8E__) - typedef volatile RwReg PortReg; - typedef uint32_t PortMask; - #define HAVE_PORTREG -#elif defined(ARDUINO_ARCH_SAMD) -// not supported -#elif defined(ESP8266) || defined(ESP32) || defined(ARDUINO_STM32_FEATHER) || defined(__arc__) - typedef volatile uint32_t PortReg; - typedef uint32_t PortMask; -#elif defined(__AVR__) - typedef volatile uint8_t PortReg; - typedef uint8_t PortMask; - #define HAVE_PORTREG -#else - // chances are its 32 bit so assume that - typedef volatile uint32_t PortReg; - typedef uint32_t PortMask; -#endif - -#include -#include - -#define BLACK 0 -#define WHITE 1 -#define INVERSE 2 - -#define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D -// Address for 128x32 is 0x3C -// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded) - -/*========================================================================= - SSD1306 Displays - ----------------------------------------------------------------------- - The driver is used in multiple displays (128x64, 128x32, etc.). - Select the appropriate display below to create an appropriately - sized framebuffer, etc. - - SSD1306_128_64 128x64 pixel display - - SSD1306_128_32 128x32 pixel display - - SSD1306_96_16 - - -----------------------------------------------------------------------*/ - #define SSD1306_128_64 -// #define SSD1306_128_32 -// #define SSD1306_96_16 -/*=========================================================================*/ - -#if defined SSD1306_128_64 && defined SSD1306_128_32 - #error "Only one SSD1306 display can be specified at once in SSD1306.h" -#endif -#if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16 - #error "At least one SSD1306 display must be specified in SSD1306.h" -#endif - -#if defined SSD1306_128_64 - #define SSD1306_LCDWIDTH 128 - #define SSD1306_LCDHEIGHT 64 -#endif -#if defined SSD1306_128_32 - #define SSD1306_LCDWIDTH 128 - #define SSD1306_LCDHEIGHT 32 -#endif -#if defined SSD1306_96_16 - #define SSD1306_LCDWIDTH 96 - #define SSD1306_LCDHEIGHT 16 -#endif - -#define SSD1306_SETCONTRAST 0x81 -#define SSD1306_DISPLAYALLON_RESUME 0xA4 -#define SSD1306_DISPLAYALLON 0xA5 -#define SSD1306_NORMALDISPLAY 0xA6 -#define SSD1306_INVERTDISPLAY 0xA7 -#define SSD1306_DISPLAYOFF 0xAE -#define SSD1306_DISPLAYON 0xAF - -#define SSD1306_SETDISPLAYOFFSET 0xD3 -#define SSD1306_SETCOMPINS 0xDA - -#define SSD1306_SETVCOMDETECT 0xDB - -#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 -#define SSD1306_SETPRECHARGE 0xD9 - -#define SSD1306_SETMULTIPLEX 0xA8 - -#define SSD1306_SETLOWCOLUMN 0x00 -#define SSD1306_SETHIGHCOLUMN 0x10 - -#define SSD1306_SETSTARTLINE 0x40 - -#define SSD1306_MEMORYMODE 0x20 -#define SSD1306_COLUMNADDR 0x21 -#define SSD1306_PAGEADDR 0x22 - -#define SSD1306_COMSCANINC 0xC0 -#define SSD1306_COMSCANDEC 0xC8 - -#define SSD1306_SEGREMAP 0xA0 - -#define SSD1306_CHARGEPUMP 0x8D - -#define SSD1306_EXTERNALVCC 0x1 -#define SSD1306_SWITCHCAPVCC 0x2 - -// Scrolling #defines -#define SSD1306_ACTIVATE_SCROLL 0x2F -#define SSD1306_DEACTIVATE_SCROLL 0x2E -#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 -#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 -#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 -#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 -#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A - -class Adafruit_SSD1306 : public Adafruit_GFX { - public: - Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); - Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS); - Adafruit_SSD1306(int8_t RST = -1); - - void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS, bool reset=true); - void ssd1306_command(uint8_t c); - - void clearDisplay(void); - void invertDisplay(uint8_t i); - void display(); - - void startscrollright(uint8_t start, uint8_t stop); - void startscrollleft(uint8_t start, uint8_t stop); - - void startscrolldiagright(uint8_t start, uint8_t stop); - void startscrolldiagleft(uint8_t start, uint8_t stop); - void stopscroll(void); - - void dim(boolean dim); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - private: - int8_t _i2caddr, _vccstate, sid, sclk, dc, rst, cs; - void fastSPIwrite(uint8_t c); - - boolean hwSPI; -#ifdef HAVE_PORTREG - PortReg *mosiport, *clkport, *csport, *dcport; - PortMask mosipinmask, clkpinmask, cspinmask, dcpinmask; -#endif - - inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); - inline void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) __attribute__((always_inline)); - -}; - -#endif /* _Adafruit_SSD1306_H_ */ diff --git a/lib/Adafruit_SSD1306-1.1.2/README.md b/lib/Adafruit_SSD1306-1.1.2/README.md deleted file mode 100644 index d76bb285c..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Adafruit_SSD1306 - - -## Compatibility - -MCU | Tested Works | Doesn't Work | Not Tested | Notes ------------------- | :----------: | :----------: | :---------: | ----- -Atmega328 @ 16MHz | X | | | -Atmega328 @ 12MHz | X | | | -Atmega32u4 @ 16MHz | X | | | -Atmega32u4 @ 8MHz | X | | | -ESP8266 | X | | | change OLED_RESET to different pin if using default I2C pins D4/D5. -Atmega2560 @ 16MHz | X | | | -ATSAM3X8E | X | | | -ATSAM21D | X | | | -ATtiny85 @ 16MHz | | X | | -ATtiny85 @ 8MHz | | X | | -Intel Curie @ 32MHz | | | X | -STM32F2 | | | X | - - * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini - * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V - * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 - * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro - * ESP8266 : Adafruit Huzzah - * ATmega2560 @ 16MHz : Arduino Mega - * ATSAM3X8E : Arduino Due - * ATSAM21D : Arduino Zero, M0 Pro - * ATtiny85 @ 16MHz : Adafruit Trinket 5V - * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V - - diff --git a/lib/Adafruit_SSD1306-1.1.2/README.txt b/lib/Adafruit_SSD1306-1.1.2/README.txt deleted file mode 100644 index 420cc153c..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/README.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -Scrolling code contributed by Michael Gregg -BSD license, check license.txt for more information -All text above must be included in any redistribution - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_SSD1306. Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h - -Place the Adafruit_SSD1306 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE. - -You will also have to download the Adafruit GFX Graphics core which does all the circles, text, rectangles, etc. You can get it from -https://github.com/adafruit/Adafruit-GFX-Library -and download/install that library as well \ No newline at end of file diff --git a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino deleted file mode 100644 index b3b8bfa9a..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino +++ /dev/null @@ -1,375 +0,0 @@ -/********************************************************************* -This is an example for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -This example is for a 128x32 size display using I2C to communicate -3 pins are required to interface (2 I2C and one reset) - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -#define OLED_RESET 4 -Adafruit_SSD1306 display(OLED_RESET); - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 32) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - delay(1); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); - delay(1); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - delay(1); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - delay(1); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x32 size display using SPI to communicate -4 or 5 pins are required to interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -// If using software SPI (the default case): -#define OLED_MOSI 9 -#define OLED_CLK 10 -#define OLED_DC 11 -#define OLED_CS 12 -#define OLED_RESET 13 -Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); - -/* Uncomment this block to use hardware SPI -#define OLED_DC 6 -#define OLED_CS 7 -#define OLED_RESET 8 -Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); -*/ - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 32) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC); - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x64 size display using I2C to communicate -3 pins are required to interface (2 I2C and one reset) - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -#define OLED_RESET 4 -Adafruit_SSD1306 display(OLED_RESET); - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 64) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64) - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - delay(1); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); - delay(1); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - delay(1); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - delay(1); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x64 size display using SPI to communicate -4 or 5 pins are required to interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -// If using software SPI (the default case): -#define OLED_MOSI 9 -#define OLED_CLK 10 -#define OLED_DC 11 -#define OLED_CS 12 -#define OLED_RESET 13 -Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); - -/* Uncomment this block to use hardware SPI -#define OLED_DC 6 -#define OLED_CS 7 -#define OLED_RESET 8 -Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); -*/ - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 64) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC); - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i -sentence=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! -paragraph=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! -category=Display -url=https://github.com/adafruit/Adafruit_SSD1306 -architectures=* diff --git a/lib/Adafruit_SSD1306-1.1.2/license.txt b/lib/Adafruit_SSD1306-1.1.2/license.txt deleted file mode 100644 index f6a0f22b8..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/license.txt +++ /dev/null @@ -1,26 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2012, 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: -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. -3. Neither the name of the copyright holders nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 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. diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp deleted file mode 100644 index 08a41f78a..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp +++ /dev/null @@ -1,315 +0,0 @@ -// Based on the work by DFRobot - -#include "LiquidCrystal_I2C.h" -#include -#if defined(ARDUINO) && ARDUINO >= 100 - -#include "Arduino.h" - -#define printIIC(args) Wire.write(args) -inline size_t LiquidCrystal_I2C::write(uint8_t value) { - send(value, Rs); - return 1; -} - -#else -#include "WProgram.h" - -#define printIIC(args) Wire.send(args) -inline void LiquidCrystal_I2C::write(uint8_t value) { - send(value, Rs); -} - -#endif -#include "Wire.h" - - - -// When the display powers up, it is configured as follows: -// -// 1. Display clear -// 2. Function set: -// DL = 1; 8-bit interface data -// N = 0; 1-line display -// F = 0; 5x8 dot character font -// 3. Display on/off control: -// D = 0; Display off -// C = 0; Cursor off -// B = 0; Blinking off -// 4. Entry mode set: -// I/D = 1; Increment by 1 -// S = 0; No shift -// -// Note, however, that resetting the Arduino doesn't reset the LCD, so we -// can't assume that its in that state when a sketch starts (and the -// LiquidCrystal constructor is called). - -LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows) -{ - _Addr = lcd_Addr; - _cols = lcd_cols; - _rows = lcd_rows; - _backlightval = LCD_NOBACKLIGHT; -} - -void LiquidCrystal_I2C::init(){ - init_priv(); -} - -void LiquidCrystal_I2C::init_priv() -{ - Wire.begin(); - _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; - begin(_cols, _rows); -} - -void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { - if (lines > 1) { - _displayfunction |= LCD_2LINE; - } - _numlines = lines; - - // for some 1 line displays you can select a 10 pixel high font - if ((dotsize != 0) && (lines == 1)) { - _displayfunction |= LCD_5x10DOTS; - } - - // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! - // according to datasheet, we need at least 40ms after power rises above 2.7V - // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 - delay(50); - - // Now we pull both RS and R/W low to begin commands - expanderWrite(_backlightval); // reset expanderand turn backlight off (Bit 8 =1) - delay(1000); - - //put the LCD into 4 bit mode - // this is according to the hitachi HD44780 datasheet - // figure 24, pg 46 - - // we start in 8bit mode, try to set 4 bit mode - write4bits(0x03 << 4); - delayMicroseconds(4500); // wait min 4.1ms - - // second try - write4bits(0x03 << 4); - delayMicroseconds(4500); // wait min 4.1ms - - // third go! - write4bits(0x03 << 4); - delayMicroseconds(150); - - // finally, set to 4-bit interface - write4bits(0x02 << 4); - - - // set # lines, font size, etc. - command(LCD_FUNCTIONSET | _displayfunction); - - // turn the display on with no cursor or blinking default - _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; - display(); - - // clear it off - clear(); - - // Initialize to default text direction (for roman languages) - _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; - - // set the entry mode - command(LCD_ENTRYMODESET | _displaymode); - - home(); - -} - -/********** high level commands, for the user! */ -void LiquidCrystal_I2C::clear(){ - command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero - delayMicroseconds(2000); // this command takes a long time! -} - -void LiquidCrystal_I2C::home(){ - command(LCD_RETURNHOME); // set cursor position to zero - delayMicroseconds(2000); // this command takes a long time! -} - -void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){ - int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; - if ( row > _numlines ) { - row = _numlines-1; // we count rows starting w/0 - } - command(LCD_SETDDRAMADDR | (col + row_offsets[row])); -} - -// Turn the display on/off (quickly) -void LiquidCrystal_I2C::noDisplay() { - _displaycontrol &= ~LCD_DISPLAYON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::display() { - _displaycontrol |= LCD_DISPLAYON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// Turns the underline cursor on/off -void LiquidCrystal_I2C::noCursor() { - _displaycontrol &= ~LCD_CURSORON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::cursor() { - _displaycontrol |= LCD_CURSORON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// Turn on and off the blinking cursor -void LiquidCrystal_I2C::noBlink() { - _displaycontrol &= ~LCD_BLINKON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::blink() { - _displaycontrol |= LCD_BLINKON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// These commands scroll the display without changing the RAM -void LiquidCrystal_I2C::scrollDisplayLeft(void) { - command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); -} -void LiquidCrystal_I2C::scrollDisplayRight(void) { - command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); -} - -// This is for text that flows Left to Right -void LiquidCrystal_I2C::leftToRight(void) { - _displaymode |= LCD_ENTRYLEFT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This is for text that flows Right to Left -void LiquidCrystal_I2C::rightToLeft(void) { - _displaymode &= ~LCD_ENTRYLEFT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This will 'right justify' text from the cursor -void LiquidCrystal_I2C::autoscroll(void) { - _displaymode |= LCD_ENTRYSHIFTINCREMENT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This will 'left justify' text from the cursor -void LiquidCrystal_I2C::noAutoscroll(void) { - _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// Allows us to fill the first 8 CGRAM locations -// with custom characters -void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) { - location &= 0x7; // we only have 8 locations 0-7 - command(LCD_SETCGRAMADDR | (location << 3)); - for (int i=0; i<8; i++) { - write(charmap[i]); - } -} - -// Turn the (optional) backlight off/on -void LiquidCrystal_I2C::noBacklight(void) { - _backlightval=LCD_NOBACKLIGHT; - expanderWrite(0); -} - -void LiquidCrystal_I2C::backlight(void) { - _backlightval=LCD_BACKLIGHT; - expanderWrite(0); -} - - - -/*********** mid level commands, for sending data/cmds */ - -inline void LiquidCrystal_I2C::command(uint8_t value) { - send(value, 0); -} - - -/************ low level data pushing commands **********/ - -// write either command or data -void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { - uint8_t highnib=value&0xf0; - uint8_t lownib=(value<<4)&0xf0; - write4bits((highnib)|mode); - write4bits((lownib)|mode); -} - -void LiquidCrystal_I2C::write4bits(uint8_t value) { - expanderWrite(value); - pulseEnable(value); -} - -void LiquidCrystal_I2C::expanderWrite(uint8_t _data){ - Wire.beginTransmission(_Addr); - printIIC((int)(_data) | _backlightval); - Wire.endTransmission(); -} - -void LiquidCrystal_I2C::pulseEnable(uint8_t _data){ - expanderWrite(_data | En); // En high - delayMicroseconds(1); // enable pulse must be >450ns - - expanderWrite(_data & ~En); // En low - delayMicroseconds(50); // commands need > 37us to settle -} - - -// Alias functions - -void LiquidCrystal_I2C::cursor_on(){ - cursor(); -} - -void LiquidCrystal_I2C::cursor_off(){ - noCursor(); -} - -void LiquidCrystal_I2C::blink_on(){ - blink(); -} - -void LiquidCrystal_I2C::blink_off(){ - noBlink(); -} - -void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){ - createChar(char_num, rows); -} - -void LiquidCrystal_I2C::setBacklight(uint8_t new_val){ - if(new_val){ - backlight(); // turn backlight on - }else{ - noBacklight(); // turn backlight off - } -} - -void LiquidCrystal_I2C::printstr(const char c[]){ - //This function is not identical to the function used for "real" I2C displays - //it's here so the user sketch doesn't have to be changed - print(c); -} - - -// unsupported API functions -void LiquidCrystal_I2C::off(){} -void LiquidCrystal_I2C::on(){} -void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {} -uint8_t LiquidCrystal_I2C::status(){return 0;} -uint8_t LiquidCrystal_I2C::keypad (){return 0;} -uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;} -void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end){} -void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_row_end){} -void LiquidCrystal_I2C::setContrast(uint8_t new_val){} - - diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h deleted file mode 100644 index faf19fbea..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h +++ /dev/null @@ -1,126 +0,0 @@ -//YWROBOT -#ifndef LiquidCrystal_I2C_h -#define LiquidCrystal_I2C_h - -#include -#include "Print.h" -#include - -// commands -#define LCD_CLEARDISPLAY 0x01 -#define LCD_RETURNHOME 0x02 -#define LCD_ENTRYMODESET 0x04 -#define LCD_DISPLAYCONTROL 0x08 -#define LCD_CURSORSHIFT 0x10 -#define LCD_FUNCTIONSET 0x20 -#define LCD_SETCGRAMADDR 0x40 -#define LCD_SETDDRAMADDR 0x80 - -// flags for display entry mode -#define LCD_ENTRYRIGHT 0x00 -#define LCD_ENTRYLEFT 0x02 -#define LCD_ENTRYSHIFTINCREMENT 0x01 -#define LCD_ENTRYSHIFTDECREMENT 0x00 - -// flags for display on/off control -#define LCD_DISPLAYON 0x04 -#define LCD_DISPLAYOFF 0x00 -#define LCD_CURSORON 0x02 -#define LCD_CURSOROFF 0x00 -#define LCD_BLINKON 0x01 -#define LCD_BLINKOFF 0x00 - -// flags for display/cursor shift -#define LCD_DISPLAYMOVE 0x08 -#define LCD_CURSORMOVE 0x00 -#define LCD_MOVERIGHT 0x04 -#define LCD_MOVELEFT 0x00 - -// flags for function set -#define LCD_8BITMODE 0x10 -#define LCD_4BITMODE 0x00 -#define LCD_2LINE 0x08 -#define LCD_1LINE 0x00 -#define LCD_5x10DOTS 0x04 -#define LCD_5x8DOTS 0x00 - -// flags for backlight control -#define LCD_BACKLIGHT 0x08 -#define LCD_NOBACKLIGHT 0x00 - -#define En B00000100 // Enable bit -#define Rw B00000010 // Read/Write bit -#define Rs B00000001 // Register select bit - -class LiquidCrystal_I2C : public Print { -public: - LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); - void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); - void clear(); - void home(); - void noDisplay(); - void display(); - void noBlink(); - void blink(); - void noCursor(); - void cursor(); - void scrollDisplayLeft(); - void scrollDisplayRight(); - void printLeft(); - void printRight(); - void leftToRight(); - void rightToLeft(); - void shiftIncrement(); - void shiftDecrement(); - void noBacklight(); - void backlight(); - void autoscroll(); - void noAutoscroll(); - void createChar(uint8_t, uint8_t[]); - void setCursor(uint8_t, uint8_t); -#if defined(ARDUINO) && ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - void command(uint8_t); - void init(); - -////compatibility API function aliases -void blink_on(); // alias for blink() -void blink_off(); // alias for noBlink() -void cursor_on(); // alias for cursor() -void cursor_off(); // alias for noCursor() -void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() -void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() -void printstr(const char[]); - -////Unsupported API functions (not implemented in this library) -uint8_t status(); -void setContrast(uint8_t new_val); -uint8_t keypad(); -void setDelay(int,int); -void on(); -void off(); -uint8_t init_bargraph(uint8_t graphtype); -void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); -void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); - - -private: - void init_priv(); - void send(uint8_t, uint8_t); - void write4bits(uint8_t); - void expanderWrite(uint8_t); - void pulseEnable(uint8_t); - uint8_t _Addr; - uint8_t _displayfunction; - uint8_t _displaycontrol; - uint8_t _displaymode; - uint8_t _numlines; - uint8_t _cols; - uint8_t _rows; - uint8_t _backlightval; -}; - -#endif diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o deleted file mode 100644 index bca78e0d24dfc30341ef0d5e91cf127ee829e126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41564 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 diff --git a/lib/LiquidCrystal_I2C-1.1.3/README.md b/lib/LiquidCrystal_I2C-1.1.3/README.md deleted file mode 100644 index aee58d3a2..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# LiquidCrystal_I2C -LiquidCrystal Arduino library for the DFRobot I2C LCD displays diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde deleted file mode 100644 index 492612d71..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde +++ /dev/null @@ -1,70 +0,0 @@ -//YWROBOT -//Compatible with the Arduino IDE 1.0 -//Library version:1.1 -#include -#include - -#if defined(ARDUINO) && ARDUINO >= 100 -#define printByte(args) write(args); -#else -#define printByte(args) print(args,BYTE); -#endif - -uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; -uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; -uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; -uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0}; -uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0}; -uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0}; -uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0}; -uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4}; - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.backlight(); - - lcd.createChar(0, bell); - lcd.createChar(1, note); - lcd.createChar(2, clock); - lcd.createChar(3, heart); - lcd.createChar(4, duck); - lcd.createChar(5, check); - lcd.createChar(6, cross); - lcd.createChar(7, retarrow); - lcd.home(); - - lcd.print("Hello world..."); - lcd.setCursor(0, 1); - lcd.print(" i "); - lcd.printByte(3); - lcd.print(" arduinos!"); - delay(5000); - displayKeyCodes(); - -} - -// display all keycodes -void displayKeyCodes(void) { - uint8_t i = 0; - while (1) { - lcd.clear(); - lcd.print("Codes 0x"); lcd.print(i, HEX); - lcd.print("-0x"); lcd.print(i+16, HEX); - lcd.setCursor(0, 1); - for (int j=0; j<16; j++) { - lcd.printByte(i+j); - } - i+=16; - - delay(4000); - } -} - -void loop() -{ - -} - diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde deleted file mode 100644 index 6dfdee8f8..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde +++ /dev/null @@ -1,28 +0,0 @@ -//YWROBOT -//Compatible with the Arduino IDE 1.0 -//Library version:1.1 -#include -#include - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.init(); - // Print a message to the LCD. - lcd.backlight(); - lcd.setCursor(3,0); - lcd.print("Hello, world!"); - lcd.setCursor(2,1); - lcd.print("Ywrobot Arduino!"); - lcd.setCursor(0,2); - lcd.print("Arduino LCM IIC 2004"); - lcd.setCursor(2,3); - lcd.print("Power By Ec-yuan!"); -} - - -void loop() -{ -} diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde deleted file mode 100644 index fdbbc64eb..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Displays text sent over the serial port (e.g. from the Serial Monitor) on - * an attached LCD. - * YWROBOT - *Compatible with the Arduino IDE 1.0 - *Library version:1.1 - */ -#include -#include - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.backlight(); - Serial.begin(9600); -} - -void loop() -{ - // when characters arrive over the serial port... - if (Serial.available()) { - // wait a bit for the entire message to arrive - delay(100); - // clear the screen - lcd.clear(); - // read all the available characters - while (Serial.available() > 0) { - // display each character to the LCD - lcd.write(Serial.read()); - } - } -} diff --git a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt deleted file mode 100644 index 8c450a9e9..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt +++ /dev/null @@ -1,46 +0,0 @@ -########################################### -# Syntax Coloring Map For LiquidCrystal_I2C -########################################### - -########################################### -# Datatypes (KEYWORD1) -########################################### - -LiquidCrystal_I2C KEYWORD1 - -########################################### -# Methods and Functions (KEYWORD2) -########################################### -init KEYWORD2 -begin KEYWORD2 -clear KEYWORD2 -home KEYWORD2 -noDisplay KEYWORD2 -display KEYWORD2 -noBlink KEYWORD2 -blink KEYWORD2 -noCursor KEYWORD2 -cursor KEYWORD2 -scrollDisplayLeft KEYWORD2 -scrollDisplayRight KEYWORD2 -leftToRight KEYWORD2 -rightToLeft KEYWORD2 -shiftIncrement KEYWORD2 -shiftDecrement KEYWORD2 -noBacklight KEYWORD2 -backlight KEYWORD2 -autoscroll KEYWORD2 -noAutoscroll KEYWORD2 -createChar KEYWORD2 -setCursor KEYWORD2 -print KEYWORD2 -blink_on KEYWORD2 -blink_off KEYWORD2 -cursor_on KEYWORD2 -cursor_off KEYWORD2 -setBacklight KEYWORD2 -load_custom_character KEYWORD2 -printstr KEYWORD2 -########################################### -# Constants (LITERAL1) -########################################### diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.json b/lib/LiquidCrystal_I2C-1.1.3/library.json deleted file mode 100644 index 5a23a3989..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "LiquidCrystal_I2C", - "keywords": "LCD, liquidcrystal, I2C", - "description": "A library for DFRobot I2C LCD displays", - "repository": - { - "type": "git", - "url": "https://github.com/marcoschwartz/LiquidCrystal_I2C.git" - }, - "frameworks": "arduino", - "platforms": - [ - "atmelavr" - ] -} \ No newline at end of file diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.properties b/lib/LiquidCrystal_I2C-1.1.3/library.properties deleted file mode 100644 index ad8b02c15..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=LiquidCrystal_I2C -version=1.1.2 -author=Frank de Brabander -maintainer=Marco Schwartz -sentence=A library for I2C LCD displays. -paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES. -category=Display -url=https://github.com/marcoschwartz/LiquidCrystal_I2C -architectures=* diff --git a/lib/TasmotaTFT-1.0.1/README.txt b/lib/TasmotaTFT-1.0.1/README.txt deleted file mode 100644 index 7c5905014..000000000 --- a/lib/TasmotaTFT-1.0.1/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -This is a library for the Adafruit ILI9341 display products - -This library works with the Adafruit 2.8" Touch Shield V2 (SPI) - ----> 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 - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341. - -Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE - -Also requires the Adafruit_GFX library for Arduino. diff --git a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino deleted file mode 100644 index e523a92d5..000000000 --- a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino +++ /dev/null @@ -1,360 +0,0 @@ -/*************************************************** - This is our GFX example 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 "SPI.h" -#include "Adafruit_GFX.h" -#include "TasmotaTFT.h" - -#define TFT_DC 16 -#define TFT_CS 15 - -TasmotaTFT tft = TasmotaTFT(ILI9341, TFT_CS, TFT_DC); - -void setup() { - Serial.begin(115200); - Serial.println("ILI9341 Test!"); - - tft.begin(); - - // read diagnostics (optional but can help debug problems) - uint8_t x = tft.readcommand8(TFT_RDMODE); - Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDMADCTL); - Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDPIXFMT); - Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDIMGFMT); - Serial.print("Image Format: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDSELFDIAG); - Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); - - Serial.println(F("Benchmark Time (microseconds)")); - delay(10); - Serial.print(F("Screen fill ")); - Serial.println(testFillScreen()); - delay(500); - - Serial.print(F("Text ")); - Serial.println(testText()); - delay(3000); - - Serial.print(F("Lines ")); - Serial.println(testLines(TFT_CYAN)); - delay(500); - - Serial.print(F("Horiz/Vert Lines ")); - Serial.println(testFastLines(TFT_RED, TFT_BLUE)); - delay(500); - - Serial.print(F("Rectangles (outline) ")); - Serial.println(testRects(TFT_GREEN)); - delay(500); - - Serial.print(F("Rectangles (filled) ")); - Serial.println(testFilledRects(TFT_YELLOW, TFT_MAGENTA)); - delay(500); - - Serial.print(F("Circles (filled) ")); - Serial.println(testFilledCircles(10, TFT_MAGENTA)); - - Serial.print(F("Circles (outline) ")); - Serial.println(testCircles(10, TFT_WHITE)); - delay(500); - - Serial.print(F("Triangles (outline) ")); - Serial.println(testTriangles()); - delay(500); - - Serial.print(F("Triangles (filled) ")); - Serial.println(testFilledTriangles()); - delay(500); - - Serial.print(F("Rounded rects (outline) ")); - Serial.println(testRoundRects()); - delay(500); - - Serial.print(F("Rounded rects (filled) ")); - Serial.println(testFilledRoundRects()); - delay(500); - - Serial.println(F("Done!")); - -} - - -void loop(void) { - for(uint8_t rotation=0; rotation<4; rotation++) { - tft.setRotation(rotation); - testText(); - delay(1000); - } -} - -unsigned long testFillScreen() { - unsigned long start = micros(); - tft.fillScreen(TFT_BLACK); - yield(); - tft.fillScreen(TFT_RED); - yield(); - tft.fillScreen(TFT_GREEN); - yield(); - tft.fillScreen(TFT_BLUE); - yield(); - tft.fillScreen(TFT_BLACK); - yield(); - return micros() - start; -} - -unsigned long testText() { - tft.fillScreen(TFT_BLACK); - unsigned long start = micros(); - tft.setCursor(0, 0); - tft.setTextColor(TFT_WHITE); tft.setTextSize(1); - tft.println("Hello World!"); - tft.setTextColor(TFT_YELLOW); tft.setTextSize(2); - tft.println(1234.56); - tft.setTextColor(TFT_RED); tft.setTextSize(3); - tft.println(0xDEADBEEF, HEX); - tft.println(); - tft.setTextColor(TFT_GREEN); - tft.setTextSize(5); - tft.println("Groop"); - tft.setTextSize(2); - tft.println("I implore thee,"); - tft.setTextSize(1); - tft.println("my foonting turlingdromes."); - tft.println("And hooptiously drangle me"); - tft.println("with crinkly bindlewurdles,"); - tft.println("Or I will rend thee"); - tft.println("in the gobberwarts"); - tft.println("with my blurglecruncheon,"); - tft.println("see if I don't!"); - return micros() - start; -} - -unsigned long testLines(uint16_t color) { - unsigned long start, t; - int x1, y1, x2, y2, - w = tft.width(), - h = tft.height(); - - tft.fillScreen(TFT_BLACK); - yield(); - - x1 = y1 = 0; - y2 = h - 1; - start = micros(); - for(x2=0; x20; i-=6) { - i2 = i / 2; - start = micros(); - tft.fillRect(cx-i2, cy-i2, i, i, color1); - t += micros() - start; - // Outlines are not included in timing results - tft.drawRect(cx-i2, cy-i2, i, i, color2); - yield(); - } - - return t; -} - -unsigned long testFilledCircles(uint8_t radius, uint16_t color) { - unsigned long start; - int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; - - tft.fillScreen(TFT_BLACK); - start = micros(); - for(x=radius; x10; i-=5) { - start = micros(); - tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(0, i*10, i*10)); - t += micros() - start; - tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(i*10, i*10, 0)); - yield(); - } - - return t; -} - -unsigned long testRoundRects() { - unsigned long start; - int w, i, i2, - cx = tft.width() / 2 - 1, - cy = tft.height() / 2 - 1; - - tft.fillScreen(TFT_BLACK); - w = min(tft.width(), tft.height()); - start = micros(); - for(i=0; i20; i-=6) { - i2 = i / 2; - tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); - yield(); - } - - return micros() - start; -} \ No newline at end of file diff --git a/lib/TasmotaTFT-1.0.1/keywords.txt b/lib/TasmotaTFT-1.0.1/keywords.txt deleted file mode 100644 index 50ac35436..000000000 --- a/lib/TasmotaTFT-1.0.1/keywords.txt +++ /dev/null @@ -1,41 +0,0 @@ -####################################### -# Syntax Coloring Map for TasmotaTFT -# (esp8266) -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -TasmotaTFT KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -begin KEYWORD2 -setScrollStart KEYWORD2 -setScrollMargins KEYWORD2 -setAddrWindow KEYWORD2 -pushColor KEYWORD2 -fillScreen KEYWORD2 -drawPixel KEYWORD2 -drawFastVLine KEYWORD2 -drawFastHLine KEYWORD2 -fillRect KEYWORD2 -setRotation KEYWORD2 -invertDisplay KEYWORD2 -showDisplay KEYWORD2 -color565 KEYWORD2 -readdata KEYWORD2 -readcommand8 KEYWORD2 -spiwrite KEYWORD2 -writecommand KEYWORD2 -writedata KEYWORD2 -commandList KEYWORD2 -spiread KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/lib/TasmotaTFT-1.0.1/library.json b/lib/TasmotaTFT-1.0.1/library.json deleted file mode 100644 index f5cd5216f..000000000 --- a/lib/TasmotaTFT-1.0.1/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "TasmotaTFT", - "version": "1.0.1", - "keywords": [ - "spi", "io", "tft", "TasmotaTFT" - ], - "description": "Library for ILI9341, ILI9481 and ILI9486 displays", - "repository": - { - "type": "git", - "url": "https://github.com/arendst/Sonoff-Tasmota/lib/TasmotaTFT" - }, - "frameworks": "arduino", - "platforms": "espressif8266" -} diff --git a/lib/TasmotaTFT-1.0.1/library.properties b/lib/TasmotaTFT-1.0.1/library.properties deleted file mode 100644 index f012244b3..000000000 --- a/lib/TasmotaTFT-1.0.1/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=TasmotaTFT -version=1.0.1 -author=Theo Arends -maintainer=Theo Arends -sentence=Library for ILI9341, ILI9481 and ILI9486 displays -paragraph= -category=Display -url= -architectures=esp8266 diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp deleted file mode 100644 index ad6ebc9be..000000000 --- a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* - TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota - - Copyright (C) 2018 Adafruit and Theo Arends - - This library is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/*********************************************************************************************\ - * See original Adafruit ILI9341 license text below - * - * Based in Adafruit_ILI9341 v1.0.11 - * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD using hardware SPI only - * - * These displays use hardware SPI to communicate, 4 or 5 pins are required to interface (RST is optional) -\*********************************************************************************************/ - -#include "TasmotaTFT.h" -#include -#include "pins_arduino.h" -#include "wiring_private.h" -#include - -static inline void spi_begin(void) __attribute__((always_inline)); -static inline void spi_begin(void) { - SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0)); -} -static inline void spi_end(void) __attribute__((always_inline)); -static inline void spi_end(void) { - SPI.endTransaction(); -} - -struct _sSize -{ - int16_t width; - int16_t height; -}; -_sSize _size[TFT_MAX] = { - {240, 320}, // ILI9340 / ILI9341 - {320, 480}, // ILI9481 / HX8357B - {320, 480} // ILI9486 -}; - -TasmotaTFT::TasmotaTFT(int8_t m, int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(_size[m].width, _size[m].height) { - _mod = m; - _w = _size[m].width; - _h = _size[m].height; - _cs = cs; - _dc = dc; - _rst = rst; - _mosi = _sclk = 0; -} - -void TasmotaTFT::writecommand(uint8_t c) -{ - digitalWrite(_dc, LOW); - digitalWrite(_sclk, LOW); - digitalWrite(_cs, LOW); - SPI.transfer(c); - digitalWrite(_cs, HIGH); -} - -void TasmotaTFT::writedata(uint8_t c) -{ - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(c); - digitalWrite(_cs, HIGH); -} - -void TasmotaTFT::begin(void) -{ - pinMode(_dc, OUTPUT); - digitalWrite(_dc, LOW); - pinMode(_cs, OUTPUT); - digitalWrite(_cs, HIGH); - - SPI.begin(); - - // toggle RST low to reset - if (_rst > 0) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(100); - digitalWrite(_rst, LOW); - delay(100); - digitalWrite(_rst, HIGH); - delay(200); - } - - spi_begin(); - - if (_mod == ILI9341) { // 320 x 240 - writecommand(0xEF); // Display Supplier dependant - writedata(0x03); - writedata(0x80); - writedata(0x02); - - writecommand(0xCF); // Display Supplier dependant - writedata(0x00); - writedata(0XC1); - writedata(0X30); - - writecommand(0xED); // Display Supplier dependant - writedata(0x64); - writedata(0x03); - writedata(0X12); - writedata(0X81); - - writecommand(0xE8); // Display Supplier dependant - writedata(0x85); - writedata(0x00); - writedata(0x78); - - writecommand(0xCB); // Display Supplier dependant - writedata(0x39); - writedata(0x2C); - writedata(0x00); - writedata(0x34); - writedata(0x02); - - writecommand(0xF7); // Display Supplier dependant - writedata(0x20); - - writecommand(0xEA); // Display Supplier dependant - writedata(0x00); - writedata(0x00); - - writecommand(0xC0); // Power control 1 - writedata(0x23); // VRH[5:0] - - writecommand(0xC1); // Power control 2 - writedata(0x10); // SAP[2:0];BT[3:0] - - writecommand(0xC5); // VCM control 1 - writedata(0x3e); // Contrast - writedata(0x28); - - writecommand(0xC7); // VCM control 2 - writedata(0x86); // -- - - writecommand(0x36); // Memory Access Control - writedata(0x48); - - writecommand(0x3A); // Pixel Format - writedata(0x55); - - writecommand(0xB1); // Frame Control in Normal Mode - writedata(0x00); - writedata(0x18); - - writecommand(0xB6); // Display Function Control - writedata(0x08); - writedata(0x82); - writedata(0x27); - - writecommand(0xF2); // 3Gamma Function Disable - writedata(0x00); - - writecommand(0x26); // Gamma curve selected - writedata(0x01); - - writecommand(0xE0); // Positive Gamma - writedata(0x0F); - writedata(0x31); - writedata(0x2B); - writedata(0x0C); - writedata(0x0E); - writedata(0x08); - writedata(0x4E); - writedata(0xF1); - writedata(0x37); - writedata(0x07); - writedata(0x10); - writedata(0x03); - writedata(0x0E); - writedata(0x09); - writedata(0x00); - - writecommand(0xE1); // Negative Gamma - writedata(0x00); - writedata(0x0E); - writedata(0x14); - writedata(0x03); - writedata(0x11); - writedata(0x07); - writedata(0x31); - writedata(0xC1); - writedata(0x48); - writedata(0x08); - writedata(0x0F); - writedata(0x0C); - writedata(0x31); - writedata(0x36); - writedata(0x0F); - - writecommand(0x11); // Exit Sleep - spi_end(); - delay(120); - spi_begin(); - writecommand(0x29); // Display on - } - - else if (_mod == ILI9481) { // 480 x 320 - writecommand(0x11); // Exit Sleep - - spi_end(); - delay(20); - spi_begin(); - - writecommand(0xD0); // Power Setting - writedata(0x07); - writedata(0x42); - writedata(0x18); - - writecommand(0xD1); // VCOM Control - writedata(0x00); - writedata(0x07); - writedata(0x10); - - writecommand(0xD2); // Power Setting for Normal Mode - writedata(0x01); - writedata(0x02); - - writecommand(0xC0); // Panel Driving Setting - writedata(0x10); - writedata(0x3B); - writedata(0x00); - writedata(0x02); - writedata(0x11); - - writecommand(0xC5); // Frame Rate and Inversion Control - writedata(0x08); // 0x03 - - writecommand(0xC8); // Gamma Setting - writedata(0x00); - writedata(0x32); - writedata(0x36); - writedata(0x45); - writedata(0x06); - writedata(0x16); - writedata(0x37); - writedata(0x75); - writedata(0x77); - writedata(0x54); - writedata(0x0C); - writedata(0x00); - - writecommand(0x36); // Address Mode - writedata(0x0A); - - writecommand(0x3A); // Pixel Format - writedata(0x55); - - writecommand(0x2A); // Column Address - writedata(0x00); - writedata(0x00); - writedata(0x01); - writedata(0x3F); - - writecommand(0x2B); // Page Address - writedata(0x00); - writedata(0x00); - writedata(0x01); - writedata(0xDF); // 0xE0 - - spi_end(); - delay(120); - spi_begin(); - writecommand(0x29); // Display on - } - - else if (_mod == ILI9486) { // 480 x 320 - writecommand(0x01); // Soft reset -// writedata(0x00); - - spi_end(); - delay(50); - spi_begin(); - - writecommand(0x28); // Display off -// writedata(0x00); - - writecommand(0xC0); // Power Control 1 - writedata(0x0d); - writedata(0x0d); - - writecommand(0xC1); // Power Control 2 - writedata(0x43); - writedata(0x00); - - writecommand(0xC2); // Power Control 3 - writedata(0x00); - - writecommand(0xC5); // VCOM Control - writedata(0x00); - writedata(0x48); - - writecommand(0xB6); // Display Function Control - writedata(0x00); - writedata(0x22); // 0x42 = Rotate display 180 deg. - writedata(0x3B); - - writecommand(0xE0); // PGAMCTRL (Positive Gamma Control) - writedata(0x0f); - writedata(0x24); - writedata(0x1c); - writedata(0x0a); - writedata(0x0f); - writedata(0x08); - writedata(0x43); - writedata(0x88); - writedata(0x32); - writedata(0x0f); - writedata(0x10); - writedata(0x06); - writedata(0x0f); - writedata(0x07); - writedata(0x00); - - writecommand(0xE1); // NGAMCTRL (Negative Gamma Control) - writedata(0x0F); - writedata(0x38); - writedata(0x30); - writedata(0x09); - writedata(0x0f); - writedata(0x0f); - writedata(0x4e); - writedata(0x77); - writedata(0x3c); - writedata(0x07); - writedata(0x10); - writedata(0x05); - writedata(0x23); - writedata(0x1b); - writedata(0x00); - - writecommand(0x20); // Display Inversion OFF, 0x21 = ON - - writecommand(0x36); // Memory Access Control - writedata(0x0A); - - writecommand(0x3A); // Interface Pixel Format - writedata(0x55); - - writecommand(0x11); // Exit Sleep - spi_end(); - delay(150); - spi_begin(); - writecommand(0x29); // Display on - } - - spi_end(); -} - -void TasmotaTFT::setScrollStart(uint16_t start) -{ - spi_begin(); - writecommand(0x37); - writedata(start>>8); - writedata(start); - spi_end(); -} - -void TasmotaTFT::setScrollMargins(uint16_t top, uint16_t bottom) -{ - uint16_t height = _height - (top + bottom); - - spi_begin(); - writecommand(0x33); - writedata(top>>8); - writedata(top); - writedata(height>>8); - writedata(height); - writedata(bottom>>8); - writedata(bottom); - spi_end(); -} - -void TasmotaTFT::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) -{ - writecommand(TFT_CASET); // Column addr set - writedata(x0 >> 8); - writedata(x0 & 0xFF); // XSTART - writedata(x1 >> 8); - writedata(x1 & 0xFF); // XEND - - writecommand(TFT_PASET); // Row addr set - writedata(y0>>8); - writedata(y0); // YSTART - writedata(y1>>8); - writedata(y1); // YEND - - writecommand(TFT_RAMWR); // write to RAM -} - -void TasmotaTFT::pushColor(uint16_t color) -{ - spi_begin(); - - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(color >> 8); - SPI.transfer(color); - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawPixel(int16_t x, int16_t y, uint16_t color) -{ - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - - spi_begin(); - - setAddrWindow(x,y,x+1,y+1); - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(color >> 8); - SPI.transfer(color); - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawFastVLine(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; - - spi_begin(); - - setAddrWindow(x, y, x, y+h-1); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - while (h--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) -{ - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((x+w-1) >= _width) w = _width-x; - - spi_begin(); - - setAddrWindow(x, y, x+w-1, y); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - while (w--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::fillScreen(uint16_t color) -{ - fillRect(0, 0, _width, _height, color); -} - -// fill a rectangle -void TasmotaTFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) -{ - // rudimentary clipping (drawChar w/big text requires this) - if((x >= _width) || (y >= _height)) return; - if((x + w - 1) >= _width) w = _width - x; - if((y + h - 1) >= _height) h = _height - y; - - spi_begin(); - - setAddrWindow(x, y, x+w-1, y+h-1); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - for(y=h; y>0; y--) { - for(x=w; x>0; x--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t TasmotaTFT::color565(uint8_t r, uint8_t g, uint8_t b) -{ - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); -} - -#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 TasmotaTFT::setRotation(uint8_t m) -{ - rotation = m % 4; // can't be higher than 3 - switch (rotation) { - case 0: - m = (MADCTL_MX | MADCTL_BGR); - _width = _w; - _height = _h; - break; - case 1: - m = (MADCTL_MV | MADCTL_BGR); - _width = _h; - _height = _w; - break; - case 2: - m = (MADCTL_MY | MADCTL_BGR); - _width = _w; - _height = _h; - break; - case 3: - m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); - _width = _h; - _height = _w; - break; - } - - spi_begin(); - writecommand(TFT_MADCTL); - writedata(m); - spi_end(); -} - -void TasmotaTFT::invertDisplay(boolean i) -{ - spi_begin(); - writecommand(i ? TFT_INVON : TFT_INVOFF); - spi_end(); -} - -void TasmotaTFT::showDisplay(boolean i) -{ - spi_begin(); - writecommand(i ? TFT_DISPON : TFT_DISPOFF); - spi_end(); -} - -uint8_t TasmotaTFT::readdata(void) -{ - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - uint8_t r = SPI.transfer(0x00); - digitalWrite(_cs, HIGH); - - return r; -} - -uint8_t TasmotaTFT::readcommand8(uint8_t c, uint8_t index) -{ - spi_begin(); - - digitalWrite(_dc, LOW); // command - digitalWrite(_cs, LOW); - SPI.transfer(0xD9); // woo sekret command? - digitalWrite(_dc, HIGH); // data - SPI.transfer(0x10 + index); - digitalWrite(_cs, HIGH); - - digitalWrite(_dc, LOW); // command - digitalWrite(_sclk, LOW); - digitalWrite(_cs, LOW); - SPI.transfer(c); - - digitalWrite(_dc, HIGH); // data - uint8_t r = SPI.transfer(0x00); - digitalWrite(_cs, HIGH); - - spi_end(); - return r; -} - -/*************************************************** - 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 - ****************************************************/ diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h deleted file mode 100644 index 2577bb08d..000000000 --- a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota - - Copyright (C) 2018 Adafruit and Theo Arends - - This library is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef _TasmotaTFT_h -#define _TasmotaTFT_h -/*********************************************************************************************\ - * See original Adafruit ILI9341 license text below - * - * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD - * - * These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional) -\*********************************************************************************************/ - -#include "Arduino.h" -#include "Print.h" -#include - -// Supported TFT LCD drivers -#define ILI9340 0 // 320 x 240 -#define ILI9341 0 // 320 x 240 -#define ILI9481 1 // 480 x 320 -#define HX8357B 1 // 480 x 320 -#define ILI9486 2 // 480 x 320 -#define TFT_MAX 3 - -// Common driver registers -#define TFT_RDMODE 0x0A // Get Power Mode -#define TFT_RDMADCTL 0x0B // Get Address Mode -#define TFT_RDPIXFMT 0x0C // Get Pixel Format -#define TFT_RDIMGFMT 0x0D // Get Display Mode -#define TFT_RDSELFDIAG 0x0F // Get Diagnostic Result - -#define TFT_INVOFF 0x20 // Exit Invert Mode -#define TFT_INVON 0x21 // Enter Invert Mode -#define TFT_DISPOFF 0x28 // Set Display Off -#define TFT_DISPON 0x29 // Set Display on - -#define TFT_CASET 0x2A // Set Column Address -#define TFT_PASET 0x2B // Set Page Address -#define TFT_RAMWR 0x2C // Write Memory Start - -#define TFT_MADCTL 0x36 // Set Address Mode - -// Color definitions -#define TFT_BLACK 0x0000 /* 0, 0, 0 */ -#define TFT_NAVY 0x000F /* 0, 0, 128 */ -#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ -#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ -#define TFT_MAROON 0x7800 /* 128, 0, 0 */ -#define TFT_PURPLE 0x780F /* 128, 0, 128 */ -#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ -#define TFT_LIGHTGREY 0xC618 /* 192, 192, 192 */ -#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ -#define TFT_BLUE 0x001F /* 0, 0, 255 */ -#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ -#define TFT_CYAN 0x07FF /* 0, 255, 255 */ -#define TFT_RED 0xF800 /* 255, 0, 0 */ -#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ -#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ -#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ -#define TFT_ORANGE 0xFD20 /* 255, 165, 0 */ -#define TFT_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ -#define TFT_PINK 0xF81F - -class TasmotaTFT : public Adafruit_GFX { - public: - TasmotaTFT(int8_t _MODEL, int8_t _CS, int8_t _DC, int8_t _RST = -1); - void begin(void); - void setScrollStart(uint16_t start); - void setScrollMargins(uint16_t top, uint16_t bottom); - void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); - void pushColor(uint16_t color); - void fillScreen(uint16_t color); - void drawPixel(int16_t x, int16_t y, uint16_t color); - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - void setRotation(uint8_t r); - void invertDisplay(boolean i); - void showDisplay(boolean i); - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); - - /* These are not for current use, 8-bit protocol only! */ - uint8_t readdata(void); - uint8_t readcommand8(uint8_t reg, uint8_t index = 0); - - void spiwrite(uint8_t); - void writecommand(uint8_t c); - void writedata(uint8_t d); - void commandList(uint8_t *addr); - uint8_t spiread(void); - - private: - uint8_t tabcolor; - uint8_t _mod; - int16_t _w; - int16_t _h; - int32_t _cs; - int32_t _dc; - int32_t _rst; - int32_t _mosi; - int32_t _miso; - int32_t _sclk; -}; - -#endif // _TasmotaTFT_h - -/*************************************************** - 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 - ****************************************************/ diff --git a/lib/process-control-master/LICENSE b/lib/process-control-master/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/lib/process-control-master/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/lib/process-control-master/PID.cpp b/lib/process-control-master/PID.cpp deleted file mode 100644 index b19cfa64c..000000000 --- a/lib/process-control-master/PID.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * See Timeprop.h for Usage - * - **/ - - -#include "PID.h" - -PID::PID() { - m_initialised = 0; - m_last_sample_time = 0; - m_last_pv_update_time = 0; -} - -void PID::initialise( double setpoint, double prop_band, double t_integral, double t_derivative, - double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ) { - - m_setpoint = setpoint; - m_prop_band = prop_band; - m_t_integral = t_integral; - m_t_derivative = t_derivative; - m_integral_default = integral_default; - m_max_interval = max_interval; - m_smooth_factor= smooth_factor; - m_mode_auto= mode_auto; - m_manual_op = manual_op; - - m_initialised = 1; - -} - - -/* called regularly to calculate and return new power value */ -double PID::tick( unsigned long nowSecs ) { - double power; - unsigned char integral_locked = 0; - double factor; - if (m_initialised && m_last_pv_update_time) { - // we have been initialised and have been given a pv value - // check whether too long has elapsed since pv was last updated - if (m_max_interval > 0 && nowSecs - m_last_pv_update_time > m_max_interval) { - // yes, too long has elapsed since last PV update so go to fallback power - power = m_manual_op; - } else { - // is this the first time through here? - if (m_last_sample_time) { - // not first time - unsigned long delta_t = nowSecs - m_last_sample_time; // seconds - if (delta_t <= 0 || delta_t > m_max_interval) { - // too long since last sample so leave integral as is and set deriv to zero - m_derivative = 0; - } else { - if (m_smooth_factor > 0) { - // A derivative smoothing factor has been supplied - // smoothing time constant is td/factor but with a min of delta_t to stop overflows - int ts = m_t_derivative/m_smooth_factor > delta_t ? m_t_derivative/m_smooth_factor : delta_t; - factor = 1.0/(ts/delta_t); - } else { - // no integral smoothing so factor is 1, this makes smoothed_value the previous pv - factor = 1.0; - } - double delta_v = (m_pv - m_smoothed_value) * factor; - m_smoothed_value = m_smoothed_value + delta_v; - m_derivative = m_t_derivative * delta_v/delta_t; - // lock the integral if abs(previous integral + error) > prop_band/2 - // as this means that P + I is outside the linear region so power will be 0 or full - // also lock if control is disabled - double error = m_pv - m_setpoint; - double pbo2 = m_prop_band/2.0; - double epi = error + m_integral; - if (epi < 0.0) epi = -epi; // abs value of error + m_integral - if (epi < pbo2 && m_mode_auto) { - integral_locked = 0; - m_integral = m_integral + error * delta_t/m_t_integral; - // clamp to +- 0.5 prop band widths so that it cannot push the zero power point outside the pb - if ( m_integral < -pbo2 ) { - m_integral = -pbo2; - } else if (m_integral > pbo2) { - m_integral = pbo2; - } - integral_locked = 1; - } - } - - } else { - // first time through, initialise context data - m_smoothed_value = m_pv; - // setup the integral term so that the power out would be integral_default if pv=setpoint - m_integral = (0.5 - m_integral_default)*m_prop_band; - m_derivative = 0.0; - } - - double proportional = m_pv - m_setpoint; - power = -1.0/m_prop_band * (proportional + m_integral + m_derivative) + 0.5; - if (power < 0.0) { - power = 0.0; - } else if (power > 1.0) { - power = 1.0; - } - // set power to disabled value if the loop is not enabled - if (!m_mode_auto) { - power = m_manual_op; - } - m_last_sample_time = nowSecs; - } - } else { - // not yet initialised or no pv value yet so set power to disabled value - power = m_manual_op; - } - return power; -} - -// call to pass in new process value -void PID::setPv( double pv, unsigned long nowSecs ){ - m_pv = pv; - m_last_pv_update_time = nowSecs; -} - -// methods to modify configuration data -void PID::setSp( double setpoint ) { - m_setpoint = setpoint; -} - -void PID::setPb( double prop_band ) { - m_prop_band = prop_band; -} - -void PID::setTi( double t_integral ) { - m_t_integral = t_integral; -} - -void PID::setTd( double t_derivative ) { - m_t_derivative = t_derivative; -} - -void PID::setInitialInt( double integral_default ) { - m_integral_default = integral_default; -} - -void PID::setDSmooth( double smooth_factor ) { - m_smooth_factor = smooth_factor; -} - -void PID::setAuto( unsigned char mode_auto ) { - m_mode_auto = mode_auto; -} - -void PID::setManualPower( double manual_op ) { - m_manual_op = manual_op; -} - -void PID::setMaxInterval( int max_interval ) { - m_max_interval = max_interval; -} diff --git a/lib/process-control-master/PID.h b/lib/process-control-master/PID.h deleted file mode 100644 index 782baa8ef..000000000 --- a/lib/process-control-master/PID.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - /** - * A PID control class - * - * Github repository https://github.com/colinl/process-control.git - * - * Given ... - * - * Usage: - * First call initialise(), see below for parameters then - * ... - * The functions require a parameter nowSecs which is a representation of the - * current time in seconds. The absolute value of this is immaterial, it is - * used for relative timing only. - * - **/ - - -#ifndef PID_h -#define PID_h - -class PID { -public: - - PID(); - - /* - Initialiser given - - current time in seconds - */ - void initialise( double setpoint, double prop_band, double t_integral, double t_derivative, - double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ); - - - /* called regularly to calculate and return new power value */ - double tick(unsigned long nowSecs); - - // call to pass in new process value - void setPv( double pv, unsigned long nowSecs ); - - // methods to modify configuration data - void setSp( double setpoint ); - void setPb( double prop_band ); - void setTi( double t_integral ); - void setTd( double t_derivative ); - void setInitialInt( double integral_default ); - void setDSmooth( double smooth_factor ); - void setAuto( unsigned char mode_auto ); - void setManualPower( double manual_op ); - void setMaxInterval( int max_interval ); - -private: - double m_pv; - double m_setpoint; - double m_prop_band; - double m_t_integral; - double m_t_derivative; - double m_integral_default; - double m_smooth_factor; - unsigned char m_mode_auto; - double m_manual_op; - int m_max_interval; - - - unsigned char m_initialised; - unsigned long m_last_pv_update_time; // the time of last pv update secs - unsigned long m_last_sample_time; // the time of the last tick() run - double m_smoothed_value; - double m_integral; - double m_derivative ; -}; - -#endif // Timeprop_h diff --git a/lib/process-control-master/README.md b/lib/process-control-master/README.md deleted file mode 100644 index 4682d2f3f..000000000 --- a/lib/process-control-master/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# process-control -A C++ library of process control algorithms diff --git a/lib/process-control-master/Timeprop.cpp b/lib/process-control-master/Timeprop.cpp deleted file mode 100644 index c4d5e9eb8..000000000 --- a/lib/process-control-master/Timeprop.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * See Timeprop.h for Usage - * - **/ - - -#include "Timeprop.h" - -void Timeprop::initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, - unsigned long nowSecs) { - m_cycleTime = cycleTime; - m_deadTime = deadTime; - m_invert = invert; - m_fallbackPower = fallbackPower; - m_maxUpdateInterval = maxUpdateInterval; - - m_dtoc = (float)deadTime/cycleTime; - m_opState = 0; - setPower(m_fallbackPower, nowSecs); -} - -/* set current power required 0:1, given power and current time in seconds */ -void Timeprop::setPower( float power, unsigned long nowSecs ) { - if (power < 0.0) { - power = 0.0; - } else if (power >= 1.0) { - power = 1.0; - } - m_power = power; - m_lastPowerUpdateTime = nowSecs; -}; - -/* called regularly to provide new output value */ -/* returns new o/p state 0, 1 */ -int Timeprop::tick( unsigned long nowSecs) { - int newState; - float wave; - float direction; - float effectivePower; - - // check whether too long has elapsed since power was last updated - if (m_maxUpdateInterval > 0 && nowSecs - m_lastPowerUpdateTime > m_maxUpdateInterval) { - // yes, go to fallback power - setPower(m_fallbackPower, nowSecs); - } - - wave = (nowSecs % m_cycleTime)/(float)m_cycleTime; - // determine direction of travel and convert to triangular wave - if (wave < 0.5) { - direction = 1; // on the way up - wave = wave*2; - } else { - direction = -1; // on the way down - wave = (1 - wave)*2; - } - // if a dead_time has been supplied for this o/p then adjust power accordingly - if (m_deadTime > 0 && m_power > 0.0 && m_power < 1.0) { - effectivePower = (1.0-2.0*m_dtoc)*m_power + m_dtoc; - } else { - effectivePower = m_power; - } - // cope with end cases in case values outside 0..1 - if (effectivePower <= 0.0) { - newState = 0; // no heat - } else if (effectivePower >= 1.0) { - newState = 1; // full heat - } else { - // only allow power to come on on the way down and off on the way up, to reduce short pulses - if (effectivePower >= wave && direction == -1) { - newState = 1; - } else if (effectivePower <= wave && direction == 1) { - newState = 0; - } else { - // otherwise leave it as it is - newState = m_opState; - } - } - m_opState = newState; - return m_invert ? (1-m_opState) : m_opState; -} diff --git a/lib/process-control-master/Timeprop.h b/lib/process-control-master/Timeprop.h deleted file mode 100644 index c6df45be0..000000000 --- a/lib/process-control-master/Timeprop.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - /** - * A class to generate a time proportioned digital output from a linear input - * - * Github repository https://github.com/colinl/process-control.git - * - * Given a required power value in the range 0.0 to 1.0 this class generates - * a time proportioned 0/1 output (representing OFF/ON) which averages to the - * required power value. The cycle time is configurable. If, for example, this - * is set to 10 minutes and the power input is 0.2 then the output will be on - * for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * Usage: - * First call initialise(), see below for parameters then call setPower() to - * specify the current power required. - * Then regularly call tick() to determine the output state required. - * setPower may be called as often as required to change the power required. - * The functions require a parameter nowSecs which is a representation of the - * current time in seconds. The absolute value of this is immaterial, it is - * used for relative timing only. - * - **/ - - -#ifndef Timeprop_h -#define Timeprop_h - -class Timeprop { -public: - /* - Initialiser given - cycleTime seconds - actuator deadTime seconds - whether to invert the output - fallback power value if updates are not received within time below - max number of seconds to allow between power updates before falling back to default power (0 to disable) - current time in seconds - */ - void initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, - unsigned long nowSecs); - - /* set current power required 0:1, given power and current time in seconds */ - void setPower( float power, unsigned long nowSecs ); - - /* called regularly to provide new output value */ - /* returns new o/p state 0, 1 */ - int tick(unsigned long nowSecs); - -private: - int m_cycleTime; // cycle time seconds, float to force float calcs - int m_deadTime; // actuator action time seconds - unsigned char m_invert; // whether to invert the output - float m_dtoc; // deadTime/m_cycleTime - int m_opState; // current output state (before invert) - float m_power; // required power 0:1 - float m_fallbackPower; // falls back to this if updates not received with max allowed timezone - int m_maxUpdateInterval; // max time between updates - unsigned long m_lastPowerUpdateTime; // the time of last power update secs -}; - -#endif // Timeprop_h diff --git a/platformio.ini b/platformio.ini index 587d8c55b..cb5da39a9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff-DE_4MB -;env_default = sonoff-EN_4MB -env_default = sonoff-ES_4MB +env_default = sonoff ;env_default = sonoff-minimal +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE -;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -30,8 +30,8 @@ env_default = sonoff-ES_4MB ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU -;env_default = sonoff-TW ;env_default = sonoff-UK +;env_default = sonoff-TW [common] ; ************************************************************ ; *** Esp8266 core for Arduino version 2.3.0 @@ -49,10 +49,6 @@ framework = arduino board = esp01_1m board_build.flash_mode = dout -; set CPU frequency to 80MHz or 160MHz -;board_build.f_cpu = 80000000L -board_build.f_cpu = 160000000L - ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall @@ -60,45 +56,16 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION -; VTABLES in Flash (default) - -DVTABLES_IN_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM - -board_4MB = nodemcu -build_flags_4MB = - -Wl,-Tesp8266.flash.4m1m.ld -; -Wl,-Tesp8266.flash.4m2m.ld - -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION -; VTABLES in Flash (default) - -DVTABLES_IN_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM ; *** Serial Monitor options monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_speed = 115200 +;upload_speed = 115200 +upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 - -;NOTE - command to erase flash from windows console: esptool.py --port COM31 erase_flash - - ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -112,42 +79,13 @@ extra_scripts = pio/strip-floats.py ; ********************************************************************* -[env:sonoff-DE_4MB] +[env:sonoff] platform = ${common.platform} framework = ${common.framework} -board = ${common.board_4MB} +board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-EN_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board_4MB} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-ES_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board_4MB} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS +build_flags = ${common.build_flags} monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -159,7 +97,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL monitor_speed = ${common.monitor_speed} @@ -167,12 +104,47 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-classic] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_CLASSIC +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-knx] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-allsensors] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_ALL_SENSORS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG monitor_speed = ${common.monitor_speed} @@ -185,7 +157,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR monitor_speed = ${common.monitor_speed} @@ -198,7 +169,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN monitor_speed = ${common.monitor_speed} @@ -211,7 +181,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ monitor_speed = ${common.monitor_speed} @@ -224,7 +193,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE monitor_speed = ${common.monitor_speed} @@ -232,25 +200,11 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-EN] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} @@ -263,7 +217,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR monitor_speed = ${common.monitor_speed} @@ -276,7 +229,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR monitor_speed = ${common.monitor_speed} @@ -289,7 +241,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU monitor_speed = ${common.monitor_speed} @@ -302,7 +253,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT monitor_speed = ${common.monitor_speed} @@ -315,7 +265,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL monitor_speed = ${common.monitor_speed} @@ -328,7 +277,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL monitor_speed = ${common.monitor_speed} @@ -341,7 +289,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT monitor_speed = ${common.monitor_speed} @@ -354,7 +301,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU monitor_speed = ${common.monitor_speed} @@ -362,28 +308,26 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-TW] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-UK] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} + +[env:sonoff-TW] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 260c61adf..e0f1c2439 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -375,7 +375,7 @@ #define D_CMND_LATITUDE "Latitude" #define D_CMND_LONGITUDE "Longitude" -// Commands xdrv_14_display.ino +// Commands xdrv_98_display.ino #define D_CMND_DISPLAY "Display" #define D_CMND_DISP_ADDRESS "Address" #define D_CMND_DISP_COLS "Cols" diff --git a/sonoff/support.ino b/sonoff/support.ino index 89c80bd44..4268f38d0 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -20,11 +20,6 @@ IPAddress syslog_host_addr; // Syslog host IP address uint32_t syslog_host_hash = 0; // Syslog host name hash -#ifdef USE_CPU_LOAD -uint32_t CPU_loops = 0; // CPU Load -uint32_t CPU_last_millis = 0; // CPU Load -#endif // USE_CPU_LOAD - /*********************************************************************************************\ * Watchdog extension (https://github.com/esp8266/Arduino/issues/1532) \*********************************************************************************************/ @@ -68,34 +63,12 @@ void OsWatchInit() RtcSettings.oswatch_blocked_loop = 0; oswatch_last_loop_time = millis(); tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), OsWatchTicker); -#ifdef USE_CPU_LOAD - CPU_last_millis = millis(); -#endif // USE_CPU_LOAD } void OsWatchLoop() { oswatch_last_loop_time = millis(); // while(1) delay(1000); // this will trigger the os watch - -#ifdef USE_CPU_LOAD - CPU_loops ++; - if ((CPU_last_millis + (CPU_LOAD_CHECK*1000)) <= oswatch_last_loop_time ) { -#if defined(F_CPU) && (F_CPU == 160000000L) - int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*800) ); - CPU_loops = CPU_loops / CPU_LOAD_CHECK; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); -#else - int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*400) ); - CPU_loops = CPU_loops / CPU_LOAD_CHECK; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); -#endif - AddLog(LOG_LEVEL_DEBUG); - CPU_last_millis = oswatch_last_loop_time; - CPU_loops = 0; - } -#endif // USE_CPU_LOAD - } String GetResetReason() diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 7944796e5..6e51d8e3d 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,23 +48,22 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter -//#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) -//#define MODULE WEMOS // [Module] Select default model from sonoff_template.h (Should not be changed) +#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -73,8 +72,6 @@ #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) -//#define USE_CPU_LOAD // CPU LOAD log - #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.bin" // [OtaUrl] @@ -207,9 +204,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -222,7 +219,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -239,7 +236,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -288,212 +285,31 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) +#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) -//#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) +#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) // -- Low level interface devices ----------------- -//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) -// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) + #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) - -//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) - -/*********************************************************************************************\ - * DISPLAY -\*********************************************************************************************/ - -//#define USE_DISPLAY // Add Display Support for LCD, Oled and up to eigth Matrices (+19k code) - // Required USE_I2C to be defined for I2C Display Support - // Required USE_SPI to be defined for SPI Display Support using library TasmotaTFT for 320x240 and 480x320 TFT -#ifdef USE_DISPLAY -#ifdef USE_I2C // For I2C Display Support. Not required if using SPI - #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module - #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module - #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module - #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module - #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module - #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module - #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module - #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module -#endif // USE_I2C -#endif // USE_DISPLAY - -/*********************************************************************************************\ - * TIME PROPORTIONAL CONTROLLER -\*********************************************************************************************/ - -/** - * Code to drive one or more relays in a time proportioned manner give a - * required power value. - * - * Given required power values in the range 0.0 to 1.0 the relays will be - * driven on/off in such that the average power suppled will represent - * the required power. - * The cycle time is configurable. If, for example, the - * period is set to 10 minutes and the power input is 0.2 then the output will - * be on for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * In the case where only one relay is being driven the power value is set by - * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than - * one relay is being driven (as might be the case for a heat/cool application - * where one relay drives the heater and the other the cooler) then the power - * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. - * - * To cope with the problem of temporary wifi failure etc a - * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max - * expected time between power updates and if this time is exceeded then the - * power will fallback to a given safe value until a new value is provided. Set - * the interval to 0 to disable this feature. - * - **/ - -//#define USE_TIMEPROP // include the timeprop feature (+1.2k) - -// Configuration for single output -/* - #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60 // cycle time seconds - #define TIMEPROP_DEADTIMES 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1 // which relay to control 1:8 -/* - -// Configuration for two outputs: -/* - #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds - #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false, false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 -*/ - -/*********************************************************************************************\ - * PID CONTROLLER -\*********************************************************************************************/ - -// Help with using the PID algorithm and with loop tuning can be found at -// http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html -// This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on -// the code there and the tuning techique described there should work just the same. - -//#define USE_PID // include the pid feature (+4.3k) - #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is - // aiming for. - // May be adjusted via MQTT using cmnd pid_sp - - #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls - // the gain of the loop and is the range of process value over which - // the power output will go from 0 to full power. The units are that - // of the process and setpoint, so for example in a heating - // application it might be set to 1.5 degrees. - // May be adjusted via MQTT using cmnd pid_pb - - #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, - // in seconds. It represents the time constant of the integration - // effect. The larger the value the slower the integral effect will be. - // Obviously the slower the process is the larger this should be. For - // example for a domestic room heated by convection radiators a setting - // of one hour might be appropriate (in seconds). To disable the - // integral effect set this to a large number. - // May be adjusted via MQTT using cmnd pid_ti - - #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, - // in seconds. It represents the time constant of the derivative effect. - // The larger the value the greater will be the derivative effect. - // Typically this will be set to somewhat less than 25% of the integral - // setting, once the integral has been adjusted to the optimum value. To - // disable the derivative effect set this to 0. When initially tuning a - // loop it is often sensible to start with derivative zero and wind it in - // once other parameters have been setup. - // May be adjusted via MQTT using cmnd pid_td - - #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used - // to preset the integrated error value when the flow is deployed in - // order to assist in homing in on the setpoint the first time. It should - // be set to an estimate of what the power requirement might be in order - // to maintain the process at the setpoint. For example for a domestic - // room heating application it might be set to 0.2 indicating that 20% of - // the available power might be required to maintain the setpoint. The - // value is of no consequence apart from device restart. - - #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. - // It is provided to cope with unusual situations such as a faulty sensor - // that might prevent the node from being supplied with a process value. - // If no new process value is received for this time then the power is set - // to the value defined for PID_MANUAL_POWER. - // May be adjusted via MQTT using cmnd pid_max_interval - - #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as - // the DS18B20), the use of deriviative can be problematic as when the - // process is changing only slowly the steps in the value cause spikes in - // the derivative. To reduce the effect of these this parameter can be - // set to apply a filter to the derivative term. I have found that with - // the DS18B20 that a value of 3 here can be beneficial, providing - // effectively a low pass filter on the derivative at 1/3 of the derivative - // time. This feature may also be useful if the process value is particularly - // noisy. The smaller the value the greater the filtering effect but the - // more it will reduce the effectiveness of the derivative. A value of zero - // disables this feature. - // May be adjusted via MQTT using cmnd pid_d_smooth - - #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable - // the control (1=enable, auto mode, 0=disabled, manual mode). When in - // manual mode the output is set the value definded for PID_MANUAL_POWER - // May be adjusted via MQTT using cmnd pid_auto - - #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses - // between process values - // May be adjusted via MQTT using cmnd pid_manual_power - - #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm - // each time a new pv value is received, for most applictions specify 0. - // Otherwise set this to a time - // that is short compared to the response of the process. For example, - // something like 15 seconds may well be appropriate for a domestic room - // heating application. - // May be adjusted via MQTT using cmnd pid_update_secs - - #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the - // process, set this to indicate which timeprop output to use. For a device - // with just one relay then this will be 1. - // It is then also necessary to define USE_TIMEPROP and set the output up as - // explained in xdrv_91_timeprop.ino - // To disable this feature leave this undefined (undefined, not defined to nothing). - - #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if - // this is not required. The rate that the sensor is read is defined by TELE_PERIOD - // If not using the sensor then you can supply process values via MQTT using - // cmnd pid_pv +#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) #define USE_RF_FLASH // Add support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB @@ -513,7 +329,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/xdrv_13_controller.ino b/sonoff/xdrv_13_controller.ino deleted file mode 100644 index cb3a17198..000000000 --- a/sonoff/xdrv_13_controller.ino +++ /dev/null @@ -1,603 +0,0 @@ -/* - xdrv_13_controller.ino - Controller Support with TimeProp and PID for Sonoff-Tasmota - - Copyright (C) 2018 Colin Law, Thomas Herrmann and Adrian Scillato - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * Code to - * - * Usage: - * Place this file in the sonoff folder. - * Clone the library https://github.com/colinl/process-control.git from Github - * into a subfolder of lib. - * If you want to use a time proportioned relay output with this then also get - * xdrv_91_timeprop.ino - * In user_config.h or user_config_override.h include code as follows: - - #define USE_PID // include the pid feature (+4.3k) - #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is - // aiming for. - // May be adjusted via MQTT using cmnd pid_sp - - #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls - // the gain of the loop and is the range of process value over which - // the power output will go from 0 to full power. The units are that - // of the process and setpoint, so for example in a heating - // application it might be set to 1.5 degrees. - // May be adjusted via MQTT using cmnd pid_pb - - #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, - // in seconds. It represents the time constant of the integration - // effect. The larger the value the slower the integral effect will be. - // Obviously the slower the process is the larger this should be. For - // example for a domestic room heated by convection radiators a setting - // of one hour might be appropriate (in seconds). To disable the - // integral effect set this to a large number. - // May be adjusted via MQTT using cmnd pid_ti - - #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, - // in seconds. It represents the time constant of the derivative effect. - // The larger the value the greater will be the derivative effect. - // Typically this will be set to somewhat less than 25% of the integral - // setting, once the integral has been adjusted to the optimum value. To - // disable the derivative effect set this to 0. When initially tuning a - // loop it is often sensible to start with derivative zero and wind it in - // once other parameters have been setup. - // May be adjusted via MQTT using cmnd pid_td - - #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used - // to preset the integrated error value when the flow is deployed in - // order to assist in homing in on the setpoint the first time. It should - // be set to an estimate of what the power requirement might be in order - // to maintain the process at the setpoint. For example for a domestic - // room heating application it might be set to 0.2 indicating that 20% of - // the available power might be required to maintain the setpoint. The - // value is of no consequence apart from device restart. - - #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. - // It is provided to cope with unusual situations such as a faulty sensor - // that might prevent the node from being supplied with a process value. - // If no new process value is received for this time then the power is set - // to the value defined for PID_MANUAL_POWER. - // May be adjusted via MQTT using cmnd pid_max_interval - - #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as - // the DS18B20), the use of deriviative can be problematic as when the - // process is changing only slowly the steps in the value cause spikes in - // the derivative. To reduce the effect of these this parameter can be - // set to apply a filter to the derivative term. I have found that with - // the DS18B20 that a value of 3 here can be beneficial, providing - // effectively a low pass filter on the derivative at 1/3 of the derivative - // time. This feature may also be useful if the process value is particularly - // noisy. The smaller the value the greater the filtering effect but the - // more it will reduce the effectiveness of the derivative. A value of zero - // disables this feature. - // May be adjusted via MQTT using cmnd pid_d_smooth - - #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable - // the control (1=enable, auto mode, 0=disabled, manual mode). When in - // manual mode the output is set the value definded for PID_MANUAL_POWER - // May be adjusted via MQTT using cmnd pid_auto - - #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses - // between process values - // May be adjusted via MQTT using cmnd pid_manual_power - - #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm - // each time a new pv value is received, for most applictions specify 0. - // Otherwise set this to a time - // that is short compared to the response of the process. For example, - // something like 15 seconds may well be appropriate for a domestic room - // heating application. - // May be adjusted via MQTT using cmnd pid_update_secs - - #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the - // process, set this to indicate which timeprop output to use. For a device - // with just one relay then this will be 1. - // It is then also necessary to define USE_TIMEPROP and set the output up as - // explained in xdrv_91_timeprop.ino - // To disable this feature leave this undefined (undefined, not defined to nothing). - - #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if - // this is not required. The rate that the sensor is read is defined by TELE_PERIOD - // If not using the sensor then you can supply process values via MQTT using - // cmnd pid_pv - - * Help with using the PID algorithm and with loop tuning can be found at - * http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html - * This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on - * the code there and the tuning techique described there should work just the same. - - * -**/ - - -#ifdef USE_PID - -# include "PID.h" - -#define D_CMND_PID "pid_" - -#define D_CMND_PID_SETPV "pv" -#define D_CMND_PID_SETSETPOINT "sp" -#define D_CMND_PID_SETPROPBAND "pb" -#define D_CMND_PID_SETINTEGRAL_TIME "ti" -#define D_CMND_PID_SETDERIVATIVE_TIME "td" -#define D_CMND_PID_SETINITIAL_INT "initint" -#define D_CMND_PID_SETDERIV_SMOOTH_FACTOR "d_smooth" -#define D_CMND_PID_SETAUTO "auto" -#define D_CMND_PID_SETMANUAL_POWER "manual_power" -#define D_CMND_PID_SETMAX_INTERVAL "max_interval" -#define D_CMND_PID_SETUPDATE_SECS "update_secs" - -enum PIDCommands { CMND_PID_SETPV, CMND_PID_SETSETPOINT, CMND_PID_SETPROPBAND, CMND_PID_SETINTEGRAL_TIME, - CMND_PID_SETDERIVATIVE_TIME, CMND_PID_SETINITIAL_INT, CMND_PID_SETDERIV_SMOOTH_FACTOR, CMND_PID_SETAUTO, - CMND_PID_SETMANUAL_POWER, CMND_PID_SETMAX_INTERVAL, CMND_PID_SETUPDATE_SECS }; -const char kPIDCommands[] PROGMEM = D_CMND_PID_SETPV "|" D_CMND_PID_SETSETPOINT "|" D_CMND_PID_SETPROPBAND "|" - D_CMND_PID_SETINTEGRAL_TIME "|" D_CMND_PID_SETDERIVATIVE_TIME "|" D_CMND_PID_SETINITIAL_INT "|" D_CMND_PID_SETDERIV_SMOOTH_FACTOR "|" - D_CMND_PID_SETAUTO "|" D_CMND_PID_SETMANUAL_POWER "|" D_CMND_PID_SETMAX_INTERVAL "|" D_CMND_PID_SETUPDATE_SECS; - -static PID pid; -static int update_secs = PID_UPDATE_SECS <= 0 ? 0 : PID_UPDATE_SECS; // how often (secs) the pid alogorithm is run -static int max_interval = PID_MAX_INTERVAL; -static unsigned long last_pv_update_secs = 0; -static boolean run_pid_now = false; // tells PID_Every_Second to run the pid algorithm - -void PID_Init() -{ - snprintf_P(log_data, sizeof(log_data), "PID Init"); - AddLog(LOG_LEVEL_INFO); - pid.initialise( PID_SETPOINT, PID_PROPBAND, PID_INTEGRAL_TIME, PID_DERIVATIVE_TIME, PID_INITIAL_INT, - PID_MAX_INTERVAL, PID_DERIV_SMOOTH_FACTOR, PID_AUTO, PID_MANUAL_POWER ); -} - -void PID_Every_Second() { - static int sec_counter = 0; - // run the pid algorithm if run_pid_now is true or if the right number of seconds has passed or if too long has - // elapsed since last pv update. If too long has elapsed the the algorithm will deal with that. - if (run_pid_now || utc_time - last_pv_update_secs > max_interval || (update_secs != 0 && sec_counter++ % update_secs == 0)) { - run_pid(); - run_pid_now = false; - } -} - -void PID_Show_Sensor() { - // Called each time new sensor data available, data in mqtt data in same format - // as published in tele/SENSOR - // Update period is specified in TELE_PERIOD - // e.g. "{"Time":"2018-03-13T16:48:05","DS18B20":{"Temperature":22.0},"TempUnit":"C"}" - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: mqtt_data: %s", mqtt_data); - AddLog(LOG_LEVEL_INFO); - StaticJsonBuffer<400> jsonBuffer; - // force mqtt_data to read only to stop parse from overwriting it - JsonObject& data_json = jsonBuffer.parseObject((const char*)mqtt_data); - if (data_json.success()) { - const char* value = data_json["DS18B20"]["Temperature"]; - // check that something was found and it contains a number - //if (value != NULL && strlen(value) > 0 && isdigit(value[0]) ) { - if (value != NULL && strlen(value) > 0 && (isdigit(value[0]) || (value[0] == '-' && isdigit(value[1])) ) ) { - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: Temperature: %s", value); - AddLog(LOG_LEVEL_INFO); - // pass the value to the pid alogorithm to use as current pv - last_pv_update_secs = utc_time; - pid.setPv(atof(value), last_pv_update_secs); - // also trigger running the pid algorithm if we have been told to run it each pv sample - if (update_secs == 0) { - // this runs it at the next second - run_pid_now = true; - } - } else { - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - no temperature found"); - AddLog(LOG_LEVEL_INFO); - } - } else { - // parse failed - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - json parse failed"); - AddLog(LOG_LEVEL_INFO); - } -} - - -/* struct XDRVMAILBOX { */ -/* uint16_t valid; */ -/* uint16_t index; */ -/* uint16_t data_len; */ -/* int16_t payload; */ -/* char *topic; */ -/* char *data; */ -/* } XdrvMailbox; */ - -boolean PID_Command() -{ - char command [CMDSZ]; - boolean serviced = true; - uint8_t ua_prefix_len = strlen(D_CMND_PID); // to detect prefix of command - - snprintf_P(log_data, sizeof(log_data), "Command called: " - "index: %d data_len: %d payload: %d topic: %s data: %s", - XdrvMailbox.index, - XdrvMailbox.data_len, - XdrvMailbox.payload, - (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - AddLog(LOG_LEVEL_INFO); - - if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_PID), ua_prefix_len)) { - // command starts with pid_ - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kPIDCommands); - serviced = true; - switch (command_code) { - case CMND_PID_SETPV: - snprintf_P(log_data, sizeof(log_data), "PID command setpv"); - AddLog(LOG_LEVEL_INFO); - last_pv_update_secs = utc_time; - pid.setPv(atof(XdrvMailbox.data), last_pv_update_secs); - // also trigger running the pid algorithm if we have been told to run it each pv sample - if (update_secs == 0) { - // this runs it at the next second - run_pid_now = true; - } - break; - - case CMND_PID_SETSETPOINT: - snprintf_P(log_data, sizeof(log_data), "PID command setsetpoint"); - AddLog(LOG_LEVEL_INFO); - pid.setSp(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETPROPBAND: - snprintf_P(log_data, sizeof(log_data), "PID command propband"); - AddLog(LOG_LEVEL_INFO); - pid.setPb(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETINTEGRAL_TIME: - snprintf_P(log_data, sizeof(log_data), "PID command Ti"); - AddLog(LOG_LEVEL_INFO); - pid.setTi(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETDERIVATIVE_TIME: - snprintf_P(log_data, sizeof(log_data), "PID command Td"); - AddLog(LOG_LEVEL_INFO); - pid.setTd(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETINITIAL_INT: - snprintf_P(log_data, sizeof(log_data), "PID command initial int"); - AddLog(LOG_LEVEL_INFO); - pid.setInitialInt(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETDERIV_SMOOTH_FACTOR: - snprintf_P(log_data, sizeof(log_data), "PID command deriv smooth"); - AddLog(LOG_LEVEL_INFO); - pid.setDSmooth(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETAUTO: - snprintf_P(log_data, sizeof(log_data), "PID command auto"); - AddLog(LOG_LEVEL_INFO); - pid.setAuto(atoi(XdrvMailbox.data)); - break; - - case CMND_PID_SETMANUAL_POWER: - snprintf_P(log_data, sizeof(log_data), "PID command manual power"); - AddLog(LOG_LEVEL_INFO); - pid.setManualPower(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETMAX_INTERVAL: - snprintf_P(log_data, sizeof(log_data), "PID command set max interval"); - AddLog(LOG_LEVEL_INFO); - max_interval = atoi(XdrvMailbox.data); - pid.setMaxInterval(max_interval); - break; - - case CMND_PID_SETUPDATE_SECS: - snprintf_P(log_data, sizeof(log_data), "PID command set update secs"); - AddLog(LOG_LEVEL_INFO); - update_secs = atoi(XdrvMailbox.data) ; - if (update_secs < 0) update_secs = 0; - break; - - default: - serviced = false; - } - - if (serviced) { - // set mqtt RESULT - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), XdrvMailbox.topic, XdrvMailbox.data); - } - - } else { - serviced = false; - } - return serviced; -} - -static void run_pid() -{ - double power = pid.tick(utc_time); - char buf[10]; - dtostrfd(power, 3, buf); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), "power", buf); - MqttPublishPrefixTopic_P(TELE, "PID", false); -#if defined PID_USE_TIMPROP - // send power to appropriate timeprop output - Timeprop_Set_Power( PID_USE_TIMPROP-1, power ); -#endif // PID_USE_TIMPROP -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_92 - -boolean Xdrv92(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - PID_Init(); - break; - case FUNC_EVERY_SECOND: - PID_Every_Second(); - break; - case FUNC_SHOW_SENSOR: - // only use this if the pid loop is to use the local sensor for pv - #if defined PID_USE_LOCAL_SENSOR - PID_Show_Sensor(); - #endif // PID_USE_LOCAL_SENSOR - break; - case FUNC_COMMAND: - result = PID_Command(); - break; - } - return result; -} - -#endif // USE_PID - - - - - - - -/* - xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota - Copyright (C) 2018 Colin Law and Thomas Herrmann - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - This program 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 General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * Code to drive one or more relays in a time proportioned manner give a - * required power value. - * - * Given required power values in the range 0.0 to 1.0 the relays will be - * driven on/off in such that the average power suppled will represent - * the required power. - * The cycle time is configurable. If, for example, the - * period is set to 10 minutes and the power input is 0.2 then the output will - * be on for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * In the case where only one relay is being driven the power value is set by - * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than - * one relay is being driven (as might be the case for a heat/cool application - * where one relay drives the heater and the other the cooler) then the power - * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. - * - * To cope with the problem of temporary wifi failure etc a - * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max - * expected time between power updates and if this time is exceeded then the - * power will fallback to a given safe value until a new value is provided. Set - * the interval to 0 to disable this feature. - * - * Usage: - * Place this file in the sonoff folder. - * Clone the library https://github.com/colinl/process-control.git from Github - * into a subfolder of lib. - * In user_config.h or user_config_override.h for a single relay, include - * code as follows: - - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60 // cycle time seconds - #define TIMEPROP_DEADTIMES 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1 // which relay to control 1:8 - - * or for two relays: - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds - #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false, false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 - - * Publish values between 0 and 1 to the topic(s) described above - * -**/ - - -#ifdef USE_TIMEPROP - -# include "Timeprop.h" - -#define D_CMND_TIMEPROP "timeprop_" -#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 - -enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; -const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; - -static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; -static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; -static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay - -/* call this from elsewhere if required to set the power value for one of the timeprop instances */ -/* index specifies which one, 0 up */ -void Timeprop_Set_Power( int index, float power ) -{ - if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) - { - timeprops[index].setPower( power, utc_time); - } -} - -void Timeprop_Init() -{ - snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); - AddLog(LOG_LEVEL_INFO); - int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; - int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; - int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; - int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; - int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; - - for (int i=0; i= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - - AddLog(LOG_LEVEL_INFO); - */ - if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { - // command starts with timeprop_ - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); - if (CMND_TIMEPROP_SETPOWER == command_code) { - /* - snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " - "index: %d data_len: %d payload: %d topic: %s data: %s", - XdrvMailbox.index, - XdrvMailbox.data_len, - XdrvMailbox.payload, - (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - AddLog(LOG_LEVEL_INFO); - */ - if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { - timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), - XdrvMailbox.index, XdrvMailbox.data); - } - else { - serviced = false; - } - } else { - serviced = false; - } - return serviced; -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_91 - -boolean Xdrv91(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - Timeprop_Init(); - break; - case FUNC_EVERY_SECOND: - Timeprop_Every_Second(); - break; - case FUNC_COMMAND: - result = Timeprop_Command(); - break; - case FUNC_SET_POWER: - Timeprop_Xdrv_Power(); - break; - } - return result; -} - -#endif // USE_TIMEPROP diff --git a/sonoff/xdrv_14_display.ino b/sonoff/xdrv_14_display.ino deleted file mode 100644 index 8ddd07bc1..000000000 --- a/sonoff/xdrv_14_display.ino +++ /dev/null @@ -1,1096 +0,0 @@ -/* - xdrv_14_display.ino - display support for Sonoff-Tasmota - - Copyright (C) 2018 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#if defined(USE_I2C) || defined(USE_SPI) -#ifdef USE_DISPLAY -/*********************************************************************************************\ - * Display Libraries needed - * --------------- ---------------------------------------- - * I2C LCD LiquidCrystal_I2C - * I2C SSD 1306 Adafruit_SSD1306 and Adafruit_GFX - * I2C 8x8 Matrix Adafruit_LED_Backpack and Adafruit_GFX - * SPI TFT ILI9341 TasmotaTFT and Adafruit_GFX - * SPI TFT ILI9481 TasmotaTFT and Adafruit_GFX -\*********************************************************************************************/ - -#define LCD_ADDRESS1 0x27 // LCD I2C address option 1 -#define LCD_ADDRESS2 0x3F // LCD I2C address option 2 - -#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address -#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address - -#define DISPLAY_BUFFER_COLS 40 // Max number of columns in log buffer and display shadow buffer (needed for LCD and Oled) -#define DISPLAY_BUFFER_ROWS 8 // Max number of lines in display shadow buffer (needed for LCD and Oled) - -#define DISPLAY_LOG_ROWS 32 // Number of lines in display log buffer - -enum display_types { DISP_NONE, DISP_LCD, DISP_OLED, DISP_MATRIX, DISP_TFT, DISP_TFT4, DISP_MAX }; - -enum DisplayCommands { CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, - CMND_DISP_SIZE, CMND_DISP_TEXT, CMND_DISP_ADDRESS }; -const char kDisplayCommands[] PROGMEM = - D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" - D_CMND_DISP_SIZE "|" D_CMND_DISP_TEXT "|" D_CMND_DISP_ADDRESS ; - -const char S_JSON_DISPLAY_COMMAND_VALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":\"%s\"}"; -const char S_JSON_DISPLAY_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":%d}"; -const char S_JSON_DISPLAY_COMMAND_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s%d\":%d}"; - -#define DISPLAY_LOG_COLS DISPLAY_BUFFER_COLS +1 // Number of characters in display log buffer line +1 - -#ifdef USE_I2C // --------------------------------------------------------------------------- -#include // 8x8 Matrix -#include // LCD -#include // Oled - -LiquidCrystal_I2C *lcd; -Adafruit_SSD1306 *oled; - -//char disp_screen_buffer[Settings.display_rows][Settings.display_cols[0] +1]; -char disp_screen_buffer[DISPLAY_BUFFER_ROWS][DISPLAY_BUFFER_COLS +1]; - -Adafruit_8x8matrix *matrix[8]; -uint8_t mtx_matrices = 0; -uint8_t mtx_state = 0; -uint8_t mtx_counter = 0; -int16_t mtx_x = 0; -int16_t mtx_y = 0; - -#endif // USE_I2C --------------------------------------------------------------------------- - -#ifdef USE_SPI // --------------------------------------------------------------------------- -#define TFT_TOP 16 -#define TFT_BOTTOM 16 -#define TFT_FONT_WIDTH 6 -#define TFT_FONT_HEIGTH 8 // Adafruit minimal font heigth pixels - -#include // TFT 320x240 and 480x320 -TasmotaTFT *tft; - -//#include -//Adafruit_ILI9341 *tft; - -uint16_t tft_scroll; - -#endif // USE_SPI --------------------------------------------------------------------------- - -char disp_log_buffer[DISPLAY_LOG_ROWS][DISPLAY_LOG_COLS]; -char disp_temp[2]; // C or F -char disp_time[9]; // 13:45:43 -uint8_t disp_log_buffer_idx = 0; -uint8_t disp_log_buffer_ptr = 0; -bool disp_log_buffer_active = false; -uint8_t disp_model = DISP_NONE; -uint8_t disp_refresh = 1; -uint8_t disp_second = 0; -uint8_t disp_mode = 1; -uint8_t disp_power = 0; -uint8_t disp_device = 0; -uint8_t disp_subscribed = 0; - -void DisplayLogBufferIdxInc() -{ - char *pch = strchr(disp_log_buffer[disp_log_buffer_idx],'~'); // = 0x7E (~) Replace degrees character (276 octal) - if (pch != NULL) { - switch (disp_model) { - case DISP_LCD: - disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\337'; // = 0xDF - break; - case DISP_OLED: - case DISP_MATRIX: - case DISP_TFT: - case DISP_TFT4: - disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\370'; // = 0xF8 - break; - } - } - - disp_log_buffer_idx++; - if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { - disp_log_buffer_idx = 0; - } -} - -void DisplayLogBufferPtrInc() -{ - disp_log_buffer_ptr++; - if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { - disp_log_buffer_ptr = 0; - } -} - -#ifdef USE_I2C // --------------------------------------------------------------------------- -void DisplayScreenBuffer() -{ - uint8_t last_row = Settings.display_rows -1; - - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); - if (disp_log_buffer_active) { - if (DISP_OLED == disp_model) { - oled->clearDisplay(); - oled->setTextSize(Settings.display_size); - oled->setCursor(0,0); - } - for (byte i = 0; i < last_row; i++) { - strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], sizeof(disp_screen_buffer[i])); - if (DISP_LCD == disp_model) { - lcd->setCursor(0, i); // Col 0, Row i - lcd->print(disp_screen_buffer[i +1]); - } - else if (DISP_OLED == disp_model) { - oled->println(disp_screen_buffer[i]); - } - } - strlcpy(disp_screen_buffer[last_row], disp_log_buffer[disp_log_buffer_ptr], sizeof(disp_screen_buffer[last_row])); - - // Fill with spaces - byte len = sizeof(disp_screen_buffer[last_row]) - strlen(disp_screen_buffer[last_row]); - if (len) { - memset(disp_screen_buffer[last_row] + strlen(disp_screen_buffer[last_row]), 0x20, len); - disp_screen_buffer[last_row][sizeof(disp_screen_buffer[last_row])-1] = 0; - } - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); - AddLog(LOG_LEVEL_DEBUG); - - if (DISP_LCD == disp_model) { - lcd->setCursor(0, last_row); - lcd->print(disp_screen_buffer[last_row]); - } - else if (DISP_OLED == disp_model) { - oled->println(disp_screen_buffer[last_row]); - oled->display(); - } - DisplayLogBufferPtrInc(); - } - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayMatrixInit() -{ - mtx_state = 1; - for (mtx_matrices = 0; mtx_matrices < 8; mtx_matrices++) { - if (Settings.display_address[mtx_matrices]) { - matrix[mtx_matrices] = new Adafruit_8x8matrix(); - matrix[mtx_matrices]->begin(Settings.display_address[mtx_matrices]); - matrix[mtx_matrices]->setRotation(1); - matrix[mtx_matrices]->setBrightness(Settings.display_dimmer); - matrix[mtx_matrices]->blinkRate(0); // 0 - 3 - matrix[mtx_matrices]->setTextWrap(false); // Allow text to run off edges -// matrix[mtx_matrices]->setTextSize(Settings.display_size); -// matrix[mtx_matrices]->setTextColor(LED_RED); - matrix[mtx_matrices]->cp437(true); - } else { - break; - } - } - DisplayMatrixClear(); -} - -void DisplayMatrixWrite() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->writeDisplay(); - } -} - -void DisplayMatrixClear() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - } - DisplayMatrixWrite(); -} -/* -void DisplayMatrixAll() // On based on Text value (1 - 6) -{ - int value = atoi(Settings.text); - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - if (i < value) { - matrix[i]->fillRect(0,0, 8,8, LED_ON); - } - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixAllOn() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->fillRect(0,0, 8,8, LED_ON); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} -*/ -void DisplayMatrixFixed(char* txt) -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(-i *8, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixCenter(char* txt) -{ - int offset; - - int len = strlen(txt); - offset = (len < 8) ? offset = ((mtx_matrices *8) - (len *6)) / 2 : 0; - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(-(i *8)+offset, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixScrollLeft(char* txt, int loop) -{ - switch (mtx_state) { - case 1: - mtx_state = 2; - // Horiz. position of text -- starts off right edge - mtx_x = 8 * mtx_matrices; - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), txt); - AddLog(LOG_LEVEL_DEBUG); - - disp_refresh = Settings.display_refresh; - case 2: - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(mtx_x - i *8, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); - // Move text position left by 1 pixel. - mtx_x--; - int16_t len = strlen(txt); - if (mtx_x < -(len *6)) { - mtx_state = loop; - } - } - break; - } -} - -void DisplayMatrixScrollUp(char* txt, int loop) -{ - int wordcounter = 0; - char tmpbuf[200]; - char *words[100]; -// char separators[] = " ,.;:!?"; -// char separators[] = " "; -// char separators[] = " /|"; - char separators[] = " /"; - - switch (mtx_state) { - case 1: - mtx_state = 2; - // Vertical position of text -- starts off left bottom edge - mtx_y = 8; - mtx_counter = 0; - disp_refresh = Settings.display_refresh; - case 2: - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - strlcpy(tmpbuf, txt, sizeof(tmpbuf)); - char *p = strtok(tmpbuf, separators); - while (p != NULL && wordcounter < 40) { - words[wordcounter++] = p; - p = strtok(NULL, separators); - } - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - for (byte j = 0; j < wordcounter; j++) { - matrix[i]->setCursor(-i *8, mtx_y + (j *8)); - matrix[i]->println(words[j]); - } - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); - if (((mtx_y %8) == 0) && mtx_counter) { - mtx_counter--; - } else { - mtx_y--; // Move text position up by 1 pixel. - mtx_counter = STATES * 1; // Hold text for 1 seconds - } - if (mtx_y < -(wordcounter *8)) { - mtx_state = loop; - } - } - break; - } -} - -void DisplayMatrixBufferScroll(uint8_t direction) -{ - if (disp_log_buffer_idx != disp_log_buffer_ptr) { - if (!mtx_state) { - mtx_state = 1; - } - if (direction) { - DisplayMatrixScrollUp(disp_log_buffer[disp_log_buffer_ptr], 0); - } else { - DisplayMatrixScrollLeft(disp_log_buffer[disp_log_buffer_ptr], 0); - } - if (!mtx_state) { - DisplayLogBufferPtrInc(); - } - } else { - DisplayMatrixFixed(disp_time); - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayLcdInit() -{ - lcd = new LiquidCrystal_I2C(Settings.display_address[0], Settings.display_cols[0], Settings.display_rows); - lcd->init(); - lcd->clear(); - memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols[0]); - disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; -} - -void DisplayLcdCenter(byte row, char* txt) -{ - int offset; - int len; - char line[Settings.display_cols[0] +2]; - - memset(line, 0x20, Settings.display_cols[0]); - line[Settings.display_cols[0]] = 0; - len = strlen(txt); - offset = (len < Settings.display_cols[0]) ? offset = (Settings.display_cols[0] - len) / 2 : 0; - strncpy(line +offset, txt, len); - lcd->setCursor(0, row); - lcd->print(line); -} - -void DisplayLcdTime() -{ - char line[Settings.display_cols[0] +1]; - - snprintf_P(line, sizeof(line), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); - DisplayLcdCenter(0, line); - snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); - DisplayLcdCenter(1, line); -} - -void DisplayLcdBufferOrTime() -{ - DisplayScreenBuffer(); - if (!disp_log_buffer_active) { - DisplayLcdTime(); - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayOledInit() -{ - oled = new Adafruit_SSD1306(); - oled->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0]); - oled->invertDisplay(false); - oled->clearDisplay(); - oled->setTextWrap(false); // Allow text to run off edges - oled->cp437(true); - - oled->setTextSize(Settings.display_size); - oled->setTextColor(WHITE); - oled->setCursor(0,0); - oled->display(); - -// memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols); -// disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; -} - -void DisplayOledDisplayOnOff(byte state) -{ - if (state) { - oled->ssd1306_command(SSD1306_DISPLAYON); - } else { - oled->ssd1306_command(SSD1306_DISPLAYOFF); - } - oled->display(); -} - -void DisplayOledTime() -{ - char line[12]; - - oled->clearDisplay(); - oled->setTextSize(2); - oled->setCursor(0, 0); - snprintf_P(line, sizeof(line), PSTR(" %02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); // [ 12:34:56 ] - oled->println(line); - snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); // [01-02-2018] - oled->println(line); - oled->display(); -} - -#endif // USE_I2C --------------------------------------------------------------------------- -#ifdef USE_SPI // --------------------------------------------------------------------------- -void DisplayTftInit() -{ - if (DISP_TFT == disp_model) { - tft = new TasmotaTFT(ILI9341, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); -// tft = new Adafruit_ILI9341(pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); - } - else if (DISP_TFT4 == disp_model) { - tft = new TasmotaTFT(ILI9481, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); - } - tft->begin(); - tft->setRotation(0); - tft->invertDisplay(0); - tft->fillScreen(TFT_BLACK); - tft->setTextWrap(false); // Allow text to run off edges - tft->cp437(true); - - tft->setScrollMargins(TFT_TOP, TFT_BOTTOM); - tft->setCursor(0, 0); - tft->setTextColor(TFT_YELLOW, TFT_BLACK); - tft->setTextSize(2); - tft->println("HEADER"); - - tft_scroll = TFT_TOP; -} - -void DisplayTftDisplayOnOff(byte state) -{ -// tft->showDisplay(state); -// tft->invertDisplay(state); - if (pin[GPIO_BACKLIGHT] < 99) { - pinMode(pin[GPIO_BACKLIGHT], OUTPUT); - digitalWrite(pin[GPIO_BACKLIGHT], state); - } -} - -void DisplayTftPrint(byte size, char *txt) -{ - uint16_t theight; - - tft->setCursor(0, tft_scroll); - tft->setTextSize(size); - theight = size * TFT_FONT_HEIGTH; - tft->fillRect(0, tft_scroll, tft->width(), theight, TFT_BLACK); - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), txt); - AddLog(LOG_LEVEL_DEBUG); - - tft->print(txt); - tft_scroll += theight; - if (tft_scroll >= (tft->height() - TFT_BOTTOM)) { - tft_scroll = TFT_TOP; - } - tft->setScrollStart(tft_scroll); -} - -void DisplayTftBuffer() -{ - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); - if (disp_log_buffer_active) { - DisplayTftPrint(Settings.display_size, disp_log_buffer[disp_log_buffer_ptr]); - DisplayLogBufferPtrInc(); - } - } -} -#endif // USE_SPI --------------------------------------------------------------------------- - -/*********************************************************************************************\ - * Sensors -\*********************************************************************************************/ - -enum SensorQuantity { - JSON_TEMPERATURE, - JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, - JSON_PRESSURE, JSON_PRESSUREATSEALEVEL, - JSON_ILLUMINANCE, - JSON_GAS, - JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY, - JSON_PERIOD, - JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, - JSON_CURRENT, - JSON_VOLTAGE, - JSON_POWERUSAGE, - JSON_CO2 }; -const char kSensorQuantity[] PROGMEM = - D_JSON_TEMPERATURE "|" // degrees - D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage - D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa - D_JSON_ILLUMINANCE "|" // lx - D_JSON_GAS "|" // kOhm - D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh - D_JSON_PERIOD "|" // Wh - D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit - D_JSON_CURRENT "|" // Ampere - D_JSON_VOLTAGE "|" // Volt - D_JSON_POWERUSAGE "|" // Watt - D_JSON_CO2 ; // ppm - -void DisplayJsonValue(const char *topic, const char* device, const char* mkey, const char* value) -{ - char quantity[TOPSZ]; - char spaces[Settings.display_cols[0]]; - char source[Settings.display_cols[0] - Settings.display_cols[1]]; - char svalue[Settings.display_cols[1] +1]; - - memset(spaces, 0x20, sizeof(spaces)); - spaces[sizeof(spaces) -1] = '\0'; - snprintf_P(source, sizeof(source), PSTR("%s/%s%s"), topic, mkey, (DISP_MATRIX == Settings.display_model) ? "" : spaces); // pow1/Voltage - - int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity); - if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER - return; - } - if (JSON_TEMPERATURE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); - } - else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value); - } - else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PRESSURE), value); - } - else if (JSON_ILLUMINANCE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value); - } - else if (JSON_GAS == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value); - } - else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value); - } - else if (JSON_PERIOD == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value); - } - else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value); - } - else if (JSON_CURRENT == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value); - } - else if (JSON_VOLTAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value); - } - else if (JSON_POWERUSAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value); - } - else if (JSON_CO2 == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); - } - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("%s %s"), source, svalue); - -// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, disp_log_buffer[disp_log_buffer_idx]); -// AddLog(LOG_LEVEL_DEBUG); - - DisplayLogBufferIdxInc(); -} - -void DisplayAnalyzeJson(char *topic, char *json) -{ -// //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}} -// //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102} - -// tele/pow1/SENSOR = {"Time":"2018-01-02T17:13:17","ENERGY":{"Total":13.091,"Yesterday":0.060,"Today":0.046,"Period":0.2,"Power":9.8,"Factor":0.49,"Voltage":206.8,"Current":0.096}} -// tele/dual/STATE {"Time":"2017-09-20T11:53:03","Uptime":25,"Vcc":3.178,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":2,"SSId":"indebuurt2","RSSI":100,"APMac":"00:22:6B:FE:8E:20"}} -// tele/sc/SENSOR {"Time":"2017-09-20T11:53:09","Temperature":24.0,"Humidity":16.0,"Light":30,"Noise":20,"AirQuality":100,"TempUnit":"C"} -// tele/rf1/SENSOR {"Time":"2017-09-20T11:53:23","BH1750":{"Illuminance":57}} -// tele/wemos5/SENSOR {"Time":"2017-09-20T11:53:53","SHT1X":{"Temperature":20.1,"Humidity":58.9},"HTU21":{"Temperature":20.7,"Humidity":58.5},"BMP280":{"Temperature":21.6,"Pressure":1020.3},"TempUnit":"C"} -// tele/th1/SENSOR {"Time":"2017-09-20T11:54:48","DS18B20":{"Temperature":49.7},"TempUnit":"C"} - - char jsonStr[MESSZ]; - const char *tempunit; - - strlcpy(jsonStr, json, sizeof(jsonStr)); // Save original before destruction by JsonObject - StaticJsonBuffer<400> jsonBuf; - JsonObject &root = jsonBuf.parseObject(jsonStr); - if (root.success()) { - - tempunit = root[D_JSON_TEMPERATURE_UNIT]; - if (tempunit) { - snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%s"), tempunit); -// snprintf_P(log_data, sizeof(log_data), disp_temp); -// AddLog(LOG_LEVEL_DEBUG); - } - - for (JsonObject::iterator it = root.begin(); it != root.end(); ++it) { - JsonVariant value = it->value; - if (value.is()) { - JsonObject& Object2 = value; - for (JsonObject::iterator it2 = Object2.begin(); it2 != Object2.end(); ++it2) { - JsonVariant value2 = it2->value; - if (value2.is()) { - JsonObject& Object3 = value2; - for (JsonObject::iterator it3 = Object3.begin(); it3 != Object3.end(); ++it3) { - DisplayJsonValue(topic, it->key, it3->key, it3->value.as()); // Sensor 56% - } - } else { - DisplayJsonValue(topic, it->key, it2->key, it2->value.as()); // Sensor 56% - } - } - } else { - DisplayJsonValue(topic, it->key, it->key, it->value.as()); // Topic 56% - } - } - } -} - -/*********************************************************************************************\ - * Public -\*********************************************************************************************/ - -void DisplayInit() -{ - if (!Settings.display_model) { -#ifdef USE_I2C - if (i2c_flg) { - if (I2cDevice(LCD_ADDRESS1)) { - Settings.display_address[0] = LCD_ADDRESS1; - Settings.display_model = DISP_LCD; - } - else if (I2cDevice(LCD_ADDRESS2)) { - Settings.display_address[0] = LCD_ADDRESS2; - Settings.display_model = DISP_LCD; - } - else if (I2cDevice(OLED_ADDRESS1)) { - Settings.display_address[0] = OLED_ADDRESS1; - Settings.display_model = DISP_OLED; - } - else if (I2cDevice(OLED_ADDRESS2)) { - Settings.display_address[0] = OLED_ADDRESS2; - Settings.display_model = DISP_OLED; - } - else if (I2cDevice(Settings.display_address[1])) { - Settings.display_model = DISP_MATRIX; - } - } -#endif // USE_I2C -#ifdef USE_SPI - if (spi_flg) { - Settings.display_model = DISP_TFT; - } -#endif // USE_SPI - } - disp_model = Settings.display_model; - -// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "Display model %d"), disp_model); -// AddLog(LOG_LEVEL_DEBUG); - - if (disp_model) { - devices_present++; - disp_device = devices_present; - snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%c"), TempUnit()); - disp_log_buffer_idx = 0; - disp_log_buffer_ptr = 0; - disp_log_buffer_active = false; - disp_refresh = Settings.display_refresh; - disp_mode = Settings.display_mode; - -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - DisplayLcdInit(); - } - else if (DISP_OLED == disp_model) { - DisplayOledInit(); - } - else if (DISP_MATRIX == disp_model) { - DisplayMatrixInit(); - } -#endif // USE_I2C -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftInit(); - } -#endif - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR(D_VERSION " %s"), my_version); - DisplayLogBufferIdxInc(); - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("Display mode %d"), disp_mode); - DisplayLogBufferIdxInc(); - } -} - -void DisplaySetPower() -{ -// disp_power = XdrvMailbox.index; - disp_power = bitRead(XdrvMailbox.index, disp_device -1); - if (disp_model) { - if (disp_power) { -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - lcd->backlight(); - } - else if (DISP_OLED == disp_model) { - DisplayOledDisplayOnOff(1); - } -#endif -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftDisplayOnOff(1); - } -#endif - } else { -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - lcd->noBacklight(); - } - else if (DISP_OLED == disp_model) { - DisplayOledDisplayOnOff(0); - } -#endif -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftDisplayOnOff(0); - } -#endif - } - } -} - -void DisplayMqttSubscribe() -{ -/* Subscribe to tele messages only - * Supports the following FullTopic formats - * - %prefix%/%topic% - * - home/%prefix%/%topic% - * - home/level2/%prefix%/%topic% etc. - */ -// if (Settings.display_mode &0x04) { - if (Settings.display_model) { - - char stopic[TOPSZ]; - char ntopic[TOPSZ]; - - ntopic[0] = '\0'; - strlcpy(stopic, Settings.mqtt_fulltopic, sizeof(stopic)); - char *tp = strtok(stopic, "/"); - while (tp != NULL) { - if (!strcmp_P(tp, PSTR(MQTT_TOKEN_PREFIX))) { - break; - } - strncat_P(ntopic, PSTR("+/"), sizeof(ntopic)); // Add single-level wildcards - tp = strtok(NULL, "/"); - } - strncat(ntopic, Settings.mqtt_prefix[2], sizeof(ntopic)); // Subscribe to tele messages - strncat_P(ntopic, PSTR("/#"), sizeof(ntopic)); // Add multi-level wildcard - MqttSubscribe(ntopic); - disp_subscribed = 1; - } else { - disp_subscribed = 0; - } -} - -boolean DisplayMqttData() -{ - if (disp_subscribed) { - char stopic[TOPSZ]; - - snprintf_P(stopic, sizeof(stopic) , PSTR("%s/"), Settings.mqtt_prefix[2]); // tele/ - char *tp = strstr(XdrvMailbox.topic, stopic); - if (tp) { // tele/sonoff/SENSOR - if (Settings.display_mode &0x04) { - tp = tp + strlen(stopic); // sonoff/SENSOR - char *topic = strtok(tp, "/"); // sonoff - DisplayAnalyzeJson(topic, XdrvMailbox.data); - } - return true; - } - } - return false; -} - -void DisplayLocalSensor() -{ - if ((Settings.display_mode &0x02) && (0 == tele_period)) { - DisplayAnalyzeJson(mqtt_topic, mqtt_data); - } -} - -void DisplayRefresh() // Every 0.05 second -{ - snprintf_P(disp_time, sizeof(disp_time), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); - - disp_second++; - if (disp_second >= STATES) { - disp_second = 0; - -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - switch (disp_mode) { - case 0: - lcd->clear(); - break; - case 1: - DisplayLcdTime(); - break; - case 2: - case 4: - DisplayScreenBuffer(); - break; - case 3: - case 5: - DisplayLcdBufferOrTime(); - break; - } - } - else if (DISP_OLED == disp_model) { - switch (disp_mode) { - // case 0: - // oled->clearDisplay(); - // oled->display(); - // break; - case 1: - DisplayOledTime(); - break; - case 0: // Text only - case 2: // Local - case 3: // Local - case 4: // Mqtt - case 5: // Mqtt - DisplayScreenBuffer(); - break; - } - } -#endif -#ifdef USE_SPI - if (DISP_TFT == disp_model) { - char tftdt[21]; - char disp_date4[11]; // 24-04-2017 - - snprintf_P(disp_date4, sizeof(disp_date4), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); - - tft->setTextSize(2); - tft->setTextColor(TFT_YELLOW, TFT_BLACK); // Add background color to solve flicker - tft->setCursor(0, 0); - snprintf_P(tftdt, sizeof(tftdt), PSTR("%s %s"), disp_date4, disp_time); - tft->print(tftdt); - switch (disp_mode) { - case 0: // Text - case 2: // Local - case 3: // Local - case 4: // Mqtt - case 5: // Mqtt - tft->setTextColor(TFT_CYAN, TFT_BLACK); // Add background color to solve flicker - DisplayTftBuffer(); - break; - } - } -#endif - } - -#ifdef USE_I2C - if (DISP_MATRIX == disp_model) { - if (!disp_power) { - DisplayMatrixClear(); - } else { - char disp_date[9]; // 24-04-17 - char disp_day[10]; // Mon - - snprintf_P(disp_date, sizeof(disp_date), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%02d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year -2000); - snprintf_P(disp_day, sizeof(disp_day), PSTR("%d %s"), RtcTime.day_of_month, RtcTime.name_of_month); - - switch (disp_mode) { - case 0: -// DisplayMatrixScrollLeft(Settings.text, Settings.loop); - case 2: - DisplayMatrixFixed(disp_date); - break; - case 3: - DisplayMatrixCenter(disp_day); - break; - case 4: - DisplayMatrixBufferScroll(0); - break; - case 1: // Time and user text - case 5: // Time, user text and MQTT - DisplayMatrixBufferScroll(1); - break; -// case 8: -// DisplayMatrixAllOn(); -// break; -// case 9: -// DisplayMatrixAll(); -// break; - } - } - } -#endif -} - -/*********************************************************************************************\ - * Commands -\*********************************************************************************************/ - -boolean DisplayCommand() -{ - char command [CMDSZ]; - boolean serviced = true; - uint8_t disp_len = strlen(D_CMND_DISPLAY); // Prep for string length change - - if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_DISPLAY), disp_len)) { // Prefix - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic +disp_len, kDisplayCommands); - if (CMND_DISP_MODEL == command_code) { - if ((XdrvMailbox.payload >= DISP_NONE) && (XdrvMailbox.payload < DISP_MAX)) { - Settings.display_model = XdrvMailbox.payload; - restart_flag = 2; // Restart to re-init interface and add/Remove MQTT subscribe - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model); - } - else if (CMND_DISP_MODE == command_code) { -/* - * Matrix LCD / Oled TFT - * 0 = Clear display - * 1 = Text up and time Time - * 2 = Date Local sensors Local sensors - * 3 = Day Local sensors and time Local sensors and time - * 4 = Mqtt left and time Mqtt (incl local) sensors Mqtt (incl local) sensors - * 5 = Mqtt up and time Mqtt (incl local) sensors and time Mqtt (incl local) sensors and time -*/ - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) { - Settings.display_mode = XdrvMailbox.payload; -// if ((disp_mode &0x04) != (Settings.display_mode &0x04)) { - if (!disp_subscribed) { - restart_flag = 2; // Restart to Add/Remove MQTT subscribe - } - disp_mode = Settings.display_mode; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode); - } - else if (CMND_DISP_REFRESH == command_code) { - if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) { - Settings.display_refresh = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh); - } - else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_COLS)) { - Settings.display_cols[XdrvMailbox.index -1] = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]); - } - else if (CMND_DISP_DIMMER == command_code) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { - Settings.display_dimmer = ((XdrvMailbox.payload +1) * 100) / 666; // Correction for Domoticz (0 - 15) - if (Settings.display_dimmer && !(disp_power)) { - ExecuteCommandPower(disp_device, POWER_ON); - } - else if (!Settings.display_dimmer && disp_power) { - ExecuteCommandPower(disp_device, POWER_OFF); - } - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer); - } - else if (CMND_DISP_ROWS == command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_ROWS)) { - Settings.display_rows = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows); - } - else if (CMND_DISP_SIZE == command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) { - Settings.display_size = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size); - } - else if (CMND_DISP_TEXT == command_code) { - if (XdrvMailbox.data_len > 0) { - - // Here display command manipulation could take place like textsize, color, position etc. using intext parameters - // Currently just adds to the logbuffer - - strlcpy(disp_log_buffer[disp_log_buffer_idx], XdrvMailbox.data, sizeof(disp_log_buffer[disp_log_buffer_idx])); - DisplayLogBufferIdxInc(); - } else { - snprintf_P(XdrvMailbox.data, XdrvMailbox.data_len, PSTR("Text too long")); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data); - } - else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) { - Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]); - } - else serviced = false; - } - else serviced = false; - return serviced; -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_14 - -boolean Xdrv14(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - if (i2c_flg || spi_flg) { - DisplayInit(); - } - break; - case FUNC_EVERY_50_MSECOND: - DisplayRefresh(); - break; - case FUNC_COMMAND: - result = DisplayCommand(); - break; - case FUNC_MQTT_SUBSCRIBE: - DisplayMqttSubscribe(); - break; - case FUNC_MQTT_DATA: - result = DisplayMqttData(); - break; - case FUNC_SET_POWER: - DisplaySetPower(); - break; - case FUNC_SHOW_SENSOR: - DisplayLocalSensor(); - break; - } - return result; -} - -#endif // USE_DISPLAY -#endif // USE_I2C or USE_SPI From 1c20dbe3a210ca21fba9197e855536e4694f1a7d Mon Sep 17 00:00:00 2001 From: ascillato Date: Tue, 5 Jun 2018 18:54:30 -0300 Subject: [PATCH 412/435] Revert "Revert Changes" This reverts commit 1c337ae28eed653b1382d33b6349906d7c191416. --- .github/1.jpg | Bin 0 -> 68619 bytes .github/2.jpg | Bin 0 -> 78315 bytes .github/3.jpg | Bin 0 -> 82436 bytes .github/4.jpg | Bin 0 -> 80450 bytes .github/5.jpg | Bin 0 -> 69690 bytes .github/6.jpg | Bin 0 -> 68331 bytes .github/7.jpg | Bin 0 -> 93256 bytes .github/Config_Menu.jpg | Bin 0 -> 78164 bytes .github/KNX_menu.jpg | Bin 0 -> 77343 bytes .github/donate.jpg | Bin 0 -> 19598 bytes .github/stale.yml | 20 +- COPYFILES.BAT | 37 + README.md | 163 ++ lib/Adafruit_GFX-1.2.2.07/.gitignore | 2 + lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp | 1348 +++++++++++++++++ lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h | 211 +++ lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp | 336 ++++ lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h | 80 + .../Adafruit_SPITFT_Macros.h | 114 ++ .../Fonts/FreeMono12pt7b.h | 227 +++ .../Fonts/FreeMono18pt7b.h | 363 +++++ .../Fonts/FreeMono24pt7b.h | 577 +++++++ .../Fonts/FreeMono9pt7b.h | 176 +++ .../Fonts/FreeMonoBold12pt7b.h | 250 +++ .../Fonts/FreeMonoBold18pt7b.h | 423 ++++++ .../Fonts/FreeMonoBold24pt7b.h | 672 ++++++++ .../Fonts/FreeMonoBold9pt7b.h | 189 +++ .../Fonts/FreeMonoBoldOblique12pt7b.h | 269 ++++ .../Fonts/FreeMonoBoldOblique18pt7b.h | 460 ++++++ .../Fonts/FreeMonoBoldOblique24pt7b.h | 742 +++++++++ .../Fonts/FreeMonoBoldOblique9pt7b.h | 203 +++ .../Fonts/FreeMonoOblique12pt7b.h | 248 +++ .../Fonts/FreeMonoOblique18pt7b.h | 398 +++++ .../Fonts/FreeMonoOblique24pt7b.h | 643 ++++++++ .../Fonts/FreeMonoOblique9pt7b.h | 187 +++ .../Fonts/FreeSans12pt7b.h | 270 ++++ .../Fonts/FreeSans18pt7b.h | 452 ++++++ .../Fonts/FreeSans24pt7b.h | 727 +++++++++ .../Fonts/FreeSans9pt7b.h | 201 +++ .../Fonts/FreeSansBold12pt7b.h | 288 ++++ .../Fonts/FreeSansBold18pt7b.h | 481 ++++++ .../Fonts/FreeSansBold24pt7b.h | 784 ++++++++++ .../Fonts/FreeSansBold9pt7b.h | 208 +++ .../Fonts/FreeSansBoldOblique12pt7b.h | 317 ++++ .../Fonts/FreeSansBoldOblique18pt7b.h | 545 +++++++ .../Fonts/FreeSansBoldOblique24pt7b.h | 893 +++++++++++ .../Fonts/FreeSansBoldOblique9pt7b.h | 227 +++ .../Fonts/FreeSansOblique12pt7b.h | 302 ++++ .../Fonts/FreeSansOblique18pt7b.h | 518 +++++++ .../Fonts/FreeSansOblique24pt7b.h | 840 ++++++++++ .../Fonts/FreeSansOblique9pt7b.h | 220 +++ .../Fonts/FreeSerif12pt7b.h | 259 ++++ .../Fonts/FreeSerif18pt7b.h | 429 ++++++ .../Fonts/FreeSerif24pt7b.h | 690 +++++++++ .../Fonts/FreeSerif9pt7b.h | 195 +++ .../Fonts/FreeSerifBold12pt7b.h | 271 ++++ .../Fonts/FreeSerifBold18pt7b.h | 462 ++++++ .../Fonts/FreeSerifBold24pt7b.h | 759 ++++++++++ .../Fonts/FreeSerifBold9pt7b.h | 202 +++ .../Fonts/FreeSerifBoldItalic12pt7b.h | 292 ++++ .../Fonts/FreeSerifBoldItalic18pt7b.h | 500 ++++++ .../Fonts/FreeSerifBoldItalic24pt7b.h | 793 ++++++++++ .../Fonts/FreeSerifBoldItalic9pt7b.h | 215 +++ .../Fonts/FreeSerifItalic12pt7b.h | 271 ++++ .../Fonts/FreeSerifItalic18pt7b.h | 450 ++++++ .../Fonts/FreeSerifItalic24pt7b.h | 737 +++++++++ .../Fonts/FreeSerifItalic9pt7b.h | 202 +++ lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h | 131 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h | 123 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b | 130 ++ lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h | 474 ++++++ lib/Adafruit_GFX-1.2.2.07/README.md | 31 + .../fontconvert/Makefile | 12 + .../fontconvert/fontconvert.c | 284 ++++ .../fontconvert/fontconvert_win.md | 88 ++ .../fontconvert/makefonts.sh | 38 + lib/Adafruit_GFX-1.2.2.07/gfxfont.h | 24 + lib/Adafruit_GFX-1.2.2.07/glcdfont.c | 276 ++++ lib/Adafruit_GFX-1.2.2.07/library.properties | 9 + lib/Adafruit_GFX-1.2.2.07/license.txt | 24 + .../Adafruit_LEDBackpack.cpp | 672 ++++++++ .../Adafruit_LEDBackpack.h | 171 +++ lib/Adafruit_LED_Backpack-1.1.6/README.md | 30 + lib/Adafruit_LED_Backpack-1.1.6/README.txt | 26 + .../examples/HT16K33/HT16K33.ino | 55 + .../examples/bargraph24/bargraph24.ino | 65 + .../examples/bicolor8x8/bicolor8x8.pde | 122 ++ .../clock_sevenseg_ds1307.ino | 178 +++ .../clock_sevenseg_gps/clock_sevenseg_gps.ino | 159 ++ .../examples/matrix16x8/matrix16x8.ino | 133 ++ .../examples/matrix8x8/matrix8x8.ino | 120 ++ .../minimatrix16x8/minimatrix16x8.ino | 123 ++ .../examples/quadalphanum/quadalphanum.ino | 73 + .../quadalphanum_mini/quadalphanum_mini.ino | 72 + .../examples/roboface/roboface.pde | 251 +++ .../examples/sevenseg/sevenseg.ino | 81 + .../examples/wavface/wavface.pde | 336 ++++ .../examples/wavface/wavs/beware_i.wav | Bin 0 -> 20802 bytes .../examples/wavface/wavs/ihunger.wav | Bin 0 -> 10258 bytes .../examples/wavface/wavs/run_cowd.wav | Bin 0 -> 16096 bytes .../library.properties | 9 + lib/Adafruit_LED_Backpack-1.1.6/license.txt | 21 + .../.github/ISSUE_TEMPLATE.md | 46 + .../.github/PULL_REQUEST_TEMPLATE.md | 26 + .../Adafruit_SSD1306.cpp | 729 +++++++++ lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h | 186 +++ lib/Adafruit_SSD1306-1.1.2/README.md | 32 + lib/Adafruit_SSD1306-1.1.2/README.txt | 24 + .../ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino | 375 +++++ .../ssd1306_128x32_spi/ssd1306_128x32_spi.ino | 368 +++++ .../ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino | 375 +++++ .../ssd1306_128x64_spi/ssd1306_128x64_spi.ino | 368 +++++ lib/Adafruit_SSD1306-1.1.2/library.properties | 9 + lib/Adafruit_SSD1306-1.1.2/license.txt | 26 + .../LiquidCrystal_I2C.cpp | 315 ++++ .../LiquidCrystal_I2C.h | 126 ++ .../LiquidCrystal_I2C.o | Bin 0 -> 41564 bytes lib/LiquidCrystal_I2C-1.1.3/README.md | 2 + .../examples/CustomChars/CustomChars.pde | 70 + .../examples/HelloWorld/HelloWorld.pde | 28 + .../examples/SerialDisplay/SerialDisplay.pde | 34 + lib/LiquidCrystal_I2C-1.1.3/keywords.txt | 46 + lib/LiquidCrystal_I2C-1.1.3/library.json | 15 + .../library.properties | 9 + lib/TasmotaTFT-1.0.1/README.txt | 21 + .../examples/graphicstest/graphicstest.ino | 360 +++++ lib/TasmotaTFT-1.0.1/keywords.txt | 41 + lib/TasmotaTFT-1.0.1/library.json | 15 + lib/TasmotaTFT-1.0.1/library.properties | 9 + lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp | 616 ++++++++ lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h | 137 ++ lib/process-control-master/LICENSE | 201 +++ lib/process-control-master/PID.cpp | 168 ++ lib/process-control-master/PID.h | 89 ++ lib/process-control-master/README.md | 2 + lib/process-control-master/Timeprop.cpp | 94 ++ lib/process-control-master/Timeprop.h | 85 ++ platformio.ini | 172 ++- sonoff/i18n.h | 2 +- sonoff/support.ino | 27 + sonoff/user_config.h | 224 ++- sonoff/xdrv_13_controller.ino | 603 ++++++++ sonoff/xdrv_14_display.ino | 1096 ++++++++++++++ 143 files changed, 33770 insertions(+), 80 deletions(-) create mode 100644 .github/1.jpg create mode 100644 .github/2.jpg create mode 100644 .github/3.jpg create mode 100644 .github/4.jpg create mode 100644 .github/5.jpg create mode 100644 .github/6.jpg create mode 100644 .github/7.jpg create mode 100644 .github/Config_Menu.jpg create mode 100644 .github/KNX_menu.jpg create mode 100644 .github/donate.jpg create mode 100644 COPYFILES.BAT create mode 100644 lib/Adafruit_GFX-1.2.2.07/.gitignore create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b create mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/README.md create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md create mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh create mode 100644 lib/Adafruit_GFX-1.2.2.07/gfxfont.h create mode 100644 lib/Adafruit_GFX-1.2.2.07/glcdfont.c create mode 100644 lib/Adafruit_GFX-1.2.2.07/library.properties create mode 100644 lib/Adafruit_GFX-1.2.2.07/license.txt create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.md create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.txt create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/roboface/roboface.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/ihunger.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/library.properties create mode 100644 lib/Adafruit_LED_Backpack-1.1.6/license.txt create mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp create mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h create mode 100644 lib/Adafruit_SSD1306-1.1.2/README.md create mode 100644 lib/Adafruit_SSD1306-1.1.2/README.txt create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_spi/ssd1306_128x32_spi.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_spi/ssd1306_128x64_spi.ino create mode 100644 lib/Adafruit_SSD1306-1.1.2/library.properties create mode 100644 lib/Adafruit_SSD1306-1.1.2/license.txt create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h create mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o create mode 100644 lib/LiquidCrystal_I2C-1.1.3/README.md create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde create mode 100644 lib/LiquidCrystal_I2C-1.1.3/keywords.txt create mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.json create mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.properties create mode 100644 lib/TasmotaTFT-1.0.1/README.txt create mode 100644 lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino create mode 100644 lib/TasmotaTFT-1.0.1/keywords.txt create mode 100644 lib/TasmotaTFT-1.0.1/library.json create mode 100644 lib/TasmotaTFT-1.0.1/library.properties create mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp create mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h create mode 100644 lib/process-control-master/LICENSE create mode 100644 lib/process-control-master/PID.cpp create mode 100644 lib/process-control-master/PID.h create mode 100644 lib/process-control-master/README.md create mode 100644 lib/process-control-master/Timeprop.cpp create mode 100644 lib/process-control-master/Timeprop.h create mode 100644 sonoff/xdrv_13_controller.ino create mode 100644 sonoff/xdrv_14_display.ino diff --git a/.github/1.jpg b/.github/1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..757a10a96e69f3636fffd4faca69ebac735aec6f GIT binary patch literal 68619 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 R0(u9e{viLWT&Uf_{|%m~h93X` literal 0 HcmV?d00001 diff --git a/.github/2.jpg b/.github/2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ea4b4b47135953a2501d3b7b8c39ee526497608 GIT binary patch literal 78315 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 c6+M73KqVrn>g#<$!G8XSJM~3%ng4YMXqv%Tc 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 literal 0 HcmV?d00001 diff --git a/.github/4.jpg b/.github/4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d81e3854c3d408c40fb000b8f4a2e3942e81ebb3 GIT binary patch literal 80450 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%0DLtB?ER!5`1lNl4>#-n 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 aByvN^vSRJaU*f6#RX*Fl_;>JcgZ~Tq04H_; literal 0 HcmV?d00001 diff --git a/.github/5.jpg b/.github/5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..503e613e5dc8433a647e0e8f33011fccfbab9688 GIT binary patch literal 69690 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⁡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 literal 0 HcmV?d00001 diff --git a/.github/6.jpg b/.github/6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b52221b9e4cdfdd0d8d55a5e4ed1ceeca4551d78 GIT binary patch literal 68331 zcmeFYc~leI+b$SHMMOnFL_vtkCnZd{`AVg*n zLu8ChiOd2bGe{UhKtzT>!Vn5F&~@(pzT17yuUD_%{nonO{l~3juS#~+uJyiEyY_yb z=Y99~kL^jwK{I1hV+bD~ALJhRfozXLE<<+k@%{DvkBxs9|6kkgojdt=3G5aS_^a#@ z6cXICXYU>XfxY|p?iJbxZUTY_g!k_|@YnCZF7j9NzgmIceR~A<{B_3v+_wD%BC=

RR^XDZzN(B*y_NZLXw^y&2$O!XX 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�ht` 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 literal 0 HcmV?d00001 diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3781adef6462a5646c9678b5cd3bfe560c750299 GIT binary patch literal 78164 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¬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 S!Z&8^UmLgoTR(6A-1C1M_q1OC literal 0 HcmV?d00001 diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1fea0abf6b3cbd49f4d8487e5497311527f46991 GIT binary patch literal 77343 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%0Dc= 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 literal 0 HcmV?d00001 diff --git a/.github/stale.yml b/.github/stale.yml index 88c5f7c21..9a3b438ac 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,3 +1,7 @@ +# Configuration for probot-stale - Activate from https://github.com/apps/stale +# +# Probot-stale Repository: https://github.com/probot/stale + # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 45 @@ -26,6 +30,7 @@ markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. + # Comment to post when removing the stale label. # unmarkComment: > # Your comment here. @@ -33,8 +38,21 @@ markComment: > # Comment to post when closing a stale Issue or Pull Request. closeComment: > This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. + # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 30 # Limit to only `issues` or `pulls` -only: issues +#only: issues + +# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': +# pulls: +# daysUntilStale: 30 +# markComment: > +# This pull request has been automatically marked as stale because it has not had +# recent activity. It will be closed if no further activity occurs. Thank you +# for your contributions. + +# issues: +# exemptLabels: +# - confirmed diff --git a/COPYFILES.BAT b/COPYFILES.BAT new file mode 100644 index 000000000..8d7cf75f5 --- /dev/null +++ b/COPYFILES.BAT @@ -0,0 +1,37 @@ +@echo off + +echo *************************************************************** +echo: +echo Copying Firmwares for Release +echo: +echo *************************************************************** + +cd %USERPROFILE%\Documents\GitHub\Sonoff-Tasmota_KNX\.pioenvs + +copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin +copy sonoff-BR\firmware.bin sonoff_KNX-BR.bin +copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin +copy sonoff-CZ\firmware.bin sonoff_KNX-CZ.bin +copy sonoff-DE\firmware.bin sonoff_KNX-DE.bin +copy sonoff-DE_4MB\firmware.bin sonoff_KNX-DE-4MB.bin +copy sonoff-EN\firmware.bin sonoff_KNX-EN.bin +copy sonoff-EN_4MB\firmware.bin sonoff_KNX-EN-4MB.bin +copy sonoff-ES\firmware.bin sonoff_KNX-ES.bin +copy sonoff-ES_4MB\firmware.bin sonoff_KNX-ES-4MB.bin +copy sonoff-FR\firmware.bin sonoff_KNX-FR.bin +copy sonoff-GR\firmware.bin sonoff_KNX-GR.bin +copy sonoff-HU\firmware.bin sonoff_KNX-HU.bin +copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin +copy sonoff-minimal\firmware.bin sonoff_minimal.bin +copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin +copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin +copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin +copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin +copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin +copy sonoff-UK\firmware.bin sonoff_KNX-UK.bin + +echo: +echo: +echo DONE... +echo: +pause diff --git a/README.md b/README.md index 6c1bf4e3d..e9848b800 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,166 @@ +# Sonoff-Tasmota KNX (Development Repository) +## Now integrated in [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota)! + +[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). + +[![GitHub version](https://img.shields.io/github/release/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/ascillato/Sonoff-Tasmota_KNX/total.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![License](https://img.shields.io/github/license/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/blob/development/LICENSE.txt) + +If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! +[![GitHub stars](https://img.shields.io/github/stars/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Star)](https://github.com/ascillato/Sonoff-Tasmota_KNX/stargazers) +[![GitHub forks](https://img.shields.io/github/forks/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Fork)](https://github.com/ascillato/Sonoff-Tasmota_KNX/network) + +Any help or comment is very welcome. + +## Table of Contents + +* [KNX Explanation](#knx-explanation) +* [Integration](#integration) +* [Requirement](#requirement) +* [Usage Examples](#usage-examples) +* [Development Road Map](#development-road-map) +* [Modifications to Sonoff-Tasmota](#modifications-to-sonoff-tasmota) +* [Contributors](#contributors) +* [Sonoff-Tasmota](#sonoff-tasmota) + +## KNX Explanation ## + +[](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) + +The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buildings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_, so there is no need for a KNX Router unless you want to communicate to KNX Devices that are not in the WIFI Network (Twisted Pair, RF, Powerline). + +Each device has a physical address (like a fixed IP) as **1 . 1 . 0** and that address is used for configuration purposes. + +Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. +So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. + +## Integration ## + +Several home automation systems have KNX support. For example, [Home Assistant](https://github.com/home-assistant/home-assistant) has a [XKNX Python Library](https://github.com/XKNX/xknx) to connect to KNX devices using a KNX Router. If you don't have a **KNX Router**, you can use a **Software KNX Router** like [KNXd](https://github.com/knxd/knxd) on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF. + +If you use the ETS (KNX Configurator Software) you can add any Sonoff-Tasmota_KNX as a dummy device. + +## Requirement ## + +* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0). + +It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. + +## Usage Examples ## + +There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on _Configure Module Menu_. + +To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select Configure KNX. + + + + +**1) Setting Several Sonoff to be controlled as one by a Home Automation System:** + +We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. +In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. + +DEVICE 1 + + + +DEVICE 2 + + + +**2) Setting 2 Sonoff to be linked as stair lights:** + +We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. + +DEVICE 1 + + + +DEVICE 2 + + + +**3) Setting a button as initiator of a scene:** + +Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. + +DEVICE 1 + + + +DEVICE 2 + + + +**4) Setting a Temperature sensor:** + +We can configure to send the value of temperature or humidity every teleperiod. This teleperiod can be configured. See Sonoff Tasmota [wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Commands). It is recommended also to set the reply temperature address. + + + +## Development Road Map ## + +**For Sonoff-Tasmota_KNX:** +- [x] Add Web Menu +- [x] Add Feature to Receive telegrams and modify Relay Status +- [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) +- [x] Add Feature to Send telegrams of relay status change +- [x] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) +- [x] Add Feature to Send telegrams of button pressed +- [x] Add Feature to receive telegrams to toggle relay status +- [x] Add Feature to read Temperature, Humidity from Tasmota +- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) +- [x] Add Feature to receive command to read temperature, Humidity +- [x] Add Feature to recognize Tasmota config to show the same number of relays, buttons, etc. +- [x] Add Feature to Save Config +- [x] Add Feature to Load Config +- [x] Add Log Info +- [x] Complete all the language files with keys +- [x] Add support for other output devices supported by Tasmota +- [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) +- [x] Add command for rules to send values and commands by KNX +- [x] Add events for rules when receiving data from KNX and read requests +- [x] Add option for increase communication reliability (re send telegrams) +- [ ] Add option for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) +- [ ] Add option to support KNX Snooping to debug KNX Network +- [ ] Add option for KNXnet/IP Tunneling +- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling +- [ ] Add option to support ETS Programming +- [ ] Optimize code to reduce Flash and RAM + +## Modifications to Sonoff-Tasmota ## + +* Added the file _/sonoff/xdrv_11_KNX.ino_ +* Added the entry `#define USE_KNX` on _/sonoff/user_config.h_ +* Added entries to the file _/sonoff/webserver.ino_ +* Added entries to the file _/sonoff/sonoff.ino_ +* Added entries to the file _/sonoff/sonoff.h_ +* Added entries to the file _/sonoff/settings.h_ +* Added entries to the file _/sonoff/support.ino_ +* Added entries to sensor files +* Added entries to language files + +Up to now, enabling KNX uses +23k of code and +3k3 of memory. + +There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. + +## Contributors ## + +* [ascillato](https://github.com/ascillato) ( Adrian Scillato ) +* [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. +* [envy](https://github.com/envy) ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP. +* [arendst](https://github.com/arendst) ( Theo Arends ) - Thanks for the guide on Tasmota and for the ideas. +* [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions +* [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions +* [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions +* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXd](https://github.com/knxd/knxd) use. +* And many others providing testing, bug reporting and feature requests. + +----------------------------------------------------------------------------------------------------------------------------------- + +[](https://www.paypal.me/ascillato) + +----------------------------------------------------------------------------------------------------------------------------------- + ## Sonoff-Tasmota Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_ with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **Serial**, **HTTP**, **MQTT** and **KNX**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO. diff --git a/lib/Adafruit_GFX-1.2.2.07/.gitignore b/lib/Adafruit_GFX-1.2.2.07/.gitignore new file mode 100644 index 000000000..7b2fd3a2f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/.gitignore @@ -0,0 +1,2 @@ +default.vim +fontconvert/fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp new file mode 100644 index 000000000..53c7ad35c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp @@ -0,0 +1,1348 @@ +/* +This is the core graphics library for all our displays, providing a common +set of graphics primitives (points, lines, circles, etc.). It needs to be +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. + */ + +#include "Adafruit_GFX.h" +#include "glcdfont.c" +#ifdef __AVR__ + #include +#elif defined(ESP8266) || defined(ESP32) + #include +#endif + +// Many (but maybe not all) non-AVR board installs define macros +// for compatibility with existing PROGMEM-reading AVR code. +// Do our own checks and defines here for good measure... + +#ifndef pgm_read_byte + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#endif +#ifndef pgm_read_word + #define pgm_read_word(addr) (*(const unsigned short *)(addr)) +#endif +#ifndef pgm_read_dword + #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) +#endif + +// Pointers are a peculiar case...typically 16-bit on AVR boards, +// 32 bits elsewhere. Try to accommodate both... + +#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF) + #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) +#else + #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr)) +#endif + +#ifndef min +#define min(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } +#endif + +Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): +WIDTH(w), HEIGHT(h) +{ + _width = WIDTH; + _height = HEIGHT; + rotation = 0; + cursor_y = cursor_x = 0; + textsize = 1; + textcolor = textbgcolor = 0xFFFF; + wrap = true; + _cp437 = false; + gfxFont = NULL; +} + +// Bresenham's algorithm - thx wikpedia +void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + uint16_t color) { + int16_t steep = abs(y1 - y0) > abs(x1 - x0); + if (steep) { + _swap_int16_t(x0, y0); + _swap_int16_t(x1, y1); + } + + if (x0 > x1) { + _swap_int16_t(x0, x1); + _swap_int16_t(y0, y1); + } + + int16_t dx, dy; + dx = x1 - x0; + dy = abs(y1 - y0); + + int16_t err = dx / 2; + int16_t ystep; + + if (y0 < y1) { + ystep = 1; + } else { + ystep = -1; + } + + for (; x0<=x1; x0++) { + if (steep) { + writePixel(y0, x0, color); + } else { + writePixel(x0, y0, color); + } + err -= dy; + if (err < 0) { + y0 += ystep; + err += dx; + } + } +} + +void Adafruit_GFX::startWrite(){ + // Overwrite in subclasses if desired! +} + +void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){ + // Overwrite in subclasses if startWrite is defined! + drawPixel(x, y, color); +} + +// (x,y) is topmost point; if unsure, calling function +// should sort endpoints or call writeLine() instead +void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Can be just writeLine(x, y, x, y+h-1, color); + // or writeFillRect(x, y, 1, h, color); + drawFastVLine(x, y, h, color); +} + +// (x,y) is leftmost point; if unsure, calling function +// should sort endpoints or call writeLine() instead +void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + // Overwrite in subclasses if startWrite is defined! + // Example: writeLine(x, y, x+w-1, y, color); + // or writeFillRect(x, y, w, 1, color); + drawFastHLine(x, y, w, color); +} + +void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Overwrite in subclasses if desired! + fillRect(x,y,w,h,color); +} + +void Adafruit_GFX::endWrite(){ + // Overwrite in subclasses if startWrite is defined! +} + +// (x,y) is topmost point; if unsure, calling function +// should sort endpoints or call drawLine() instead +void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + // Update in subclasses if desired! + startWrite(); + writeLine(x, y, x, y+h-1, color); + endWrite(); +} + +// (x,y) is leftmost point; if unsure, calling function +// should sort endpoints or call drawLine() instead +void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + // Update in subclasses if desired! + startWrite(); + writeLine(x, y, x+w-1, y, color); + endWrite(); +} + +void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + // Update in subclasses if desired! + startWrite(); + for (int16_t i=x; i y1) _swap_int16_t(y0, y1); + drawFastVLine(x0, y0, y1 - y0 + 1, color); + } else if(y0 == y1){ + if(x0 > x1) _swap_int16_t(x0, x1); + drawFastHLine(x0, y0, x1 - x0 + 1, color); + } else { + startWrite(); + writeLine(x0, y0, x1, y1, color); + endWrite(); + } +} + +// Draw a circle outline +void Adafruit_GFX::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; + + startWrite(); + writePixel(x0 , y0+r, color); + writePixel(x0 , y0-r, color); + writePixel(x0+r, y0 , color); + writePixel(x0-r, y0 , color); + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + writePixel(x0 + x, y0 + y, color); + writePixel(x0 - x, y0 + y, color); + writePixel(x0 + x, y0 - y, color); + writePixel(x0 - x, y0 - y, color); + writePixel(x0 + y, y0 + x, color); + writePixel(x0 - y, y0 + x, color); + writePixel(x0 + y, y0 - x, color); + writePixel(x0 - y, y0 - x, color); + } + endWrite(); +} + +void Adafruit_GFX::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; + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + if (cornername & 0x4) { + writePixel(x0 + x, y0 + y, color); + writePixel(x0 + y, y0 + x, color); + } + if (cornername & 0x2) { + writePixel(x0 + x, y0 - y, color); + writePixel(x0 + y, y0 - x, color); + } + if (cornername & 0x8) { + writePixel(x0 - y, y0 + x, color); + writePixel(x0 - x, y0 + y, color); + } + if (cornername & 0x1) { + writePixel(x0 - y, y0 - x, color); + writePixel(x0 - x, y0 - y, color); + } + } +} + +void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, + uint16_t color) { + startWrite(); + writeFastVLine(x0, y0-r, 2*r+1, color); + fillCircleHelper(x0, y0, r, 3, 0, color); + endWrite(); +} + +// Used to do circles and roundrects +void Adafruit_GFX::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; + + while (x= 0) { + y--; + ddF_y += 2; + f += ddF_y; + } + x++; + ddF_x += 2; + f += ddF_x; + + if (cornername & 0x1) { + writeFastVLine(x0+x, y0-y, 2*y+1+delta, color); + writeFastVLine(x0+y, y0-x, 2*x+1+delta, color); + } + if (cornername & 0x2) { + writeFastVLine(x0-x, y0-y, 2*y+1+delta, color); + writeFastVLine(x0-y, y0-x, 2*x+1+delta, color); + } + } +} + +// Draw a rectangle +void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + writeFastHLine(x, y+h-1, w, color); + writeFastVLine(x, y, h, color); + writeFastVLine(x+w-1, y, h, color); + endWrite(); +} + +// Draw a rounded rectangle +void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, + int16_t h, int16_t r, uint16_t color) { + // smarter version + startWrite(); + writeFastHLine(x+r , y , w-2*r, color); // Top + writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom + writeFastVLine(x , y+r , h-2*r, color); // Left + writeFastVLine(x+w-1, y+r , h-2*r, color); // Right + // 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); + endWrite(); +} + +// Fill a rounded rectangle +void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, + int16_t h, int16_t r, uint16_t color) { + // smarter version + startWrite(); + writeFillRect(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); + endWrite(); +} + +// Draw a triangle +void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { + drawLine(x0, y0, x1, y1, color); + drawLine(x1, y1, x2, y2, color); + drawLine(x2, y2, x0, y0, color); +} + +// Fill a triangle +void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, + int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { + + int16_t a, b, y, last; + + // Sort coordinates by Y order (y2 >= y1 >= y0) + if (y0 > y1) { + _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); + } + if (y1 > y2) { + _swap_int16_t(y2, y1); _swap_int16_t(x2, x1); + } + if (y0 > y1) { + _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); + } + + startWrite(); + 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; + writeFastHLine(a, y0, b-a+1, color); + endWrite(); + return; + } + + int16_t + dx01 = x1 - x0, + dy01 = y1 - y0, + dx02 = x2 - x0, + dy02 = y2 - y0, + dx12 = x2 - x1, + dy12 = y2 - y1; + int32_t + 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 + + 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_int16_t(a,b); + writeFastHLine(a, y, b-a+1, color); + } + + // 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_int16_t(a,b); + writeFastHLine(a, y, b-a+1, color); + } + endWrite(); +} + +// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- + +// Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, +// using the specified foreground color (unset bits are transparent). +void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) { + + int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte + uint8_t byte = 0; + + startWrite(); + for(int16_t j=0; j>= 1; + else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); + // Nearly identical to drawBitmap(), only the bit order + // is reversed here (left-to-right = LSB to MSB): + if(byte & 0x01) writePixel(x+i, y, color); + } + } + endWrite(); +} + +// Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) +// pos. Specifically for 8-bit display devices such as IS31FL3731; +// no color reduction/expansion is performed. +void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], int16_t w, int16_t h) { + startWrite(); + for(int16_t j=0; j= _width) || // Clip right + (y >= _height) || // Clip bottom + ((x + 6 * size - 1) < 0) || // Clip left + ((y + 8 * size - 1) < 0)) // Clip top + return; + + if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior + + startWrite(); + for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns + uint8_t line = pgm_read_byte(&font[c * 5 + i]); + for(int8_t j=0; j<8; j++, line >>= 1) { + if(line & 1) { + if(size == 1) + writePixel(x+i, y+j, color); + else + writeFillRect(x+i*size, y+j*size, size, size, color); + } else if(bg != color) { + if(size == 1) + writePixel(x+i, y+j, bg); + else + writeFillRect(x+i*size, y+j*size, size, size, bg); + } + } + } + if(bg != color) { // If opaque, draw vertical line for last column + if(size == 1) writeFastVLine(x+5, y, 8, bg); + else writeFillRect(x+5*size, y, size, 8*size, bg); + } + endWrite(); + + } else { // Custom font + + // Character is assumed previously filtered by write() to eliminate + // newlines, returns, non-printable characters, etc. Calling + // drawChar() directly with 'bad' characters of font may cause mayhem! + + c -= (uint8_t)pgm_read_byte(&gfxFont->first); + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); + uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); + + uint16_t bo = pgm_read_word(&glyph->bitmapOffset); + uint8_t w = pgm_read_byte(&glyph->width), + h = pgm_read_byte(&glyph->height); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + uint8_t xx, yy, bits = 0, bit = 0; + int16_t xo16 = 0, yo16 = 0; + + if(size > 1) { + xo16 = xo; + yo16 = yo; + } + + // Todo: Add character clipping here + + // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS. + // THIS IS ON PURPOSE AND BY DESIGN. The background color feature + // has typically been used with the 'classic' font to overwrite old + // screen contents with new data. This ONLY works because the + // characters are a uniform size; it's not a sensible thing to do with + // proportionally-spaced fonts with glyphs of varying sizes (and that + // may overlap). To replace previously-drawn text when using a custom + // font, use the getTextBounds() function to determine the smallest + // rectangle encompassing a string, erase the area with fillRect(), + // then draw new text. This WILL infortunately 'blink' the text, but + // is unavoidable. Drawing 'background' pixels will NOT fix this, + // only creates a new set of problems. Have an idea to work around + // this (a canvas object type for MCUs that can afford the RAM and + // displays supporting setAddrWindow() and pushColors()), but haven't + // implemented this yet. + + startWrite(); + for(yy=0; yy= 100 +size_t Adafruit_GFX::write(uint8_t c) { +#else +void Adafruit_GFX::write(uint8_t c) { +#endif + if(!gfxFont) { // 'Classic' built-in font + + if(c == '\n') { // Newline? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize * 8; // advance y one line + } else if(c != '\r') { // Ignore carriage returns + if(wrap && ((cursor_x + textsize * 6) > _width)) { // Off right? + cursor_x = 0; // Reset x to zero, + cursor_y += textsize * 8; // advance y one line + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); + cursor_x += textsize * 6; // Advance x one char + } + + } else { // Custom font + + if(c == '\n') { + cursor_x = 0; + cursor_y += (int16_t)textsize * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if(c != '\r') { + uint8_t first = pgm_read_byte(&gfxFont->first); + if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( + &gfxFont->glyph))[c - first]); + uint8_t w = pgm_read_byte(&glyph->width), + h = pgm_read_byte(&glyph->height); + if((w > 0) && (h > 0)) { // Is there an associated bitmap? + int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic + if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) { + cursor_x = 0; + cursor_y += (int16_t)textsize * + (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); + } + cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize; + } + } + + } +#if ARDUINO >= 100 + return 1; +#endif +} + +void Adafruit_GFX::setCursor(int16_t x, int16_t y) { + cursor_x = x; + cursor_y = y; +} + +int16_t Adafruit_GFX::getCursorX(void) const { + return cursor_x; +} + +int16_t Adafruit_GFX::getCursorY(void) const { + return cursor_y; +} + +void Adafruit_GFX::setTextSize(uint8_t s) { + textsize = (s > 0) ? s : 1; +} + +void Adafruit_GFX::setTextColor(uint16_t c) { + // For 'transparent' background, we'll set the bg + // to the same as fg instead of using a flag + textcolor = textbgcolor = c; +} + +void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { + textcolor = c; + textbgcolor = b; +} + +void Adafruit_GFX::setTextWrap(boolean w) { + wrap = w; +} + +uint8_t Adafruit_GFX::getRotation(void) const { + return rotation; +} + +void Adafruit_GFX::setRotation(uint8_t x) { + rotation = (x & 3); + switch(rotation) { + case 0: + case 2: + _width = WIDTH; + _height = HEIGHT; + break; + case 1: + case 3: + _width = HEIGHT; + _height = WIDTH; + break; + } +} + +// Enable (or disable) Code Page 437-compatible charset. +// There was an error in glcdfont.c for the longest time -- one character +// (#176, the 'light shade' block) was missing -- this threw off the index +// of every character that followed it. But a TON of code has been written +// with the erroneous character indices. By default, the library uses the +// original 'wrong' behavior and old sketches will still work. Pass 'true' +// to this function to use correct CP437 character values in your code. +void Adafruit_GFX::cp437(boolean x) { + _cp437 = x; +} + +void Adafruit_GFX::setFont(const GFXfont *f) { + if(f) { // Font struct pointer passed in? + if(!gfxFont) { // And no current font struct? + // Switching from classic to new font behavior. + // Move cursor pos down 6 pixels so it's on baseline. + cursor_y += 6; + } + } else if(gfxFont) { // NULL passed. Current font struct defined? + // Switching from new to classic font behavior. + // Move cursor pos up 6 pixels so it's at top-left of char. + cursor_y -= 6; + } + gfxFont = (GFXfont *)f; +} + +// Broke this out as it's used by both the PROGMEM- and RAM-resident +// getTextBounds() functions. +void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) { + + if(gfxFont) { + + if(c == '\n') { // Newline? + *x = 0; // Reset x to zero, advance y by one line + *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } else if(c != '\r') { // Not a carriage return; is normal char + uint8_t first = pgm_read_byte(&gfxFont->first), + last = pgm_read_byte(&gfxFont->last); + if((c >= first) && (c <= last)) { // Char present in this font? + GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( + &gfxFont->glyph))[c - first]); + uint8_t gw = pgm_read_byte(&glyph->width), + gh = pgm_read_byte(&glyph->height), + xa = pgm_read_byte(&glyph->xAdvance); + int8_t xo = pgm_read_byte(&glyph->xOffset), + yo = pgm_read_byte(&glyph->yOffset); + if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) { + *x = 0; // Reset x to zero, advance y by one line + *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); + } + int16_t ts = (int16_t)textsize, + x1 = *x + xo * ts, + y1 = *y + yo * ts, + x2 = x1 + gw * ts - 1, + y2 = y1 + gh * ts - 1; + if(x1 < *minx) *minx = x1; + if(y1 < *miny) *miny = y1; + if(x2 > *maxx) *maxx = x2; + if(y2 > *maxy) *maxy = y2; + *x += xa * ts; + } + } + + } else { // Default font + + if(c == '\n') { // Newline? + *x = 0; // Reset x to zero, + *y += textsize * 8; // advance y one line + // min/max x/y unchaged -- that waits for next 'normal' character + } else if(c != '\r') { // Normal char; ignore carriage returns + if(wrap && ((*x + textsize * 6) > _width)) { // Off right? + *x = 0; // Reset x to zero, + *y += textsize * 8; // advance y one line + } + int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char + y2 = *y + textsize * 8 - 1; + if(x2 > *maxx) *maxx = x2; // Track max x, y + if(y2 > *maxy) *maxy = y2; + if(*x < *minx) *minx = *x; // Track min x, y + if(*y < *miny) *miny = *y; + *x += textsize * 6; // Advance x one char + } + } +} + +// Pass string and a cursor position, returns UL corner and W,H. +void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { + uint8_t c; // Current character + + *x1 = x; + *y1 = y; + *w = *h = 0; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while((c = *str++)) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if(maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if(maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +// Same as above, but for PROGMEM strings +void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str, + int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { + uint8_t *s = (uint8_t *)str, c; + + *x1 = x; + *y1 = y; + *w = *h = 0; + + int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; + + while((c = pgm_read_byte(s++))) + charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); + + if(maxx >= minx) { + *x1 = minx; + *w = maxx - minx + 1; + } + if(maxy >= miny) { + *y1 = miny; + *h = maxy - miny + 1; + } +} + +// Return the size of the display (per current rotation) +int16_t Adafruit_GFX::width(void) const { + return _width; +} + +int16_t Adafruit_GFX::height(void) const { + return _height; +} + +void Adafruit_GFX::invertDisplay(boolean i) { + // Do nothing, must be subclassed if supported by hardware +} + +/***************************************************************************/ +// code for the GFX button UI element + +Adafruit_GFX_Button::Adafruit_GFX_Button(void) { + _gfx = 0; +} + +// Classic initButton() function: pass center & size +void Adafruit_GFX_Button::initButton( + Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) +{ + // Tweak arguments and pass to the newer initButtonUL() function... + initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, + textcolor, label, textsize); +} + +// Newer function instead accepts upper-left corner & size +void Adafruit_GFX_Button::initButtonUL( + Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h, + uint16_t outline, uint16_t fill, uint16_t textcolor, + char *label, uint8_t textsize) +{ + _x1 = x1; + _y1 = y1; + _w = w; + _h = h; + _outlinecolor = outline; + _fillcolor = fill; + _textcolor = textcolor; + _textsize = textsize; + _gfx = gfx; + strncpy(_label, label, 9); +} + +void Adafruit_GFX_Button::drawButton(boolean inverted) { + uint16_t fill, outline, text; + + if(!inverted) { + fill = _fillcolor; + outline = _outlinecolor; + text = _textcolor; + } else { + fill = _textcolor; + outline = _outlinecolor; + text = _fillcolor; + } + + uint8_t r = min(_w, _h) / 4; // Corner radius + _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); + _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); + + _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize), + _y1 + (_h/2) - (4 * _textsize)); + _gfx->setTextColor(text); + _gfx->setTextSize(_textsize); + _gfx->print(_label); +} + +boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) { + return ((x >= _x1) && (x < (_x1 + _w)) && + (y >= _y1) && (y < (_y1 + _h))); +} + +void Adafruit_GFX_Button::press(boolean p) { + laststate = currstate; + currstate = p; +} + +boolean Adafruit_GFX_Button::isPressed() { return currstate; } +boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } +boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } + +// ------------------------------------------------------------------------- + +// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too +// comfy with the implementation) provide 1-, 8- and 16-bit offscreen +// canvases, the address of which can be passed to drawBitmap() or +// pushColors() (the latter appears only in a couple of GFX-subclassed TFT +// libraries at this time). This is here mostly to help with the recently- +// added proportionally-spaced fonts; adds a way to refresh a section of the +// screen without a massive flickering clear-and-redraw...but maybe you'll +// find other uses too. VERY RAM-intensive, since the buffer is in MCU +// memory and not the display driver...GXFcanvas1 might be minimally useful +// on an Uno-class board, but this and the others are much more likely to +// require at least a Mega or various recent ARM-type boards (recommended, +// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per +// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte +// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no +// scanline pad). +// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. + +GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint16_t bytes = ((w + 7) / 8) * h; + if((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas1::~GFXcanvas1(void) { + if(buffer) free(buffer); +} + +uint8_t* GFXcanvas1::getBuffer(void) { + return buffer; +} + +void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) { +#ifdef __AVR__ + // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR + static const uint8_t PROGMEM + GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, + GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE }; +#endif + + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; +#ifdef __AVR__ + if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); + else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); +#else + if(color) *ptr |= 0x80 >> (x & 7); + else *ptr &= ~(0x80 >> (x & 7)); +#endif + } +} + +void GFXcanvas1::fillScreen(uint16_t color) { + if(buffer) { + uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT; + memset(buffer, color ? 0xFF : 0x00, bytes); + } +} + +GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint32_t bytes = w * h; + if((buffer = (uint8_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas8::~GFXcanvas8(void) { + if(buffer) free(buffer); +} + +uint8_t* GFXcanvas8::getBuffer(void) { + return buffer; +} + +void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) { + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + buffer[x + y * WIDTH] = color; + } +} + +void GFXcanvas8::fillScreen(uint16_t color) { + if(buffer) { + memset(buffer, color, WIDTH * HEIGHT); + } +} + +void GFXcanvas8::writeFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + + if((x >= _width) || (y < 0) || (y >= _height)) return; + int16_t x2 = x + w - 1; + if(x2 < 0) return; + + // Clip left/right + if(x < 0) { + x = 0; + w = x2 + 1; + } + if(x2 >= _width) w = _width - x; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + memset(buffer + y * WIDTH + x, color, w); +} + +GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { + uint32_t bytes = w * h * 2; + if((buffer = (uint16_t *)malloc(bytes))) { + memset(buffer, 0, bytes); + } +} + +GFXcanvas16::~GFXcanvas16(void) { + if(buffer) free(buffer); +} + +uint16_t* GFXcanvas16::getBuffer(void) { + return buffer; +} + +void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) { + if(buffer) { + if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; + + int16_t t; + switch(rotation) { + case 1: + t = x; + x = WIDTH - 1 - y; + y = t; + break; + case 2: + x = WIDTH - 1 - x; + y = HEIGHT - 1 - y; + break; + case 3: + t = x; + x = y; + y = HEIGHT - 1 - t; + break; + } + + buffer[x + y * WIDTH] = color; + } +} + +void GFXcanvas16::fillScreen(uint16_t color) { + if(buffer) { + uint8_t hi = color >> 8, lo = color & 0xFF; + if(hi == lo) { + memset(buffer, lo, WIDTH * HEIGHT * 2); + } else { + uint32_t i, pixels = WIDTH * HEIGHT; + for(i=0; i= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include "gfxfont.h" + +class Adafruit_GFX : public Print { + + public: + + Adafruit_GFX(int16_t w, int16_t h); // Constructor + + // This MUST be defined by the subclass: + virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; + + // TRANSACTION API / CORE DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void startWrite(void); + virtual void writePixel(int16_t x, int16_t y, uint16_t color); + virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); + virtual void endWrite(void); + + // CONTROL API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void setRotation(uint8_t r); + virtual void invertDisplay(boolean i); + + // BASIC DRAW API + // These MAY be overridden by the subclass to provide device-specific + // optimized code. Otherwise 'generic' versions are used. + virtual void + // It's good to implement those, even if using transaction API + drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), + drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), + fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), + fillScreen(uint16_t color), + // Optional and probably not necessary to change + drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), + drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + + // These exist only with Adafruit_GFX (no subclass overrides) + void + drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + uint16_t color), + fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), + fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, + int16_t delta, uint16_t color), + drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, + int16_t x2, int16_t y2, uint16_t color), + drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, + int16_t radius, uint16_t color), + drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color), + drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color, uint16_t bg), + drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h, uint16_t color), + drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h, uint16_t color, uint16_t bg), + drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h, uint16_t color), + drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, + const uint8_t bitmap[], const uint8_t mask[], + int16_t w, int16_t h), + drawGrayscaleBitmap(int16_t x, int16_t y, + uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, + const uint16_t bitmap[], const uint8_t mask[], + int16_t w, int16_t h), + drawRGBBitmap(int16_t x, int16_t y, + uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h), + drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, + uint16_t bg, uint8_t size), + setCursor(int16_t x, int16_t y), + setTextColor(uint16_t c), + setTextColor(uint16_t c, uint16_t bg), + setTextSize(uint8_t s), + setTextWrap(boolean w), + cp437(boolean x=true), + setFont(const GFXfont *f = NULL), + getTextBounds(char *string, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h), + getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, + int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); + +#if ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + + int16_t height(void) const; + int16_t width(void) const; + + uint8_t getRotation(void) const; + + // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y) + int16_t getCursorX(void) const; + int16_t getCursorY(void) const; + + protected: + void + charBounds(char c, int16_t *x, int16_t *y, + int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy); + const int16_t + WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes + int16_t + _width, _height, // Display w/h as modified by current rotation + cursor_x, cursor_y; + uint16_t + textcolor, textbgcolor; + uint8_t + textsize, + rotation; + boolean + wrap, // If set, 'wrap' text at right edge of display + _cp437; // If set, use correct CP437 charset (default is off) + GFXfont + *gfxFont; +}; + +class Adafruit_GFX_Button { + + public: + Adafruit_GFX_Button(void); + // "Classic" initButton() uses center & size + void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, + uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + // New/alt initButton() uses upper-left corner & size + void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, + uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, + uint16_t textcolor, char *label, uint8_t textsize); + void drawButton(boolean inverted = false); + boolean contains(int16_t x, int16_t y); + + void press(boolean p); + boolean isPressed(); + boolean justPressed(); + boolean justReleased(); + + private: + Adafruit_GFX *_gfx; + int16_t _x1, _y1; // Coordinates of top-left corner + uint16_t _w, _h; + uint8_t _textsize; + uint16_t _outlinecolor, _fillcolor, _textcolor; + char _label[10]; + + boolean currstate, laststate; +}; + +class GFXcanvas1 : public Adafruit_GFX { + public: + GFXcanvas1(uint16_t w, uint16_t h); + ~GFXcanvas1(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color); + uint8_t *getBuffer(void); + private: + uint8_t *buffer; +}; + +class GFXcanvas8 : public Adafruit_GFX { + public: + GFXcanvas8(uint16_t w, uint16_t h); + ~GFXcanvas8(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color), + writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + uint8_t *getBuffer(void); + private: + uint8_t *buffer; +}; + +class GFXcanvas16 : public Adafruit_GFX { + public: + GFXcanvas16(uint16_t w, uint16_t h); + ~GFXcanvas16(void); + void drawPixel(int16_t x, int16_t y, uint16_t color), + fillScreen(uint16_t color); + uint16_t *getBuffer(void); + private: + uint16_t *buffer; +}; + +#endif // _ADAFRUIT_GFX_H diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp new file mode 100644 index 000000000..9b6c8bbb6 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp @@ -0,0 +1,336 @@ +/*************************************************** + This is our library for generic SPI TFT Displays with + address windows and 16 bit color (e.g. ILI9341, HX8357D, ST7735...) + + 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 "Adafruit_SPITFT.h" +#ifndef ARDUINO_STM32_FEATHER + #include "pins_arduino.h" +#ifndef RASPI + #include "wiring_private.h" +#endif +#endif +#include + +#include "Adafruit_SPITFT_Macros.h" + + + +// Pass 8-bit (each) R,G,B, get back 16-bit packed color +uint16_t Adafruit_SPITFT::color565(uint8_t r, uint8_t g, uint8_t b) { + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3); +} + +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, + int8_t cs, int8_t dc, int8_t mosi, + int8_t sclk, int8_t rst, int8_t miso) + : Adafruit_GFX(w, h) { + _cs = cs; + _dc = dc; + _rst = rst; + _sclk = sclk; + _mosi = mosi; + _miso = miso; + _freq = 0; +#ifdef USE_FAST_PINIO + csport = portOutputRegister(digitalPinToPort(_cs)); + cspinmask = digitalPinToBitMask(_cs); + dcport = portOutputRegister(digitalPinToPort(_dc)); + dcpinmask = digitalPinToBitMask(_dc); + clkport = portOutputRegister(digitalPinToPort(_sclk)); + clkpinmask = digitalPinToBitMask(_sclk); + mosiport = portOutputRegister(digitalPinToPort(_mosi)); + mosipinmask = digitalPinToBitMask(_mosi); + if(miso >= 0){ + misoport = portInputRegister(digitalPinToPort(_miso)); + misopinmask = digitalPinToBitMask(_miso); + } else { + misoport = 0; + misopinmask = 0; + } +#endif +} + +Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, + int8_t cs, int8_t dc, int8_t rst) + : Adafruit_GFX(w, h) { + _cs = cs; + _dc = dc; + _rst = rst; + _sclk = -1; + _mosi = -1; + _miso = -1; + _freq = 0; +#ifdef USE_FAST_PINIO + csport = portOutputRegister(digitalPinToPort(_cs)); + cspinmask = digitalPinToBitMask(_cs); + dcport = portOutputRegister(digitalPinToPort(_dc)); + dcpinmask = digitalPinToBitMask(_dc); + clkport = 0; + clkpinmask = 0; + mosiport = 0; + mosipinmask = 0; + misoport = 0; + misopinmask = 0; +#endif +} + + +void Adafruit_SPITFT::initSPI(uint32_t freq) +{ + _freq = freq; + + // Control Pins + pinMode(_dc, OUTPUT); + digitalWrite(_dc, LOW); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + + // Software SPI + if(_sclk >= 0){ + pinMode(_mosi, OUTPUT); + digitalWrite(_mosi, LOW); + pinMode(_sclk, OUTPUT); + digitalWrite(_sclk, HIGH); + if(_miso >= 0){ + pinMode(_miso, INPUT); + } + } + + // Hardware SPI + SPI_BEGIN(); + + // toggle RST low to reset + if (_rst >= 0) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } +} + +uint8_t Adafruit_SPITFT::spiRead() { + if(_sclk < 0){ + return HSPI_READ(); + } + if(_miso < 0){ + return 0; + } + uint8_t r = 0; + for (uint8_t i=0; i<8; i++) { + SSPI_SCK_LOW(); + SSPI_SCK_HIGH(); + r <<= 1; + if (SSPI_MISO_READ()){ + r |= 0x1; + } + } + return r; +} + +void Adafruit_SPITFT::spiWrite(uint8_t b) { + if(_sclk < 0){ + HSPI_WRITE(b); + return; + } + for(uint8_t bit = 0x80; bit; bit >>= 1){ + if((b) & bit){ + SSPI_MOSI_HIGH(); + } else { + SSPI_MOSI_LOW(); + } + SSPI_SCK_LOW(); + SSPI_SCK_HIGH(); + } +} + + +/* + * Transaction API + * */ + +void Adafruit_SPITFT::startWrite(void){ + SPI_BEGIN_TRANSACTION(); + SPI_CS_LOW(); +} + +void Adafruit_SPITFT::endWrite(void){ + SPI_CS_HIGH(); + SPI_END_TRANSACTION(); +} + +void Adafruit_SPITFT::writeCommand(uint8_t cmd){ + SPI_DC_LOW(); + spiWrite(cmd); + SPI_DC_HIGH(); +} + +void Adafruit_SPITFT::pushColor(uint16_t color) { + startWrite(); + SPI_WRITE16(color); + endWrite(); +} + + +void Adafruit_SPITFT::writePixel(uint16_t color){ + SPI_WRITE16(color); +} + +void Adafruit_SPITFT::writePixels(uint16_t * colors, uint32_t len){ + SPI_WRITE_PIXELS((uint8_t*)colors , len * 2); +} + +void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len){ +#ifdef SPI_HAS_WRITE_PIXELS + if(_sclk >= 0){ + for (uint32_t t=0; t SPI_MAX_PIXELS_AT_ONCE)?SPI_MAX_PIXELS_AT_ONCE:len; + uint16_t tlen = 0; + + for (uint32_t t=0; tblen)?blen:len; + writePixels(temp, tlen); + len -= tlen; + } +#else + uint8_t hi = color >> 8, lo = color; + if(_sclk < 0){ //AVR Optimization + for (uint32_t t=len; t; t--){ + HSPI_WRITE(hi); + HSPI_WRITE(lo); + } + return; + } + for (uint32_t t=len; t; t--){ + spiWrite(hi); + spiWrite(lo); + } +#endif +} + +void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { + if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; + setAddrWindow(x,y,1,1); + writePixel(color); +} + +void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color){ + if((x >= _width) || (y >= _height)) return; + int16_t x2 = x + w - 1, y2 = y + h - 1; + if((x2 < 0) || (y2 < 0)) return; + + // Clip left/top + if(x < 0) { + x = 0; + w = x2 + 1; + } + if(y < 0) { + y = 0; + h = y2 + 1; + } + + // Clip right/bottom + if(x2 >= _width) w = _width - x; + if(y2 >= _height) h = _height - y; + + int32_t len = (int32_t)w * h; + setAddrWindow(x, y, w, h); + writeColor(color, len); +} + +void Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color){ + writeFillRect(x, y, 1, h, color); +} + +void Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color){ + writeFillRect(x, y, w, 1, color); +} + +void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color){ + startWrite(); + writePixel(x, y, color); + endWrite(); +} + +void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, + int16_t h, uint16_t color) { + startWrite(); + writeFastVLine(x, y, h, color); + endWrite(); +} + +void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, + int16_t w, uint16_t color) { + startWrite(); + writeFastHLine(x, y, w, color); + endWrite(); +} + +void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, + uint16_t color) { + startWrite(); + writeFillRect(x,y,w,h,color); + endWrite(); +} + +// Adapted from https://github.com/PaulStoffregen/ILI9341_t3 +// by Marc MERLIN. See examples/pictureEmbed to use this. +// 5/6/2017: function name and arguments have changed for compatibility +// with current GFX library and to avoid naming problems in prior +// implementation. Formerly drawBitmap() with arguments in different order. +void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, + uint16_t *pcolors, int16_t w, int16_t h) { + + int16_t x2, y2; // Lower-right coord + if(( x >= _width ) || // Off-edge right + ( y >= _height) || // " top + ((x2 = (x+w-1)) < 0 ) || // " left + ((y2 = (y+h-1)) < 0) ) return; // " bottom + + int16_t bx1=0, by1=0, // Clipped top-left within bitmap + saveW=w; // Save original bitmap width value + if(x < 0) { // Clip left + w += x; + bx1 = -x; + x = 0; + } + if(y < 0) { // Clip top + h += y; + by1 = -y; + y = 0; + } + if(x2 >= _width ) w = _width - x; // Clip right + if(y2 >= _height) h = _height - y; // Clip bottom + + pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left + startWrite(); + setAddrWindow(x, y, w, h); // Clipped area + while(h--) { // For each (clipped) scanline... + writePixels(pcolors, w); // Push one (clipped) row + pcolors += saveW; // Advance pointer by one full (unclipped) line + } + endWrite(); +} diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h new file mode 100644 index 000000000..0024a0193 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h @@ -0,0 +1,80 @@ + +#ifndef _ADAFRUIT_SPITFT_ +#define _ADAFRUIT_SPITFT_ + + +#if ARDUINO >= 100 + #include "Arduino.h" + #include "Print.h" +#else + #include "WProgram.h" +#endif +#include +#include "Adafruit_GFX.h" + + +#if defined(ARDUINO_STM32_FEATHER) +typedef volatile uint32 RwReg; +#endif +#if defined(ARDUINO_FEATHER52) +typedef volatile uint32_t RwReg; +#endif + +class Adafruit_SPITFT : public Adafruit_GFX { + protected: + + public: + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, int8_t _RST = -1, int8_t _MISO = -1); + Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _RST = -1); + + virtual void begin(uint32_t freq) = 0; + void initSPI(uint32_t freq); + + // Required Non-Transaction + void drawPixel(int16_t x, int16_t y, uint16_t color); + + // Transaction API + void startWrite(void); + void endWrite(void); + void writePixel(int16_t x, int16_t y, uint16_t color); + void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + // Transaction API not used by GFX + virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0; + void writePixel(uint16_t color); + void writePixels(uint16_t * colors, uint32_t len); + void writeColor(uint16_t color, uint32_t len); + void pushColor(uint16_t color); + + // Recommended Non-Transaction + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + + using Adafruit_GFX::drawRGBBitmap; // Check base class first + void drawRGBBitmap(int16_t x, int16_t y, + uint16_t *pcolors, int16_t w, int16_t h); + + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + protected: + uint32_t _freq; +#if defined (__AVR__) || defined(TEENSYDUINO) || defined (ESP8266) || defined (ESP32) + int8_t _cs, _dc, _rst, _sclk, _mosi, _miso; +#else + int32_t _cs, _dc, _rst, _sclk, _mosi, _miso; +#endif + +#ifdef USE_FAST_PINIO + volatile RwReg *mosiport, *misoport, *clkport, *dcport, *csport; + RwReg mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask; +#endif + + void writeCommand(uint8_t cmd); + void spiWrite(uint8_t v); + uint8_t spiRead(void); +}; + +#endif diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h new file mode 100644 index 000000000..74391daa7 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h @@ -0,0 +1,114 @@ + +/* + * Control Pins + * */ + +#ifdef USE_FAST_PINIO +#define SPI_DC_HIGH() *dcport |= dcpinmask +#define SPI_DC_LOW() *dcport &= ~dcpinmask +#define SPI_CS_HIGH() *csport |= cspinmask +#define SPI_CS_LOW() *csport &= ~cspinmask +#else +#define SPI_DC_HIGH() digitalWrite(_dc, HIGH) +#define SPI_DC_LOW() digitalWrite(_dc, LOW) +#define SPI_CS_HIGH() digitalWrite(_cs, HIGH) +#define SPI_CS_LOW() digitalWrite(_cs, LOW) +#endif + +/* + * Software SPI Macros + * */ + +#ifdef USE_FAST_PINIO +#define SSPI_MOSI_HIGH() *mosiport |= mosipinmask +#define SSPI_MOSI_LOW() *mosiport &= ~mosipinmask +#define SSPI_SCK_HIGH() *clkport |= clkpinmask +#define SSPI_SCK_LOW() *clkport &= ~clkpinmask +#define SSPI_MISO_READ() ((*misoport & misopinmask) != 0) +#else +#define SSPI_MOSI_HIGH() digitalWrite(_mosi, HIGH) +#define SSPI_MOSI_LOW() digitalWrite(_mosi, LOW) +#define SSPI_SCK_HIGH() digitalWrite(_sclk, HIGH) +#define SSPI_SCK_LOW() digitalWrite(_sclk, LOW) +#define SSPI_MISO_READ() digitalRead(_miso) +#endif + +#define SSPI_BEGIN_TRANSACTION() +#define SSPI_END_TRANSACTION() +#define SSPI_WRITE(v) spiWrite(v) +#define SSPI_WRITE16(s) SSPI_WRITE((s) >> 8); SSPI_WRITE(s) +#define SSPI_WRITE32(l) SSPI_WRITE((l) >> 24); SSPI_WRITE((l) >> 16); SSPI_WRITE((l) >> 8); SSPI_WRITE(l) +#define SSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ SSPI_WRITE(((uint8_t*)(c))[i+1]); SSPI_WRITE(((uint8_t*)(c))[i]); } + +/* + * Hardware SPI Macros + * */ + +#define SPI_OBJECT SPI + +#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(SPI_CLOCK_DIV2); +#elif defined (__arm__) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(11); +#elif defined(ESP8266) || defined(ESP32) + #define HSPI_SET_CLOCK() SPI_OBJECT.setFrequency(_freq); +#elif defined(RASPI) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); +#elif defined(ARDUINO_ARCH_STM32F1) + #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); +#else + #define HSPI_SET_CLOCK() +#endif + +#ifdef SPI_HAS_TRANSACTION + #define HSPI_BEGIN_TRANSACTION() SPI_OBJECT.beginTransaction(SPISettings(_freq, MSBFIRST, SPI_MODE0)) + #define HSPI_END_TRANSACTION() SPI_OBJECT.endTransaction() +#else + #define HSPI_BEGIN_TRANSACTION() HSPI_SET_CLOCK(); SPI_OBJECT.setBitOrder(MSBFIRST); SPI_OBJECT.setDataMode(SPI_MODE0) + #define HSPI_END_TRANSACTION() +#endif + +#ifdef ESP32 + #define SPI_HAS_WRITE_PIXELS +#endif +#if defined(ESP8266) || defined(ESP32) + // Optimized SPI (ESP8266 and ESP32) + #define HSPI_READ() SPI_OBJECT.transfer(0) + #define HSPI_WRITE(b) SPI_OBJECT.write(b) + #define HSPI_WRITE16(s) SPI_OBJECT.write16(s) + #define HSPI_WRITE32(l) SPI_OBJECT.write32(l) + #ifdef SPI_HAS_WRITE_PIXELS + #define SPI_MAX_PIXELS_AT_ONCE 32 + #define HSPI_WRITE_PIXELS(c,l) SPI_OBJECT.writePixels(c,l) + #else + #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<((l)/2); i++){ SPI_WRITE16(((uint16_t*)(c))[i]); } + #endif +#else + // Standard Byte-by-Byte SPI + + #if defined (__AVR__) || defined(TEENSYDUINO) +static inline uint8_t _avr_spi_read(void) __attribute__((always_inline)); +static inline uint8_t _avr_spi_read(void) { + uint8_t r = 0; + SPDR = r; + while(!(SPSR & _BV(SPIF))); + r = SPDR; + return r; +} + #define HSPI_WRITE(b) {SPDR = (b); while(!(SPSR & _BV(SPIF)));} + #define HSPI_READ() _avr_spi_read() + #else + #define HSPI_WRITE(b) SPI_OBJECT.transfer((uint8_t)(b)) + #define HSPI_READ() HSPI_WRITE(0) + #endif + #define HSPI_WRITE16(s) HSPI_WRITE((s) >> 8); HSPI_WRITE(s) + #define HSPI_WRITE32(l) HSPI_WRITE((l) >> 24); HSPI_WRITE((l) >> 16); HSPI_WRITE((l) >> 8); HSPI_WRITE(l) + #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ HSPI_WRITE(((uint8_t*)(c))[i+1]); HSPI_WRITE(((uint8_t*)(c))[i]); } +#endif + +#define SPI_BEGIN() if(_sclk < 0){SPI_OBJECT.begin();} +#define SPI_BEGIN_TRANSACTION() if(_sclk < 0){HSPI_BEGIN_TRANSACTION();} +#define SPI_END_TRANSACTION() if(_sclk < 0){HSPI_END_TRANSACTION();} +#define SPI_WRITE16(s) if(_sclk < 0){HSPI_WRITE16(s);}else{SSPI_WRITE16(s);} +#define SPI_WRITE32(l) if(_sclk < 0){HSPI_WRITE32(l);}else{SSPI_WRITE32(l);} +#define SPI_WRITE_PIXELS(c,l) if(_sclk < 0){HSPI_WRITE_PIXELS(c,l);}else{SSPI_WRITE_PIXELS(c,l);} diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h new file mode 100644 index 000000000..94ecb883a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h @@ -0,0 +1,227 @@ +const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { + 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, + 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, + 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, + 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, + 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, + 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, + 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, + 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, + 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, + 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, + 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, + 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, + 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, + 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, + 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, + 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, + 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, + 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, + 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, + 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, + 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, + 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, + 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, + 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, + 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, + 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, + 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, + 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, + 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, + 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, + 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, + 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, + 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, + 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, + 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, + 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, + 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, + 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, + 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, + 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, + 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, + 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, + 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, + 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, + 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, + 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, + 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, + 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, + 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, + 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, + 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, + 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, + 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, + 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, + 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, + 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, + 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, + 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, + 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, + 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, + 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, + 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, + 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, + 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, + 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, + 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, + 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, + 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, + 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, + 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, + 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, + 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, + 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, + 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, + 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, + 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, + 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, + 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, + 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, + 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, + 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, + 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, + 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, + 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, + 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, + 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, + 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, + 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, + 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, + 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, + 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, + 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, + 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, + 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, + 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, + 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, + 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, + 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, + 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, + 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, + 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, + 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, + 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, + 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, + 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, + 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, + 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, + 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, + 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38 }; + +const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 3, 15, 14, 6, -14 }, // 0x21 '!' + { 6, 8, 7, 14, 3, -14 }, // 0x22 '"' + { 13, 10, 16, 14, 2, -14 }, // 0x23 '#' + { 33, 10, 17, 14, 2, -14 }, // 0x24 '$' + { 55, 10, 15, 14, 2, -14 }, // 0x25 '%' + { 74, 9, 12, 14, 3, -11 }, // 0x26 '&' + { 88, 3, 7, 14, 5, -14 }, // 0x27 ''' + { 91, 3, 18, 14, 7, -14 }, // 0x28 '(' + { 98, 3, 18, 14, 4, -14 }, // 0x29 ')' + { 105, 9, 9, 14, 3, -14 }, // 0x2A '*' + { 116, 9, 11, 14, 3, -11 }, // 0x2B '+' + { 129, 5, 7, 14, 3, -3 }, // 0x2C ',' + { 134, 11, 1, 14, 2, -6 }, // 0x2D '-' + { 136, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 138, 9, 18, 14, 3, -15 }, // 0x2F '/' + { 159, 9, 15, 14, 3, -14 }, // 0x30 '0' + { 176, 7, 14, 14, 4, -13 }, // 0x31 '1' + { 189, 9, 15, 14, 2, -14 }, // 0x32 '2' + { 206, 10, 15, 14, 2, -14 }, // 0x33 '3' + { 225, 8, 15, 14, 3, -14 }, // 0x34 '4' + { 240, 9, 15, 14, 3, -14 }, // 0x35 '5' + { 257, 9, 15, 14, 3, -14 }, // 0x36 '6' + { 274, 8, 15, 14, 3, -14 }, // 0x37 '7' + { 289, 9, 15, 14, 3, -14 }, // 0x38 '8' + { 306, 9, 15, 14, 3, -14 }, // 0x39 '9' + { 323, 3, 10, 14, 5, -9 }, // 0x3A ':' + { 327, 5, 13, 14, 3, -9 }, // 0x3B ';' + { 336, 11, 11, 14, 2, -11 }, // 0x3C '<' + { 352, 12, 4, 14, 1, -8 }, // 0x3D '=' + { 358, 11, 11, 14, 2, -11 }, // 0x3E '>' + { 374, 9, 14, 14, 3, -13 }, // 0x3F '?' + { 390, 9, 16, 14, 3, -14 }, // 0x40 '@' + { 408, 14, 14, 14, 0, -13 }, // 0x41 'A' + { 433, 11, 14, 14, 2, -13 }, // 0x42 'B' + { 453, 10, 14, 14, 2, -13 }, // 0x43 'C' + { 471, 10, 14, 14, 2, -13 }, // 0x44 'D' + { 489, 11, 14, 14, 2, -13 }, // 0x45 'E' + { 509, 11, 14, 14, 2, -13 }, // 0x46 'F' + { 529, 11, 14, 14, 2, -13 }, // 0x47 'G' + { 549, 10, 14, 14, 2, -13 }, // 0x48 'H' + { 567, 7, 14, 14, 4, -13 }, // 0x49 'I' + { 580, 11, 14, 14, 2, -13 }, // 0x4A 'J' + { 600, 12, 14, 14, 2, -13 }, // 0x4B 'K' + { 621, 11, 14, 14, 2, -13 }, // 0x4C 'L' + { 641, 13, 14, 14, 1, -13 }, // 0x4D 'M' + { 664, 12, 14, 14, 1, -13 }, // 0x4E 'N' + { 685, 12, 14, 14, 1, -13 }, // 0x4F 'O' + { 706, 10, 14, 14, 2, -13 }, // 0x50 'P' + { 724, 12, 17, 14, 1, -13 }, // 0x51 'Q' + { 750, 12, 14, 14, 2, -13 }, // 0x52 'R' + { 771, 10, 14, 14, 2, -13 }, // 0x53 'S' + { 789, 11, 14, 14, 2, -13 }, // 0x54 'T' + { 809, 12, 14, 14, 1, -13 }, // 0x55 'U' + { 830, 14, 14, 14, 0, -13 }, // 0x56 'V' + { 855, 14, 14, 14, 0, -13 }, // 0x57 'W' + { 880, 12, 14, 14, 1, -13 }, // 0x58 'X' + { 901, 12, 14, 14, 1, -13 }, // 0x59 'Y' + { 922, 9, 14, 14, 3, -13 }, // 0x5A 'Z' + { 938, 3, 18, 14, 7, -14 }, // 0x5B '[' + { 945, 9, 18, 14, 3, -15 }, // 0x5C '\' + { 966, 3, 18, 14, 5, -14 }, // 0x5D ']' + { 973, 9, 6, 14, 3, -14 }, // 0x5E '^' + { 980, 14, 1, 14, 0, 3 }, // 0x5F '_' + { 982, 4, 4, 14, 4, -15 }, // 0x60 '`' + { 984, 10, 10, 14, 2, -9 }, // 0x61 'a' + { 997, 13, 15, 14, 0, -14 }, // 0x62 'b' + { 1022, 11, 10, 14, 2, -9 }, // 0x63 'c' + { 1036, 11, 15, 14, 2, -14 }, // 0x64 'd' + { 1057, 10, 10, 14, 2, -9 }, // 0x65 'e' + { 1070, 9, 15, 14, 4, -14 }, // 0x66 'f' + { 1087, 11, 14, 14, 2, -9 }, // 0x67 'g' + { 1107, 10, 15, 14, 2, -14 }, // 0x68 'h' + { 1126, 9, 15, 14, 3, -14 }, // 0x69 'i' + { 1143, 7, 19, 14, 3, -14 }, // 0x6A 'j' + { 1160, 12, 15, 14, 1, -14 }, // 0x6B 'k' + { 1183, 9, 15, 14, 3, -14 }, // 0x6C 'l' + { 1200, 13, 10, 14, 1, -9 }, // 0x6D 'm' + { 1217, 12, 10, 14, 1, -9 }, // 0x6E 'n' + { 1232, 11, 10, 14, 2, -9 }, // 0x6F 'o' + { 1246, 12, 14, 14, 1, -9 }, // 0x70 'p' + { 1267, 11, 14, 14, 2, -9 }, // 0x71 'q' + { 1287, 10, 10, 14, 3, -9 }, // 0x72 'r' + { 1300, 10, 10, 14, 2, -9 }, // 0x73 's' + { 1313, 11, 14, 14, 1, -13 }, // 0x74 't' + { 1333, 11, 10, 14, 2, -9 }, // 0x75 'u' + { 1347, 13, 10, 14, 1, -9 }, // 0x76 'v' + { 1364, 13, 10, 14, 1, -9 }, // 0x77 'w' + { 1381, 12, 10, 14, 1, -9 }, // 0x78 'x' + { 1396, 12, 14, 14, 1, -9 }, // 0x79 'y' + { 1417, 9, 10, 14, 3, -9 }, // 0x7A 'z' + { 1429, 5, 18, 14, 5, -14 }, // 0x7B '{' + { 1441, 1, 18, 14, 7, -14 }, // 0x7C '|' + { 1444, 5, 18, 14, 5, -14 }, // 0x7D '}' + { 1456, 10, 3, 14, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeMono12pt7b PROGMEM = { + (uint8_t *)FreeMono12pt7bBitmaps, + (GFXglyph *)FreeMono12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2132 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h new file mode 100644 index 000000000..c605d296b --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h @@ -0,0 +1,363 @@ +const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { + 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, + 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, + 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, + 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, + 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, + 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, + 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, + 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, + 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, + 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, + 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, + 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, + 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, + 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, + 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, + 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, + 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, + 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, + 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, + 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, + 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, + 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, + 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, + 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, + 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, + 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, + 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, + 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, + 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, + 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, + 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, + 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, + 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, + 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, + 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, + 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, + 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, + 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, + 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, + 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, + 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, + 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, + 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, + 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, + 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, + 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, + 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, + 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, + 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, + 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, + 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, + 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, + 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, + 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, + 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, + 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, + 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, + 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, + 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, + 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, + 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, + 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, + 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, + 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, + 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, + 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, + 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, + 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, + 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, + 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, + 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, + 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, + 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, + 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, + 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, + 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, + 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, + 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, + 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, + 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, + 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, + 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, + 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, + 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, + 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, + 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, + 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, + 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, + 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, + 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, + 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, + 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, + 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, + 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, + 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, + 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, + 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, + 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, + 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, + 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, + 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, + 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, + 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, + 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, + 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, + 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, + 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, + 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, + 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, + 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, + 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, + 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, + 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, + 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, + 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, + 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, + 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, + 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, + 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, + 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, + 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, + 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, + 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, + 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, + 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, + 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, + 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, + 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, + 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, + 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, + 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, + 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, + 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, + 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, + 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, + 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, + 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, + 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, + 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, + 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, + 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, + 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, + 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, + 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, + 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, + 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, + 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, + 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, + 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, + 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, + 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, + 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, + 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, + 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, + 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, + 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, + 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, + 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, + 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, + 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, + 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, + 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, + 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, + 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, + 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, + 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, + 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, + 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, + 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, + 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, + 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, + 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, + 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, + 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, + 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, + 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, + 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, + 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, + 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, + 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, + 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, + 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, + 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, + 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, + 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, + 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, + 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, + 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, + 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, + 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, + 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, + 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, + 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, + 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, + 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, + 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, + 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, + 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, + 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, + 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, + 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, + 0x36, 0x04, 0x40, 0x07, 0x00 }; + +const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 4, 22, 21, 8, -21 }, // 0x21 '!' + { 11, 11, 10, 21, 5, -20 }, // 0x22 '"' + { 25, 14, 24, 21, 3, -21 }, // 0x23 '#' + { 67, 13, 26, 21, 4, -22 }, // 0x24 '$' + { 110, 15, 21, 21, 3, -20 }, // 0x25 '%' + { 150, 12, 18, 21, 4, -17 }, // 0x26 '&' + { 177, 4, 10, 21, 8, -20 }, // 0x27 ''' + { 182, 5, 25, 21, 10, -20 }, // 0x28 '(' + { 198, 5, 25, 21, 6, -20 }, // 0x29 ')' + { 214, 13, 12, 21, 4, -20 }, // 0x2A '*' + { 234, 15, 17, 21, 3, -17 }, // 0x2B '+' + { 266, 7, 10, 21, 5, -4 }, // 0x2C ',' + { 275, 15, 1, 21, 3, -9 }, // 0x2D '-' + { 277, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 281, 13, 26, 21, 4, -22 }, // 0x2F '/' + { 324, 13, 21, 21, 4, -20 }, // 0x30 '0' + { 359, 13, 21, 21, 4, -20 }, // 0x31 '1' + { 394, 13, 21, 21, 3, -20 }, // 0x32 '2' + { 429, 14, 21, 21, 3, -20 }, // 0x33 '3' + { 466, 12, 21, 21, 4, -20 }, // 0x34 '4' + { 498, 14, 21, 21, 3, -20 }, // 0x35 '5' + { 535, 12, 21, 21, 5, -20 }, // 0x36 '6' + { 567, 12, 21, 21, 4, -20 }, // 0x37 '7' + { 599, 13, 21, 21, 4, -20 }, // 0x38 '8' + { 634, 12, 21, 21, 5, -20 }, // 0x39 '9' + { 666, 5, 15, 21, 8, -14 }, // 0x3A ':' + { 676, 7, 20, 21, 5, -14 }, // 0x3B ';' + { 694, 15, 16, 21, 3, -17 }, // 0x3C '<' + { 724, 17, 6, 21, 2, -12 }, // 0x3D '=' + { 737, 15, 16, 21, 3, -17 }, // 0x3E '>' + { 767, 12, 20, 21, 5, -19 }, // 0x3F '?' + { 797, 13, 23, 21, 4, -20 }, // 0x40 '@' + { 835, 21, 20, 21, 0, -19 }, // 0x41 'A' + { 888, 18, 20, 21, 1, -19 }, // 0x42 'B' + { 933, 17, 20, 21, 2, -19 }, // 0x43 'C' + { 976, 16, 20, 21, 2, -19 }, // 0x44 'D' + { 1016, 17, 20, 21, 1, -19 }, // 0x45 'E' + { 1059, 17, 20, 21, 1, -19 }, // 0x46 'F' + { 1102, 17, 20, 21, 2, -19 }, // 0x47 'G' + { 1145, 16, 20, 21, 2, -19 }, // 0x48 'H' + { 1185, 13, 20, 21, 4, -19 }, // 0x49 'I' + { 1218, 17, 20, 21, 3, -19 }, // 0x4A 'J' + { 1261, 18, 20, 21, 1, -19 }, // 0x4B 'K' + { 1306, 15, 20, 21, 3, -19 }, // 0x4C 'L' + { 1344, 19, 20, 21, 1, -19 }, // 0x4D 'M' + { 1392, 18, 20, 21, 1, -19 }, // 0x4E 'N' + { 1437, 17, 20, 21, 2, -19 }, // 0x4F 'O' + { 1480, 16, 20, 21, 1, -19 }, // 0x50 'P' + { 1520, 17, 24, 21, 2, -19 }, // 0x51 'Q' + { 1571, 19, 20, 21, 1, -19 }, // 0x52 'R' + { 1619, 14, 20, 21, 3, -19 }, // 0x53 'S' + { 1654, 15, 20, 21, 3, -19 }, // 0x54 'T' + { 1692, 17, 20, 21, 2, -19 }, // 0x55 'U' + { 1735, 21, 20, 21, 0, -19 }, // 0x56 'V' + { 1788, 19, 20, 21, 1, -19 }, // 0x57 'W' + { 1836, 19, 20, 21, 1, -19 }, // 0x58 'X' + { 1884, 17, 20, 21, 2, -19 }, // 0x59 'Y' + { 1927, 13, 20, 21, 4, -19 }, // 0x5A 'Z' + { 1960, 5, 25, 21, 10, -20 }, // 0x5B '[' + { 1976, 13, 26, 21, 4, -22 }, // 0x5C '\' + { 2019, 5, 25, 21, 6, -20 }, // 0x5D ']' + { 2035, 13, 9, 21, 4, -20 }, // 0x5E '^' + { 2050, 21, 1, 21, 0, 4 }, // 0x5F '_' + { 2053, 6, 5, 21, 5, -21 }, // 0x60 '`' + { 2057, 16, 15, 21, 3, -14 }, // 0x61 'a' + { 2087, 18, 21, 21, 1, -20 }, // 0x62 'b' + { 2135, 15, 15, 21, 3, -14 }, // 0x63 'c' + { 2164, 18, 21, 21, 2, -20 }, // 0x64 'd' + { 2212, 16, 15, 21, 2, -14 }, // 0x65 'e' + { 2242, 14, 21, 21, 4, -20 }, // 0x66 'f' + { 2279, 17, 22, 21, 2, -14 }, // 0x67 'g' + { 2326, 17, 21, 21, 1, -20 }, // 0x68 'h' + { 2371, 14, 22, 21, 4, -21 }, // 0x69 'i' + { 2410, 10, 29, 21, 5, -21 }, // 0x6A 'j' + { 2447, 16, 21, 21, 2, -20 }, // 0x6B 'k' + { 2489, 14, 21, 21, 4, -20 }, // 0x6C 'l' + { 2526, 19, 15, 21, 1, -14 }, // 0x6D 'm' + { 2562, 17, 15, 21, 1, -14 }, // 0x6E 'n' + { 2594, 15, 15, 21, 3, -14 }, // 0x6F 'o' + { 2623, 18, 22, 21, 1, -14 }, // 0x70 'p' + { 2673, 18, 22, 21, 2, -14 }, // 0x71 'q' + { 2723, 15, 15, 21, 3, -14 }, // 0x72 'r' + { 2752, 13, 15, 21, 4, -14 }, // 0x73 's' + { 2777, 16, 20, 21, 1, -19 }, // 0x74 't' + { 2817, 17, 15, 21, 1, -14 }, // 0x75 'u' + { 2849, 19, 15, 21, 1, -14 }, // 0x76 'v' + { 2885, 19, 15, 21, 1, -14 }, // 0x77 'w' + { 2921, 17, 15, 21, 2, -14 }, // 0x78 'x' + { 2953, 17, 22, 21, 2, -14 }, // 0x79 'y' + { 3000, 13, 15, 21, 4, -14 }, // 0x7A 'z' + { 3025, 8, 25, 21, 6, -20 }, // 0x7B '{' + { 3050, 1, 25, 21, 10, -20 }, // 0x7C '|' + { 3054, 8, 25, 21, 7, -20 }, // 0x7D '}' + { 3079, 15, 5, 21, 3, -11 } }; // 0x7E '~' + +const GFXfont FreeMono18pt7b PROGMEM = { + (uint8_t *)FreeMono18pt7bBitmaps, + (GFXglyph *)FreeMono18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 3761 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h new file mode 100644 index 000000000..4c8bd151d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h @@ -0,0 +1,577 @@ +const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, + 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, + 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, + 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, + 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, + 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, + 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, + 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, + 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, + 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, + 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, + 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, + 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, + 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, + 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, + 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, + 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, + 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, + 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, + 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, + 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, + 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, + 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, + 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, + 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, + 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, + 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, + 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, + 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, + 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, + 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, + 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, + 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, + 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, + 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, + 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, + 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, + 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, + 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, + 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, + 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, + 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, + 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, + 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, + 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, + 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, + 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, + 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, + 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, + 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, + 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, + 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, + 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, + 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, + 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, + 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, + 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, + 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, + 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, + 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, + 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, + 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, + 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, + 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, + 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, + 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, + 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, + 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, + 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, + 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, + 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, + 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, + 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, + 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, + 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, + 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, + 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, + 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, + 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, + 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, + 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, + 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, + 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, + 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, + 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, + 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, + 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, + 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, + 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, + 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, + 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, + 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, + 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, + 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, + 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, + 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, + 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, + 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, + 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, + 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, + 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, + 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, + 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, + 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, + 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, + 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, + 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, + 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, + 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, + 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, + 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, + 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, + 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, + 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, + 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, + 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, + 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, + 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, + 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, + 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, + 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, + 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, + 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, + 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, + 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, + 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, + 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, + 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, + 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, + 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, + 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, + 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, + 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, + 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, + 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, + 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, + 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, + 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, + 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, + 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, + 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, + 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, + 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, + 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, + 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, + 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, + 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, + 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, + 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, + 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, + 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, + 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, + 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, + 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, + 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, + 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, + 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, + 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, + 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, + 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, + 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, + 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, + 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, + 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, + 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, + 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, + 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, + 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, + 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, + 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, + 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, + 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, + 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, + 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, + 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, + 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, + 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, + 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, + 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, + 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, + 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, + 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, + 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, + 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, + 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, + 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, + 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, + 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, + 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, + 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, + 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, + 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, + 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, + 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, + 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, + 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, + 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, + 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, + 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, + 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, + 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, + 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, + 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, + 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, + 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, + 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, + 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, + 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, + 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, + 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, + 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, + 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, + 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, + 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, + 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, + 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, + 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, + 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, + 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, + 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, + 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, + 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, + 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, + 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, + 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, + 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, + 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, + 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, + 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, + 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, + 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, + 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, + 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, + 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, + 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, + 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, + 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, + 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, + 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, + 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, + 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, + 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, + 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, + 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, + 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, + 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, + 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, + 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, + 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, + 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, + 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, + 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, + 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, + 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, + 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, + 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, + 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, + 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, + 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, + 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, + 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0 }; + +const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 5, 30, 28, 11, -28 }, // 0x21 '!' + { 19, 16, 14, 28, 6, -28 }, // 0x22 '"' + { 47, 19, 32, 28, 4, -29 }, // 0x23 '#' + { 123, 18, 33, 28, 5, -29 }, // 0x24 '$' + { 198, 20, 29, 28, 4, -27 }, // 0x25 '%' + { 271, 18, 25, 28, 5, -23 }, // 0x26 '&' + { 328, 7, 14, 28, 11, -28 }, // 0x27 ''' + { 341, 7, 34, 28, 14, -27 }, // 0x28 '(' + { 371, 7, 34, 28, 8, -27 }, // 0x29 ')' + { 401, 18, 16, 28, 5, -27 }, // 0x2A '*' + { 437, 20, 22, 28, 4, -23 }, // 0x2B '+' + { 492, 9, 14, 28, 6, -6 }, // 0x2C ',' + { 508, 22, 2, 28, 3, -13 }, // 0x2D '-' + { 514, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 520, 18, 35, 28, 5, -30 }, // 0x2F '/' + { 599, 18, 30, 28, 5, -28 }, // 0x30 '0' + { 667, 16, 29, 28, 6, -28 }, // 0x31 '1' + { 725, 18, 29, 28, 5, -28 }, // 0x32 '2' + { 791, 19, 30, 28, 5, -28 }, // 0x33 '3' + { 863, 16, 28, 28, 6, -27 }, // 0x34 '4' + { 919, 19, 29, 28, 5, -27 }, // 0x35 '5' + { 988, 18, 30, 28, 6, -28 }, // 0x36 '6' + { 1056, 18, 28, 28, 5, -27 }, // 0x37 '7' + { 1119, 18, 30, 28, 5, -28 }, // 0x38 '8' + { 1187, 18, 30, 28, 6, -28 }, // 0x39 '9' + { 1255, 7, 21, 28, 11, -19 }, // 0x3A ':' + { 1274, 10, 27, 28, 7, -19 }, // 0x3B ';' + { 1308, 22, 22, 28, 3, -23 }, // 0x3C '<' + { 1369, 24, 9, 28, 2, -17 }, // 0x3D '=' + { 1396, 21, 22, 28, 4, -23 }, // 0x3E '>' + { 1454, 17, 28, 28, 6, -26 }, // 0x3F '?' + { 1514, 18, 32, 28, 5, -28 }, // 0x40 '@' + { 1586, 28, 26, 28, 0, -25 }, // 0x41 'A' + { 1677, 22, 26, 28, 3, -25 }, // 0x42 'B' + { 1749, 22, 28, 28, 3, -26 }, // 0x43 'C' + { 1826, 22, 26, 28, 3, -25 }, // 0x44 'D' + { 1898, 22, 26, 28, 3, -25 }, // 0x45 'E' + { 1970, 22, 26, 28, 3, -25 }, // 0x46 'F' + { 2042, 23, 28, 28, 3, -26 }, // 0x47 'G' + { 2123, 23, 26, 28, 3, -25 }, // 0x48 'H' + { 2198, 16, 26, 28, 6, -25 }, // 0x49 'I' + { 2250, 23, 27, 28, 4, -25 }, // 0x4A 'J' + { 2328, 24, 26, 28, 3, -25 }, // 0x4B 'K' + { 2406, 21, 26, 28, 4, -25 }, // 0x4C 'L' + { 2475, 26, 26, 28, 1, -25 }, // 0x4D 'M' + { 2560, 24, 26, 28, 2, -25 }, // 0x4E 'N' + { 2638, 24, 28, 28, 2, -26 }, // 0x4F 'O' + { 2722, 21, 26, 28, 3, -25 }, // 0x50 'P' + { 2791, 24, 32, 28, 2, -26 }, // 0x51 'Q' + { 2887, 24, 26, 28, 3, -25 }, // 0x52 'R' + { 2965, 20, 28, 28, 4, -26 }, // 0x53 'S' + { 3035, 22, 26, 28, 3, -25 }, // 0x54 'T' + { 3107, 23, 27, 28, 3, -25 }, // 0x55 'U' + { 3185, 28, 26, 28, 0, -25 }, // 0x56 'V' + { 3276, 26, 26, 28, 1, -25 }, // 0x57 'W' + { 3361, 24, 26, 28, 2, -25 }, // 0x58 'X' + { 3439, 24, 26, 28, 2, -25 }, // 0x59 'Y' + { 3517, 18, 26, 28, 5, -25 }, // 0x5A 'Z' + { 3576, 7, 34, 28, 13, -27 }, // 0x5B '[' + { 3606, 18, 35, 28, 5, -30 }, // 0x5C '\' + { 3685, 7, 34, 28, 8, -27 }, // 0x5D ']' + { 3715, 18, 12, 28, 5, -28 }, // 0x5E '^' + { 3742, 28, 2, 28, 0, 5 }, // 0x5F '_' + { 3749, 8, 7, 28, 7, -29 }, // 0x60 '`' + { 3756, 22, 22, 28, 3, -20 }, // 0x61 'a' + { 3817, 23, 29, 28, 2, -27 }, // 0x62 'b' + { 3901, 21, 22, 28, 4, -20 }, // 0x63 'c' + { 3959, 24, 29, 28, 3, -27 }, // 0x64 'd' + { 4046, 21, 22, 28, 3, -20 }, // 0x65 'e' + { 4104, 19, 28, 28, 6, -27 }, // 0x66 'f' + { 4171, 23, 30, 28, 3, -20 }, // 0x67 'g' + { 4258, 23, 28, 28, 3, -27 }, // 0x68 'h' + { 4339, 18, 29, 28, 5, -28 }, // 0x69 'i' + { 4405, 14, 38, 28, 6, -28 }, // 0x6A 'j' + { 4472, 22, 28, 28, 4, -27 }, // 0x6B 'k' + { 4549, 18, 28, 28, 5, -27 }, // 0x6C 'l' + { 4612, 28, 21, 28, 0, -20 }, // 0x6D 'm' + { 4686, 23, 21, 28, 2, -20 }, // 0x6E 'n' + { 4747, 22, 22, 28, 3, -20 }, // 0x6F 'o' + { 4808, 23, 30, 28, 2, -20 }, // 0x70 'p' + { 4895, 24, 30, 28, 3, -20 }, // 0x71 'q' + { 4985, 21, 20, 28, 5, -19 }, // 0x72 'r' + { 5038, 18, 22, 28, 5, -20 }, // 0x73 's' + { 5088, 21, 27, 28, 3, -25 }, // 0x74 't' + { 5159, 23, 21, 28, 3, -19 }, // 0x75 'u' + { 5220, 26, 20, 28, 1, -19 }, // 0x76 'v' + { 5285, 26, 20, 28, 1, -19 }, // 0x77 'w' + { 5350, 24, 20, 28, 2, -19 }, // 0x78 'x' + { 5410, 24, 29, 28, 2, -19 }, // 0x79 'y' + { 5497, 17, 20, 28, 6, -19 }, // 0x7A 'z' + { 5540, 11, 34, 28, 8, -27 }, // 0x7B '{' + { 5587, 2, 34, 28, 13, -27 }, // 0x7C '|' + { 5596, 11, 34, 28, 9, -27 }, // 0x7D '}' + { 5643, 20, 6, 28, 4, -15 } }; // 0x7E '~' + +const GFXfont FreeMono24pt7b PROGMEM = { + (uint8_t *)FreeMono24pt7bBitmaps, + (GFXglyph *)FreeMono24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 6330 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h new file mode 100644 index 000000000..c82d7869c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h @@ -0,0 +1,176 @@ +const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { + 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, + 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, + 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, + 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, + 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, + 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, + 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, + 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, + 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, + 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, + 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, + 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, + 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, + 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, + 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, + 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, + 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, + 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, + 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, + 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, + 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, + 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, + 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, + 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, + 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, + 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, + 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, + 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, + 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, + 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, + 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, + 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, + 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, + 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, + 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, + 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, + 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, + 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, + 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, + 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, + 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, + 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, + 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, + 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, + 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, + 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, + 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, + 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, + 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, + 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, + 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, + 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, + 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, + 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, + 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, + 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, + 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, + 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, + 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, + 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, + 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, + 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, + 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, + 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, + 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, + 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, + 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, + 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, + 0x2C, 0x61, 0x24, 0x30 }; + +const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 2, 11, 11, 4, -10 }, // 0x21 '!' + { 3, 6, 5, 11, 2, -10 }, // 0x22 '"' + { 7, 7, 12, 11, 2, -10 }, // 0x23 '#' + { 18, 8, 12, 11, 1, -10 }, // 0x24 '$' + { 30, 7, 11, 11, 2, -10 }, // 0x25 '%' + { 40, 7, 10, 11, 2, -9 }, // 0x26 '&' + { 49, 3, 5, 11, 4, -10 }, // 0x27 ''' + { 51, 2, 13, 11, 5, -10 }, // 0x28 '(' + { 55, 2, 13, 11, 4, -10 }, // 0x29 ')' + { 59, 7, 7, 11, 2, -10 }, // 0x2A '*' + { 66, 7, 7, 11, 2, -8 }, // 0x2B '+' + { 73, 3, 5, 11, 2, -1 }, // 0x2C ',' + { 75, 9, 1, 11, 1, -5 }, // 0x2D '-' + { 77, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 78, 7, 13, 11, 2, -11 }, // 0x2F '/' + { 90, 7, 11, 11, 2, -10 }, // 0x30 '0' + { 100, 5, 11, 11, 3, -10 }, // 0x31 '1' + { 107, 7, 11, 11, 2, -10 }, // 0x32 '2' + { 117, 8, 11, 11, 1, -10 }, // 0x33 '3' + { 128, 6, 11, 11, 3, -10 }, // 0x34 '4' + { 137, 7, 11, 11, 2, -10 }, // 0x35 '5' + { 147, 7, 11, 11, 2, -10 }, // 0x36 '6' + { 157, 7, 11, 11, 2, -10 }, // 0x37 '7' + { 167, 7, 11, 11, 2, -10 }, // 0x38 '8' + { 177, 7, 11, 11, 2, -10 }, // 0x39 '9' + { 187, 2, 8, 11, 4, -7 }, // 0x3A ':' + { 189, 3, 11, 11, 3, -7 }, // 0x3B ';' + { 194, 8, 8, 11, 1, -8 }, // 0x3C '<' + { 202, 9, 4, 11, 1, -6 }, // 0x3D '=' + { 207, 9, 8, 11, 1, -8 }, // 0x3E '>' + { 216, 7, 10, 11, 2, -9 }, // 0x3F '?' + { 225, 8, 12, 11, 2, -10 }, // 0x40 '@' + { 237, 11, 10, 11, 0, -9 }, // 0x41 'A' + { 251, 9, 10, 11, 1, -9 }, // 0x42 'B' + { 263, 9, 10, 11, 1, -9 }, // 0x43 'C' + { 275, 9, 10, 11, 1, -9 }, // 0x44 'D' + { 287, 9, 10, 11, 1, -9 }, // 0x45 'E' + { 299, 9, 10, 11, 1, -9 }, // 0x46 'F' + { 311, 10, 10, 11, 1, -9 }, // 0x47 'G' + { 324, 9, 10, 11, 1, -9 }, // 0x48 'H' + { 336, 5, 10, 11, 3, -9 }, // 0x49 'I' + { 343, 8, 10, 11, 2, -9 }, // 0x4A 'J' + { 353, 9, 10, 11, 1, -9 }, // 0x4B 'K' + { 365, 8, 10, 11, 2, -9 }, // 0x4C 'L' + { 375, 11, 10, 11, 0, -9 }, // 0x4D 'M' + { 389, 9, 10, 11, 1, -9 }, // 0x4E 'N' + { 401, 9, 10, 11, 1, -9 }, // 0x4F 'O' + { 413, 8, 10, 11, 1, -9 }, // 0x50 'P' + { 423, 9, 13, 11, 1, -9 }, // 0x51 'Q' + { 438, 9, 10, 11, 1, -9 }, // 0x52 'R' + { 450, 7, 10, 11, 2, -9 }, // 0x53 'S' + { 459, 9, 10, 11, 1, -9 }, // 0x54 'T' + { 471, 9, 10, 11, 1, -9 }, // 0x55 'U' + { 483, 11, 10, 11, 0, -9 }, // 0x56 'V' + { 497, 11, 10, 11, 0, -9 }, // 0x57 'W' + { 511, 9, 10, 11, 1, -9 }, // 0x58 'X' + { 523, 9, 10, 11, 1, -9 }, // 0x59 'Y' + { 535, 7, 10, 11, 2, -9 }, // 0x5A 'Z' + { 544, 2, 13, 11, 5, -10 }, // 0x5B '[' + { 548, 7, 13, 11, 2, -11 }, // 0x5C '\' + { 560, 2, 13, 11, 4, -10 }, // 0x5D ']' + { 564, 7, 5, 11, 2, -10 }, // 0x5E '^' + { 569, 11, 1, 11, 0, 2 }, // 0x5F '_' + { 571, 3, 3, 11, 3, -11 }, // 0x60 '`' + { 573, 9, 8, 11, 1, -7 }, // 0x61 'a' + { 582, 9, 11, 11, 1, -10 }, // 0x62 'b' + { 595, 7, 8, 11, 2, -7 }, // 0x63 'c' + { 602, 9, 11, 11, 1, -10 }, // 0x64 'd' + { 615, 8, 8, 11, 1, -7 }, // 0x65 'e' + { 623, 6, 11, 11, 3, -10 }, // 0x66 'f' + { 632, 9, 11, 11, 1, -7 }, // 0x67 'g' + { 645, 9, 11, 11, 1, -10 }, // 0x68 'h' + { 658, 7, 10, 11, 2, -9 }, // 0x69 'i' + { 667, 5, 13, 11, 3, -9 }, // 0x6A 'j' + { 676, 8, 11, 11, 2, -10 }, // 0x6B 'k' + { 687, 7, 11, 11, 2, -10 }, // 0x6C 'l' + { 697, 9, 8, 11, 1, -7 }, // 0x6D 'm' + { 706, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 715, 9, 8, 11, 1, -7 }, // 0x6F 'o' + { 724, 9, 11, 11, 1, -7 }, // 0x70 'p' + { 737, 9, 11, 11, 1, -7 }, // 0x71 'q' + { 750, 7, 8, 11, 3, -7 }, // 0x72 'r' + { 757, 7, 8, 11, 2, -7 }, // 0x73 's' + { 764, 8, 10, 11, 2, -9 }, // 0x74 't' + { 774, 8, 8, 11, 1, -7 }, // 0x75 'u' + { 782, 9, 8, 11, 1, -7 }, // 0x76 'v' + { 791, 9, 8, 11, 1, -7 }, // 0x77 'w' + { 800, 9, 8, 11, 1, -7 }, // 0x78 'x' + { 809, 9, 11, 11, 1, -7 }, // 0x79 'y' + { 822, 7, 8, 11, 2, -7 }, // 0x7A 'z' + { 829, 3, 13, 11, 4, -10 }, // 0x7B '{' + { 834, 1, 13, 11, 5, -10 }, // 0x7C '|' + { 836, 3, 13, 11, 4, -10 }, // 0x7D '}' + { 841, 7, 3, 11, 2, -6 } }; // 0x7E '~' + +const GFXfont FreeMono9pt7b PROGMEM = { + (uint8_t *)FreeMono9pt7bBitmaps, + (GFXglyph *)FreeMono9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1516 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h new file mode 100644 index 000000000..4ad9d1a4f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h @@ -0,0 +1,250 @@ +const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, + 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, + 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, + 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, + 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, + 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, + 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, + 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, + 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, + 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, + 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, + 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, + 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, + 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, + 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, + 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, + 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, + 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, + 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, + 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, + 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, + 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, + 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, + 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, + 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, + 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, + 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, + 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, + 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, + 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, + 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, + 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, + 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, + 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, + 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, + 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, + 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, + 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, + 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, + 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, + 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, + 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, + 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, + 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, + 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, + 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, + 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, + 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, + 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, + 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, + 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, + 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, + 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, + 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, + 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, + 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, + 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, + 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, + 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, + 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, + 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, + 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, + 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, + 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, + 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, + 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, + 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, + 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, + 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, + 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, + 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, + 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, + 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, + 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, + 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, + 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, + 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, + 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, + 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, + 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, + 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, + 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, + 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, + 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, + 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, + 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, + 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, + 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, + 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, + 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, + 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, + 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, + 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, + 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, + 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, + 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, + 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, + 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, + 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, + 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, + 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, + 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, + 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, + 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, + 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, + 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, + 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, + 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, + 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, + 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, + 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, + 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, + 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, + 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, + 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, + 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, + 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, + 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, + 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, + 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, + 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, + 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, + 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, + 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, + 0xE6, 0x1C }; + +const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 4, 15, 14, 5, -14 }, // 0x21 '!' + { 8, 8, 7, 14, 3, -13 }, // 0x22 '"' + { 15, 11, 18, 14, 2, -15 }, // 0x23 '#' + { 40, 10, 20, 14, 2, -16 }, // 0x24 '$' + { 65, 10, 15, 14, 2, -14 }, // 0x25 '%' + { 84, 10, 13, 14, 2, -12 }, // 0x26 '&' + { 101, 3, 7, 14, 5, -13 }, // 0x27 ''' + { 104, 5, 19, 14, 6, -14 }, // 0x28 '(' + { 116, 5, 19, 14, 3, -14 }, // 0x29 ')' + { 128, 10, 10, 14, 2, -14 }, // 0x2A '*' + { 141, 12, 13, 14, 1, -12 }, // 0x2B '+' + { 161, 5, 7, 14, 4, -2 }, // 0x2C ',' + { 166, 12, 2, 14, 1, -7 }, // 0x2D '-' + { 169, 3, 3, 14, 5, -2 }, // 0x2E '.' + { 171, 10, 20, 14, 2, -16 }, // 0x2F '/' + { 196, 10, 15, 14, 2, -14 }, // 0x30 '0' + { 215, 10, 15, 14, 2, -14 }, // 0x31 '1' + { 234, 10, 15, 14, 2, -14 }, // 0x32 '2' + { 253, 11, 15, 14, 1, -14 }, // 0x33 '3' + { 274, 9, 14, 14, 2, -13 }, // 0x34 '4' + { 290, 10, 15, 14, 2, -14 }, // 0x35 '5' + { 309, 10, 15, 14, 2, -14 }, // 0x36 '6' + { 328, 10, 15, 14, 2, -14 }, // 0x37 '7' + { 347, 10, 15, 14, 2, -14 }, // 0x38 '8' + { 366, 10, 15, 14, 3, -14 }, // 0x39 '9' + { 385, 3, 11, 14, 5, -10 }, // 0x3A ':' + { 390, 4, 15, 14, 4, -10 }, // 0x3B ';' + { 398, 12, 11, 14, 1, -11 }, // 0x3C '<' + { 415, 12, 7, 14, 1, -9 }, // 0x3D '=' + { 426, 12, 11, 14, 1, -11 }, // 0x3E '>' + { 443, 9, 14, 14, 3, -13 }, // 0x3F '?' + { 459, 11, 19, 14, 2, -14 }, // 0x40 '@' + { 486, 15, 14, 14, -1, -13 }, // 0x41 'A' + { 513, 13, 14, 14, 0, -13 }, // 0x42 'B' + { 536, 12, 14, 14, 1, -13 }, // 0x43 'C' + { 557, 12, 14, 14, 1, -13 }, // 0x44 'D' + { 578, 13, 14, 14, 0, -13 }, // 0x45 'E' + { 601, 13, 14, 14, 0, -13 }, // 0x46 'F' + { 624, 13, 14, 14, 1, -13 }, // 0x47 'G' + { 647, 14, 14, 14, 0, -13 }, // 0x48 'H' + { 672, 10, 14, 14, 2, -13 }, // 0x49 'I' + { 690, 13, 14, 14, 1, -13 }, // 0x4A 'J' + { 713, 14, 14, 14, 0, -13 }, // 0x4B 'K' + { 738, 12, 14, 14, 1, -13 }, // 0x4C 'L' + { 759, 14, 14, 14, 0, -13 }, // 0x4D 'M' + { 784, 13, 14, 14, 0, -13 }, // 0x4E 'N' + { 807, 12, 14, 14, 1, -13 }, // 0x4F 'O' + { 828, 12, 14, 14, 0, -13 }, // 0x50 'P' + { 849, 12, 17, 14, 1, -13 }, // 0x51 'Q' + { 875, 14, 14, 14, 0, -13 }, // 0x52 'R' + { 900, 10, 14, 14, 2, -13 }, // 0x53 'S' + { 918, 12, 14, 14, 1, -13 }, // 0x54 'T' + { 939, 12, 14, 14, 1, -13 }, // 0x55 'U' + { 960, 16, 14, 14, -1, -13 }, // 0x56 'V' + { 988, 14, 14, 14, 0, -13 }, // 0x57 'W' + { 1013, 14, 14, 14, 0, -13 }, // 0x58 'X' + { 1038, 12, 14, 14, 1, -13 }, // 0x59 'Y' + { 1059, 10, 14, 14, 2, -13 }, // 0x5A 'Z' + { 1077, 5, 19, 14, 6, -14 }, // 0x5B '[' + { 1089, 10, 20, 14, 2, -16 }, // 0x5C '\' + { 1114, 5, 19, 14, 3, -14 }, // 0x5D ']' + { 1126, 10, 8, 14, 2, -15 }, // 0x5E '^' + { 1136, 14, 2, 14, 0, 4 }, // 0x5F '_' + { 1140, 4, 4, 14, 4, -15 }, // 0x60 '`' + { 1142, 12, 11, 14, 1, -10 }, // 0x61 'a' + { 1159, 13, 15, 14, 0, -14 }, // 0x62 'b' + { 1184, 12, 11, 14, 1, -10 }, // 0x63 'c' + { 1201, 13, 15, 14, 1, -14 }, // 0x64 'd' + { 1226, 12, 11, 14, 1, -10 }, // 0x65 'e' + { 1243, 11, 15, 14, 2, -14 }, // 0x66 'f' + { 1264, 13, 16, 14, 1, -10 }, // 0x67 'g' + { 1290, 14, 15, 14, 0, -14 }, // 0x68 'h' + { 1317, 11, 14, 14, 1, -13 }, // 0x69 'i' + { 1337, 8, 19, 15, 3, -13 }, // 0x6A 'j' + { 1356, 13, 15, 14, 1, -14 }, // 0x6B 'k' + { 1381, 11, 15, 14, 1, -14 }, // 0x6C 'l' + { 1402, 15, 11, 14, 0, -10 }, // 0x6D 'm' + { 1423, 14, 11, 14, 0, -10 }, // 0x6E 'n' + { 1443, 12, 11, 14, 1, -10 }, // 0x6F 'o' + { 1460, 14, 16, 14, 0, -10 }, // 0x70 'p' + { 1488, 14, 16, 14, 0, -10 }, // 0x71 'q' + { 1516, 12, 11, 14, 1, -10 }, // 0x72 'r' + { 1533, 10, 11, 14, 2, -10 }, // 0x73 's' + { 1547, 11, 14, 14, 1, -13 }, // 0x74 't' + { 1567, 13, 11, 14, 0, -10 }, // 0x75 'u' + { 1585, 14, 11, 14, 0, -10 }, // 0x76 'v' + { 1605, 14, 11, 14, 0, -10 }, // 0x77 'w' + { 1625, 14, 11, 14, 0, -10 }, // 0x78 'x' + { 1645, 12, 16, 14, 1, -10 }, // 0x79 'y' + { 1669, 11, 11, 14, 1, -10 }, // 0x7A 'z' + { 1685, 7, 19, 14, 3, -14 }, // 0x7B '{' + { 1702, 2, 19, 14, 6, -14 }, // 0x7C '|' + { 1707, 7, 19, 14, 4, -14 }, // 0x7D '}' + { 1724, 12, 4, 14, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoBold12pt7b PROGMEM = { + (uint8_t *)FreeMonoBold12pt7bBitmaps, + (GFXglyph *)FreeMonoBold12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2402 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h new file mode 100644 index 000000000..36e0be05d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h @@ -0,0 +1,423 @@ +const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { + 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, + 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, + 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, + 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, + 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, + 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, + 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, + 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, + 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, + 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, + 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, + 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, + 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, + 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, + 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, + 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, + 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, + 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, + 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, + 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, + 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, + 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, + 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, + 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, + 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, + 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, + 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, + 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, + 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, + 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, + 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, + 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, + 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, + 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, + 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, + 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, + 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, + 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, + 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, + 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, + 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, + 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, + 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, + 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, + 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, + 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, + 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, + 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, + 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, + 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, + 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, + 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, + 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, + 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, + 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, + 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, + 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, + 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, + 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, + 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, + 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, + 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, + 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, + 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, + 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, + 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, + 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, + 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, + 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, + 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, + 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, + 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, + 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, + 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, + 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, + 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, + 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, + 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, + 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, + 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, + 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, + 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, + 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, + 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, + 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, + 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, + 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, + 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, + 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, + 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, + 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, + 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, + 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, + 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, + 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, + 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, + 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, + 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, + 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, + 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, + 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, + 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, + 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, + 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, + 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, + 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, + 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, + 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, + 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, + 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, + 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, + 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, + 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, + 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, + 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, + 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, + 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, + 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, + 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, + 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, + 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, + 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, + 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, + 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, + 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, + 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, + 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, + 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, + 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, + 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, + 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, + 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, + 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, + 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, + 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, + 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, + 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, + 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, + 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, + 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, + 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, + 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, + 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, + 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, + 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, + 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, + 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, + 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, + 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, + 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, + 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, + 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, + 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, + 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, + 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, + 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, + 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, + 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, + 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, + 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, + 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, + 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, + 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, + 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, + 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, + 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, + 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, + 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, + 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, + 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, + 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, + 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, + 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, + 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, + 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, + 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, + 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, + 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, + 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, + 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, + 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, + 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, + 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, + 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, + 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, + 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, + 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, + 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, + 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, + 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, + 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, + 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, + 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, + 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, + 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, + 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, + 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, + 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, + 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78 }; + +const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 5, 22, 21, 8, -21 }, // 0x21 '!' + { 14, 11, 10, 21, 5, -20 }, // 0x22 '"' + { 28, 16, 25, 21, 3, -22 }, // 0x23 '#' + { 78, 14, 28, 21, 4, -23 }, // 0x24 '$' + { 127, 15, 21, 21, 3, -20 }, // 0x25 '%' + { 167, 15, 20, 21, 3, -19 }, // 0x26 '&' + { 205, 4, 10, 21, 8, -20 }, // 0x27 ''' + { 210, 8, 27, 21, 9, -21 }, // 0x28 '(' + { 237, 8, 27, 21, 4, -21 }, // 0x29 ')' + { 264, 16, 15, 21, 3, -21 }, // 0x2A '*' + { 294, 16, 19, 21, 3, -18 }, // 0x2B '+' + { 332, 7, 10, 21, 5, -3 }, // 0x2C ',' + { 341, 19, 4, 21, 1, -11 }, // 0x2D '-' + { 351, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 355, 15, 28, 21, 3, -23 }, // 0x2F '/' + { 408, 16, 23, 21, 3, -22 }, // 0x30 '0' + { 454, 15, 22, 21, 3, -21 }, // 0x31 '1' + { 496, 15, 23, 21, 3, -22 }, // 0x32 '2' + { 540, 16, 23, 21, 3, -22 }, // 0x33 '3' + { 586, 15, 21, 21, 3, -20 }, // 0x34 '4' + { 626, 17, 22, 21, 2, -21 }, // 0x35 '5' + { 673, 15, 23, 21, 4, -22 }, // 0x36 '6' + { 717, 15, 22, 21, 3, -21 }, // 0x37 '7' + { 759, 15, 23, 21, 3, -22 }, // 0x38 '8' + { 803, 15, 23, 21, 4, -22 }, // 0x39 '9' + { 847, 5, 16, 21, 8, -15 }, // 0x3A ':' + { 857, 7, 22, 21, 5, -15 }, // 0x3B ';' + { 877, 18, 16, 21, 1, -17 }, // 0x3C '<' + { 913, 19, 10, 21, 1, -14 }, // 0x3D '=' + { 937, 18, 16, 21, 2, -17 }, // 0x3E '>' + { 973, 15, 21, 21, 4, -20 }, // 0x3F '?' + { 1013, 15, 27, 21, 3, -21 }, // 0x40 '@' + { 1064, 22, 21, 21, -1, -20 }, // 0x41 'A' + { 1122, 20, 21, 21, 1, -20 }, // 0x42 'B' + { 1175, 19, 21, 21, 1, -20 }, // 0x43 'C' + { 1225, 18, 21, 21, 2, -20 }, // 0x44 'D' + { 1273, 19, 21, 21, 1, -20 }, // 0x45 'E' + { 1323, 19, 21, 21, 1, -20 }, // 0x46 'F' + { 1373, 20, 21, 21, 1, -20 }, // 0x47 'G' + { 1426, 21, 21, 21, 0, -20 }, // 0x48 'H' + { 1482, 14, 21, 21, 4, -20 }, // 0x49 'I' + { 1519, 19, 21, 21, 2, -20 }, // 0x4A 'J' + { 1569, 20, 21, 21, 1, -20 }, // 0x4B 'K' + { 1622, 18, 21, 21, 2, -20 }, // 0x4C 'L' + { 1670, 23, 21, 21, -1, -20 }, // 0x4D 'M' + { 1731, 20, 21, 21, 1, -20 }, // 0x4E 'N' + { 1784, 20, 21, 21, 1, -20 }, // 0x4F 'O' + { 1837, 18, 21, 21, 1, -20 }, // 0x50 'P' + { 1885, 20, 26, 21, 1, -20 }, // 0x51 'Q' + { 1950, 21, 21, 21, 0, -20 }, // 0x52 'R' + { 2006, 17, 21, 21, 2, -20 }, // 0x53 'S' + { 2051, 19, 21, 21, 1, -20 }, // 0x54 'T' + { 2101, 21, 21, 21, 0, -20 }, // 0x55 'U' + { 2157, 23, 21, 21, -1, -20 }, // 0x56 'V' + { 2218, 21, 21, 21, 0, -20 }, // 0x57 'W' + { 2274, 19, 21, 21, 1, -20 }, // 0x58 'X' + { 2324, 20, 21, 21, 1, -20 }, // 0x59 'Y' + { 2377, 16, 21, 21, 3, -20 }, // 0x5A 'Z' + { 2419, 8, 27, 21, 9, -21 }, // 0x5B '[' + { 2446, 15, 28, 21, 3, -23 }, // 0x5C '\' + { 2499, 8, 27, 21, 4, -21 }, // 0x5D ']' + { 2526, 15, 11, 21, 3, -21 }, // 0x5E '^' + { 2547, 21, 4, 21, 0, 4 }, // 0x5F '_' + { 2558, 6, 6, 21, 6, -22 }, // 0x60 '`' + { 2563, 19, 16, 21, 1, -15 }, // 0x61 'a' + { 2601, 19, 22, 21, 1, -21 }, // 0x62 'b' + { 2654, 17, 16, 21, 2, -15 }, // 0x63 'c' + { 2688, 20, 22, 21, 1, -21 }, // 0x64 'd' + { 2743, 18, 16, 21, 1, -15 }, // 0x65 'e' + { 2779, 16, 22, 21, 4, -21 }, // 0x66 'f' + { 2823, 19, 23, 21, 1, -15 }, // 0x67 'g' + { 2878, 21, 22, 21, 0, -21 }, // 0x68 'h' + { 2936, 16, 22, 21, 3, -21 }, // 0x69 'i' + { 2980, 12, 29, 21, 5, -21 }, // 0x6A 'j' + { 3024, 18, 22, 21, 2, -21 }, // 0x6B 'k' + { 3074, 16, 22, 21, 3, -21 }, // 0x6C 'l' + { 3118, 22, 16, 21, -1, -15 }, // 0x6D 'm' + { 3162, 20, 16, 21, 0, -15 }, // 0x6E 'n' + { 3202, 19, 16, 21, 1, -15 }, // 0x6F 'o' + { 3240, 21, 23, 21, 0, -15 }, // 0x70 'p' + { 3301, 21, 23, 22, 1, -15 }, // 0x71 'q' + { 3362, 17, 16, 21, 3, -15 }, // 0x72 'r' + { 3396, 16, 16, 21, 3, -15 }, // 0x73 's' + { 3428, 17, 21, 21, 1, -20 }, // 0x74 't' + { 3473, 18, 16, 21, 1, -15 }, // 0x75 'u' + { 3509, 21, 16, 21, 0, -15 }, // 0x76 'v' + { 3551, 21, 16, 21, 0, -15 }, // 0x77 'w' + { 3593, 19, 16, 21, 1, -15 }, // 0x78 'x' + { 3631, 19, 23, 21, 1, -15 }, // 0x79 'y' + { 3686, 14, 16, 21, 3, -15 }, // 0x7A 'z' + { 3714, 10, 27, 21, 6, -21 }, // 0x7B '{' + { 3748, 4, 27, 21, 9, -21 }, // 0x7C '|' + { 3762, 10, 27, 21, 6, -21 }, // 0x7D '}' + { 3796, 17, 8, 21, 2, -13 } }; // 0x7E '~' + +const GFXfont FreeMonoBold18pt7b PROGMEM = { + (uint8_t *)FreeMonoBold18pt7bBitmaps, + (GFXglyph *)FreeMonoBold18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4485 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h new file mode 100644 index 000000000..aa0dcd045 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h @@ -0,0 +1,672 @@ +const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { + 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, + 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, + 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, + 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, + 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, + 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, + 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, + 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, + 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, + 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, + 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, + 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, + 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, + 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, + 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, + 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, + 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, + 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, + 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, + 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, + 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, + 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, + 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, + 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, + 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, + 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, + 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, + 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, + 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, + 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, + 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, + 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, + 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, + 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, + 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, + 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, + 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, + 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, + 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, + 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, + 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, + 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, + 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, + 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, + 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, + 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, + 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, + 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, + 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, + 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, + 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, + 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, + 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, + 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, + 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, + 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, + 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, + 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, + 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, + 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, + 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, + 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, + 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, + 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, + 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, + 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, + 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, + 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, + 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, + 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, + 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, + 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, + 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, + 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, + 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, + 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, + 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, + 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, + 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, + 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, + 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, + 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, + 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, + 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, + 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, + 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, + 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, + 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, + 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, + 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, + 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, + 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, + 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, + 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, + 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, + 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, + 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, + 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, + 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, + 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, + 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, + 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, + 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, + 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, + 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, + 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, + 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, + 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, + 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, + 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, + 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, + 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, + 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, + 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, + 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, + 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, + 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, + 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, + 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, + 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, + 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, + 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, + 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, + 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, + 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, + 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, + 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, + 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, + 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, + 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, + 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, + 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, + 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, + 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, + 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, + 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, + 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, + 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, + 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, + 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, + 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, + 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, + 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, + 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, + 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, + 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, + 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, + 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, + 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, + 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, + 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, + 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, + 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, + 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, + 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, + 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, + 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, + 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, + 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, + 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, + 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, + 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, + 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, + 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, + 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, + 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, + 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, + 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, + 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, + 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, + 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, + 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, + 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, + 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, + 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, + 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, + 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, + 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, + 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, + 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, + 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, + 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, + 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, + 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, + 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, + 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, + 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, + 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, + 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, + 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, + 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, + 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, + 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, + 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, + 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, + 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, + 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, + 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, + 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, + 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, + 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, + 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, + 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, + 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, + 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, + 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, + 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, + 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, + 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, + 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, + 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, + 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, + 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, + 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, + 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, + 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, + 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, + 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, + 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, + 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, + 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, + 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, + 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, + 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, + 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, + 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, + 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, + 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, + 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, + 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, + 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, + 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, + 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, + 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, + 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, + 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, + 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, + 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, + 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, + 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, + 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, + 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, + 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, + 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, + 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, + 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, + 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, + 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, + 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, + 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, + 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, + 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, + 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, + 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, + 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, + 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, + 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, + 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, + 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, + 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, + 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, + 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, + 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, + 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, + 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, + 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, + 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, + 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, + 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0x00 }; + +const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 7, 31, 28, 10, -29 }, // 0x21 '!' + { 28, 15, 14, 28, 6, -28 }, // 0x22 '"' + { 55, 22, 34, 28, 3, -30 }, // 0x23 '#' + { 149, 19, 38, 28, 5, -31 }, // 0x24 '$' + { 240, 21, 30, 28, 4, -28 }, // 0x25 '%' + { 319, 21, 28, 28, 4, -26 }, // 0x26 '&' + { 393, 6, 14, 28, 11, -28 }, // 0x27 ''' + { 404, 10, 37, 28, 12, -29 }, // 0x28 '(' + { 451, 10, 37, 28, 6, -29 }, // 0x29 ')' + { 498, 21, 19, 28, 4, -28 }, // 0x2A '*' + { 548, 23, 26, 28, 3, -25 }, // 0x2B '+' + { 623, 9, 14, 28, 7, -6 }, // 0x2C ',' + { 639, 24, 5, 28, 2, -15 }, // 0x2D '-' + { 654, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 660, 20, 38, 28, 4, -32 }, // 0x2F '/' + { 755, 21, 31, 28, 4, -29 }, // 0x30 '0' + { 837, 20, 29, 28, 4, -28 }, // 0x31 '1' + { 910, 21, 30, 28, 3, -29 }, // 0x32 '2' + { 989, 21, 31, 28, 4, -29 }, // 0x33 '3' + { 1071, 20, 28, 28, 4, -27 }, // 0x34 '4' + { 1141, 21, 31, 28, 4, -29 }, // 0x35 '5' + { 1223, 20, 31, 28, 5, -29 }, // 0x36 '6' + { 1301, 20, 30, 28, 4, -29 }, // 0x37 '7' + { 1376, 20, 31, 28, 4, -29 }, // 0x38 '8' + { 1454, 20, 31, 28, 5, -29 }, // 0x39 '9' + { 1532, 7, 22, 28, 11, -20 }, // 0x3A ':' + { 1552, 10, 28, 28, 6, -20 }, // 0x3B ';' + { 1587, 24, 21, 28, 2, -23 }, // 0x3C '<' + { 1650, 24, 14, 28, 2, -19 }, // 0x3D '=' + { 1692, 23, 22, 28, 3, -23 }, // 0x3E '>' + { 1756, 20, 29, 28, 5, -27 }, // 0x3F '?' + { 1829, 19, 36, 28, 4, -28 }, // 0x40 '@' + { 1915, 29, 27, 28, -1, -26 }, // 0x41 'A' + { 2013, 26, 27, 28, 1, -26 }, // 0x42 'B' + { 2101, 25, 29, 28, 2, -27 }, // 0x43 'C' + { 2192, 25, 27, 28, 1, -26 }, // 0x44 'D' + { 2277, 25, 27, 28, 1, -26 }, // 0x45 'E' + { 2362, 25, 27, 28, 1, -26 }, // 0x46 'F' + { 2447, 25, 29, 28, 2, -27 }, // 0x47 'G' + { 2538, 26, 27, 28, 1, -26 }, // 0x48 'H' + { 2626, 19, 27, 28, 5, -26 }, // 0x49 'I' + { 2691, 25, 28, 28, 3, -26 }, // 0x4A 'J' + { 2779, 27, 27, 28, 1, -26 }, // 0x4B 'K' + { 2871, 25, 27, 28, 2, -26 }, // 0x4C 'L' + { 2956, 31, 27, 28, -1, -26 }, // 0x4D 'M' + { 3061, 28, 27, 28, 0, -26 }, // 0x4E 'N' + { 3156, 27, 29, 28, 1, -27 }, // 0x4F 'O' + { 3254, 24, 27, 28, 1, -26 }, // 0x50 'P' + { 3335, 27, 35, 28, 1, -27 }, // 0x51 'Q' + { 3454, 28, 27, 28, 0, -26 }, // 0x52 'R' + { 3549, 22, 29, 28, 3, -27 }, // 0x53 'S' + { 3629, 25, 27, 28, 2, -26 }, // 0x54 'T' + { 3714, 28, 28, 28, 0, -26 }, // 0x55 'U' + { 3812, 30, 27, 28, -1, -26 }, // 0x56 'V' + { 3914, 28, 27, 28, 0, -26 }, // 0x57 'W' + { 4009, 26, 27, 28, 1, -26 }, // 0x58 'X' + { 4097, 26, 27, 28, 1, -26 }, // 0x59 'Y' + { 4185, 21, 27, 28, 4, -26 }, // 0x5A 'Z' + { 4256, 10, 37, 28, 12, -29 }, // 0x5B '[' + { 4303, 20, 38, 28, 4, -32 }, // 0x5C '\' + { 4398, 10, 37, 28, 6, -29 }, // 0x5D ']' + { 4445, 20, 15, 28, 4, -29 }, // 0x5E '^' + { 4483, 28, 5, 28, 0, 5 }, // 0x5F '_' + { 4501, 9, 8, 28, 8, -30 }, // 0x60 '`' + { 4510, 24, 23, 28, 2, -21 }, // 0x61 'a' + { 4579, 27, 31, 28, 0, -29 }, // 0x62 'b' + { 4684, 24, 23, 28, 3, -21 }, // 0x63 'c' + { 4753, 26, 31, 28, 2, -29 }, // 0x64 'd' + { 4854, 24, 23, 28, 2, -21 }, // 0x65 'e' + { 4923, 22, 30, 28, 4, -29 }, // 0x66 'f' + { 5006, 25, 31, 28, 2, -21 }, // 0x67 'g' + { 5103, 26, 30, 28, 1, -29 }, // 0x68 'h' + { 5201, 21, 29, 28, 4, -28 }, // 0x69 'i' + { 5278, 17, 38, 28, 5, -28 }, // 0x6A 'j' + { 5359, 25, 30, 28, 2, -29 }, // 0x6B 'k' + { 5453, 21, 30, 28, 4, -29 }, // 0x6C 'l' + { 5532, 30, 22, 28, -1, -21 }, // 0x6D 'm' + { 5615, 25, 22, 28, 1, -21 }, // 0x6E 'n' + { 5684, 25, 23, 28, 2, -21 }, // 0x6F 'o' + { 5756, 28, 31, 28, 0, -21 }, // 0x70 'p' + { 5865, 28, 31, 28, 1, -21 }, // 0x71 'q' + { 5974, 24, 22, 28, 3, -21 }, // 0x72 'r' + { 6040, 21, 23, 28, 4, -21 }, // 0x73 's' + { 6101, 23, 28, 28, 1, -26 }, // 0x74 't' + { 6182, 25, 22, 28, 1, -20 }, // 0x75 'u' + { 6251, 28, 21, 28, 0, -20 }, // 0x76 'v' + { 6325, 28, 21, 28, 0, -20 }, // 0x77 'w' + { 6399, 26, 21, 28, 1, -20 }, // 0x78 'x' + { 6468, 26, 30, 28, 1, -20 }, // 0x79 'y' + { 6566, 19, 21, 28, 5, -20 }, // 0x7A 'z' + { 6616, 14, 37, 28, 7, -29 }, // 0x7B '{' + { 6681, 5, 36, 28, 12, -28 }, // 0x7C '|' + { 6704, 14, 37, 28, 8, -29 }, // 0x7D '}' + { 6769, 22, 10, 28, 3, -17 } }; // 0x7E '~' + +const GFXfont FreeMonoBold24pt7b PROGMEM = { + (uint8_t *)FreeMonoBold24pt7bBitmaps, + (GFXglyph *)FreeMonoBold24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 7469 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h new file mode 100644 index 000000000..75b1766b2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h @@ -0,0 +1,189 @@ +const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, + 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, + 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, + 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, + 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, + 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, + 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, + 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, + 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, + 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, + 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, + 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, + 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, + 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, + 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, + 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, + 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, + 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, + 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, + 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, + 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, + 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, + 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, + 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, + 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, + 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, + 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, + 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, + 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, + 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, + 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, + 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, + 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, + 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, + 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, + 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, + 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, + 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, + 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, + 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, + 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, + 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, + 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, + 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, + 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, + 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, + 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, + 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, + 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, + 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, + 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, + 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, + 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, + 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, + 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, + 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, + 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, + 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, + 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, + 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, + 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, + 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, + 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, + 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, + 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, + 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, + 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, + 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, + 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, + 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, + 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, + 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, + 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, + 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, + 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, + 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, + 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, + 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, + 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, + 0x7C, 0xF3, 0xC0, 0xC0 }; + +const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 3, 11, 11, 4, -10 }, // 0x21 '!' + { 5, 7, 5, 11, 2, -10 }, // 0x22 '"' + { 10, 8, 12, 11, 1, -10 }, // 0x23 '#' + { 22, 7, 14, 11, 2, -11 }, // 0x24 '$' + { 35, 7, 11, 11, 2, -10 }, // 0x25 '%' + { 45, 8, 10, 11, 1, -9 }, // 0x26 '&' + { 55, 3, 5, 11, 4, -10 }, // 0x27 ''' + { 57, 4, 14, 11, 5, -10 }, // 0x28 '(' + { 64, 4, 14, 11, 2, -10 }, // 0x29 ')' + { 71, 8, 7, 11, 2, -10 }, // 0x2A '*' + { 78, 8, 9, 11, 2, -8 }, // 0x2B '+' + { 87, 3, 5, 11, 3, -1 }, // 0x2C ',' + { 89, 9, 2, 11, 1, -5 }, // 0x2D '-' + { 92, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 93, 7, 15, 11, 2, -12 }, // 0x2F '/' + { 107, 7, 12, 11, 2, -11 }, // 0x30 '0' + { 118, 7, 11, 11, 2, -10 }, // 0x31 '1' + { 128, 8, 12, 11, 1, -11 }, // 0x32 '2' + { 140, 8, 12, 11, 2, -11 }, // 0x33 '3' + { 152, 7, 10, 11, 2, -9 }, // 0x34 '4' + { 161, 9, 11, 11, 1, -10 }, // 0x35 '5' + { 174, 8, 12, 11, 2, -11 }, // 0x36 '6' + { 186, 8, 11, 11, 1, -10 }, // 0x37 '7' + { 197, 7, 12, 11, 2, -11 }, // 0x38 '8' + { 208, 8, 12, 11, 2, -11 }, // 0x39 '9' + { 220, 2, 8, 11, 4, -7 }, // 0x3A ':' + { 222, 3, 11, 11, 3, -7 }, // 0x3B ';' + { 227, 9, 8, 11, 1, -8 }, // 0x3C '<' + { 236, 9, 6, 11, 1, -7 }, // 0x3D '=' + { 243, 9, 8, 11, 1, -8 }, // 0x3E '>' + { 252, 8, 11, 11, 2, -10 }, // 0x3F '?' + { 263, 9, 15, 11, 1, -11 }, // 0x40 '@' + { 280, 11, 11, 11, 0, -10 }, // 0x41 'A' + { 296, 10, 11, 11, 1, -10 }, // 0x42 'B' + { 310, 9, 11, 11, 1, -10 }, // 0x43 'C' + { 323, 10, 11, 11, 0, -10 }, // 0x44 'D' + { 337, 9, 11, 11, 1, -10 }, // 0x45 'E' + { 350, 9, 11, 11, 1, -10 }, // 0x46 'F' + { 363, 10, 11, 11, 1, -10 }, // 0x47 'G' + { 377, 9, 11, 11, 1, -10 }, // 0x48 'H' + { 390, 6, 11, 11, 3, -10 }, // 0x49 'I' + { 399, 10, 11, 11, 1, -10 }, // 0x4A 'J' + { 413, 10, 11, 11, 1, -10 }, // 0x4B 'K' + { 427, 9, 11, 11, 1, -10 }, // 0x4C 'L' + { 440, 11, 11, 11, 0, -10 }, // 0x4D 'M' + { 456, 11, 11, 11, 0, -10 }, // 0x4E 'N' + { 472, 11, 11, 11, 0, -10 }, // 0x4F 'O' + { 488, 9, 11, 11, 1, -10 }, // 0x50 'P' + { 501, 11, 14, 11, 0, -10 }, // 0x51 'Q' + { 521, 9, 11, 11, 1, -10 }, // 0x52 'R' + { 534, 9, 11, 11, 1, -10 }, // 0x53 'S' + { 547, 9, 11, 11, 1, -10 }, // 0x54 'T' + { 560, 11, 11, 11, 0, -10 }, // 0x55 'U' + { 576, 11, 11, 11, 0, -10 }, // 0x56 'V' + { 592, 10, 11, 11, 0, -10 }, // 0x57 'W' + { 606, 10, 11, 11, 0, -10 }, // 0x58 'X' + { 620, 10, 11, 11, 0, -10 }, // 0x59 'Y' + { 634, 8, 11, 11, 2, -10 }, // 0x5A 'Z' + { 645, 4, 14, 11, 5, -10 }, // 0x5B '[' + { 652, 7, 15, 11, 2, -12 }, // 0x5C '\' + { 666, 4, 14, 11, 2, -10 }, // 0x5D ']' + { 673, 7, 6, 11, 2, -11 }, // 0x5E '^' + { 679, 11, 2, 11, 0, 3 }, // 0x5F '_' + { 682, 3, 3, 11, 3, -11 }, // 0x60 '`' + { 684, 9, 8, 11, 1, -7 }, // 0x61 'a' + { 693, 10, 11, 11, 0, -10 }, // 0x62 'b' + { 707, 9, 8, 11, 1, -7 }, // 0x63 'c' + { 716, 10, 11, 11, 1, -10 }, // 0x64 'd' + { 730, 9, 8, 11, 1, -7 }, // 0x65 'e' + { 739, 8, 11, 11, 2, -10 }, // 0x66 'f' + { 750, 9, 12, 11, 1, -7 }, // 0x67 'g' + { 764, 9, 11, 11, 1, -10 }, // 0x68 'h' + { 777, 8, 11, 11, 2, -10 }, // 0x69 'i' + { 788, 6, 15, 11, 2, -10 }, // 0x6A 'j' + { 800, 9, 11, 11, 1, -10 }, // 0x6B 'k' + { 813, 8, 11, 11, 2, -10 }, // 0x6C 'l' + { 824, 11, 8, 11, 0, -7 }, // 0x6D 'm' + { 835, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 844, 9, 8, 11, 1, -7 }, // 0x6F 'o' + { 853, 11, 12, 11, 0, -7 }, // 0x70 'p' + { 870, 11, 12, 11, 0, -7 }, // 0x71 'q' + { 887, 9, 8, 11, 1, -7 }, // 0x72 'r' + { 896, 8, 8, 11, 2, -7 }, // 0x73 's' + { 904, 8, 11, 11, 1, -10 }, // 0x74 't' + { 915, 9, 8, 11, 1, -7 }, // 0x75 'u' + { 924, 11, 8, 11, 0, -7 }, // 0x76 'v' + { 935, 11, 8, 11, 0, -7 }, // 0x77 'w' + { 946, 9, 8, 11, 1, -7 }, // 0x78 'x' + { 955, 10, 12, 11, 0, -7 }, // 0x79 'y' + { 970, 7, 8, 11, 2, -7 }, // 0x7A 'z' + { 977, 4, 14, 11, 3, -10 }, // 0x7B '{' + { 984, 2, 14, 11, 5, -10 }, // 0x7C '|' + { 988, 4, 14, 11, 4, -10 }, // 0x7D '}' + { 995, 9, 4, 11, 1, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoBold9pt7b PROGMEM = { + (uint8_t *)FreeMonoBold9pt7bBitmaps, + (GFXglyph *)FreeMonoBold9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1672 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h new file mode 100644 index 000000000..cc3ecb271 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h @@ -0,0 +1,269 @@ +const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, + 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, + 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, + 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, + 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, + 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, + 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, + 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, + 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, + 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, + 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, + 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, + 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, + 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, + 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, + 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, + 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, + 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, + 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, + 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, + 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, + 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, + 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, + 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, + 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, + 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, + 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, + 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, + 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, + 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, + 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, + 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, + 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, + 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, + 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, + 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, + 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, + 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, + 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, + 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, + 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, + 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, + 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, + 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, + 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, + 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, + 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, + 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, + 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, + 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, + 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, + 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, + 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, + 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, + 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, + 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, + 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, + 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, + 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, + 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, + 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, + 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, + 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, + 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, + 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, + 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, + 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, + 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, + 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, + 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, + 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, + 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, + 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, + 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, + 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, + 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, + 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, + 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, + 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, + 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, + 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, + 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, + 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, + 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, + 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, + 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, + 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, + 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, + 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, + 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, + 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, + 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, + 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, + 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, + 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, + 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, + 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, + 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, + 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, + 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, + 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, + 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, + 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, + 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, + 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, + 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, + 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, + 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, + 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, + 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, + 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, + 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, + 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, + 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, + 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, + 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, + 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, + 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, + 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, + 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, + 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, + 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, + 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, + 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, + 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, + 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, + 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, + 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, + 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, + 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, + 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, + 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, + 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, + 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, + 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, + 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, + 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, + 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, + 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, + 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, + 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, + 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, + 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38 }; + +const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 6, 15, 14, 6, -14 }, // 0x21 '!' + { 12, 8, 7, 14, 6, -13 }, // 0x22 '"' + { 19, 13, 18, 14, 2, -15 }, // 0x23 '#' + { 49, 11, 20, 14, 3, -16 }, // 0x24 '$' + { 77, 11, 15, 14, 3, -14 }, // 0x25 '%' + { 98, 11, 13, 14, 2, -12 }, // 0x26 '&' + { 116, 3, 7, 14, 8, -13 }, // 0x27 ''' + { 119, 7, 19, 14, 7, -14 }, // 0x28 '(' + { 136, 7, 19, 14, 2, -14 }, // 0x29 ')' + { 153, 11, 10, 14, 4, -14 }, // 0x2A '*' + { 167, 12, 13, 14, 3, -12 }, // 0x2B '+' + { 187, 6, 7, 14, 3, -2 }, // 0x2C ',' + { 193, 13, 2, 14, 2, -7 }, // 0x2D '-' + { 197, 3, 3, 14, 6, -2 }, // 0x2E '.' + { 199, 14, 20, 14, 2, -16 }, // 0x2F '/' + { 234, 11, 15, 14, 3, -14 }, // 0x30 '0' + { 255, 11, 15, 14, 2, -14 }, // 0x31 '1' + { 276, 13, 15, 14, 1, -14 }, // 0x32 '2' + { 301, 12, 15, 14, 2, -14 }, // 0x33 '3' + { 324, 11, 14, 14, 3, -13 }, // 0x34 '4' + { 344, 12, 15, 14, 2, -14 }, // 0x35 '5' + { 367, 11, 15, 14, 4, -14 }, // 0x36 '6' + { 388, 11, 15, 14, 4, -14 }, // 0x37 '7' + { 409, 11, 15, 14, 3, -14 }, // 0x38 '8' + { 430, 11, 15, 14, 3, -14 }, // 0x39 '9' + { 451, 5, 11, 14, 5, -10 }, // 0x3A ':' + { 458, 7, 15, 14, 3, -10 }, // 0x3B ';' + { 472, 13, 11, 14, 2, -11 }, // 0x3C '<' + { 490, 13, 7, 14, 2, -9 }, // 0x3D '=' + { 502, 13, 11, 14, 2, -11 }, // 0x3E '>' + { 520, 9, 14, 14, 5, -13 }, // 0x3F '?' + { 536, 12, 19, 14, 2, -14 }, // 0x40 '@' + { 565, 15, 14, 14, 0, -13 }, // 0x41 'A' + { 592, 13, 14, 14, 1, -13 }, // 0x42 'B' + { 615, 14, 14, 14, 2, -13 }, // 0x43 'C' + { 640, 13, 14, 14, 1, -13 }, // 0x44 'D' + { 663, 15, 14, 14, 0, -13 }, // 0x45 'E' + { 690, 16, 14, 14, 0, -13 }, // 0x46 'F' + { 718, 14, 14, 14, 1, -13 }, // 0x47 'G' + { 743, 16, 14, 14, 0, -13 }, // 0x48 'H' + { 771, 12, 14, 14, 2, -13 }, // 0x49 'I' + { 792, 16, 14, 14, 0, -13 }, // 0x4A 'J' + { 820, 16, 14, 14, 0, -13 }, // 0x4B 'K' + { 848, 13, 14, 14, 1, -13 }, // 0x4C 'L' + { 871, 18, 14, 14, 0, -13 }, // 0x4D 'M' + { 903, 16, 14, 14, 1, -13 }, // 0x4E 'N' + { 931, 14, 14, 14, 1, -13 }, // 0x4F 'O' + { 956, 13, 14, 14, 1, -13 }, // 0x50 'P' + { 979, 14, 17, 14, 1, -13 }, // 0x51 'Q' + { 1009, 15, 14, 14, 0, -13 }, // 0x52 'R' + { 1036, 12, 14, 14, 3, -13 }, // 0x53 'S' + { 1057, 13, 14, 14, 2, -13 }, // 0x54 'T' + { 1080, 14, 14, 14, 2, -13 }, // 0x55 'U' + { 1105, 15, 14, 14, 1, -13 }, // 0x56 'V' + { 1132, 15, 14, 14, 1, -13 }, // 0x57 'W' + { 1159, 16, 14, 14, 0, -13 }, // 0x58 'X' + { 1187, 13, 14, 14, 2, -13 }, // 0x59 'Y' + { 1210, 14, 14, 14, 1, -13 }, // 0x5A 'Z' + { 1235, 9, 19, 14, 5, -14 }, // 0x5B '[' + { 1257, 7, 20, 14, 5, -16 }, // 0x5C '\' + { 1275, 9, 19, 14, 3, -14 }, // 0x5D ']' + { 1297, 10, 8, 14, 4, -15 }, // 0x5E '^' + { 1307, 15, 2, 14, -1, 4 }, // 0x5F '_' + { 1311, 4, 4, 14, 7, -15 }, // 0x60 '`' + { 1313, 12, 11, 14, 2, -10 }, // 0x61 'a' + { 1330, 15, 15, 14, -1, -14 }, // 0x62 'b' + { 1359, 12, 11, 14, 2, -10 }, // 0x63 'c' + { 1376, 14, 15, 14, 2, -14 }, // 0x64 'd' + { 1403, 12, 11, 14, 2, -10 }, // 0x65 'e' + { 1420, 15, 15, 14, 2, -14 }, // 0x66 'f' + { 1449, 14, 16, 14, 2, -10 }, // 0x67 'g' + { 1477, 13, 15, 14, 1, -14 }, // 0x68 'h' + { 1502, 11, 14, 14, 2, -13 }, // 0x69 'i' + { 1522, 12, 19, 14, 1, -13 }, // 0x6A 'j' + { 1551, 14, 15, 14, 1, -14 }, // 0x6B 'k' + { 1578, 11, 15, 14, 2, -14 }, // 0x6C 'l' + { 1599, 15, 11, 14, 0, -10 }, // 0x6D 'm' + { 1620, 13, 11, 14, 1, -10 }, // 0x6E 'n' + { 1638, 12, 11, 14, 2, -10 }, // 0x6F 'o' + { 1655, 16, 16, 14, -1, -10 }, // 0x70 'p' + { 1687, 15, 16, 14, 1, -10 }, // 0x71 'q' + { 1717, 14, 11, 14, 1, -10 }, // 0x72 'r' + { 1737, 12, 11, 14, 2, -10 }, // 0x73 's' + { 1754, 10, 14, 14, 2, -13 }, // 0x74 't' + { 1772, 12, 11, 14, 2, -10 }, // 0x75 'u' + { 1789, 15, 11, 14, 1, -10 }, // 0x76 'v' + { 1810, 14, 11, 14, 2, -10 }, // 0x77 'w' + { 1830, 14, 11, 14, 1, -10 }, // 0x78 'x' + { 1850, 16, 16, 14, 0, -10 }, // 0x79 'y' + { 1882, 12, 11, 14, 2, -10 }, // 0x7A 'z' + { 1899, 10, 19, 14, 4, -14 }, // 0x7B '{' + { 1923, 6, 19, 14, 5, -14 }, // 0x7C '|' + { 1938, 9, 19, 14, 3, -14 }, // 0x7D '}' + { 1960, 12, 4, 14, 3, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2638 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h new file mode 100644 index 000000000..bc4f20ea5 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h @@ -0,0 +1,460 @@ +const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, + 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, + 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, + 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, + 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, + 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, + 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, + 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, + 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, + 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, + 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, + 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, + 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, + 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, + 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, + 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, + 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, + 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, + 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, + 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, + 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, + 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, + 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, + 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, + 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, + 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, + 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, + 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, + 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, + 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, + 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, + 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, + 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, + 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, + 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, + 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, + 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, + 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, + 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, + 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, + 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, + 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, + 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, + 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, + 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, + 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, + 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, + 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, + 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, + 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, + 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, + 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, + 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, + 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, + 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, + 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, + 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, + 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, + 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, + 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, + 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, + 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, + 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, + 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, + 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, + 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, + 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, + 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, + 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, + 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, + 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, + 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, + 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, + 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, + 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, + 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, + 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, + 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, + 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, + 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, + 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, + 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, + 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, + 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, + 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, + 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, + 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, + 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, + 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, + 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, + 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, + 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, + 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, + 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, + 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, + 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, + 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, + 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, + 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, + 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, + 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, + 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, + 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, + 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, + 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, + 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, + 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, + 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, + 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, + 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, + 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, + 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, + 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, + 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, + 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, + 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, + 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, + 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, + 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, + 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, + 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, + 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, + 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, + 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, + 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, + 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, + 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, + 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, + 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, + 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, + 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, + 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, + 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, + 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, + 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, + 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, + 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, + 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, + 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, + 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, + 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, + 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, + 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, + 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, + 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, + 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, + 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, + 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, + 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, + 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, + 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, + 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, + 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, + 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, + 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, + 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, + 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, + 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, + 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, + 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, + 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, + 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, + 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, + 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, + 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, + 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, + 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, + 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, + 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, + 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, + 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, + 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, + 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, + 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, + 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, + 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, + 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, + 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, + 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, + 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, + 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, + 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, + 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, + 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, + 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, + 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, + 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, + 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, + 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, + 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, + 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, + 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, + 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, + 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, + 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, + 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, + 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, + 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, + 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, + 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, + 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, + 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, + 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, + 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, + 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, + 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, + 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, + 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, + 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, + 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, + 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, + 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, + 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, + 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, + 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, + 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, + 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, + 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, + 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, + 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, + 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, + 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, + 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, + 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, + 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, + 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, + 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, + 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, + 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, + 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, + 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, + 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, + 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, + 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, + 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, + 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, + 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, + 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, + 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, + 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, + 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, + 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, + 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, + 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, + 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, + 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, + 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, + 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0 }; + +const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 9, 22, 21, 9, -21 }, // 0x21 '!' + { 25, 12, 10, 21, 9, -20 }, // 0x22 '"' + { 40, 18, 25, 21, 4, -22 }, // 0x23 '#' + { 97, 18, 28, 21, 4, -23 }, // 0x24 '$' + { 160, 16, 21, 21, 5, -20 }, // 0x25 '%' + { 202, 16, 20, 21, 4, -19 }, // 0x26 '&' + { 242, 5, 10, 21, 12, -20 }, // 0x27 ''' + { 249, 10, 27, 21, 11, -21 }, // 0x28 '(' + { 283, 10, 27, 21, 4, -21 }, // 0x29 ')' + { 317, 15, 15, 21, 6, -21 }, // 0x2A '*' + { 346, 18, 19, 21, 4, -18 }, // 0x2B '+' + { 389, 9, 10, 21, 4, -3 }, // 0x2C ',' + { 401, 18, 4, 21, 4, -11 }, // 0x2D '-' + { 410, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 414, 21, 28, 21, 2, -23 }, // 0x2F '/' + { 488, 17, 23, 21, 5, -22 }, // 0x30 '0' + { 537, 15, 22, 21, 3, -21 }, // 0x31 '1' + { 579, 20, 23, 21, 2, -22 }, // 0x32 '2' + { 637, 18, 23, 21, 3, -22 }, // 0x33 '3' + { 689, 16, 21, 21, 4, -20 }, // 0x34 '4' + { 731, 18, 22, 21, 4, -21 }, // 0x35 '5' + { 781, 19, 23, 21, 5, -22 }, // 0x36 '6' + { 836, 16, 22, 21, 6, -21 }, // 0x37 '7' + { 880, 19, 23, 21, 3, -22 }, // 0x38 '8' + { 935, 18, 23, 21, 4, -22 }, // 0x39 '9' + { 987, 7, 16, 21, 9, -15 }, // 0x3A ':' + { 1001, 11, 22, 21, 4, -15 }, // 0x3B ';' + { 1032, 18, 16, 21, 4, -17 }, // 0x3C '<' + { 1068, 19, 10, 21, 3, -14 }, // 0x3D '=' + { 1092, 19, 16, 21, 3, -17 }, // 0x3E '>' + { 1130, 14, 21, 21, 8, -20 }, // 0x3F '?' + { 1167, 18, 27, 21, 3, -21 }, // 0x40 '@' + { 1228, 22, 21, 21, 0, -20 }, // 0x41 'A' + { 1286, 21, 21, 21, 1, -20 }, // 0x42 'B' + { 1342, 21, 21, 21, 2, -20 }, // 0x43 'C' + { 1398, 21, 21, 21, 1, -20 }, // 0x44 'D' + { 1454, 22, 21, 21, 0, -20 }, // 0x45 'E' + { 1512, 23, 21, 21, 0, -20 }, // 0x46 'F' + { 1573, 21, 21, 21, 2, -20 }, // 0x47 'G' + { 1629, 23, 21, 21, 0, -20 }, // 0x48 'H' + { 1690, 19, 21, 21, 2, -20 }, // 0x49 'I' + { 1740, 23, 21, 21, 0, -20 }, // 0x4A 'J' + { 1801, 23, 21, 21, 0, -20 }, // 0x4B 'K' + { 1862, 20, 21, 21, 1, -20 }, // 0x4C 'L' + { 1915, 25, 21, 21, 0, -20 }, // 0x4D 'M' + { 1981, 24, 21, 21, 1, -20 }, // 0x4E 'N' + { 2044, 20, 21, 21, 2, -20 }, // 0x4F 'O' + { 2097, 21, 21, 21, 1, -20 }, // 0x50 'P' + { 2153, 20, 26, 21, 2, -20 }, // 0x51 'Q' + { 2218, 22, 21, 21, 0, -20 }, // 0x52 'R' + { 2276, 19, 21, 21, 3, -20 }, // 0x53 'S' + { 2326, 19, 21, 21, 3, -20 }, // 0x54 'T' + { 2376, 21, 21, 21, 3, -20 }, // 0x55 'U' + { 2432, 23, 21, 21, 1, -20 }, // 0x56 'V' + { 2493, 22, 21, 21, 2, -20 }, // 0x57 'W' + { 2551, 24, 21, 21, 0, -20 }, // 0x58 'X' + { 2614, 20, 21, 21, 3, -20 }, // 0x59 'Y' + { 2667, 19, 21, 21, 2, -20 }, // 0x5A 'Z' + { 2717, 13, 27, 21, 8, -21 }, // 0x5B '[' + { 2761, 10, 28, 21, 8, -23 }, // 0x5C '\' + { 2796, 13, 27, 21, 4, -21 }, // 0x5D ']' + { 2840, 15, 11, 21, 6, -21 }, // 0x5E '^' + { 2861, 21, 4, 21, -1, 4 }, // 0x5F '_' + { 2872, 6, 6, 21, 10, -22 }, // 0x60 '`' + { 2877, 19, 16, 21, 2, -15 }, // 0x61 'a' + { 2915, 22, 22, 21, 0, -21 }, // 0x62 'b' + { 2976, 19, 16, 21, 3, -15 }, // 0x63 'c' + { 3014, 21, 22, 21, 3, -21 }, // 0x64 'd' + { 3072, 18, 16, 21, 3, -15 }, // 0x65 'e' + { 3108, 21, 22, 21, 3, -21 }, // 0x66 'f' + { 3166, 21, 23, 21, 2, -15 }, // 0x67 'g' + { 3227, 20, 22, 21, 1, -21 }, // 0x68 'h' + { 3282, 16, 22, 21, 3, -21 }, // 0x69 'i' + { 3326, 18, 29, 21, 2, -21 }, // 0x6A 'j' + { 3392, 20, 22, 21, 1, -21 }, // 0x6B 'k' + { 3447, 16, 22, 21, 3, -21 }, // 0x6C 'l' + { 3491, 23, 16, 21, 0, -15 }, // 0x6D 'm' + { 3537, 21, 16, 21, 1, -15 }, // 0x6E 'n' + { 3579, 18, 16, 21, 3, -15 }, // 0x6F 'o' + { 3615, 23, 23, 21, -1, -15 }, // 0x70 'p' + { 3682, 22, 23, 21, 2, -15 }, // 0x71 'q' + { 3746, 20, 16, 21, 2, -15 }, // 0x72 'r' + { 3786, 16, 16, 21, 4, -15 }, // 0x73 's' + { 3818, 16, 21, 21, 4, -20 }, // 0x74 't' + { 3860, 18, 16, 21, 3, -15 }, // 0x75 'u' + { 3896, 21, 16, 21, 2, -15 }, // 0x76 'v' + { 3938, 21, 16, 21, 3, -15 }, // 0x77 'w' + { 3980, 21, 16, 21, 1, -15 }, // 0x78 'x' + { 4022, 24, 23, 21, -1, -15 }, // 0x79 'y' + { 4091, 18, 16, 21, 3, -15 }, // 0x7A 'z' + { 4127, 12, 27, 21, 8, -21 }, // 0x7B '{' + { 4168, 8, 27, 21, 8, -21 }, // 0x7C '|' + { 4195, 13, 27, 21, 4, -21 }, // 0x7D '}' + { 4239, 17, 8, 21, 4, -13 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4928 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h new file mode 100644 index 000000000..a2bbbdf36 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h @@ -0,0 +1,742 @@ +const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, + 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, + 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, + 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, + 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, + 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, + 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, + 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, + 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, + 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, + 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, + 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, + 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, + 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, + 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, + 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, + 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, + 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, + 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, + 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, + 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, + 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, + 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, + 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, + 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, + 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, + 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, + 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, + 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, + 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, + 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, + 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, + 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, + 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, + 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, + 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, + 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, + 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, + 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, + 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, + 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, + 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, + 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, + 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, + 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, + 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, + 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, + 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, + 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, + 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, + 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, + 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, + 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, + 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, + 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, + 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, + 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, + 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, + 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, + 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, + 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, + 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, + 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, + 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, + 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, + 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, + 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, + 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, + 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, + 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, + 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, + 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, + 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, + 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, + 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, + 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, + 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, + 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, + 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, + 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, + 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, + 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, + 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, + 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, + 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, + 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, + 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, + 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, + 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, + 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, + 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, + 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, + 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, + 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, + 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, + 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, + 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, + 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, + 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, + 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, + 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, + 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, + 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, + 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, + 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, + 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, + 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, + 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, + 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, + 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, + 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, + 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, + 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, + 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, + 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, + 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, + 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, + 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, + 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, + 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, + 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, + 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, + 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, + 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, + 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, + 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, + 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, + 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, + 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, + 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, + 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, + 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, + 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, + 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, + 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, + 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, + 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, + 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, + 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, + 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, + 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, + 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, + 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, + 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, + 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, + 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, + 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, + 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, + 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, + 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, + 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, + 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, + 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, + 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, + 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, + 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, + 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, + 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, + 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, + 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, + 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, + 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, + 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, + 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, + 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, + 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, + 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, + 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, + 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, + 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, + 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, + 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, + 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, + 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, + 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, + 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, + 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, + 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, + 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, + 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, + 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, + 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, + 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, + 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, + 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, + 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, + 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, + 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, + 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, + 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, + 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, + 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, + 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, + 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, + 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, + 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, + 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, + 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, + 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, + 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, + 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, + 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, + 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, + 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, + 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, + 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, + 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, + 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, + 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, + 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, + 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, + 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, + 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, + 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, + 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, + 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, + 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, + 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, + 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, + 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, + 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, + 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, + 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, + 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, + 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, + 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, + 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, + 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, + 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, + 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, + 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, + 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, + 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, + 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, + 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, + 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, + 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, + 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, + 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, + 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, + 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, + 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, + 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, + 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, + 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, + 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, + 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, + 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, + 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, + 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, + 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, + 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, + 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, + 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, + 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, + 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, + 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, + 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, + 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, + 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, + 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, + 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, + 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, + 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, + 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, + 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, + 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, + 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, + 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, + 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, + 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, + 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, + 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, + 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, + 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, + 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, + 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, + 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, + 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, + 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, + 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, + 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, + 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, + 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, + 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, + 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, + 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, + 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, + 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, + 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, + 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, + 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, + 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, + 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, + 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, + 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, + 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, + 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, + 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, + 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, + 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, + 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, + 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, + 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, + 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, + 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, + 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0x80 }; + +const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 12, 31, 28, 12, -29 }, // 0x21 '!' + { 47, 17, 14, 28, 11, -28 }, // 0x22 '"' + { 77, 24, 34, 28, 5, -30 }, // 0x23 '#' + { 179, 25, 38, 28, 4, -31 }, // 0x24 '$' + { 298, 22, 30, 28, 6, -28 }, // 0x25 '%' + { 381, 21, 28, 28, 5, -26 }, // 0x26 '&' + { 455, 7, 14, 28, 16, -28 }, // 0x27 ''' + { 468, 14, 37, 28, 14, -29 }, // 0x28 '(' + { 533, 14, 37, 28, 5, -29 }, // 0x29 ')' + { 598, 21, 19, 28, 8, -28 }, // 0x2A '*' + { 648, 24, 26, 28, 5, -25 }, // 0x2B '+' + { 726, 12, 14, 28, 6, -6 }, // 0x2C ',' + { 747, 24, 5, 28, 5, -15 }, // 0x2D '-' + { 762, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 768, 28, 38, 28, 3, -32 }, // 0x2F '/' + { 901, 23, 31, 28, 6, -29 }, // 0x30 '0' + { 991, 21, 30, 28, 4, -29 }, // 0x31 '1' + { 1070, 26, 30, 28, 3, -29 }, // 0x32 '2' + { 1168, 25, 31, 28, 4, -29 }, // 0x33 '3' + { 1265, 22, 28, 28, 5, -27 }, // 0x34 '4' + { 1342, 25, 31, 28, 4, -29 }, // 0x35 '5' + { 1439, 24, 31, 28, 7, -29 }, // 0x36 '6' + { 1532, 22, 30, 28, 9, -29 }, // 0x37 '7' + { 1615, 23, 31, 28, 6, -29 }, // 0x38 '8' + { 1705, 24, 31, 28, 5, -29 }, // 0x39 '9' + { 1798, 10, 22, 28, 11, -20 }, // 0x3A ':' + { 1826, 15, 28, 28, 5, -20 }, // 0x3B ';' + { 1879, 25, 21, 28, 5, -23 }, // 0x3C '<' + { 1945, 26, 14, 28, 4, -19 }, // 0x3D '=' + { 1991, 25, 22, 28, 4, -23 }, // 0x3E '>' + { 2060, 19, 29, 28, 10, -27 }, // 0x3F '?' + { 2129, 23, 36, 28, 5, -28 }, // 0x40 '@' + { 2233, 30, 27, 28, 0, -26 }, // 0x41 'A' + { 2335, 29, 27, 28, 1, -26 }, // 0x42 'B' + { 2433, 28, 29, 28, 3, -27 }, // 0x43 'C' + { 2535, 28, 27, 28, 1, -26 }, // 0x44 'D' + { 2630, 29, 27, 28, 1, -26 }, // 0x45 'E' + { 2728, 31, 27, 28, 0, -26 }, // 0x46 'F' + { 2833, 28, 29, 28, 3, -27 }, // 0x47 'G' + { 2935, 30, 27, 28, 1, -26 }, // 0x48 'H' + { 3037, 25, 27, 28, 3, -26 }, // 0x49 'I' + { 3122, 31, 28, 28, 0, -26 }, // 0x4A 'J' + { 3231, 31, 27, 28, 0, -26 }, // 0x4B 'K' + { 3336, 27, 27, 28, 1, -26 }, // 0x4C 'L' + { 3428, 34, 27, 28, 0, -26 }, // 0x4D 'M' + { 3543, 32, 27, 28, 1, -26 }, // 0x4E 'N' + { 3651, 27, 29, 28, 3, -27 }, // 0x4F 'O' + { 3749, 28, 27, 28, 1, -26 }, // 0x50 'P' + { 3844, 27, 35, 28, 3, -27 }, // 0x51 'Q' + { 3963, 29, 27, 28, 0, -26 }, // 0x52 'R' + { 4061, 26, 29, 28, 3, -27 }, // 0x53 'S' + { 4156, 26, 27, 28, 4, -26 }, // 0x54 'T' + { 4244, 28, 28, 28, 4, -26 }, // 0x55 'U' + { 4342, 30, 27, 28, 2, -26 }, // 0x56 'V' + { 4444, 29, 27, 28, 3, -26 }, // 0x57 'W' + { 4542, 32, 27, 28, 0, -26 }, // 0x58 'X' + { 4650, 26, 27, 28, 4, -26 }, // 0x59 'Y' + { 4738, 27, 27, 28, 2, -26 }, // 0x5A 'Z' + { 4830, 18, 37, 28, 10, -29 }, // 0x5B '[' + { 4914, 13, 38, 28, 10, -32 }, // 0x5C '\' + { 4976, 18, 37, 28, 5, -29 }, // 0x5D ']' + { 5060, 20, 15, 28, 8, -29 }, // 0x5E '^' + { 5098, 29, 5, 28, -2, 5 }, // 0x5F '_' + { 5117, 8, 8, 28, 13, -30 }, // 0x60 '`' + { 5125, 24, 23, 28, 3, -21 }, // 0x61 'a' + { 5194, 29, 31, 28, 0, -29 }, // 0x62 'b' + { 5307, 25, 23, 28, 3, -21 }, // 0x63 'c' + { 5379, 28, 31, 28, 3, -29 }, // 0x64 'd' + { 5488, 24, 23, 28, 3, -21 }, // 0x65 'e' + { 5557, 28, 30, 28, 4, -29 }, // 0x66 'f' + { 5662, 28, 31, 28, 3, -21 }, // 0x67 'g' + { 5771, 26, 30, 28, 2, -29 }, // 0x68 'h' + { 5869, 23, 29, 28, 3, -28 }, // 0x69 'i' + { 5953, 23, 38, 28, 3, -28 }, // 0x6A 'j' + { 6063, 26, 30, 28, 2, -29 }, // 0x6B 'k' + { 6161, 23, 30, 28, 3, -29 }, // 0x6C 'l' + { 6248, 30, 22, 28, 0, -21 }, // 0x6D 'm' + { 6331, 26, 22, 28, 2, -21 }, // 0x6E 'n' + { 6403, 25, 23, 28, 3, -21 }, // 0x6F 'o' + { 6475, 31, 31, 28, -1, -21 }, // 0x70 'p' + { 6596, 29, 31, 28, 2, -21 }, // 0x71 'q' + { 6709, 28, 22, 28, 2, -21 }, // 0x72 'r' + { 6786, 23, 23, 28, 4, -21 }, // 0x73 's' + { 6853, 20, 28, 28, 5, -26 }, // 0x74 't' + { 6923, 23, 22, 28, 5, -20 }, // 0x75 'u' + { 6987, 28, 21, 28, 3, -20 }, // 0x76 'v' + { 7061, 28, 21, 28, 3, -20 }, // 0x77 'w' + { 7135, 29, 21, 28, 1, -20 }, // 0x78 'x' + { 7212, 32, 30, 28, -1, -20 }, // 0x79 'y' + { 7332, 25, 21, 28, 4, -20 }, // 0x7A 'z' + { 7398, 17, 37, 28, 10, -29 }, // 0x7B '{' + { 7477, 11, 36, 28, 11, -28 }, // 0x7C '|' + { 7527, 17, 37, 28, 6, -29 }, // 0x7D '}' + { 7606, 23, 10, 28, 5, -17 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 8307 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h new file mode 100644 index 000000000..b530723a3 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h @@ -0,0 +1,203 @@ +const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, + 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, + 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, + 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, + 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, + 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, + 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, + 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, + 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, + 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, + 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, + 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, + 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, + 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, + 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, + 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, + 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, + 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, + 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, + 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, + 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, + 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, + 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, + 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, + 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, + 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, + 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, + 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, + 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, + 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, + 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, + 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, + 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, + 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, + 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, + 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, + 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, + 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, + 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, + 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, + 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, + 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, + 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, + 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, + 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, + 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, + 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, + 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, + 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, + 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, + 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, + 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, + 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, + 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, + 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, + 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, + 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, + 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, + 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, + 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, + 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, + 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, + 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, + 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, + 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, + 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, + 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, + 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, + 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, + 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, + 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, + 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, + 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, + 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, + 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, + 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, + 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, + 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, + 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, + 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, + 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, + 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, + 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, + 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, + 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, + 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, + 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, + 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, + 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, + 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, + 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, + 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, + 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, + 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, + 0xF7, 0xC1, 0xC0 }; + +const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 5, 11, 11, 4, -10 }, // 0x21 '!' + { 7, 7, 5, 11, 4, -10 }, // 0x22 '"' + { 12, 9, 12, 11, 2, -10 }, // 0x23 '#' + { 26, 9, 14, 11, 2, -11 }, // 0x24 '$' + { 42, 9, 11, 11, 2, -10 }, // 0x25 '%' + { 55, 8, 10, 11, 2, -9 }, // 0x26 '&' + { 65, 2, 5, 11, 6, -10 }, // 0x27 ''' + { 67, 5, 14, 11, 5, -10 }, // 0x28 '(' + { 76, 5, 14, 11, 2, -10 }, // 0x29 ')' + { 85, 8, 7, 11, 3, -10 }, // 0x2A '*' + { 92, 9, 9, 11, 2, -8 }, // 0x2B '+' + { 103, 4, 5, 11, 2, -1 }, // 0x2C ',' + { 106, 9, 2, 11, 2, -5 }, // 0x2D '-' + { 109, 3, 2, 11, 4, -1 }, // 0x2E '.' + { 110, 11, 15, 11, 1, -12 }, // 0x2F '/' + { 131, 9, 12, 11, 2, -11 }, // 0x30 '0' + { 145, 8, 12, 11, 2, -11 }, // 0x31 '1' + { 157, 10, 12, 11, 1, -11 }, // 0x32 '2' + { 172, 9, 12, 11, 2, -11 }, // 0x33 '3' + { 186, 8, 10, 11, 2, -9 }, // 0x34 '4' + { 196, 9, 11, 11, 3, -10 }, // 0x35 '5' + { 209, 9, 12, 11, 3, -11 }, // 0x36 '6' + { 223, 8, 11, 11, 3, -10 }, // 0x37 '7' + { 234, 9, 12, 11, 2, -11 }, // 0x38 '8' + { 248, 8, 12, 11, 3, -11 }, // 0x39 '9' + { 260, 4, 8, 11, 4, -7 }, // 0x3A ':' + { 264, 6, 11, 11, 2, -7 }, // 0x3B ';' + { 273, 10, 8, 11, 2, -8 }, // 0x3C '<' + { 283, 10, 6, 11, 1, -7 }, // 0x3D '=' + { 291, 10, 8, 11, 1, -8 }, // 0x3E '>' + { 301, 7, 11, 11, 4, -10 }, // 0x3F '?' + { 311, 9, 15, 11, 2, -11 }, // 0x40 '@' + { 328, 11, 11, 11, 0, -10 }, // 0x41 'A' + { 344, 11, 11, 11, 0, -10 }, // 0x42 'B' + { 360, 12, 11, 11, 1, -10 }, // 0x43 'C' + { 377, 11, 11, 11, 0, -10 }, // 0x44 'D' + { 393, 12, 11, 11, 0, -10 }, // 0x45 'E' + { 410, 12, 11, 11, 0, -10 }, // 0x46 'F' + { 427, 11, 11, 11, 1, -10 }, // 0x47 'G' + { 443, 12, 11, 11, 0, -10 }, // 0x48 'H' + { 460, 10, 11, 11, 1, -10 }, // 0x49 'I' + { 474, 12, 11, 11, 0, -10 }, // 0x4A 'J' + { 491, 11, 11, 11, 0, -10 }, // 0x4B 'K' + { 507, 11, 11, 11, 0, -10 }, // 0x4C 'L' + { 523, 13, 11, 11, 0, -10 }, // 0x4D 'M' + { 541, 13, 11, 11, 0, -10 }, // 0x4E 'N' + { 559, 10, 11, 11, 1, -10 }, // 0x4F 'O' + { 573, 11, 11, 11, 0, -10 }, // 0x50 'P' + { 589, 10, 14, 11, 1, -10 }, // 0x51 'Q' + { 607, 12, 11, 11, 0, -10 }, // 0x52 'R' + { 624, 10, 11, 11, 2, -10 }, // 0x53 'S' + { 638, 11, 11, 11, 1, -10 }, // 0x54 'T' + { 654, 11, 11, 11, 1, -10 }, // 0x55 'U' + { 670, 11, 11, 11, 1, -10 }, // 0x56 'V' + { 686, 11, 11, 11, 1, -10 }, // 0x57 'W' + { 702, 12, 11, 11, 0, -10 }, // 0x58 'X' + { 719, 11, 11, 11, 1, -10 }, // 0x59 'Y' + { 735, 10, 11, 11, 1, -10 }, // 0x5A 'Z' + { 749, 7, 14, 11, 4, -10 }, // 0x5B '[' + { 762, 5, 15, 11, 4, -12 }, // 0x5C '\' + { 772, 7, 14, 11, 2, -10 }, // 0x5D ']' + { 785, 8, 6, 11, 3, -11 }, // 0x5E '^' + { 791, 11, 2, 11, -1, 3 }, // 0x5F '_' + { 794, 3, 3, 11, 5, -11 }, // 0x60 '`' + { 796, 10, 8, 11, 1, -7 }, // 0x61 'a' + { 806, 11, 11, 11, 0, -10 }, // 0x62 'b' + { 822, 10, 8, 11, 1, -7 }, // 0x63 'c' + { 832, 11, 11, 11, 1, -10 }, // 0x64 'd' + { 848, 9, 8, 11, 1, -7 }, // 0x65 'e' + { 857, 10, 11, 11, 2, -10 }, // 0x66 'f' + { 871, 11, 12, 11, 1, -7 }, // 0x67 'g' + { 888, 10, 11, 11, 1, -10 }, // 0x68 'h' + { 902, 9, 11, 11, 1, -10 }, // 0x69 'i' + { 915, 9, 15, 11, 1, -10 }, // 0x6A 'j' + { 932, 10, 11, 11, 1, -10 }, // 0x6B 'k' + { 946, 9, 11, 11, 1, -10 }, // 0x6C 'l' + { 959, 12, 8, 11, 0, -7 }, // 0x6D 'm' + { 971, 11, 8, 11, 1, -7 }, // 0x6E 'n' + { 982, 10, 8, 11, 1, -7 }, // 0x6F 'o' + { 992, 12, 12, 11, -1, -7 }, // 0x70 'p' + { 1010, 11, 12, 11, 1, -7 }, // 0x71 'q' + { 1027, 10, 8, 11, 1, -7 }, // 0x72 'r' + { 1037, 8, 8, 11, 2, -7 }, // 0x73 's' + { 1045, 9, 11, 11, 1, -10 }, // 0x74 't' + { 1058, 10, 8, 11, 1, -7 }, // 0x75 'u' + { 1068, 11, 8, 11, 1, -7 }, // 0x76 'v' + { 1079, 11, 8, 11, 1, -7 }, // 0x77 'w' + { 1090, 11, 8, 11, 1, -7 }, // 0x78 'x' + { 1101, 12, 12, 11, 0, -7 }, // 0x79 'y' + { 1119, 9, 8, 11, 2, -7 }, // 0x7A 'z' + { 1128, 7, 14, 11, 3, -10 }, // 0x7B '{' + { 1141, 4, 14, 11, 4, -10 }, // 0x7C '|' + { 1148, 8, 14, 11, 2, -10 }, // 0x7D '}' + { 1162, 9, 4, 11, 2, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1839 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h new file mode 100644 index 000000000..83a9a7708 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h @@ -0,0 +1,248 @@ +const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { + 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, + 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, + 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, + 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, + 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, + 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, + 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, + 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, + 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, + 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, + 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, + 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, + 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, + 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, + 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, + 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, + 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, + 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, + 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, + 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, + 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, + 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, + 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, + 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, + 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, + 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, + 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, + 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, + 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, + 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, + 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, + 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, + 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, + 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, + 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, + 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, + 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, + 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, + 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, + 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, + 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, + 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, + 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, + 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, + 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, + 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, + 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, + 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, + 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, + 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, + 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, + 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, + 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, + 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, + 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, + 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, + 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, + 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, + 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, + 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, + 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, + 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, + 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, + 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, + 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, + 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, + 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, + 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, + 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, + 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, + 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, + 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, + 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, + 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, + 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, + 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, + 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, + 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, + 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, + 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, + 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, + 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, + 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, + 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, + 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, + 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, + 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, + 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, + 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, + 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, + 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, + 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, + 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, + 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, + 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, + 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, + 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, + 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, + 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, + 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, + 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, + 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, + 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, + 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, + 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, + 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, + 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, + 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, + 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, + 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, + 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, + 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, + 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, + 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, + 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, + 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, + 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, + 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, + 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, + 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, + 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, + 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, + 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, + 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, + 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, + 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, + 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, + 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, + 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, + 0x88, 0x0E, 0x00 }; + +const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' + { 0, 4, 15, 14, 6, -14 }, // 0x21 '!' + { 8, 8, 7, 14, 5, -14 }, // 0x22 '"' + { 15, 11, 16, 14, 3, -14 }, // 0x23 '#' + { 37, 10, 18, 14, 4, -15 }, // 0x24 '$' + { 60, 11, 15, 14, 3, -14 }, // 0x25 '%' + { 81, 9, 12, 14, 3, -11 }, // 0x26 '&' + { 95, 3, 7, 14, 8, -14 }, // 0x27 ''' + { 98, 5, 18, 14, 8, -14 }, // 0x28 '(' + { 110, 5, 18, 14, 4, -14 }, // 0x29 ')' + { 122, 9, 9, 14, 5, -14 }, // 0x2A '*' + { 133, 11, 11, 14, 3, -11 }, // 0x2B '+' + { 149, 6, 7, 14, 3, -3 }, // 0x2C ',' + { 155, 11, 1, 14, 3, -6 }, // 0x2D '-' + { 157, 3, 3, 14, 6, -2 }, // 0x2E '.' + { 159, 13, 18, 14, 2, -15 }, // 0x2F '/' + { 189, 10, 15, 14, 4, -14 }, // 0x30 '0' + { 208, 9, 15, 14, 3, -14 }, // 0x31 '1' + { 225, 12, 15, 14, 2, -14 }, // 0x32 '2' + { 248, 11, 15, 14, 3, -14 }, // 0x33 '3' + { 269, 10, 15, 14, 3, -14 }, // 0x34 '4' + { 288, 11, 15, 14, 3, -14 }, // 0x35 '5' + { 309, 11, 15, 14, 4, -14 }, // 0x36 '6' + { 330, 10, 15, 14, 5, -14 }, // 0x37 '7' + { 349, 11, 15, 14, 3, -14 }, // 0x38 '8' + { 370, 11, 15, 14, 3, -14 }, // 0x39 '9' + { 391, 5, 10, 14, 5, -9 }, // 0x3A ':' + { 398, 7, 13, 14, 3, -9 }, // 0x3B ';' + { 410, 12, 11, 14, 3, -11 }, // 0x3C '<' + { 427, 13, 4, 14, 2, -8 }, // 0x3D '=' + { 434, 12, 11, 14, 2, -11 }, // 0x3E '>' + { 451, 8, 14, 14, 6, -13 }, // 0x3F '?' + { 465, 10, 16, 14, 3, -14 }, // 0x40 '@' + { 485, 14, 14, 14, 0, -13 }, // 0x41 'A' + { 510, 13, 14, 14, 1, -13 }, // 0x42 'B' + { 533, 12, 14, 14, 3, -13 }, // 0x43 'C' + { 554, 13, 14, 14, 1, -13 }, // 0x44 'D' + { 577, 14, 14, 14, 1, -13 }, // 0x45 'E' + { 602, 14, 14, 14, 1, -13 }, // 0x46 'F' + { 627, 12, 14, 14, 3, -13 }, // 0x47 'G' + { 648, 15, 14, 14, 1, -13 }, // 0x48 'H' + { 675, 11, 14, 14, 3, -13 }, // 0x49 'I' + { 695, 15, 14, 14, 2, -13 }, // 0x4A 'J' + { 722, 15, 14, 14, 1, -13 }, // 0x4B 'K' + { 749, 12, 14, 14, 2, -13 }, // 0x4C 'L' + { 770, 17, 14, 14, 0, -13 }, // 0x4D 'M' + { 800, 15, 14, 14, 1, -13 }, // 0x4E 'N' + { 827, 13, 14, 14, 2, -13 }, // 0x4F 'O' + { 850, 13, 14, 14, 1, -13 }, // 0x50 'P' + { 873, 13, 17, 14, 2, -13 }, // 0x51 'Q' + { 901, 13, 14, 14, 1, -13 }, // 0x52 'R' + { 924, 11, 14, 14, 3, -13 }, // 0x53 'S' + { 944, 12, 14, 14, 4, -13 }, // 0x54 'T' + { 965, 13, 14, 14, 3, -13 }, // 0x55 'U' + { 988, 14, 14, 14, 3, -13 }, // 0x56 'V' + { 1013, 14, 14, 14, 3, -13 }, // 0x57 'W' + { 1038, 15, 14, 14, 1, -13 }, // 0x58 'X' + { 1065, 12, 14, 14, 4, -13 }, // 0x59 'Y' + { 1086, 12, 14, 14, 2, -13 }, // 0x5A 'Z' + { 1107, 7, 18, 14, 6, -14 }, // 0x5B '[' + { 1123, 5, 18, 14, 6, -15 }, // 0x5C '\' + { 1135, 7, 18, 14, 3, -14 }, // 0x5D ']' + { 1151, 9, 6, 14, 5, -14 }, // 0x5E '^' + { 1158, 15, 1, 14, -1, 3 }, // 0x5F '_' + { 1160, 3, 4, 14, 6, -15 }, // 0x60 '`' + { 1162, 12, 10, 14, 2, -9 }, // 0x61 'a' + { 1177, 13, 15, 14, 1, -14 }, // 0x62 'b' + { 1202, 12, 10, 14, 3, -9 }, // 0x63 'c' + { 1217, 13, 15, 14, 2, -14 }, // 0x64 'd' + { 1242, 11, 10, 14, 3, -9 }, // 0x65 'e' + { 1256, 13, 15, 14, 3, -14 }, // 0x66 'f' + { 1281, 13, 14, 14, 3, -9 }, // 0x67 'g' + { 1304, 13, 15, 14, 1, -14 }, // 0x68 'h' + { 1329, 10, 15, 14, 2, -14 }, // 0x69 'i' + { 1348, 10, 19, 14, 2, -14 }, // 0x6A 'j' + { 1372, 12, 15, 14, 2, -14 }, // 0x6B 'k' + { 1395, 10, 15, 14, 2, -14 }, // 0x6C 'l' + { 1414, 14, 10, 14, 0, -9 }, // 0x6D 'm' + { 1432, 12, 10, 14, 1, -9 }, // 0x6E 'n' + { 1447, 11, 10, 14, 3, -9 }, // 0x6F 'o' + { 1461, 14, 14, 14, 0, -9 }, // 0x70 'p' + { 1486, 13, 14, 14, 3, -9 }, // 0x71 'q' + { 1509, 13, 10, 14, 2, -9 }, // 0x72 'r' + { 1526, 10, 10, 14, 3, -9 }, // 0x73 's' + { 1539, 9, 14, 14, 3, -13 }, // 0x74 't' + { 1555, 12, 10, 14, 2, -9 }, // 0x75 'u' + { 1570, 13, 10, 14, 3, -9 }, // 0x76 'v' + { 1587, 13, 10, 14, 3, -9 }, // 0x77 'w' + { 1604, 14, 10, 14, 1, -9 }, // 0x78 'x' + { 1622, 14, 14, 14, 1, -9 }, // 0x79 'y' + { 1647, 11, 10, 14, 3, -9 }, // 0x7A 'z' + { 1661, 7, 18, 14, 5, -14 }, // 0x7B '{' + { 1677, 4, 17, 14, 6, -13 }, // 0x7C '|' + { 1686, 7, 18, 14, 4, -14 }, // 0x7D '}' + { 1702, 11, 3, 14, 3, -7 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique12pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique12pt7bBitmaps, + (GFXglyph *)FreeMonoOblique12pt7bGlyphs, + 0x20, 0x7E, 24 }; + +// Approx. 2379 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h new file mode 100644 index 000000000..1979e7203 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h @@ -0,0 +1,398 @@ +const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { + 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, + 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, + 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, + 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, + 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, + 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, + 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, + 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, + 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, + 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, + 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, + 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, + 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, + 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, + 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, + 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, + 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, + 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, + 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, + 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, + 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, + 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, + 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, + 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, + 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, + 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, + 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, + 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, + 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, + 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, + 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, + 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, + 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, + 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, + 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, + 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, + 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, + 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, + 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, + 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, + 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, + 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, + 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, + 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, + 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, + 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, + 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, + 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, + 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, + 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, + 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, + 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, + 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, + 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, + 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, + 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, + 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, + 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, + 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, + 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, + 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, + 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, + 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, + 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, + 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, + 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, + 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, + 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, + 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, + 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, + 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, + 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, + 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, + 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, + 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, + 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, + 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, + 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, + 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, + 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, + 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, + 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, + 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, + 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, + 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, + 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, + 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, + 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, + 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, + 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, + 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, + 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, + 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, + 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, + 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, + 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, + 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, + 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, + 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, + 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, + 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, + 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, + 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, + 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, + 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, + 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, + 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, + 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, + 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, + 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, + 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, + 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, + 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, + 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, + 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, + 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, + 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, + 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, + 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, + 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, + 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, + 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, + 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, + 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, + 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, + 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, + 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, + 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, + 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, + 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, + 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, + 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, + 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, + 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, + 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, + 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, + 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, + 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, + 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, + 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, + 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, + 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, + 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, + 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, + 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, + 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, + 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, + 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, + 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, + 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, + 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, + 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, + 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, + 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, + 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, + 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, + 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, + 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, + 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, + 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, + 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, + 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, + 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, + 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, + 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, + 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, + 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, + 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, + 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, + 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, + 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, + 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, + 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, + 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, + 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, + 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, + 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, + 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, + 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, + 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, + 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, + 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, + 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, + 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, + 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, + 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, + 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, + 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, + 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, + 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, + 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, + 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, + 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, + 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, + 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, + 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, + 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, + 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, + 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, + 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, + 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, + 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, + 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, + 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, + 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, + 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, + 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, + 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, + 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, + 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, + 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, + 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, + 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, + 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, + 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, + 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, + 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, + 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, + 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, + 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, + 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, + 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, + 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, + 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, + 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, + 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, + 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, + 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, + 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, + 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, + 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, + 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, + 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, + 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, + 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, + 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, + 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, + 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00 }; + +const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' + { 0, 7, 22, 21, 9, -21 }, // 0x21 '!' + { 20, 13, 10, 21, 7, -20 }, // 0x22 '"' + { 37, 15, 24, 21, 5, -21 }, // 0x23 '#' + { 82, 16, 26, 21, 4, -22 }, // 0x24 '$' + { 134, 16, 21, 21, 5, -20 }, // 0x25 '%' + { 176, 13, 18, 21, 5, -17 }, // 0x26 '&' + { 206, 5, 10, 21, 12, -20 }, // 0x27 ''' + { 213, 8, 25, 21, 12, -20 }, // 0x28 '(' + { 238, 8, 25, 21, 5, -20 }, // 0x29 ')' + { 263, 14, 11, 21, 7, -19 }, // 0x2A '*' + { 283, 15, 17, 21, 5, -17 }, // 0x2B '+' + { 315, 9, 10, 21, 4, -4 }, // 0x2C ',' + { 327, 16, 1, 21, 5, -9 }, // 0x2D '-' + { 329, 5, 5, 21, 8, -4 }, // 0x2E '.' + { 333, 19, 26, 21, 3, -22 }, // 0x2F '/' + { 395, 14, 21, 21, 5, -20 }, // 0x30 '0' + { 432, 13, 21, 21, 4, -20 }, // 0x31 '1' + { 467, 17, 21, 21, 3, -20 }, // 0x32 '2' + { 512, 16, 21, 21, 3, -20 }, // 0x33 '3' + { 554, 14, 21, 21, 5, -20 }, // 0x34 '4' + { 591, 17, 21, 21, 4, -20 }, // 0x35 '5' + { 636, 16, 21, 21, 6, -20 }, // 0x36 '6' + { 678, 13, 21, 21, 8, -20 }, // 0x37 '7' + { 713, 15, 21, 21, 5, -20 }, // 0x38 '8' + { 753, 15, 21, 21, 5, -20 }, // 0x39 '9' + { 793, 7, 15, 21, 8, -14 }, // 0x3A ':' + { 807, 11, 20, 21, 4, -14 }, // 0x3B ';' + { 835, 17, 16, 21, 5, -17 }, // 0x3C '<' + { 869, 19, 6, 21, 3, -12 }, // 0x3D '=' + { 884, 18, 16, 21, 3, -17 }, // 0x3E '>' + { 920, 12, 20, 21, 8, -19 }, // 0x3F '?' + { 950, 15, 23, 21, 5, -20 }, // 0x40 '@' + { 994, 21, 20, 21, 0, -19 }, // 0x41 'A' + { 1047, 18, 20, 21, 2, -19 }, // 0x42 'B' + { 1092, 18, 20, 21, 4, -19 }, // 0x43 'C' + { 1137, 18, 20, 21, 2, -19 }, // 0x44 'D' + { 1182, 20, 20, 21, 2, -19 }, // 0x45 'E' + { 1232, 20, 20, 21, 2, -19 }, // 0x46 'F' + { 1282, 18, 20, 21, 4, -19 }, // 0x47 'G' + { 1327, 21, 20, 21, 2, -19 }, // 0x48 'H' + { 1380, 17, 20, 21, 4, -19 }, // 0x49 'I' + { 1423, 20, 20, 21, 4, -19 }, // 0x4A 'J' + { 1473, 21, 20, 21, 2, -19 }, // 0x4B 'K' + { 1526, 18, 20, 21, 2, -19 }, // 0x4C 'L' + { 1571, 24, 20, 21, 1, -19 }, // 0x4D 'M' + { 1631, 22, 20, 21, 2, -19 }, // 0x4E 'N' + { 1686, 17, 20, 21, 4, -19 }, // 0x4F 'O' + { 1729, 18, 20, 21, 2, -19 }, // 0x50 'P' + { 1774, 17, 24, 21, 4, -19 }, // 0x51 'Q' + { 1825, 18, 20, 21, 2, -19 }, // 0x52 'R' + { 1870, 18, 20, 21, 3, -19 }, // 0x53 'S' + { 1915, 17, 20, 21, 5, -19 }, // 0x54 'T' + { 1958, 18, 20, 21, 5, -19 }, // 0x55 'U' + { 2003, 21, 20, 21, 4, -19 }, // 0x56 'V' + { 2056, 20, 20, 21, 4, -19 }, // 0x57 'W' + { 2106, 21, 20, 21, 2, -19 }, // 0x58 'X' + { 2159, 18, 20, 21, 5, -19 }, // 0x59 'Y' + { 2204, 17, 20, 21, 4, -19 }, // 0x5A 'Z' + { 2247, 11, 25, 21, 9, -20 }, // 0x5B '[' + { 2282, 8, 27, 21, 9, -22 }, // 0x5C '\' + { 2309, 11, 25, 21, 5, -20 }, // 0x5D ']' + { 2344, 13, 9, 21, 7, -20 }, // 0x5E '^' + { 2359, 21, 1, 21, -1, 4 }, // 0x5F '_' + { 2362, 5, 5, 21, 9, -21 }, // 0x60 '`' + { 2366, 16, 15, 21, 3, -14 }, // 0x61 'a' + { 2396, 19, 21, 21, 1, -20 }, // 0x62 'b' + { 2446, 17, 15, 21, 4, -14 }, // 0x63 'c' + { 2478, 18, 21, 21, 4, -20 }, // 0x64 'd' + { 2526, 16, 15, 21, 4, -14 }, // 0x65 'e' + { 2556, 19, 21, 21, 4, -20 }, // 0x66 'f' + { 2606, 19, 22, 21, 4, -14 }, // 0x67 'g' + { 2659, 18, 21, 21, 2, -20 }, // 0x68 'h' + { 2707, 15, 22, 21, 3, -21 }, // 0x69 'i' + { 2749, 15, 29, 21, 3, -21 }, // 0x6A 'j' + { 2804, 18, 21, 21, 2, -20 }, // 0x6B 'k' + { 2852, 15, 21, 21, 3, -20 }, // 0x6C 'l' + { 2892, 20, 15, 21, 1, -14 }, // 0x6D 'm' + { 2930, 17, 15, 21, 2, -14 }, // 0x6E 'n' + { 2962, 16, 15, 21, 4, -14 }, // 0x6F 'o' + { 2992, 20, 22, 21, 0, -14 }, // 0x70 'p' + { 3047, 19, 22, 21, 4, -14 }, // 0x71 'q' + { 3100, 19, 15, 21, 3, -14 }, // 0x72 'r' + { 3136, 15, 15, 21, 4, -14 }, // 0x73 's' + { 3165, 13, 20, 21, 5, -19 }, // 0x74 't' + { 3198, 15, 15, 21, 4, -14 }, // 0x75 'u' + { 3227, 19, 15, 21, 4, -14 }, // 0x76 'v' + { 3263, 17, 15, 21, 5, -14 }, // 0x77 'w' + { 3295, 19, 15, 21, 2, -14 }, // 0x78 'x' + { 3331, 21, 22, 21, 1, -14 }, // 0x79 'y' + { 3389, 16, 15, 21, 4, -14 }, // 0x7A 'z' + { 3419, 11, 25, 21, 8, -20 }, // 0x7B '{' + { 3454, 6, 24, 21, 9, -19 }, // 0x7C '|' + { 3472, 10, 25, 21, 6, -20 }, // 0x7D '}' + { 3504, 15, 5, 21, 5, -11 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique18pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique18pt7bBitmaps, + (GFXglyph *)FreeMonoOblique18pt7bGlyphs, + 0x20, 0x7E, 35 }; + +// Approx. 4186 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h new file mode 100644 index 000000000..8a5592c29 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h @@ -0,0 +1,643 @@ +const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, + 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, + 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, + 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, + 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, + 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, + 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, + 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, + 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, + 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, + 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, + 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, + 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, + 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, + 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, + 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, + 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, + 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, + 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, + 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, + 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, + 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, + 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, + 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, + 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, + 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, + 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, + 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, + 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, + 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, + 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, + 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, + 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, + 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, + 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, + 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, + 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, + 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, + 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, + 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, + 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, + 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, + 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, + 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, + 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, + 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, + 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, + 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, + 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, + 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, + 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, + 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, + 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, + 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, + 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, + 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, + 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, + 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, + 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, + 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, + 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, + 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, + 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, + 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, + 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, + 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, + 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, + 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, + 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, + 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, + 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, + 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, + 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, + 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, + 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, + 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, + 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, + 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, + 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, + 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, + 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, + 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, + 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, + 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, + 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, + 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, + 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, + 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, + 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, + 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, + 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, + 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, + 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, + 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, + 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, + 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, + 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, + 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, + 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, + 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, + 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, + 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, + 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, + 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, + 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, + 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, + 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, + 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, + 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, + 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, + 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, + 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, + 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, + 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, + 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, + 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, + 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, + 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, + 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, + 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, + 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, + 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, + 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, + 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, + 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, + 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, + 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, + 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, + 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, + 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, + 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, + 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, + 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, + 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, + 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, + 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, + 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, + 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, + 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, + 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, + 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, + 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, + 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, + 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, + 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, + 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, + 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, + 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, + 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, + 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, + 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, + 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, + 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, + 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, + 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, + 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, + 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, + 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, + 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, + 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, + 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, + 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, + 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, + 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, + 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, + 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, + 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, + 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, + 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, + 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, + 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, + 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, + 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, + 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, + 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, + 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, + 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, + 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, + 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, + 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, + 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, + 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, + 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, + 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, + 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, + 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, + 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, + 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, + 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, + 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, + 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, + 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, + 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, + 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, + 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, + 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, + 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, + 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, + 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, + 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, + 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, + 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, + 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, + 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, + 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, + 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, + 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, + 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, + 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, + 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, + 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, + 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, + 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, + 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, + 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, + 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, + 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, + 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, + 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, + 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, + 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, + 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, + 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, + 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, + 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, + 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, + 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, + 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, + 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, + 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, + 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, + 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, + 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, + 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, + 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, + 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, + 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, + 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, + 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, + 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, + 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, + 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, + 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, + 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, + 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, + 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, + 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, + 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, + 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, + 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, + 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, + 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, + 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, + 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, + 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, + 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, + 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, + 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, + 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, + 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, + 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, + 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, + 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, + 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, + 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, + 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, + 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, + 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, + 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, + 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, + 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, + 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, + 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, + 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, + 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, + 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, + 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, + 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, + 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, + 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, + 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, + 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, + 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, + 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, + 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, + 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, + 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, + 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, + 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, + 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, + 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, + 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, + 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, + 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, + 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, + 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, + 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, + 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, + 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, + 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, + 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, + 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, + 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, + 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, + 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, + 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, + 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, + 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, + 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, + 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, + 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, + 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, + 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, + 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, + 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, + 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, + 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, + 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, + 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, + 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, + 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, + 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, + 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, + 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, + 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, + 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, + 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, + 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, + 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, + 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, + 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, + 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, + 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, + 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, + 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, + 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, + 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, + 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, + 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, + 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0 }; + +const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' + { 0, 10, 30, 28, 12, -28 }, // 0x21 '!' + { 38, 16, 14, 28, 10, -28 }, // 0x22 '"' + { 66, 22, 32, 28, 6, -29 }, // 0x23 '#' + { 154, 21, 33, 28, 6, -29 }, // 0x24 '$' + { 241, 22, 29, 28, 6, -27 }, // 0x25 '%' + { 321, 19, 25, 28, 6, -23 }, // 0x26 '&' + { 381, 7, 14, 28, 16, -28 }, // 0x27 ''' + { 394, 11, 34, 28, 16, -27 }, // 0x28 '(' + { 441, 11, 34, 28, 7, -27 }, // 0x29 ')' + { 488, 18, 17, 28, 10, -28 }, // 0x2A '*' + { 527, 22, 22, 28, 6, -23 }, // 0x2B '+' + { 588, 12, 14, 28, 5, -6 }, // 0x2C ',' + { 609, 22, 2, 28, 6, -13 }, // 0x2D '-' + { 615, 7, 6, 28, 11, -4 }, // 0x2E '.' + { 621, 24, 35, 28, 5, -30 }, // 0x2F '/' + { 726, 20, 30, 28, 7, -28 }, // 0x30 '0' + { 801, 17, 29, 28, 6, -28 }, // 0x31 '1' + { 863, 23, 29, 28, 4, -28 }, // 0x32 '2' + { 947, 22, 30, 28, 5, -28 }, // 0x33 '3' + { 1030, 19, 28, 28, 7, -27 }, // 0x34 '4' + { 1097, 21, 29, 28, 6, -27 }, // 0x35 '5' + { 1174, 21, 30, 28, 9, -28 }, // 0x36 '6' + { 1253, 18, 28, 28, 10, -27 }, // 0x37 '7' + { 1316, 20, 30, 28, 7, -28 }, // 0x38 '8' + { 1391, 22, 30, 28, 6, -28 }, // 0x39 '9' + { 1474, 10, 21, 28, 11, -19 }, // 0x3A ':' + { 1501, 15, 27, 28, 5, -19 }, // 0x3B ';' + { 1552, 23, 22, 28, 6, -23 }, // 0x3C '<' + { 1616, 25, 9, 28, 4, -17 }, // 0x3D '=' + { 1645, 24, 22, 28, 4, -23 }, // 0x3E '>' + { 1711, 16, 28, 28, 11, -26 }, // 0x3F '?' + { 1767, 19, 32, 28, 7, -28 }, // 0x40 '@' + { 1843, 27, 26, 28, 1, -25 }, // 0x41 'A' + { 1931, 26, 26, 28, 2, -25 }, // 0x42 'B' + { 2016, 25, 28, 28, 5, -26 }, // 0x43 'C' + { 2104, 26, 26, 28, 2, -25 }, // 0x44 'D' + { 2189, 27, 26, 28, 2, -25 }, // 0x45 'E' + { 2277, 28, 26, 28, 2, -25 }, // 0x46 'F' + { 2368, 25, 28, 28, 5, -26 }, // 0x47 'G' + { 2456, 27, 26, 28, 3, -25 }, // 0x48 'H' + { 2544, 22, 26, 28, 6, -25 }, // 0x49 'I' + { 2616, 28, 27, 28, 5, -25 }, // 0x4A 'J' + { 2711, 29, 26, 28, 2, -25 }, // 0x4B 'K' + { 2806, 25, 26, 28, 3, -25 }, // 0x4C 'L' + { 2888, 32, 26, 28, 1, -25 }, // 0x4D 'M' + { 2992, 30, 26, 28, 2, -25 }, // 0x4E 'N' + { 3090, 24, 28, 28, 5, -26 }, // 0x4F 'O' + { 3174, 26, 26, 28, 2, -25 }, // 0x50 'P' + { 3259, 24, 32, 28, 5, -26 }, // 0x51 'Q' + { 3355, 26, 26, 28, 2, -25 }, // 0x52 'R' + { 3440, 24, 28, 28, 5, -26 }, // 0x53 'S' + { 3524, 24, 26, 28, 7, -25 }, // 0x54 'T' + { 3602, 26, 27, 28, 6, -25 }, // 0x55 'U' + { 3690, 27, 26, 28, 6, -25 }, // 0x56 'V' + { 3778, 27, 26, 28, 6, -25 }, // 0x57 'W' + { 3866, 29, 26, 28, 2, -25 }, // 0x58 'X' + { 3961, 24, 26, 28, 7, -25 }, // 0x59 'Y' + { 4039, 23, 26, 28, 5, -25 }, // 0x5A 'Z' + { 4114, 15, 34, 28, 12, -27 }, // 0x5B '[' + { 4178, 10, 35, 28, 12, -30 }, // 0x5C '\' + { 4222, 15, 34, 28, 6, -27 }, // 0x5D ']' + { 4286, 18, 12, 28, 9, -28 }, // 0x5E '^' + { 4313, 28, 2, 28, -1, 5 }, // 0x5F '_' + { 4320, 6, 7, 28, 13, -29 }, // 0x60 '`' + { 4326, 22, 22, 28, 4, -20 }, // 0x61 'a' + { 4387, 27, 29, 28, 1, -27 }, // 0x62 'b' + { 4485, 22, 22, 28, 6, -20 }, // 0x63 'c' + { 4546, 25, 29, 28, 5, -27 }, // 0x64 'd' + { 4637, 22, 22, 28, 5, -20 }, // 0x65 'e' + { 4698, 26, 28, 28, 5, -27 }, // 0x66 'f' + { 4789, 25, 30, 28, 5, -20 }, // 0x67 'g' + { 4883, 24, 28, 28, 3, -27 }, // 0x68 'h' + { 4967, 19, 29, 28, 5, -28 }, // 0x69 'i' + { 5036, 20, 38, 28, 4, -28 }, // 0x6A 'j' + { 5131, 24, 28, 28, 3, -27 }, // 0x6B 'k' + { 5215, 19, 28, 28, 5, -27 }, // 0x6C 'l' + { 5282, 27, 21, 28, 1, -20 }, // 0x6D 'm' + { 5353, 23, 21, 28, 3, -20 }, // 0x6E 'n' + { 5414, 22, 22, 28, 5, -20 }, // 0x6F 'o' + { 5475, 29, 30, 28, -1, -20 }, // 0x70 'p' + { 5584, 26, 30, 28, 5, -20 }, // 0x71 'q' + { 5682, 25, 20, 28, 4, -19 }, // 0x72 'r' + { 5745, 21, 22, 28, 5, -20 }, // 0x73 's' + { 5803, 17, 27, 28, 7, -25 }, // 0x74 't' + { 5861, 21, 21, 28, 6, -19 }, // 0x75 'u' + { 5917, 26, 20, 28, 5, -19 }, // 0x76 'v' + { 5982, 25, 20, 28, 6, -19 }, // 0x77 'w' + { 6045, 26, 20, 28, 3, -19 }, // 0x78 'x' + { 6110, 29, 29, 28, 1, -19 }, // 0x79 'y' + { 6216, 21, 20, 28, 5, -19 }, // 0x7A 'z' + { 6269, 15, 34, 28, 10, -27 }, // 0x7B '{' + { 6333, 9, 35, 28, 12, -28 }, // 0x7C '|' + { 6373, 15, 34, 28, 8, -27 }, // 0x7D '}' + { 6437, 20, 6, 28, 7, -15 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique24pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique24pt7bBitmaps, + (GFXglyph *)FreeMonoOblique24pt7bGlyphs, + 0x20, 0x7E, 47 }; + +// Approx. 7124 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h new file mode 100644 index 000000000..a00ca8290 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h @@ -0,0 +1,187 @@ +const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { + 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, + 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, + 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, + 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, + 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, + 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, + 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, + 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, + 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, + 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, + 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, + 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, + 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, + 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, + 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, + 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, + 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, + 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, + 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, + 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, + 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, + 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, + 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, + 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, + 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, + 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, + 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, + 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, + 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, + 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, + 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, + 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, + 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, + 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, + 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, + 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, + 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, + 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, + 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, + 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, + 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, + 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, + 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, + 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, + 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, + 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, + 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, + 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, + 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, + 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, + 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, + 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, + 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, + 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, + 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, + 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, + 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, + 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, + 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, + 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, + 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, + 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, + 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, + 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, + 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, + 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, + 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, + 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, + 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, + 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, + 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, + 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, + 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, + 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, + 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, + 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, + 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, + 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, + 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, + 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, + 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, + 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30 }; + +const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' + { 0, 4, 11, 11, 4, -10 }, // 0x21 '!' + { 6, 5, 5, 11, 4, -10 }, // 0x22 '"' + { 10, 9, 12, 11, 2, -10 }, // 0x23 '#' + { 24, 8, 12, 11, 3, -10 }, // 0x24 '$' + { 36, 9, 11, 11, 2, -10 }, // 0x25 '%' + { 49, 7, 10, 11, 2, -9 }, // 0x26 '&' + { 58, 2, 5, 11, 6, -10 }, // 0x27 ''' + { 60, 4, 13, 11, 6, -10 }, // 0x28 '(' + { 67, 4, 13, 11, 3, -10 }, // 0x29 ')' + { 74, 7, 7, 11, 4, -10 }, // 0x2A '*' + { 81, 9, 8, 11, 2, -8 }, // 0x2B '+' + { 90, 4, 5, 11, 2, -1 }, // 0x2C ',' + { 93, 9, 1, 11, 2, -5 }, // 0x2D '-' + { 95, 2, 2, 11, 4, -1 }, // 0x2E '.' + { 96, 9, 13, 11, 2, -11 }, // 0x2F '/' + { 111, 7, 11, 11, 3, -10 }, // 0x30 '0' + { 121, 7, 11, 11, 2, -10 }, // 0x31 '1' + { 131, 9, 11, 11, 2, -10 }, // 0x32 '2' + { 144, 9, 11, 11, 2, -10 }, // 0x33 '3' + { 157, 8, 11, 11, 2, -10 }, // 0x34 '4' + { 168, 9, 11, 11, 2, -10 }, // 0x35 '5' + { 181, 8, 11, 11, 3, -10 }, // 0x36 '6' + { 192, 7, 11, 11, 4, -10 }, // 0x37 '7' + { 202, 8, 11, 11, 3, -10 }, // 0x38 '8' + { 213, 8, 11, 11, 3, -10 }, // 0x39 '9' + { 224, 3, 8, 11, 4, -7 }, // 0x3A ':' + { 227, 5, 11, 11, 2, -7 }, // 0x3B ';' + { 234, 9, 8, 11, 2, -8 }, // 0x3C '<' + { 243, 9, 4, 11, 2, -6 }, // 0x3D '=' + { 248, 9, 8, 11, 2, -8 }, // 0x3E '>' + { 257, 7, 10, 11, 4, -9 }, // 0x3F '?' + { 266, 7, 12, 11, 3, -10 }, // 0x40 '@' + { 277, 11, 10, 11, 0, -9 }, // 0x41 'A' + { 291, 10, 10, 11, 1, -9 }, // 0x42 'B' + { 304, 9, 10, 11, 2, -9 }, // 0x43 'C' + { 316, 10, 10, 11, 1, -9 }, // 0x44 'D' + { 329, 10, 10, 11, 1, -9 }, // 0x45 'E' + { 342, 11, 10, 11, 1, -9 }, // 0x46 'F' + { 356, 9, 10, 11, 2, -9 }, // 0x47 'G' + { 368, 11, 10, 11, 1, -9 }, // 0x48 'H' + { 382, 9, 10, 11, 2, -9 }, // 0x49 'I' + { 394, 11, 10, 11, 2, -9 }, // 0x4A 'J' + { 408, 11, 10, 11, 1, -9 }, // 0x4B 'K' + { 422, 10, 10, 11, 1, -9 }, // 0x4C 'L' + { 435, 13, 10, 11, 0, -9 }, // 0x4D 'M' + { 452, 11, 10, 11, 1, -9 }, // 0x4E 'N' + { 466, 9, 10, 11, 2, -9 }, // 0x4F 'O' + { 478, 10, 10, 11, 1, -9 }, // 0x50 'P' + { 491, 9, 13, 11, 2, -9 }, // 0x51 'Q' + { 506, 10, 10, 11, 1, -9 }, // 0x52 'R' + { 519, 9, 10, 11, 2, -9 }, // 0x53 'S' + { 531, 9, 10, 11, 3, -9 }, // 0x54 'T' + { 543, 10, 10, 11, 2, -9 }, // 0x55 'U' + { 556, 11, 10, 11, 2, -9 }, // 0x56 'V' + { 570, 11, 10, 11, 2, -9 }, // 0x57 'W' + { 584, 11, 10, 11, 1, -9 }, // 0x58 'X' + { 598, 9, 10, 11, 3, -9 }, // 0x59 'Y' + { 610, 9, 10, 11, 2, -9 }, // 0x5A 'Z' + { 622, 5, 13, 11, 5, -10 }, // 0x5B '[' + { 631, 4, 14, 11, 4, -11 }, // 0x5C '\' + { 638, 5, 13, 11, 2, -10 }, // 0x5D ']' + { 647, 7, 5, 11, 3, -10 }, // 0x5E '^' + { 652, 11, 1, 11, 0, 2 }, // 0x5F '_' + { 654, 2, 3, 11, 5, -11 }, // 0x60 '`' + { 655, 9, 8, 11, 2, -7 }, // 0x61 'a' + { 664, 11, 11, 11, 0, -10 }, // 0x62 'b' + { 680, 10, 8, 11, 2, -7 }, // 0x63 'c' + { 690, 9, 11, 11, 2, -10 }, // 0x64 'd' + { 703, 9, 8, 11, 2, -7 }, // 0x65 'e' + { 712, 10, 11, 11, 2, -10 }, // 0x66 'f' + { 726, 10, 11, 11, 2, -7 }, // 0x67 'g' + { 740, 10, 11, 11, 1, -10 }, // 0x68 'h' + { 754, 8, 11, 11, 2, -10 }, // 0x69 'i' + { 765, 9, 14, 11, 1, -10 }, // 0x6A 'j' + { 781, 9, 11, 11, 1, -10 }, // 0x6B 'k' + { 794, 8, 11, 11, 2, -10 }, // 0x6C 'l' + { 805, 11, 8, 11, 0, -7 }, // 0x6D 'm' + { 816, 9, 8, 11, 1, -7 }, // 0x6E 'n' + { 825, 9, 8, 11, 2, -7 }, // 0x6F 'o' + { 834, 11, 11, 11, 0, -7 }, // 0x70 'p' + { 850, 10, 11, 11, 2, -7 }, // 0x71 'q' + { 864, 9, 8, 11, 2, -7 }, // 0x72 'r' + { 873, 8, 8, 11, 2, -7 }, // 0x73 's' + { 881, 7, 10, 11, 2, -9 }, // 0x74 't' + { 890, 9, 8, 11, 2, -7 }, // 0x75 'u' + { 899, 10, 8, 11, 2, -7 }, // 0x76 'v' + { 909, 10, 8, 11, 2, -7 }, // 0x77 'w' + { 919, 10, 8, 11, 1, -7 }, // 0x78 'x' + { 929, 12, 11, 11, 0, -7 }, // 0x79 'y' + { 946, 8, 8, 11, 2, -7 }, // 0x7A 'z' + { 954, 6, 13, 11, 4, -10 }, // 0x7B '{' + { 964, 3, 12, 11, 5, -9 }, // 0x7C '|' + { 969, 6, 13, 11, 3, -10 }, // 0x7D '}' + { 979, 7, 3, 11, 3, -6 } }; // 0x7E '~' + +const GFXfont FreeMonoOblique9pt7b PROGMEM = { + (uint8_t *)FreeMonoOblique9pt7bBitmaps, + (GFXglyph *)FreeMonoOblique9pt7bGlyphs, + 0x20, 0x7E, 18 }; + +// Approx. 1654 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h new file mode 100644 index 000000000..9ecbb8fb0 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h @@ -0,0 +1,270 @@ +const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, + 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, + 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, + 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, + 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, + 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, + 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, + 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, + 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, + 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, + 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, + 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, + 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, + 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, + 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, + 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, + 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, + 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, + 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, + 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, + 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, + 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, + 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, + 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, + 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, + 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, + 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, + 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, + 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, + 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, + 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, + 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, + 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, + 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, + 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, + 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, + 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, + 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, + 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, + 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, + 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, + 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, + 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, + 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, + 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, + 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, + 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, + 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, + 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, + 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, + 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, + 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, + 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, + 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, + 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, + 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, + 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, + 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, + 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, + 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, + 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, + 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, + 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, + 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, + 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, + 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, + 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, + 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, + 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, + 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, + 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, + 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, + 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, + 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, + 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, + 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, + 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, + 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, + 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, + 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, + 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, + 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, + 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, + 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, + 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, + 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, + 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, + 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, + 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, + 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, + 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, + 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, + 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, + 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, + 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, + 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, + 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, + 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, + 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, + 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, + 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, + 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, + 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, + 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, + 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, + 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, + 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, + 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, + 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, + 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, + 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, + 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, + 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, + 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, + 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, + 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, + 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, + 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, + 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, + 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, + 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, + 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, + 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, + 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, + 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, + 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, + 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, + 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, + 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, + 0x80 }; + +const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 18, 8, 3, -17 }, // 0x21 '!' + { 5, 6, 6, 8, 1, -16 }, // 0x22 '"' + { 10, 13, 16, 13, 0, -15 }, // 0x23 '#' + { 36, 11, 20, 13, 1, -17 }, // 0x24 '$' + { 64, 20, 17, 21, 1, -16 }, // 0x25 '%' + { 107, 14, 17, 16, 1, -16 }, // 0x26 '&' + { 137, 2, 6, 5, 1, -16 }, // 0x27 ''' + { 139, 5, 23, 8, 2, -17 }, // 0x28 '(' + { 154, 5, 23, 8, 1, -17 }, // 0x29 ')' + { 169, 7, 7, 9, 1, -17 }, // 0x2A '*' + { 176, 10, 11, 14, 2, -10 }, // 0x2B '+' + { 190, 2, 6, 7, 2, -1 }, // 0x2C ',' + { 192, 6, 2, 8, 1, -7 }, // 0x2D '-' + { 194, 2, 2, 6, 2, -1 }, // 0x2E '.' + { 195, 7, 18, 7, 0, -17 }, // 0x2F '/' + { 211, 11, 17, 13, 1, -16 }, // 0x30 '0' + { 235, 5, 17, 13, 3, -16 }, // 0x31 '1' + { 246, 11, 17, 13, 1, -16 }, // 0x32 '2' + { 270, 11, 17, 13, 1, -16 }, // 0x33 '3' + { 294, 11, 17, 13, 1, -16 }, // 0x34 '4' + { 318, 11, 17, 13, 1, -16 }, // 0x35 '5' + { 342, 11, 17, 13, 1, -16 }, // 0x36 '6' + { 366, 11, 17, 13, 1, -16 }, // 0x37 '7' + { 390, 11, 17, 13, 1, -16 }, // 0x38 '8' + { 414, 11, 17, 13, 1, -16 }, // 0x39 '9' + { 438, 2, 13, 6, 2, -12 }, // 0x3A ':' + { 442, 2, 16, 6, 2, -11 }, // 0x3B ';' + { 446, 12, 12, 14, 1, -11 }, // 0x3C '<' + { 464, 12, 6, 14, 1, -8 }, // 0x3D '=' + { 473, 12, 12, 14, 1, -11 }, // 0x3E '>' + { 491, 10, 18, 13, 2, -17 }, // 0x3F '?' + { 514, 22, 21, 24, 1, -17 }, // 0x40 '@' + { 572, 16, 18, 16, 0, -17 }, // 0x41 'A' + { 608, 13, 18, 16, 2, -17 }, // 0x42 'B' + { 638, 15, 18, 17, 1, -17 }, // 0x43 'C' + { 672, 14, 18, 17, 2, -17 }, // 0x44 'D' + { 704, 12, 18, 15, 2, -17 }, // 0x45 'E' + { 731, 11, 18, 14, 2, -17 }, // 0x46 'F' + { 756, 16, 18, 18, 1, -17 }, // 0x47 'G' + { 792, 13, 18, 17, 2, -17 }, // 0x48 'H' + { 822, 2, 18, 7, 2, -17 }, // 0x49 'I' + { 827, 9, 18, 13, 1, -17 }, // 0x4A 'J' + { 848, 14, 18, 16, 2, -17 }, // 0x4B 'K' + { 880, 10, 18, 14, 2, -17 }, // 0x4C 'L' + { 903, 16, 18, 20, 2, -17 }, // 0x4D 'M' + { 939, 13, 18, 18, 2, -17 }, // 0x4E 'N' + { 969, 17, 18, 19, 1, -17 }, // 0x4F 'O' + { 1008, 12, 18, 16, 2, -17 }, // 0x50 'P' + { 1035, 17, 19, 19, 1, -17 }, // 0x51 'Q' + { 1076, 14, 18, 17, 2, -17 }, // 0x52 'R' + { 1108, 14, 18, 16, 1, -17 }, // 0x53 'S' + { 1140, 12, 18, 15, 1, -17 }, // 0x54 'T' + { 1167, 13, 18, 17, 2, -17 }, // 0x55 'U' + { 1197, 15, 18, 15, 0, -17 }, // 0x56 'V' + { 1231, 22, 18, 22, 0, -17 }, // 0x57 'W' + { 1281, 15, 18, 16, 0, -17 }, // 0x58 'X' + { 1315, 16, 18, 16, 0, -17 }, // 0x59 'Y' + { 1351, 13, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1381, 4, 23, 7, 2, -17 }, // 0x5B '[' + { 1393, 7, 18, 7, 0, -17 }, // 0x5C '\' + { 1409, 4, 23, 7, 1, -17 }, // 0x5D ']' + { 1421, 9, 9, 11, 1, -16 }, // 0x5E '^' + { 1432, 15, 1, 13, -1, 4 }, // 0x5F '_' + { 1434, 5, 4, 6, 1, -17 }, // 0x60 '`' + { 1437, 12, 13, 13, 1, -12 }, // 0x61 'a' + { 1457, 12, 18, 13, 1, -17 }, // 0x62 'b' + { 1484, 10, 13, 12, 1, -12 }, // 0x63 'c' + { 1501, 11, 18, 13, 1, -17 }, // 0x64 'd' + { 1526, 11, 13, 13, 1, -12 }, // 0x65 'e' + { 1544, 5, 18, 7, 1, -17 }, // 0x66 'f' + { 1556, 11, 18, 13, 1, -12 }, // 0x67 'g' + { 1581, 10, 18, 13, 1, -17 }, // 0x68 'h' + { 1604, 2, 18, 5, 2, -17 }, // 0x69 'i' + { 1609, 4, 23, 6, 0, -17 }, // 0x6A 'j' + { 1621, 11, 18, 12, 1, -17 }, // 0x6B 'k' + { 1646, 2, 18, 5, 1, -17 }, // 0x6C 'l' + { 1651, 17, 13, 19, 1, -12 }, // 0x6D 'm' + { 1679, 10, 13, 13, 1, -12 }, // 0x6E 'n' + { 1696, 11, 13, 13, 1, -12 }, // 0x6F 'o' + { 1714, 12, 17, 13, 1, -12 }, // 0x70 'p' + { 1740, 11, 17, 13, 1, -12 }, // 0x71 'q' + { 1764, 6, 13, 8, 1, -12 }, // 0x72 'r' + { 1774, 10, 13, 12, 1, -12 }, // 0x73 's' + { 1791, 5, 16, 7, 1, -15 }, // 0x74 't' + { 1801, 10, 13, 13, 1, -12 }, // 0x75 'u' + { 1818, 12, 13, 12, 0, -12 }, // 0x76 'v' + { 1838, 17, 13, 17, 0, -12 }, // 0x77 'w' + { 1866, 11, 13, 11, 0, -12 }, // 0x78 'x' + { 1884, 11, 18, 11, 0, -12 }, // 0x79 'y' + { 1909, 10, 13, 12, 1, -12 }, // 0x7A 'z' + { 1926, 5, 23, 8, 1, -17 }, // 0x7B '{' + { 1941, 2, 23, 6, 2, -17 }, // 0x7C '|' + { 1947, 5, 23, 8, 2, -17 }, // 0x7D '}' + { 1962, 10, 5, 12, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSans12pt7b PROGMEM = { + (uint8_t *)FreeSans12pt7bBitmaps, + (GFXglyph *)FreeSans12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2641 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h new file mode 100644 index 000000000..3fdc5911e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h @@ -0,0 +1,452 @@ +const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, + 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, + 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, + 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, + 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, + 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, + 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, + 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, + 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, + 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, + 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, + 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, + 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, + 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, + 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, + 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, + 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, + 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, + 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, + 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, + 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, + 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, + 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, + 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, + 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, + 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, + 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, + 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, + 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, + 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, + 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, + 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, + 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, + 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, + 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, + 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, + 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, + 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, + 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, + 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, + 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, + 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, + 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, + 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, + 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, + 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, + 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, + 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, + 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, + 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, + 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, + 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, + 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, + 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, + 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, + 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, + 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, + 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, + 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, + 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, + 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, + 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, + 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, + 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, + 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, + 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, + 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, + 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, + 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, + 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, + 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, + 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, + 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, + 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, + 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, + 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, + 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, + 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, + 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, + 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, + 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, + 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, + 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, + 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, + 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, + 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, + 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, + 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, + 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, + 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, + 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, + 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, + 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, + 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, + 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, + 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, + 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, + 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, + 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, + 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, + 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, + 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, + 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, + 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, + 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, + 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, + 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, + 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, + 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, + 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, + 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, + 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, + 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, + 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, + 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, + 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, + 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, + 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, + 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, + 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, + 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, + 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, + 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, + 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, + 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, + 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, + 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, + 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, + 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, + 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, + 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, + 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, + 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, + 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, + 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, + 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, + 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, + 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, + 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, + 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, + 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, + 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, + 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, + 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, + 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, + 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, + 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, + 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, + 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, + 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, + 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, + 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, + 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, + 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, + 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, + 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, + 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, + 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, + 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, + 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, + 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, + 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, + 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, + 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, + 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, + 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, + 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, + 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, + 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, + 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, + 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, + 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, + 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, + 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, + 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, + 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, + 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, + 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, + 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, + 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, + 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, + 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, + 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, + 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, + 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, + 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, + 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, + 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, + 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, + 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, + 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, + 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, + 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, + 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, + 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, + 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, + 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, + 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, + 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, + 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, + 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, + 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, + 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, + 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, + 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, + 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, + 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, + 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, + 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, + 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, + 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, + 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, + 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, + 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, + 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, + 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, + 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, + 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, + 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, + 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, + 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00 }; + +const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 3, 26, 12, 4, -25 }, // 0x21 '!' + { 10, 9, 9, 12, 1, -24 }, // 0x22 '"' + { 21, 19, 24, 19, 0, -23 }, // 0x23 '#' + { 78, 16, 30, 19, 2, -26 }, // 0x24 '$' + { 138, 29, 25, 31, 1, -24 }, // 0x25 '%' + { 229, 20, 25, 23, 2, -24 }, // 0x26 '&' + { 292, 3, 9, 7, 2, -24 }, // 0x27 ''' + { 296, 8, 33, 12, 3, -25 }, // 0x28 '(' + { 329, 8, 33, 12, 1, -25 }, // 0x29 ')' + { 362, 10, 10, 14, 2, -25 }, // 0x2A '*' + { 375, 16, 16, 20, 2, -15 }, // 0x2B '+' + { 407, 3, 9, 10, 3, -3 }, // 0x2C ',' + { 411, 8, 3, 12, 2, -10 }, // 0x2D '-' + { 414, 3, 4, 9, 3, -3 }, // 0x2E '.' + { 416, 10, 26, 10, 0, -25 }, // 0x2F '/' + { 449, 16, 25, 19, 2, -24 }, // 0x30 '0' + { 499, 8, 25, 19, 4, -24 }, // 0x31 '1' + { 524, 16, 25, 19, 2, -24 }, // 0x32 '2' + { 574, 17, 25, 19, 1, -24 }, // 0x33 '3' + { 628, 16, 25, 19, 1, -24 }, // 0x34 '4' + { 678, 17, 25, 19, 1, -24 }, // 0x35 '5' + { 732, 16, 25, 19, 2, -24 }, // 0x36 '6' + { 782, 16, 25, 19, 2, -24 }, // 0x37 '7' + { 832, 17, 25, 19, 1, -24 }, // 0x38 '8' + { 886, 16, 25, 19, 1, -24 }, // 0x39 '9' + { 936, 3, 19, 9, 3, -18 }, // 0x3A ':' + { 944, 3, 24, 9, 3, -18 }, // 0x3B ';' + { 953, 17, 17, 20, 2, -16 }, // 0x3C '<' + { 990, 17, 9, 20, 2, -12 }, // 0x3D '=' + { 1010, 17, 17, 20, 2, -16 }, // 0x3E '>' + { 1047, 15, 26, 19, 3, -25 }, // 0x3F '?' + { 1096, 32, 31, 36, 1, -25 }, // 0x40 '@' + { 1220, 22, 26, 23, 1, -25 }, // 0x41 'A' + { 1292, 19, 26, 23, 3, -25 }, // 0x42 'B' + { 1354, 22, 26, 25, 1, -25 }, // 0x43 'C' + { 1426, 20, 26, 24, 3, -25 }, // 0x44 'D' + { 1491, 18, 26, 22, 3, -25 }, // 0x45 'E' + { 1550, 17, 26, 21, 3, -25 }, // 0x46 'F' + { 1606, 24, 26, 27, 1, -25 }, // 0x47 'G' + { 1684, 19, 26, 25, 3, -25 }, // 0x48 'H' + { 1746, 3, 26, 10, 4, -25 }, // 0x49 'I' + { 1756, 14, 26, 18, 1, -25 }, // 0x4A 'J' + { 1802, 20, 26, 24, 3, -25 }, // 0x4B 'K' + { 1867, 15, 26, 20, 3, -25 }, // 0x4C 'L' + { 1916, 24, 26, 30, 3, -25 }, // 0x4D 'M' + { 1994, 20, 26, 26, 3, -25 }, // 0x4E 'N' + { 2059, 25, 26, 27, 1, -25 }, // 0x4F 'O' + { 2141, 18, 26, 23, 3, -25 }, // 0x50 'P' + { 2200, 25, 28, 27, 1, -25 }, // 0x51 'Q' + { 2288, 20, 26, 25, 3, -25 }, // 0x52 'R' + { 2353, 20, 26, 23, 1, -25 }, // 0x53 'S' + { 2418, 19, 26, 22, 1, -25 }, // 0x54 'T' + { 2480, 19, 26, 25, 3, -25 }, // 0x55 'U' + { 2542, 21, 26, 23, 1, -25 }, // 0x56 'V' + { 2611, 32, 26, 33, 0, -25 }, // 0x57 'W' + { 2715, 21, 26, 23, 1, -25 }, // 0x58 'X' + { 2784, 23, 26, 24, 0, -25 }, // 0x59 'Y' + { 2859, 19, 26, 22, 1, -25 }, // 0x5A 'Z' + { 2921, 6, 33, 10, 2, -25 }, // 0x5B '[' + { 2946, 10, 26, 10, 0, -25 }, // 0x5C '\' + { 2979, 6, 33, 10, 1, -25 }, // 0x5D ']' + { 3004, 13, 13, 16, 2, -24 }, // 0x5E '^' + { 3026, 21, 2, 19, -1, 5 }, // 0x5F '_' + { 3032, 7, 5, 9, 1, -25 }, // 0x60 '`' + { 3037, 17, 19, 19, 1, -18 }, // 0x61 'a' + { 3078, 16, 26, 20, 2, -25 }, // 0x62 'b' + { 3130, 16, 19, 18, 1, -18 }, // 0x63 'c' + { 3168, 17, 26, 20, 1, -25 }, // 0x64 'd' + { 3224, 16, 19, 19, 1, -18 }, // 0x65 'e' + { 3262, 7, 26, 10, 1, -25 }, // 0x66 'f' + { 3285, 16, 27, 19, 1, -18 }, // 0x67 'g' + { 3339, 15, 26, 19, 2, -25 }, // 0x68 'h' + { 3388, 3, 26, 8, 2, -25 }, // 0x69 'i' + { 3398, 6, 34, 9, 0, -25 }, // 0x6A 'j' + { 3424, 16, 26, 18, 2, -25 }, // 0x6B 'k' + { 3476, 3, 26, 7, 2, -25 }, // 0x6C 'l' + { 3486, 24, 19, 28, 2, -18 }, // 0x6D 'm' + { 3543, 15, 19, 19, 2, -18 }, // 0x6E 'n' + { 3579, 17, 19, 19, 1, -18 }, // 0x6F 'o' + { 3620, 16, 25, 20, 2, -18 }, // 0x70 'p' + { 3670, 17, 25, 20, 1, -18 }, // 0x71 'q' + { 3724, 9, 19, 12, 2, -18 }, // 0x72 'r' + { 3746, 14, 19, 17, 2, -18 }, // 0x73 's' + { 3780, 7, 23, 10, 1, -22 }, // 0x74 't' + { 3801, 15, 19, 19, 2, -18 }, // 0x75 'u' + { 3837, 17, 19, 17, 0, -18 }, // 0x76 'v' + { 3878, 25, 19, 25, 0, -18 }, // 0x77 'w' + { 3938, 16, 19, 17, 0, -18 }, // 0x78 'x' + { 3976, 17, 27, 17, 0, -18 }, // 0x79 'y' + { 4034, 15, 19, 17, 1, -18 }, // 0x7A 'z' + { 4070, 8, 33, 12, 1, -25 }, // 0x7B '{' + { 4103, 2, 33, 9, 3, -25 }, // 0x7C '|' + { 4112, 8, 33, 12, 3, -25 }, // 0x7D '}' + { 4145, 15, 7, 18, 1, -15 } }; // 0x7E '~' + +const GFXfont FreeSans18pt7b PROGMEM = { + (uint8_t *)FreeSans18pt7bBitmaps, + (GFXglyph *)FreeSans18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4831 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h new file mode 100644 index 000000000..ff2d174fb --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h @@ -0,0 +1,727 @@ +const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, + 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, + 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, + 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, + 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, + 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, + 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, + 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, + 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, + 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, + 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, + 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, + 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, + 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, + 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, + 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, + 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, + 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, + 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, + 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, + 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, + 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, + 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, + 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, + 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, + 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, + 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, + 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, + 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, + 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, + 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, + 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, + 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, + 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, + 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, + 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, + 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, + 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, + 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, + 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, + 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, + 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, + 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, + 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, + 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, + 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, + 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, + 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, + 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, + 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, + 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, + 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, + 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, + 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, + 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, + 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, + 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, + 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, + 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, + 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, + 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, + 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, + 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, + 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, + 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, + 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, + 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, + 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, + 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, + 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, + 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, + 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, + 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, + 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, + 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, + 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, + 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, + 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, + 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, + 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, + 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, + 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, + 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, + 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, + 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, + 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, + 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, + 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, + 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, + 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, + 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, + 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, + 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, + 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, + 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, + 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, + 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, + 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, + 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, + 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, + 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, + 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, + 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, + 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, + 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, + 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, + 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, + 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, + 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, + 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, + 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, + 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, + 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, + 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, + 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, + 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, + 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, + 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, + 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, + 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, + 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, + 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, + 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, + 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, + 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, + 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, + 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, + 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, + 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, + 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, + 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, + 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, + 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, + 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, + 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, + 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, + 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, + 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, + 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, + 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, + 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, + 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, + 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, + 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, + 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, + 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, + 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, + 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, + 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, + 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, + 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, + 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, + 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, + 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, + 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, + 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, + 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, + 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, + 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, + 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, + 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, + 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, + 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, + 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, + 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, + 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, + 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, + 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, + 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, + 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, + 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, + 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, + 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, + 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, + 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, + 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, + 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, + 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, + 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, + 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, + 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, + 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, + 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, + 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, + 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, + 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, + 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, + 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, + 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, + 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, + 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, + 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, + 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, + 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, + 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, + 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, + 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, + 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, + 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, + 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, + 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, + 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, + 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, + 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, + 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, + 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, + 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, + 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, + 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, + 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, + 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, + 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, + 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, + 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, + 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, + 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, + 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, + 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, + 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, + 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, + 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, + 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, + 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, + 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, + 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, + 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, + 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, + 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, + 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, + 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, + 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, + 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, + 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, + 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, + 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, + 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, + 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, + 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, + 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, + 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, + 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, + 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, + 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, + 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, + 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, + 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, + 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, + 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, + 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, + 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, + 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, + 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, + 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, + 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, + 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, + 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, + 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, + 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, + 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, + 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, + 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, + 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, + 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, + 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, + 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, + 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, + 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, + 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, + 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, + 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, + 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, + 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, + 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, + 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, + 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, + 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, + 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, + 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, + 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, + 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, + 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, + 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, + 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, + 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, + 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, + 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, + 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, + 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, + 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, + 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, + 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, + 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, + 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, + 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, + 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, + 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, + 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, + 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, + 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, + 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, + 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, + 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, + 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, + 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, + 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, + 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, + 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, + 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, + 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, + 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, + 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0 }; + +const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 4, 34, 16, 6, -33 }, // 0x21 '!' + { 17, 11, 12, 16, 2, -32 }, // 0x22 '"' + { 34, 24, 33, 26, 1, -31 }, // 0x23 '#' + { 133, 23, 41, 26, 1, -34 }, // 0x24 '$' + { 251, 39, 34, 42, 1, -32 }, // 0x25 '%' + { 417, 28, 34, 31, 2, -32 }, // 0x26 '&' + { 536, 4, 12, 9, 2, -32 }, // 0x27 ''' + { 542, 10, 44, 16, 3, -33 }, // 0x28 '(' + { 597, 10, 44, 16, 2, -33 }, // 0x29 ')' + { 652, 14, 14, 18, 2, -33 }, // 0x2A '*' + { 677, 23, 22, 27, 2, -21 }, // 0x2B '+' + { 741, 4, 12, 13, 4, -4 }, // 0x2C ',' + { 747, 11, 4, 16, 2, -14 }, // 0x2D '-' + { 753, 4, 5, 12, 4, -4 }, // 0x2E '.' + { 756, 13, 35, 13, 0, -33 }, // 0x2F '/' + { 813, 22, 34, 26, 2, -32 }, // 0x30 '0' + { 907, 11, 33, 26, 5, -32 }, // 0x31 '1' + { 953, 22, 33, 26, 2, -32 }, // 0x32 '2' + { 1044, 23, 34, 26, 1, -32 }, // 0x33 '3' + { 1142, 23, 33, 26, 1, -32 }, // 0x34 '4' + { 1237, 22, 34, 26, 2, -32 }, // 0x35 '5' + { 1331, 22, 34, 26, 2, -32 }, // 0x36 '6' + { 1425, 21, 33, 26, 2, -32 }, // 0x37 '7' + { 1512, 22, 34, 26, 2, -32 }, // 0x38 '8' + { 1606, 21, 34, 26, 2, -32 }, // 0x39 '9' + { 1696, 4, 25, 12, 4, -24 }, // 0x3A ':' + { 1709, 4, 32, 12, 4, -24 }, // 0x3B ';' + { 1725, 23, 23, 27, 2, -22 }, // 0x3C '<' + { 1792, 23, 12, 27, 2, -16 }, // 0x3D '=' + { 1827, 23, 23, 27, 2, -22 }, // 0x3E '>' + { 1894, 20, 35, 26, 4, -34 }, // 0x3F '?' + { 1982, 43, 42, 48, 2, -34 }, // 0x40 '@' + { 2208, 30, 34, 31, 1, -33 }, // 0x41 'A' + { 2336, 25, 34, 31, 4, -33 }, // 0x42 'B' + { 2443, 29, 36, 33, 2, -34 }, // 0x43 'C' + { 2574, 27, 34, 33, 4, -33 }, // 0x44 'D' + { 2689, 24, 34, 30, 4, -33 }, // 0x45 'E' + { 2791, 22, 34, 28, 4, -33 }, // 0x46 'F' + { 2885, 31, 36, 36, 2, -34 }, // 0x47 'G' + { 3025, 26, 34, 34, 4, -33 }, // 0x48 'H' + { 3136, 4, 34, 13, 5, -33 }, // 0x49 'I' + { 3153, 19, 35, 25, 2, -33 }, // 0x4A 'J' + { 3237, 27, 34, 32, 4, -33 }, // 0x4B 'K' + { 3352, 21, 34, 26, 4, -33 }, // 0x4C 'L' + { 3442, 32, 34, 40, 4, -33 }, // 0x4D 'M' + { 3578, 26, 34, 34, 4, -33 }, // 0x4E 'N' + { 3689, 33, 36, 37, 2, -34 }, // 0x4F 'O' + { 3838, 24, 34, 31, 4, -33 }, // 0x50 'P' + { 3940, 33, 38, 37, 2, -34 }, // 0x51 'Q' + { 4097, 26, 34, 33, 4, -33 }, // 0x52 'R' + { 4208, 27, 36, 31, 2, -34 }, // 0x53 'S' + { 4330, 26, 34, 30, 2, -33 }, // 0x54 'T' + { 4441, 26, 35, 34, 4, -33 }, // 0x55 'U' + { 4555, 29, 34, 30, 1, -33 }, // 0x56 'V' + { 4679, 42, 34, 44, 1, -33 }, // 0x57 'W' + { 4858, 29, 34, 31, 1, -33 }, // 0x58 'X' + { 4982, 30, 34, 32, 1, -33 }, // 0x59 'Y' + { 5110, 27, 34, 29, 1, -33 }, // 0x5A 'Z' + { 5225, 8, 44, 13, 3, -33 }, // 0x5B '[' + { 5269, 13, 35, 13, 0, -33 }, // 0x5C '\' + { 5326, 8, 44, 13, 1, -33 }, // 0x5D ']' + { 5370, 18, 18, 22, 2, -32 }, // 0x5E '^' + { 5411, 28, 2, 26, -1, 7 }, // 0x5F '_' + { 5418, 10, 7, 12, 1, -34 }, // 0x60 '`' + { 5427, 24, 27, 26, 1, -25 }, // 0x61 'a' + { 5508, 22, 35, 26, 3, -33 }, // 0x62 'b' + { 5605, 21, 27, 24, 1, -25 }, // 0x63 'c' + { 5676, 23, 35, 26, 1, -33 }, // 0x64 'd' + { 5777, 22, 27, 25, 1, -25 }, // 0x65 'e' + { 5852, 10, 34, 13, 1, -33 }, // 0x66 'f' + { 5895, 22, 36, 26, 1, -25 }, // 0x67 'g' + { 5994, 19, 34, 25, 3, -33 }, // 0x68 'h' + { 6075, 4, 34, 10, 3, -33 }, // 0x69 'i' + { 6092, 8, 44, 11, 0, -33 }, // 0x6A 'j' + { 6136, 21, 34, 24, 3, -33 }, // 0x6B 'k' + { 6226, 4, 34, 10, 3, -33 }, // 0x6C 'l' + { 6243, 32, 26, 38, 3, -25 }, // 0x6D 'm' + { 6347, 20, 26, 25, 3, -25 }, // 0x6E 'n' + { 6412, 23, 27, 25, 1, -25 }, // 0x6F 'o' + { 6490, 22, 35, 26, 3, -25 }, // 0x70 'p' + { 6587, 23, 35, 26, 1, -25 }, // 0x71 'q' + { 6688, 12, 26, 16, 3, -25 }, // 0x72 'r' + { 6727, 20, 27, 23, 1, -25 }, // 0x73 's' + { 6795, 10, 32, 13, 1, -30 }, // 0x74 't' + { 6835, 20, 26, 25, 3, -24 }, // 0x75 'u' + { 6900, 23, 25, 23, 0, -24 }, // 0x76 'v' + { 6972, 34, 25, 34, 0, -24 }, // 0x77 'w' + { 7079, 22, 25, 22, 0, -24 }, // 0x78 'x' + { 7148, 22, 35, 22, 0, -24 }, // 0x79 'y' + { 7245, 20, 25, 23, 1, -24 }, // 0x7A 'z' + { 7308, 11, 44, 16, 2, -33 }, // 0x7B '{' + { 7369, 3, 44, 12, 4, -33 }, // 0x7C '|' + { 7386, 11, 44, 16, 2, -33 }, // 0x7D '}' + { 7447, 19, 7, 24, 2, -19 } }; // 0x7E '~' + +const GFXfont FreeSans24pt7b PROGMEM = { + (uint8_t *)FreeSans24pt7bBitmaps, + (GFXglyph *)FreeSans24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h new file mode 100644 index 000000000..1f006a189 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h @@ -0,0 +1,201 @@ +const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, + 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, + 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, + 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, + 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, + 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, + 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, + 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, + 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, + 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, + 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, + 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, + 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, + 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, + 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, + 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, + 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, + 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, + 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, + 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, + 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, + 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, + 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, + 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, + 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, + 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, + 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, + 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, + 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, + 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, + 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, + 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, + 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, + 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, + 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, + 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, + 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, + 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, + 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, + 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, + 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, + 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, + 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, + 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, + 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, + 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, + 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, + 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, + 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, + 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, + 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, + 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, + 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, + 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, + 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, + 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, + 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, + 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, + 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, + 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, + 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, + 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, + 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, + 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, + 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, + 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, + 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, + 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, + 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, + 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, + 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, + 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, + 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, + 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, + 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, + 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, + 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 }; + +const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 2, 13, 6, 2, -12 }, // 0x21 '!' + { 4, 5, 4, 6, 1, -12 }, // 0x22 '"' + { 7, 10, 12, 10, 0, -11 }, // 0x23 '#' + { 22, 9, 16, 10, 1, -13 }, // 0x24 '$' + { 40, 16, 13, 16, 1, -12 }, // 0x25 '%' + { 66, 11, 13, 12, 1, -12 }, // 0x26 '&' + { 84, 2, 4, 4, 1, -12 }, // 0x27 ''' + { 85, 4, 17, 6, 1, -12 }, // 0x28 '(' + { 94, 4, 17, 6, 1, -12 }, // 0x29 ')' + { 103, 5, 5, 7, 1, -12 }, // 0x2A '*' + { 107, 6, 8, 11, 3, -7 }, // 0x2B '+' + { 113, 2, 4, 5, 2, 0 }, // 0x2C ',' + { 114, 4, 1, 6, 1, -4 }, // 0x2D '-' + { 115, 2, 1, 5, 1, 0 }, // 0x2E '.' + { 116, 5, 13, 5, 0, -12 }, // 0x2F '/' + { 125, 8, 13, 10, 1, -12 }, // 0x30 '0' + { 138, 4, 13, 10, 3, -12 }, // 0x31 '1' + { 145, 9, 13, 10, 1, -12 }, // 0x32 '2' + { 160, 8, 13, 10, 1, -12 }, // 0x33 '3' + { 173, 7, 13, 10, 2, -12 }, // 0x34 '4' + { 185, 9, 13, 10, 1, -12 }, // 0x35 '5' + { 200, 9, 13, 10, 1, -12 }, // 0x36 '6' + { 215, 8, 13, 10, 0, -12 }, // 0x37 '7' + { 228, 9, 13, 10, 1, -12 }, // 0x38 '8' + { 243, 8, 13, 10, 1, -12 }, // 0x39 '9' + { 256, 2, 10, 5, 1, -9 }, // 0x3A ':' + { 259, 3, 12, 5, 1, -8 }, // 0x3B ';' + { 264, 9, 9, 11, 1, -8 }, // 0x3C '<' + { 275, 9, 4, 11, 1, -5 }, // 0x3D '=' + { 280, 9, 9, 11, 1, -8 }, // 0x3E '>' + { 291, 9, 13, 10, 1, -12 }, // 0x3F '?' + { 306, 17, 16, 18, 1, -12 }, // 0x40 '@' + { 340, 12, 13, 12, 0, -12 }, // 0x41 'A' + { 360, 11, 13, 12, 1, -12 }, // 0x42 'B' + { 378, 11, 13, 13, 1, -12 }, // 0x43 'C' + { 396, 11, 13, 13, 1, -12 }, // 0x44 'D' + { 414, 9, 13, 11, 1, -12 }, // 0x45 'E' + { 429, 8, 13, 11, 1, -12 }, // 0x46 'F' + { 442, 12, 13, 14, 1, -12 }, // 0x47 'G' + { 462, 11, 13, 13, 1, -12 }, // 0x48 'H' + { 480, 2, 13, 5, 2, -12 }, // 0x49 'I' + { 484, 7, 13, 10, 1, -12 }, // 0x4A 'J' + { 496, 11, 13, 12, 1, -12 }, // 0x4B 'K' + { 514, 8, 13, 10, 1, -12 }, // 0x4C 'L' + { 527, 13, 13, 15, 1, -12 }, // 0x4D 'M' + { 549, 11, 13, 13, 1, -12 }, // 0x4E 'N' + { 567, 13, 13, 14, 1, -12 }, // 0x4F 'O' + { 589, 10, 13, 12, 1, -12 }, // 0x50 'P' + { 606, 13, 14, 14, 1, -12 }, // 0x51 'Q' + { 629, 12, 13, 13, 1, -12 }, // 0x52 'R' + { 649, 10, 13, 12, 1, -12 }, // 0x53 'S' + { 666, 9, 13, 11, 1, -12 }, // 0x54 'T' + { 681, 11, 13, 13, 1, -12 }, // 0x55 'U' + { 699, 11, 13, 12, 0, -12 }, // 0x56 'V' + { 717, 17, 13, 17, 0, -12 }, // 0x57 'W' + { 745, 12, 13, 12, 0, -12 }, // 0x58 'X' + { 765, 12, 13, 12, 0, -12 }, // 0x59 'Y' + { 785, 10, 13, 11, 1, -12 }, // 0x5A 'Z' + { 802, 3, 17, 5, 1, -12 }, // 0x5B '[' + { 809, 5, 13, 5, 0, -12 }, // 0x5C '\' + { 818, 3, 17, 5, 0, -12 }, // 0x5D ']' + { 825, 7, 7, 8, 1, -12 }, // 0x5E '^' + { 832, 10, 1, 10, 0, 3 }, // 0x5F '_' + { 834, 4, 3, 5, 0, -12 }, // 0x60 '`' + { 836, 9, 10, 10, 1, -9 }, // 0x61 'a' + { 848, 9, 13, 10, 1, -12 }, // 0x62 'b' + { 863, 8, 10, 9, 1, -9 }, // 0x63 'c' + { 873, 8, 13, 10, 1, -12 }, // 0x64 'd' + { 886, 8, 10, 10, 1, -9 }, // 0x65 'e' + { 896, 4, 13, 5, 1, -12 }, // 0x66 'f' + { 903, 8, 14, 10, 1, -9 }, // 0x67 'g' + { 917, 8, 13, 10, 1, -12 }, // 0x68 'h' + { 930, 2, 13, 4, 1, -12 }, // 0x69 'i' + { 934, 4, 17, 4, 0, -12 }, // 0x6A 'j' + { 943, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 958, 2, 13, 4, 1, -12 }, // 0x6C 'l' + { 962, 13, 10, 15, 1, -9 }, // 0x6D 'm' + { 979, 8, 10, 10, 1, -9 }, // 0x6E 'n' + { 989, 8, 10, 10, 1, -9 }, // 0x6F 'o' + { 999, 9, 13, 10, 1, -9 }, // 0x70 'p' + { 1014, 8, 13, 10, 1, -9 }, // 0x71 'q' + { 1027, 5, 10, 6, 1, -9 }, // 0x72 'r' + { 1034, 8, 10, 9, 1, -9 }, // 0x73 's' + { 1044, 4, 12, 5, 1, -11 }, // 0x74 't' + { 1050, 8, 10, 10, 1, -9 }, // 0x75 'u' + { 1060, 9, 10, 9, 0, -9 }, // 0x76 'v' + { 1072, 13, 10, 13, 0, -9 }, // 0x77 'w' + { 1089, 8, 10, 9, 0, -9 }, // 0x78 'x' + { 1099, 9, 14, 9, 0, -9 }, // 0x79 'y' + { 1115, 7, 10, 9, 1, -9 }, // 0x7A 'z' + { 1124, 4, 17, 6, 1, -12 }, // 0x7B '{' + { 1133, 2, 17, 4, 2, -12 }, // 0x7C '|' + { 1138, 4, 17, 6, 1, -12 }, // 0x7D '}' + { 1147, 7, 3, 9, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSans9pt7b PROGMEM = { + (uint8_t *)FreeSans9pt7bBitmaps, + (GFXglyph *)FreeSans9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1822 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h new file mode 100644 index 000000000..e0922be27 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h @@ -0,0 +1,288 @@ +const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, + 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, + 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, + 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, + 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, + 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, + 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, + 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, + 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, + 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, + 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, + 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, + 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, + 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, + 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, + 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, + 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, + 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, + 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, + 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, + 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, + 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, + 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, + 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, + 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, + 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, + 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, + 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, + 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, + 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, + 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, + 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, + 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, + 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, + 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, + 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, + 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, + 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, + 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, + 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, + 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, + 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, + 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, + 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, + 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, + 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, + 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, + 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, + 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, + 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, + 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, + 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, + 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, + 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, + 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, + 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, + 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, + 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, + 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, + 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, + 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, + 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, + 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, + 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, + 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, + 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, + 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, + 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, + 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, + 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, + 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, + 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, + 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, + 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, + 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, + 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, + 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, + 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, + 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, + 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, + 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, + 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, + 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, + 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, + 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, + 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, + 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, + 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, + 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, + 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, + 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, + 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, + 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, + 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, + 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, + 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, + 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, + 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, + 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, + 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, + 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, + 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, + 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, + 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, + 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, + 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, + 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, + 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, + 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, + 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, + 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, + 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, + 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, + 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, + 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, + 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, + 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, + 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, + 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, + 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, + 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, + 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, + 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, + 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, + 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, + 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, + 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, + 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, + 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, + 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, + 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, + 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, + 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, + 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, + 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, + 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, + 0x01, 0xE0 }; + +const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 4, 17, 8, 3, -16 }, // 0x21 '!' + { 9, 10, 6, 11, 1, -17 }, // 0x22 '"' + { 17, 13, 16, 13, 0, -15 }, // 0x23 '#' + { 43, 13, 20, 13, 0, -17 }, // 0x24 '$' + { 76, 19, 17, 21, 1, -16 }, // 0x25 '%' + { 117, 16, 17, 17, 1, -16 }, // 0x26 '&' + { 151, 4, 6, 6, 1, -17 }, // 0x27 ''' + { 154, 6, 22, 8, 1, -17 }, // 0x28 '(' + { 171, 6, 22, 8, 1, -17 }, // 0x29 ')' + { 188, 7, 8, 9, 1, -17 }, // 0x2A '*' + { 195, 11, 11, 14, 2, -10 }, // 0x2B '+' + { 211, 4, 7, 6, 1, -2 }, // 0x2C ',' + { 215, 6, 3, 8, 1, -7 }, // 0x2D '-' + { 218, 4, 3, 6, 1, -2 }, // 0x2E '.' + { 220, 6, 17, 7, 0, -16 }, // 0x2F '/' + { 233, 12, 17, 13, 1, -16 }, // 0x30 '0' + { 259, 7, 17, 14, 3, -16 }, // 0x31 '1' + { 274, 12, 17, 13, 1, -16 }, // 0x32 '2' + { 300, 12, 17, 13, 1, -16 }, // 0x33 '3' + { 326, 11, 17, 13, 1, -16 }, // 0x34 '4' + { 350, 12, 17, 13, 1, -16 }, // 0x35 '5' + { 376, 12, 17, 13, 1, -16 }, // 0x36 '6' + { 402, 11, 17, 13, 1, -16 }, // 0x37 '7' + { 426, 12, 17, 13, 1, -16 }, // 0x38 '8' + { 452, 12, 17, 13, 1, -16 }, // 0x39 '9' + { 478, 4, 12, 6, 1, -11 }, // 0x3A ':' + { 484, 4, 16, 6, 1, -11 }, // 0x3B ';' + { 492, 12, 12, 14, 1, -11 }, // 0x3C '<' + { 510, 12, 9, 14, 1, -9 }, // 0x3D '=' + { 524, 12, 12, 14, 1, -11 }, // 0x3E '>' + { 542, 12, 18, 15, 2, -17 }, // 0x3F '?' + { 569, 21, 21, 23, 1, -17 }, // 0x40 '@' + { 625, 16, 18, 17, 0, -17 }, // 0x41 'A' + { 661, 14, 18, 17, 2, -17 }, // 0x42 'B' + { 693, 16, 18, 17, 1, -17 }, // 0x43 'C' + { 729, 15, 18, 17, 2, -17 }, // 0x44 'D' + { 763, 13, 18, 16, 2, -17 }, // 0x45 'E' + { 793, 12, 18, 15, 2, -17 }, // 0x46 'F' + { 820, 16, 18, 18, 1, -17 }, // 0x47 'G' + { 856, 14, 18, 18, 2, -17 }, // 0x48 'H' + { 888, 4, 18, 7, 2, -17 }, // 0x49 'I' + { 897, 11, 18, 14, 1, -17 }, // 0x4A 'J' + { 922, 16, 18, 17, 2, -17 }, // 0x4B 'K' + { 958, 11, 18, 15, 2, -17 }, // 0x4C 'L' + { 983, 17, 18, 21, 2, -17 }, // 0x4D 'M' + { 1022, 15, 18, 18, 2, -17 }, // 0x4E 'N' + { 1056, 17, 18, 19, 1, -17 }, // 0x4F 'O' + { 1095, 14, 18, 16, 2, -17 }, // 0x50 'P' + { 1127, 17, 19, 19, 1, -17 }, // 0x51 'Q' + { 1168, 16, 18, 17, 2, -17 }, // 0x52 'R' + { 1204, 15, 18, 16, 1, -17 }, // 0x53 'S' + { 1238, 12, 18, 15, 2, -17 }, // 0x54 'T' + { 1265, 14, 18, 18, 2, -17 }, // 0x55 'U' + { 1297, 15, 18, 16, 0, -17 }, // 0x56 'V' + { 1331, 23, 18, 23, 0, -17 }, // 0x57 'W' + { 1383, 15, 18, 16, 1, -17 }, // 0x58 'X' + { 1417, 16, 18, 15, 0, -17 }, // 0x59 'Y' + { 1453, 13, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1483, 6, 23, 8, 2, -17 }, // 0x5B '[' + { 1501, 7, 17, 7, 0, -16 }, // 0x5C '\' + { 1516, 6, 23, 8, 0, -17 }, // 0x5D ']' + { 1534, 12, 11, 14, 1, -16 }, // 0x5E '^' + { 1551, 15, 2, 13, -1, 4 }, // 0x5F '_' + { 1555, 4, 3, 6, 0, -17 }, // 0x60 '`' + { 1557, 13, 13, 14, 1, -12 }, // 0x61 'a' + { 1579, 13, 18, 15, 2, -17 }, // 0x62 'b' + { 1609, 12, 13, 13, 1, -12 }, // 0x63 'c' + { 1629, 13, 18, 15, 1, -17 }, // 0x64 'd' + { 1659, 13, 13, 14, 1, -12 }, // 0x65 'e' + { 1681, 7, 18, 8, 1, -17 }, // 0x66 'f' + { 1697, 13, 18, 15, 1, -12 }, // 0x67 'g' + { 1727, 12, 18, 14, 2, -17 }, // 0x68 'h' + { 1754, 4, 18, 7, 2, -17 }, // 0x69 'i' + { 1763, 6, 23, 7, 0, -17 }, // 0x6A 'j' + { 1781, 12, 18, 14, 2, -17 }, // 0x6B 'k' + { 1808, 4, 18, 6, 2, -17 }, // 0x6C 'l' + { 1817, 19, 13, 21, 2, -12 }, // 0x6D 'm' + { 1848, 12, 13, 15, 2, -12 }, // 0x6E 'n' + { 1868, 13, 13, 15, 1, -12 }, // 0x6F 'o' + { 1890, 13, 18, 15, 2, -12 }, // 0x70 'p' + { 1920, 13, 18, 15, 1, -12 }, // 0x71 'q' + { 1950, 8, 13, 9, 2, -12 }, // 0x72 'r' + { 1963, 12, 13, 13, 1, -12 }, // 0x73 's' + { 1983, 6, 15, 8, 1, -14 }, // 0x74 't' + { 1995, 12, 13, 15, 2, -12 }, // 0x75 'u' + { 2015, 13, 13, 13, 0, -12 }, // 0x76 'v' + { 2037, 18, 13, 19, 0, -12 }, // 0x77 'w' + { 2067, 13, 13, 13, 0, -12 }, // 0x78 'x' + { 2089, 13, 18, 13, 0, -12 }, // 0x79 'y' + { 2119, 10, 13, 12, 1, -12 }, // 0x7A 'z' + { 2136, 6, 23, 9, 1, -17 }, // 0x7B '{' + { 2154, 2, 22, 7, 2, -17 }, // 0x7C '|' + { 2160, 6, 23, 9, 3, -17 }, // 0x7D '}' + { 2178, 12, 5, 12, 0, -7 } }; // 0x7E '~' + +const GFXfont FreeSansBold12pt7b PROGMEM = { + (uint8_t *)FreeSansBold12pt7bBitmaps, + (GFXglyph *)FreeSansBold12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2858 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h new file mode 100644 index 000000000..d5927cde4 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h @@ -0,0 +1,481 @@ +const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, + 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, + 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, + 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, + 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, + 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, + 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, + 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, + 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, + 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, + 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, + 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, + 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, + 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, + 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, + 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, + 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, + 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, + 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, + 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, + 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, + 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, + 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, + 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, + 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, + 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, + 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, + 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, + 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, + 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, + 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, + 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, + 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, + 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, + 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, + 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, + 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, + 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, + 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, + 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, + 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, + 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, + 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, + 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, + 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, + 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, + 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, + 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, + 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, + 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, + 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, + 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, + 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, + 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, + 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, + 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, + 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, + 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, + 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, + 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, + 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, + 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, + 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, + 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, + 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, + 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, + 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, + 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, + 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, + 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, + 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, + 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, + 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, + 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, + 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, + 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, + 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, + 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, + 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, + 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, + 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, + 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, + 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, + 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, + 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, + 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, + 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, + 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, + 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, + 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, + 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, + 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, + 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, + 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, + 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, + 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, + 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, + 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, + 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, + 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, + 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, + 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, + 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, + 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, + 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, + 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, + 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, + 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, + 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, + 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, + 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, + 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, + 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, + 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, + 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, + 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, + 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, + 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, + 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, + 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, + 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, + 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, + 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, + 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, + 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, + 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, + 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, + 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, + 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, + 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, + 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, + 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, + 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, + 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, + 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, + 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, + 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, + 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, + 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, + 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, + 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, + 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, + 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, + 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, + 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, + 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, + 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, + 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, + 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, + 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, + 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, + 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, + 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, + 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, + 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, + 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, + 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, + 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, + 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, + 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, + 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, + 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, + 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, + 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, + 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, + 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, + 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, + 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, + 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, + 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, + 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, + 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, + 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, + 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, + 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, + 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, + 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, + 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, + 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, + 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, + 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, + 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, + 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, + 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, + 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, + 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, + 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, + 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, + 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, + 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, + 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, + 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, + 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, + 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, + 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, + 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, + 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, + 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, + 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, + 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, + 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, + 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, + 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, + 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, + 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, + 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, + 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, + 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, + 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, + 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, + 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, + 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, + 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, + 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, + 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, + 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, + 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, + 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, + 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, + 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, + 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, + 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, + 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, + 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, + 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, + 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, + 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, + 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, + 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, + 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, + 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, + 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, + 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, + 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, + 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, + 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, + 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, + 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, + 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, + 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, + 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, + 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, + 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, + 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, + 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, + 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, + 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, + 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, + 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, + 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, + 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, + 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, + 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, + 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, + 0xC0, 0x0F, 0x00 }; + +const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 5, 25, 12, 4, -24 }, // 0x21 '!' + { 16, 13, 9, 17, 2, -25 }, // 0x22 '"' + { 31, 20, 24, 19, 0, -23 }, // 0x23 '#' + { 91, 19, 29, 19, 0, -25 }, // 0x24 '$' + { 160, 29, 25, 31, 1, -24 }, // 0x25 '%' + { 251, 22, 25, 25, 2, -24 }, // 0x26 '&' + { 320, 5, 9, 9, 2, -25 }, // 0x27 ''' + { 326, 9, 33, 12, 1, -25 }, // 0x28 '(' + { 364, 9, 33, 12, 1, -25 }, // 0x29 ')' + { 402, 12, 11, 14, 0, -25 }, // 0x2A '*' + { 419, 16, 16, 20, 2, -15 }, // 0x2B '+' + { 451, 5, 11, 9, 2, -4 }, // 0x2C ',' + { 458, 9, 4, 12, 1, -10 }, // 0x2D '-' + { 463, 5, 5, 9, 2, -4 }, // 0x2E '.' + { 467, 9, 25, 10, 0, -24 }, // 0x2F '/' + { 496, 17, 25, 19, 1, -24 }, // 0x30 '0' + { 550, 10, 25, 19, 3, -24 }, // 0x31 '1' + { 582, 17, 25, 19, 1, -24 }, // 0x32 '2' + { 636, 17, 25, 19, 1, -24 }, // 0x33 '3' + { 690, 16, 25, 19, 2, -24 }, // 0x34 '4' + { 740, 17, 25, 19, 1, -24 }, // 0x35 '5' + { 794, 18, 25, 19, 1, -24 }, // 0x36 '6' + { 851, 17, 25, 19, 1, -24 }, // 0x37 '7' + { 905, 17, 25, 19, 1, -24 }, // 0x38 '8' + { 959, 17, 25, 19, 1, -24 }, // 0x39 '9' + { 1013, 5, 18, 9, 2, -17 }, // 0x3A ':' + { 1025, 5, 24, 9, 2, -17 }, // 0x3B ';' + { 1040, 18, 17, 20, 1, -16 }, // 0x3C '<' + { 1079, 17, 12, 20, 2, -13 }, // 0x3D '=' + { 1105, 18, 17, 20, 1, -16 }, // 0x3E '>' + { 1144, 18, 26, 21, 2, -25 }, // 0x3F '?' + { 1203, 32, 31, 34, 1, -25 }, // 0x40 '@' + { 1327, 24, 26, 24, 0, -25 }, // 0x41 'A' + { 1405, 20, 26, 25, 3, -25 }, // 0x42 'B' + { 1470, 23, 26, 25, 1, -25 }, // 0x43 'C' + { 1545, 21, 26, 25, 3, -25 }, // 0x44 'D' + { 1614, 19, 26, 23, 3, -25 }, // 0x45 'E' + { 1676, 17, 26, 22, 3, -25 }, // 0x46 'F' + { 1732, 24, 26, 27, 1, -25 }, // 0x47 'G' + { 1810, 20, 26, 26, 3, -25 }, // 0x48 'H' + { 1875, 5, 26, 11, 3, -25 }, // 0x49 'I' + { 1892, 16, 26, 20, 1, -25 }, // 0x4A 'J' + { 1944, 22, 26, 25, 3, -25 }, // 0x4B 'K' + { 2016, 17, 26, 22, 3, -25 }, // 0x4C 'L' + { 2072, 24, 26, 30, 3, -25 }, // 0x4D 'M' + { 2150, 20, 26, 26, 3, -25 }, // 0x4E 'N' + { 2215, 25, 26, 27, 1, -25 }, // 0x4F 'O' + { 2297, 19, 26, 24, 3, -25 }, // 0x50 'P' + { 2359, 25, 27, 27, 1, -25 }, // 0x51 'Q' + { 2444, 21, 26, 25, 3, -25 }, // 0x52 'R' + { 2513, 20, 26, 24, 2, -25 }, // 0x53 'S' + { 2578, 19, 26, 23, 2, -25 }, // 0x54 'T' + { 2640, 20, 26, 26, 3, -25 }, // 0x55 'U' + { 2705, 22, 26, 23, 1, -25 }, // 0x56 'V' + { 2777, 32, 26, 34, 1, -25 }, // 0x57 'W' + { 2881, 22, 26, 24, 1, -25 }, // 0x58 'X' + { 2953, 21, 26, 22, 1, -25 }, // 0x59 'Y' + { 3022, 19, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3084, 8, 33, 12, 2, -25 }, // 0x5B '[' + { 3117, 10, 25, 10, 0, -24 }, // 0x5C '\' + { 3149, 8, 33, 12, 1, -25 }, // 0x5D ']' + { 3182, 16, 15, 20, 2, -23 }, // 0x5E '^' + { 3212, 21, 3, 19, -1, 5 }, // 0x5F '_' + { 3220, 7, 5, 9, 1, -25 }, // 0x60 '`' + { 3225, 18, 19, 20, 1, -18 }, // 0x61 'a' + { 3268, 18, 26, 22, 2, -25 }, // 0x62 'b' + { 3327, 17, 19, 20, 1, -18 }, // 0x63 'c' + { 3368, 19, 26, 22, 1, -25 }, // 0x64 'd' + { 3430, 18, 19, 20, 1, -18 }, // 0x65 'e' + { 3473, 10, 26, 12, 1, -25 }, // 0x66 'f' + { 3506, 18, 26, 21, 1, -18 }, // 0x67 'g' + { 3565, 17, 26, 21, 2, -25 }, // 0x68 'h' + { 3621, 5, 26, 10, 2, -25 }, // 0x69 'i' + { 3638, 7, 33, 10, 0, -25 }, // 0x6A 'j' + { 3667, 17, 26, 20, 2, -25 }, // 0x6B 'k' + { 3723, 5, 26, 9, 2, -25 }, // 0x6C 'l' + { 3740, 27, 19, 31, 2, -18 }, // 0x6D 'm' + { 3805, 17, 19, 21, 2, -18 }, // 0x6E 'n' + { 3846, 19, 19, 21, 1, -18 }, // 0x6F 'o' + { 3892, 18, 26, 22, 2, -18 }, // 0x70 'p' + { 3951, 19, 26, 22, 1, -18 }, // 0x71 'q' + { 4013, 11, 19, 14, 2, -18 }, // 0x72 'r' + { 4040, 17, 19, 19, 1, -18 }, // 0x73 's' + { 4081, 9, 23, 12, 1, -22 }, // 0x74 't' + { 4107, 17, 19, 21, 2, -18 }, // 0x75 'u' + { 4148, 19, 19, 19, 0, -18 }, // 0x76 'v' + { 4194, 27, 19, 27, 0, -18 }, // 0x77 'w' + { 4259, 18, 19, 19, 1, -18 }, // 0x78 'x' + { 4302, 19, 26, 19, 0, -18 }, // 0x79 'y' + { 4364, 16, 19, 18, 1, -18 }, // 0x7A 'z' + { 4402, 9, 33, 14, 1, -25 }, // 0x7B '{' + { 4440, 3, 33, 10, 4, -25 }, // 0x7C '|' + { 4453, 9, 33, 14, 3, -25 }, // 0x7D '}' + { 4491, 15, 6, 18, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSansBold18pt7b PROGMEM = { + (uint8_t *)FreeSansBold18pt7bBitmaps, + (GFXglyph *)FreeSansBold18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5175 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h new file mode 100644 index 000000000..aadc9a1dc --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h @@ -0,0 +1,784 @@ +const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, + 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, + 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, + 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, + 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, + 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, + 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, + 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, + 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, + 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, + 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, + 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, + 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, + 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, + 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, + 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, + 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, + 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, + 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, + 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, + 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, + 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, + 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, + 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, + 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, + 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, + 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, + 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, + 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, + 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, + 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, + 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, + 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, + 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, + 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, + 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, + 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, + 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, + 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, + 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, + 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, + 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, + 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, + 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, + 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, + 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, + 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, + 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, + 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, + 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, + 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, + 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, + 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, + 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, + 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, + 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, + 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, + 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, + 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, + 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, + 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, + 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, + 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, + 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, + 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, + 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, + 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, + 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, + 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, + 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, + 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, + 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, + 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, + 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, + 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, + 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, + 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, + 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, + 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, + 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, + 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, + 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, + 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, + 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, + 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, + 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, + 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, + 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, + 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, + 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, + 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, + 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, + 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, + 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, + 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, + 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, + 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, + 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, + 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, + 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, + 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, + 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, + 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, + 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, + 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, + 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, + 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, + 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, + 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, + 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, + 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, + 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, + 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, + 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, + 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, + 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, + 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, + 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, + 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, + 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, + 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, + 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, + 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, + 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, + 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, + 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, + 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, + 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, + 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, + 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, + 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, + 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, + 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, + 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, + 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, + 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, + 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, + 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, + 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, + 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, + 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, + 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, + 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, + 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, + 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, + 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, + 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, + 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, + 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, + 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, + 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, + 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, + 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, + 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, + 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, + 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, + 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, + 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, + 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, + 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, + 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, + 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, + 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, + 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, + 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, + 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, + 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, + 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, + 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, + 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, + 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, + 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, + 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, + 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, + 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, + 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, + 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, + 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, + 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, + 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, + 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, + 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, + 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, + 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, + 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, + 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, + 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, + 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, + 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, + 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, + 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, + 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, + 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, + 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, + 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, + 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, + 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, + 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, + 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, + 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, + 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, + 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, + 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, + 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, + 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, + 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, + 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, + 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, + 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, + 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, + 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, + 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, + 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, + 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, + 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, + 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, + 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, + 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, + 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, + 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, + 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, + 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, + 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, + 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, + 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, + 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, + 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, + 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, + 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, + 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, + 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, + 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, + 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, + 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, + 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, + 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, + 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, + 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, + 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, + 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, + 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, + 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, + 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, + 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, + 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, + 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, + 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, + 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, + 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, + 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, + 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, + 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, + 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, + 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, + 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, + 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, + 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, + 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, + 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, + 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, + 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, + 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, + 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, + 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, + 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, + 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, + 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, + 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, + 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, + 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, + 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, + 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, + 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, + 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, + 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, + 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, + 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, + 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, + 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, + 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, + 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, + 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, + 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, + 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, + 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, + 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, + 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, + 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, + 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, + 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, + 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, + 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, + 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, + 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, + 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, + 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, + 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, + 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, + 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, + 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, + 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, + 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, + 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, + 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, + 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, + 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, + 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, + 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, + 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, + 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, + 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, + 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, + 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, + 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, + 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, + 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, + 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, + 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, + 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, + 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, + 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, + 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, + 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, + 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, + 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, + 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, + 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, + 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, + 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, + 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, + 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, + 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, + 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, + 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, + 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, + 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, + 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, + 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, + 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, + 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, + 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, + 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, + 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, + 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, + 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, + 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, + 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, + 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, + 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, + 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, + 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, + 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, + 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, + 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, + 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, + 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, + 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, + 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, + 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, + 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, + 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, + 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, + 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, + 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, + 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, + 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, + 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, + 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8 }; + +const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 7, 34, 16, 5, -33 }, // 0x21 '!' + { 30, 18, 12, 22, 2, -33 }, // 0x22 '"' + { 57, 26, 33, 26, 0, -31 }, // 0x23 '#' + { 165, 25, 40, 26, 1, -34 }, // 0x24 '$' + { 290, 39, 34, 42, 1, -32 }, // 0x25 '%' + { 456, 30, 35, 34, 3, -33 }, // 0x26 '&' + { 588, 7, 12, 12, 3, -33 }, // 0x27 ''' + { 599, 13, 44, 16, 2, -33 }, // 0x28 '(' + { 671, 13, 44, 16, 1, -33 }, // 0x29 ')' + { 743, 15, 15, 18, 1, -33 }, // 0x2A '*' + { 772, 23, 22, 27, 2, -21 }, // 0x2B '+' + { 836, 7, 15, 12, 2, -6 }, // 0x2C ',' + { 850, 13, 6, 16, 1, -15 }, // 0x2D '-' + { 860, 7, 7, 12, 2, -6 }, // 0x2E '.' + { 867, 13, 34, 13, 0, -32 }, // 0x2F '/' + { 923, 24, 35, 26, 1, -33 }, // 0x30 '0' + { 1028, 14, 33, 26, 4, -32 }, // 0x31 '1' + { 1086, 23, 34, 26, 2, -33 }, // 0x32 '2' + { 1184, 23, 35, 26, 2, -33 }, // 0x33 '3' + { 1285, 22, 33, 26, 2, -32 }, // 0x34 '4' + { 1376, 23, 34, 26, 2, -32 }, // 0x35 '5' + { 1474, 23, 35, 26, 2, -33 }, // 0x36 '6' + { 1575, 23, 33, 26, 1, -32 }, // 0x37 '7' + { 1670, 24, 35, 26, 1, -33 }, // 0x38 '8' + { 1775, 24, 35, 26, 1, -33 }, // 0x39 '9' + { 1880, 7, 25, 12, 2, -24 }, // 0x3A ':' + { 1902, 7, 33, 12, 2, -24 }, // 0x3B ';' + { 1931, 23, 23, 27, 2, -22 }, // 0x3C '<' + { 1998, 23, 18, 27, 2, -19 }, // 0x3D '=' + { 2050, 23, 23, 27, 2, -22 }, // 0x3E '>' + { 2117, 24, 35, 29, 3, -34 }, // 0x3F '?' + { 2222, 43, 41, 46, 1, -34 }, // 0x40 '@' + { 2443, 32, 34, 33, 0, -33 }, // 0x41 'A' + { 2579, 27, 34, 33, 4, -33 }, // 0x42 'B' + { 2694, 30, 36, 34, 2, -34 }, // 0x43 'C' + { 2829, 28, 34, 34, 4, -33 }, // 0x44 'D' + { 2948, 25, 34, 31, 4, -33 }, // 0x45 'E' + { 3055, 24, 34, 30, 4, -33 }, // 0x46 'F' + { 3157, 31, 36, 36, 2, -34 }, // 0x47 'G' + { 3297, 27, 34, 35, 4, -33 }, // 0x48 'H' + { 3412, 7, 34, 15, 4, -33 }, // 0x49 'I' + { 3442, 22, 35, 27, 1, -33 }, // 0x4A 'J' + { 3539, 30, 34, 34, 4, -33 }, // 0x4B 'K' + { 3667, 23, 34, 29, 4, -33 }, // 0x4C 'L' + { 3765, 33, 34, 41, 4, -33 }, // 0x4D 'M' + { 3906, 28, 34, 35, 4, -33 }, // 0x4E 'N' + { 4025, 33, 36, 37, 2, -34 }, // 0x4F 'O' + { 4174, 26, 34, 32, 4, -33 }, // 0x50 'P' + { 4285, 33, 37, 37, 2, -34 }, // 0x51 'Q' + { 4438, 28, 34, 34, 4, -33 }, // 0x52 'R' + { 4557, 28, 36, 32, 2, -34 }, // 0x53 'S' + { 4683, 27, 34, 30, 2, -33 }, // 0x54 'T' + { 4798, 27, 35, 35, 4, -33 }, // 0x55 'U' + { 4917, 29, 34, 31, 1, -33 }, // 0x56 'V' + { 5041, 43, 34, 45, 1, -33 }, // 0x57 'W' + { 5224, 30, 34, 32, 1, -33 }, // 0x58 'X' + { 5352, 29, 34, 30, 1, -33 }, // 0x59 'Y' + { 5476, 26, 34, 29, 1, -33 }, // 0x5A 'Z' + { 5587, 11, 43, 16, 3, -33 }, // 0x5B '[' + { 5647, 14, 34, 13, -1, -32 }, // 0x5C '\' + { 5707, 11, 43, 16, 1, -33 }, // 0x5D ']' + { 5767, 22, 20, 27, 3, -32 }, // 0x5E '^' + { 5822, 28, 4, 26, -1, 6 }, // 0x5F '_' + { 5836, 9, 7, 12, 1, -35 }, // 0x60 '`' + { 5844, 24, 26, 27, 2, -24 }, // 0x61 'a' + { 5922, 25, 35, 29, 3, -33 }, // 0x62 'b' + { 6032, 23, 26, 26, 2, -24 }, // 0x63 'c' + { 6107, 25, 35, 29, 2, -33 }, // 0x64 'd' + { 6217, 24, 26, 27, 2, -24 }, // 0x65 'e' + { 6295, 14, 34, 16, 1, -33 }, // 0x66 'f' + { 6355, 24, 36, 29, 2, -24 }, // 0x67 'g' + { 6463, 23, 34, 28, 3, -33 }, // 0x68 'h' + { 6561, 7, 34, 13, 3, -33 }, // 0x69 'i' + { 6591, 10, 45, 13, 0, -33 }, // 0x6A 'j' + { 6648, 23, 34, 27, 3, -33 }, // 0x6B 'k' + { 6746, 7, 34, 13, 3, -33 }, // 0x6C 'l' + { 6776, 36, 25, 42, 3, -24 }, // 0x6D 'm' + { 6889, 23, 25, 29, 3, -24 }, // 0x6E 'n' + { 6961, 25, 26, 29, 2, -24 }, // 0x6F 'o' + { 7043, 25, 36, 29, 3, -24 }, // 0x70 'p' + { 7156, 25, 36, 29, 2, -24 }, // 0x71 'q' + { 7269, 15, 25, 18, 3, -24 }, // 0x72 'r' + { 7316, 24, 26, 26, 1, -24 }, // 0x73 's' + { 7394, 12, 32, 16, 2, -30 }, // 0x74 't' + { 7442, 23, 26, 29, 3, -24 }, // 0x75 'u' + { 7517, 25, 25, 25, 0, -24 }, // 0x76 'v' + { 7596, 35, 25, 37, 1, -24 }, // 0x77 'w' + { 7706, 24, 25, 26, 1, -24 }, // 0x78 'x' + { 7781, 25, 36, 26, 0, -24 }, // 0x79 'y' + { 7894, 21, 25, 24, 1, -24 }, // 0x7A 'z' + { 7960, 13, 43, 18, 2, -33 }, // 0x7B '{' + { 8030, 4, 44, 13, 5, -33 }, // 0x7C '|' + { 8052, 13, 43, 18, 3, -33 }, // 0x7D '}' + { 8122, 21, 8, 23, 1, -14 } }; // 0x7E '~' + +const GFXfont FreeSansBold24pt7b PROGMEM = { + (uint8_t *)FreeSansBold24pt7bBitmaps, + (GFXglyph *)FreeSansBold24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8815 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h new file mode 100644 index 000000000..aeea463e7 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h @@ -0,0 +1,208 @@ +const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, + 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, + 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, + 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, + 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, + 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, + 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, + 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, + 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, + 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, + 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, + 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, + 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, + 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, + 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, + 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, + 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, + 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, + 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, + 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, + 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, + 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, + 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, + 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, + 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, + 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, + 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, + 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, + 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, + 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, + 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, + 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, + 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, + 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, + 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, + 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, + 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, + 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, + 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, + 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, + 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, + 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, + 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, + 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, + 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, + 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, + 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, + 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, + 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, + 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, + 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, + 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, + 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, + 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, + 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, + 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, + 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, + 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, + 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, + 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, + 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, + 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, + 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, + 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, + 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, + 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, + 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, + 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, + 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, + 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, + 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, + 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, + 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, + 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, + 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, + 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, + 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, + 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, + 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, + 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, + 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, + 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, + 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, + 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, + 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, + 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, + 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, + 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, + 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, + 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, + 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, + 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E }; + +const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 3, 13, 6, 2, -12 }, // 0x21 '!' + { 5, 7, 5, 9, 1, -12 }, // 0x22 '"' + { 10, 10, 12, 10, 0, -11 }, // 0x23 '#' + { 25, 9, 15, 10, 1, -13 }, // 0x24 '$' + { 42, 16, 13, 16, 0, -12 }, // 0x25 '%' + { 68, 12, 13, 13, 1, -12 }, // 0x26 '&' + { 88, 3, 5, 5, 1, -12 }, // 0x27 ''' + { 90, 6, 17, 6, 1, -12 }, // 0x28 '(' + { 103, 6, 17, 6, 0, -12 }, // 0x29 ')' + { 116, 5, 6, 7, 1, -12 }, // 0x2A '*' + { 120, 7, 8, 11, 2, -7 }, // 0x2B '+' + { 127, 3, 5, 4, 1, -1 }, // 0x2C ',' + { 129, 5, 2, 6, 0, -5 }, // 0x2D '-' + { 131, 3, 2, 4, 1, -1 }, // 0x2E '.' + { 132, 5, 13, 5, 0, -12 }, // 0x2F '/' + { 141, 9, 13, 10, 1, -12 }, // 0x30 '0' + { 156, 5, 13, 10, 2, -12 }, // 0x31 '1' + { 165, 9, 13, 10, 1, -12 }, // 0x32 '2' + { 180, 8, 13, 10, 1, -12 }, // 0x33 '3' + { 193, 8, 13, 10, 2, -12 }, // 0x34 '4' + { 206, 9, 13, 10, 1, -12 }, // 0x35 '5' + { 221, 9, 13, 10, 1, -12 }, // 0x36 '6' + { 236, 9, 13, 10, 0, -12 }, // 0x37 '7' + { 251, 10, 13, 10, 0, -12 }, // 0x38 '8' + { 268, 9, 13, 10, 1, -12 }, // 0x39 '9' + { 283, 3, 9, 4, 1, -8 }, // 0x3A ':' + { 287, 3, 12, 4, 1, -8 }, // 0x3B ';' + { 292, 9, 9, 11, 1, -8 }, // 0x3C '<' + { 303, 9, 6, 11, 1, -6 }, // 0x3D '=' + { 310, 9, 9, 11, 1, -8 }, // 0x3E '>' + { 321, 9, 13, 11, 1, -12 }, // 0x3F '?' + { 336, 16, 15, 18, 0, -12 }, // 0x40 '@' + { 366, 12, 13, 13, 0, -12 }, // 0x41 'A' + { 386, 11, 13, 13, 1, -12 }, // 0x42 'B' + { 404, 12, 13, 13, 1, -12 }, // 0x43 'C' + { 424, 12, 13, 13, 1, -12 }, // 0x44 'D' + { 444, 9, 13, 12, 1, -12 }, // 0x45 'E' + { 459, 9, 13, 11, 1, -12 }, // 0x46 'F' + { 474, 11, 13, 14, 1, -12 }, // 0x47 'G' + { 492, 11, 13, 13, 1, -12 }, // 0x48 'H' + { 510, 3, 13, 6, 1, -12 }, // 0x49 'I' + { 515, 8, 13, 10, 1, -12 }, // 0x4A 'J' + { 528, 12, 13, 13, 1, -12 }, // 0x4B 'K' + { 548, 8, 13, 11, 1, -12 }, // 0x4C 'L' + { 561, 14, 13, 16, 1, -12 }, // 0x4D 'M' + { 584, 11, 13, 14, 1, -12 }, // 0x4E 'N' + { 602, 13, 13, 14, 1, -12 }, // 0x4F 'O' + { 624, 11, 13, 12, 1, -12 }, // 0x50 'P' + { 642, 13, 14, 14, 1, -12 }, // 0x51 'Q' + { 665, 12, 13, 13, 1, -12 }, // 0x52 'R' + { 685, 11, 13, 12, 1, -12 }, // 0x53 'S' + { 703, 9, 13, 12, 2, -12 }, // 0x54 'T' + { 718, 11, 13, 13, 1, -12 }, // 0x55 'U' + { 736, 12, 13, 12, 0, -12 }, // 0x56 'V' + { 756, 17, 13, 17, 0, -12 }, // 0x57 'W' + { 784, 12, 13, 12, 0, -12 }, // 0x58 'X' + { 804, 11, 13, 12, 1, -12 }, // 0x59 'Y' + { 822, 9, 13, 11, 1, -12 }, // 0x5A 'Z' + { 837, 4, 17, 6, 1, -12 }, // 0x5B '[' + { 846, 5, 13, 5, 0, -12 }, // 0x5C '\' + { 855, 4, 17, 6, 0, -12 }, // 0x5D ']' + { 864, 8, 8, 11, 1, -12 }, // 0x5E '^' + { 872, 10, 1, 10, 0, 4 }, // 0x5F '_' + { 874, 3, 2, 5, 0, -12 }, // 0x60 '`' + { 875, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 888, 10, 13, 11, 1, -12 }, // 0x62 'b' + { 905, 9, 10, 10, 1, -9 }, // 0x63 'c' + { 917, 9, 13, 11, 1, -12 }, // 0x64 'd' + { 932, 9, 10, 10, 1, -9 }, // 0x65 'e' + { 944, 5, 13, 6, 1, -12 }, // 0x66 'f' + { 953, 9, 14, 11, 1, -9 }, // 0x67 'g' + { 969, 9, 13, 11, 1, -12 }, // 0x68 'h' + { 984, 3, 13, 5, 1, -12 }, // 0x69 'i' + { 989, 4, 17, 5, 0, -12 }, // 0x6A 'j' + { 998, 9, 13, 10, 1, -12 }, // 0x6B 'k' + { 1013, 3, 13, 5, 1, -12 }, // 0x6C 'l' + { 1018, 14, 10, 16, 1, -9 }, // 0x6D 'm' + { 1036, 9, 10, 11, 1, -9 }, // 0x6E 'n' + { 1048, 10, 10, 11, 1, -9 }, // 0x6F 'o' + { 1061, 10, 14, 11, 1, -9 }, // 0x70 'p' + { 1079, 9, 14, 11, 1, -9 }, // 0x71 'q' + { 1095, 6, 10, 7, 1, -9 }, // 0x72 'r' + { 1103, 9, 10, 10, 1, -9 }, // 0x73 's' + { 1115, 5, 12, 6, 1, -11 }, // 0x74 't' + { 1123, 9, 10, 11, 1, -9 }, // 0x75 'u' + { 1135, 10, 10, 10, 0, -9 }, // 0x76 'v' + { 1148, 14, 10, 14, 0, -9 }, // 0x77 'w' + { 1166, 10, 10, 10, 0, -9 }, // 0x78 'x' + { 1179, 10, 14, 10, 0, -9 }, // 0x79 'y' + { 1197, 8, 10, 9, 1, -9 }, // 0x7A 'z' + { 1207, 4, 17, 7, 1, -12 }, // 0x7B '{' + { 1216, 1, 17, 5, 2, -12 }, // 0x7C '|' + { 1219, 4, 17, 7, 2, -12 }, // 0x7D '}' + { 1228, 8, 2, 9, 0, -4 } }; // 0x7E '~' + +const GFXfont FreeSansBold9pt7b PROGMEM = { + (uint8_t *)FreeSansBold9pt7bBitmaps, + (GFXglyph *)FreeSansBold9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1902 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h new file mode 100644 index 000000000..fabbad3f4 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h @@ -0,0 +1,317 @@ +const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { + 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, + 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, + 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, + 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, + 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, + 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, + 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, + 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, + 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, + 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, + 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, + 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, + 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, + 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, + 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, + 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, + 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, + 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, + 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, + 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, + 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, + 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, + 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, + 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, + 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, + 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, + 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, + 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, + 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, + 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, + 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, + 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, + 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, + 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, + 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, + 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, + 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, + 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, + 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, + 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, + 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, + 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, + 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, + 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, + 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, + 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, + 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, + 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, + 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, + 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, + 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, + 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, + 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, + 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, + 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, + 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, + 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, + 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, + 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, + 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, + 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, + 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, + 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, + 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, + 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, + 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, + 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, + 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, + 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, + 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, + 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, + 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, + 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, + 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, + 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, + 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, + 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, + 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, + 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, + 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, + 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, + 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, + 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, + 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, + 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, + 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, + 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, + 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, + 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, + 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, + 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, + 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, + 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, + 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, + 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, + 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, + 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, + 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, + 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, + 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, + 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, + 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, + 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, + 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, + 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, + 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, + 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, + 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, + 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, + 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, + 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, + 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, + 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, + 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, + 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, + 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, + 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, + 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, + 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, + 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, + 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, + 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, + 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, + 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, + 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, + 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, + 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, + 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, + 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, + 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, + 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, + 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, + 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, + 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, + 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, + 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, + 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, + 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, + 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, + 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, + 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, + 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, + 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, + 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, + 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, + 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, + 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, + 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, + 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, + 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, + 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, + 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, + 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, + 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, + 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, + 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, + 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, + 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, + 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, + 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, + 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, + 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, + 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, + 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, + 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, + 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, + 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, + 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, + 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, + 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, + 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, + 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, + 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, + 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, + 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, + 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, + 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, + 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, + 0x7E, 0x01, 0xC0 }; + +const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 7, 17, 8, 3, -16 }, // 0x21 '!' + { 15, 10, 6, 11, 4, -17 }, // 0x22 '"' + { 23, 15, 16, 13, 1, -15 }, // 0x23 '#' + { 53, 15, 21, 13, 1, -17 }, // 0x24 '$' + { 93, 18, 18, 21, 3, -17 }, // 0x25 '%' + { 134, 15, 17, 17, 2, -16 }, // 0x26 '&' + { 166, 4, 6, 6, 4, -17 }, // 0x27 ''' + { 169, 9, 22, 8, 2, -17 }, // 0x28 '(' + { 194, 9, 22, 8, -1, -16 }, // 0x29 ')' + { 219, 8, 8, 9, 3, -17 }, // 0x2A '*' + { 227, 12, 11, 14, 2, -10 }, // 0x2B '+' + { 244, 5, 7, 7, 1, -2 }, // 0x2C ',' + { 249, 7, 3, 8, 2, -7 }, // 0x2D '-' + { 252, 4, 3, 7, 2, -2 }, // 0x2E '.' + { 254, 10, 17, 7, 0, -16 }, // 0x2F '/' + { 276, 13, 17, 13, 2, -16 }, // 0x30 '0' + { 304, 9, 17, 13, 4, -16 }, // 0x31 '1' + { 324, 15, 17, 13, 1, -16 }, // 0x32 '2' + { 356, 13, 17, 13, 2, -16 }, // 0x33 '3' + { 384, 13, 17, 13, 1, -16 }, // 0x34 '4' + { 412, 14, 17, 13, 1, -16 }, // 0x35 '5' + { 442, 13, 17, 13, 2, -16 }, // 0x36 '6' + { 470, 13, 17, 13, 3, -16 }, // 0x37 '7' + { 498, 14, 17, 13, 1, -16 }, // 0x38 '8' + { 528, 14, 17, 13, 2, -16 }, // 0x39 '9' + { 558, 6, 12, 8, 3, -11 }, // 0x3A ':' + { 567, 7, 16, 8, 2, -11 }, // 0x3B ';' + { 581, 13, 12, 14, 2, -11 }, // 0x3C '<' + { 601, 14, 9, 14, 1, -9 }, // 0x3D '=' + { 617, 13, 12, 14, 1, -10 }, // 0x3E '>' + { 637, 13, 18, 15, 4, -17 }, // 0x3F '?' + { 667, 22, 21, 23, 2, -17 }, // 0x40 '@' + { 725, 17, 18, 17, 0, -17 }, // 0x41 'A' + { 764, 17, 18, 17, 2, -17 }, // 0x42 'B' + { 803, 17, 18, 17, 3, -17 }, // 0x43 'C' + { 842, 17, 18, 17, 2, -17 }, // 0x44 'D' + { 881, 16, 18, 16, 2, -17 }, // 0x45 'E' + { 917, 16, 18, 15, 2, -17 }, // 0x46 'F' + { 953, 17, 18, 19, 3, -17 }, // 0x47 'G' + { 992, 17, 18, 17, 2, -17 }, // 0x48 'H' + { 1031, 7, 18, 7, 2, -17 }, // 0x49 'I' + { 1047, 14, 18, 13, 1, -17 }, // 0x4A 'J' + { 1079, 18, 18, 17, 2, -17 }, // 0x4B 'K' + { 1120, 13, 18, 15, 2, -17 }, // 0x4C 'L' + { 1150, 20, 18, 20, 2, -17 }, // 0x4D 'M' + { 1195, 18, 18, 17, 2, -17 }, // 0x4E 'N' + { 1236, 17, 18, 19, 3, -17 }, // 0x4F 'O' + { 1275, 16, 18, 16, 2, -17 }, // 0x50 'P' + { 1311, 17, 19, 19, 3, -17 }, // 0x51 'Q' + { 1352, 17, 18, 17, 2, -17 }, // 0x52 'R' + { 1391, 16, 18, 16, 2, -17 }, // 0x53 'S' + { 1427, 15, 18, 15, 3, -17 }, // 0x54 'T' + { 1461, 16, 18, 17, 3, -17 }, // 0x55 'U' + { 1497, 15, 18, 16, 4, -17 }, // 0x56 'V' + { 1531, 21, 18, 23, 4, -17 }, // 0x57 'W' + { 1579, 18, 18, 16, 1, -17 }, // 0x58 'X' + { 1620, 15, 18, 16, 4, -17 }, // 0x59 'Y' + { 1654, 17, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1693, 10, 23, 8, 1, -17 }, // 0x5B '[' + { 1722, 4, 23, 7, 3, -22 }, // 0x5C '\' + { 1734, 10, 23, 8, 0, -17 }, // 0x5D ']' + { 1763, 11, 11, 14, 3, -16 }, // 0x5E '^' + { 1779, 15, 2, 13, -2, 4 }, // 0x5F '_' + { 1783, 4, 3, 8, 4, -17 }, // 0x60 '`' + { 1785, 13, 13, 13, 1, -12 }, // 0x61 'a' + { 1807, 15, 18, 15, 1, -17 }, // 0x62 'b' + { 1841, 13, 13, 13, 2, -12 }, // 0x63 'c' + { 1863, 15, 18, 15, 2, -17 }, // 0x64 'd' + { 1897, 13, 13, 13, 2, -12 }, // 0x65 'e' + { 1919, 9, 18, 8, 2, -17 }, // 0x66 'f' + { 1940, 15, 18, 15, 1, -12 }, // 0x67 'g' + { 1974, 14, 18, 15, 2, -17 }, // 0x68 'h' + { 2006, 7, 18, 7, 2, -17 }, // 0x69 'i' + { 2022, 10, 23, 7, -1, -17 }, // 0x6A 'j' + { 2051, 15, 18, 13, 1, -17 }, // 0x6B 'k' + { 2085, 7, 18, 7, 2, -17 }, // 0x6C 'l' + { 2101, 21, 13, 21, 1, -12 }, // 0x6D 'm' + { 2136, 14, 13, 15, 2, -12 }, // 0x6E 'n' + { 2159, 14, 13, 15, 2, -12 }, // 0x6F 'o' + { 2182, 16, 18, 15, 0, -12 }, // 0x70 'p' + { 2218, 14, 18, 15, 2, -12 }, // 0x71 'q' + { 2250, 10, 13, 9, 2, -12 }, // 0x72 'r' + { 2267, 12, 13, 13, 3, -12 }, // 0x73 's' + { 2287, 8, 15, 8, 2, -14 }, // 0x74 't' + { 2302, 14, 13, 15, 2, -12 }, // 0x75 'u' + { 2325, 13, 13, 13, 3, -12 }, // 0x76 'v' + { 2347, 17, 13, 19, 3, -12 }, // 0x77 'w' + { 2375, 16, 13, 13, 0, -12 }, // 0x78 'x' + { 2401, 15, 18, 13, 1, -12 }, // 0x79 'y' + { 2435, 13, 13, 12, 1, -12 }, // 0x7A 'z' + { 2457, 9, 23, 9, 3, -17 }, // 0x7B '{' + { 2483, 6, 23, 7, 1, -17 }, // 0x7C '|' + { 2501, 9, 23, 9, 0, -17 }, // 0x7D '}' + { 2527, 12, 5, 14, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 3207 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h new file mode 100644 index 000000000..79c748c78 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h @@ -0,0 +1,545 @@ +const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { + 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, + 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, + 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, + 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, + 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, + 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, + 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, + 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, + 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, + 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, + 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, + 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, + 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, + 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, + 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, + 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, + 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, + 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, + 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, + 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, + 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, + 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, + 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, + 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, + 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, + 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, + 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, + 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, + 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, + 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, + 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, + 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, + 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, + 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, + 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, + 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, + 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, + 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, + 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, + 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, + 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, + 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, + 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, + 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, + 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, + 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, + 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, + 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, + 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, + 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, + 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, + 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, + 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, + 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, + 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, + 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, + 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, + 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, + 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, + 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, + 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, + 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, + 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, + 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, + 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, + 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, + 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, + 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, + 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, + 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, + 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, + 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, + 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, + 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, + 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, + 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, + 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, + 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, + 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, + 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, + 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, + 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, + 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, + 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, + 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, + 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, + 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, + 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, + 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, + 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, + 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, + 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, + 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, + 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, + 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, + 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, + 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, + 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, + 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, + 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, + 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, + 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, + 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, + 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, + 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, + 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, + 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, + 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, + 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, + 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, + 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, + 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, + 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, + 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, + 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, + 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, + 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, + 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, + 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, + 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, + 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, + 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, + 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, + 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, + 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, + 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, + 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, + 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, + 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, + 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, + 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, + 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, + 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, + 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, + 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, + 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, + 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, + 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, + 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, + 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, + 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, + 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, + 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, + 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, + 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, + 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, + 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, + 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, + 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, + 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, + 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, + 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, + 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, + 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, + 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, + 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, + 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, + 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, + 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, + 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, + 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, + 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, + 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, + 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, + 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, + 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, + 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, + 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, + 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, + 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, + 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, + 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, + 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, + 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, + 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, + 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, + 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, + 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, + 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, + 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, + 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, + 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, + 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, + 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, + 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, + 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, + 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, + 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, + 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, + 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, + 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, + 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, + 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, + 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, + 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, + 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, + 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, + 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, + 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, + 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, + 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, + 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, + 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, + 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, + 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, + 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, + 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, + 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, + 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, + 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, + 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, + 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, + 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, + 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, + 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, + 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, + 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, + 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, + 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, + 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, + 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, + 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, + 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, + 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, + 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, + 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, + 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, + 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, + 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, + 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, + 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, + 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, + 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, + 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, + 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, + 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, + 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, + 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, + 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, + 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, + 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, + 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, + 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, + 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, + 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, + 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, + 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, + 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, + 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, + 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, + 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, + 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, + 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, + 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, + 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, + 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, + 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, + 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, + 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, + 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, + 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, + 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, + 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, + 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, + 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, + 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, + 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, + 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, + 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, + 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, + 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, + 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, + 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, + 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, + 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, + 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, + 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, + 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, + 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, + 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, + 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, + 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, + 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, + 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, + 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, + 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, + 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, + 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, + 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, + 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, + 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, + 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, + 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, + 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, + 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, + 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, + 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, + 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, + 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, + 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, + 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, + 0xF0, 0x01, 0xE0 }; + +const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 10, 25, 12, 4, -24 }, // 0x21 '!' + { 32, 13, 9, 17, 6, -25 }, // 0x22 '"' + { 47, 22, 24, 19, 1, -23 }, // 0x23 '#' + { 113, 19, 31, 19, 2, -26 }, // 0x24 '$' + { 187, 26, 26, 31, 5, -25 }, // 0x25 '%' + { 272, 21, 25, 25, 3, -24 }, // 0x26 '&' + { 338, 5, 9, 8, 6, -25 }, // 0x27 ''' + { 344, 13, 33, 12, 3, -25 }, // 0x28 '(' + { 398, 13, 33, 12, -1, -25 }, // 0x29 ')' + { 452, 12, 11, 14, 5, -25 }, // 0x2A '*' + { 469, 18, 16, 20, 3, -15 }, // 0x2B '+' + { 505, 7, 11, 10, 1, -4 }, // 0x2C ',' + { 515, 10, 4, 12, 2, -10 }, // 0x2D '-' + { 520, 6, 5, 10, 2, -4 }, // 0x2E '.' + { 524, 15, 25, 10, 0, -24 }, // 0x2F '/' + { 571, 18, 25, 19, 3, -24 }, // 0x30 '0' + { 628, 13, 25, 19, 6, -24 }, // 0x31 '1' + { 669, 21, 25, 19, 1, -24 }, // 0x32 '2' + { 735, 20, 25, 19, 2, -24 }, // 0x33 '3' + { 798, 19, 25, 19, 2, -24 }, // 0x34 '4' + { 858, 20, 24, 19, 2, -23 }, // 0x35 '5' + { 918, 19, 25, 19, 3, -24 }, // 0x36 '6' + { 978, 19, 24, 19, 5, -23 }, // 0x37 '7' + { 1035, 20, 25, 19, 2, -24 }, // 0x38 '8' + { 1098, 19, 25, 19, 2, -24 }, // 0x39 '9' + { 1158, 9, 18, 12, 4, -17 }, // 0x3A ':' + { 1179, 10, 24, 12, 3, -17 }, // 0x3B ';' + { 1209, 19, 17, 20, 3, -16 }, // 0x3C '<' + { 1250, 20, 12, 20, 2, -13 }, // 0x3D '=' + { 1280, 19, 17, 20, 1, -15 }, // 0x3E '>' + { 1321, 18, 26, 21, 6, -25 }, // 0x3F '?' + { 1380, 33, 31, 34, 3, -25 }, // 0x40 '@' + { 1508, 23, 26, 25, 1, -25 }, // 0x41 'A' + { 1583, 24, 26, 25, 3, -25 }, // 0x42 'B' + { 1661, 24, 26, 25, 4, -25 }, // 0x43 'C' + { 1739, 24, 26, 25, 3, -25 }, // 0x44 'D' + { 1817, 24, 26, 23, 3, -25 }, // 0x45 'E' + { 1895, 23, 26, 21, 3, -25 }, // 0x46 'F' + { 1970, 24, 26, 27, 4, -25 }, // 0x47 'G' + { 2048, 26, 26, 25, 2, -25 }, // 0x48 'H' + { 2133, 10, 26, 10, 2, -25 }, // 0x49 'I' + { 2166, 20, 26, 19, 2, -25 }, // 0x4A 'J' + { 2231, 26, 26, 25, 3, -25 }, // 0x4B 'K' + { 2316, 18, 26, 21, 3, -25 }, // 0x4C 'L' + { 2375, 31, 26, 29, 2, -25 }, // 0x4D 'M' + { 2476, 27, 26, 25, 2, -25 }, // 0x4E 'N' + { 2564, 25, 26, 27, 4, -25 }, // 0x4F 'O' + { 2646, 23, 26, 23, 3, -25 }, // 0x50 'P' + { 2721, 25, 27, 27, 4, -25 }, // 0x51 'Q' + { 2806, 24, 26, 25, 3, -25 }, // 0x52 'R' + { 2884, 22, 26, 23, 3, -25 }, // 0x53 'S' + { 2956, 21, 26, 21, 5, -25 }, // 0x54 'T' + { 3025, 24, 26, 25, 4, -25 }, // 0x55 'U' + { 3103, 22, 26, 23, 6, -25 }, // 0x56 'V' + { 3175, 32, 26, 33, 6, -25 }, // 0x57 'W' + { 3279, 27, 26, 23, 1, -25 }, // 0x58 'X' + { 3367, 22, 26, 23, 6, -25 }, // 0x59 'Y' + { 3439, 25, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3521, 15, 33, 12, 1, -25 }, // 0x5B '[' + { 3583, 5, 25, 10, 5, -24 }, // 0x5C '\' + { 3599, 15, 33, 12, -1, -25 }, // 0x5D ']' + { 3661, 16, 15, 20, 4, -23 }, // 0x5E '^' + { 3691, 21, 3, 19, -2, 5 }, // 0x5F '_' + { 3699, 5, 5, 12, 6, -25 }, // 0x60 '`' + { 3703, 18, 19, 19, 2, -18 }, // 0x61 'a' + { 3746, 20, 26, 21, 2, -25 }, // 0x62 'b' + { 3811, 18, 19, 19, 3, -18 }, // 0x63 'c' + { 3854, 22, 26, 21, 3, -25 }, // 0x64 'd' + { 3926, 19, 19, 19, 2, -18 }, // 0x65 'e' + { 3972, 13, 26, 12, 3, -25 }, // 0x66 'f' + { 4015, 22, 27, 21, 1, -18 }, // 0x67 'g' + { 4090, 20, 26, 21, 2, -25 }, // 0x68 'h' + { 4155, 10, 26, 10, 2, -25 }, // 0x69 'i' + { 4188, 15, 34, 10, -2, -25 }, // 0x6A 'j' + { 4252, 21, 26, 19, 2, -25 }, // 0x6B 'k' + { 4321, 10, 26, 10, 2, -25 }, // 0x6C 'l' + { 4354, 30, 19, 31, 2, -18 }, // 0x6D 'm' + { 4426, 20, 19, 21, 2, -18 }, // 0x6E 'n' + { 4474, 19, 19, 21, 3, -18 }, // 0x6F 'o' + { 4520, 22, 27, 21, 0, -18 }, // 0x70 'p' + { 4595, 20, 27, 21, 3, -18 }, // 0x71 'q' + { 4663, 15, 19, 14, 2, -18 }, // 0x72 'r' + { 4699, 18, 19, 19, 2, -18 }, // 0x73 's' + { 4742, 11, 23, 12, 4, -22 }, // 0x74 't' + { 4774, 20, 19, 21, 3, -18 }, // 0x75 'u' + { 4822, 18, 19, 19, 5, -18 }, // 0x76 'v' + { 4865, 27, 19, 27, 4, -18 }, // 0x77 'w' + { 4930, 22, 19, 19, 1, -18 }, // 0x78 'x' + { 4983, 22, 27, 19, 1, -18 }, // 0x79 'y' + { 5058, 19, 19, 17, 1, -18 }, // 0x7A 'z' + { 5104, 14, 33, 14, 2, -25 }, // 0x7B '{' + { 5162, 9, 33, 10, 2, -25 }, // 0x7C '|' + { 5200, 14, 33, 14, 2, -25 }, // 0x7D '}' + { 5258, 17, 6, 20, 3, -10 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h new file mode 100644 index 000000000..ea65f9b8d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h @@ -0,0 +1,893 @@ +const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, + 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, + 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, + 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, + 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, + 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, + 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, + 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, + 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, + 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, + 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, + 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, + 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, + 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, + 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, + 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, + 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, + 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, + 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, + 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, + 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, + 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, + 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, + 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, + 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, + 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, + 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, + 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, + 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, + 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, + 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, + 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, + 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, + 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, + 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, + 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, + 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, + 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, + 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, + 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, + 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, + 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, + 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, + 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, + 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, + 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, + 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, + 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, + 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, + 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, + 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, + 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, + 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, + 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, + 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, + 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, + 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, + 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, + 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, + 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, + 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, + 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, + 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, + 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, + 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, + 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, + 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, + 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, + 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, + 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, + 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, + 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, + 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, + 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, + 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, + 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, + 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, + 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, + 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, + 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, + 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, + 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, + 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, + 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, + 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, + 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, + 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, + 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, + 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, + 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, + 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, + 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, + 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, + 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, + 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, + 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, + 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, + 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, + 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, + 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, + 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, + 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, + 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, + 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, + 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, + 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, + 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, + 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, + 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, + 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, + 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, + 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, + 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, + 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, + 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, + 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, + 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, + 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, + 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, + 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, + 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, + 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, + 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, + 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, + 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, + 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, + 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, + 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, + 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, + 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, + 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, + 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, + 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, + 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, + 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, + 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, + 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, + 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, + 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, + 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, + 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, + 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, + 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, + 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, + 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, + 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, + 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, + 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, + 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, + 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, + 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, + 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, + 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, + 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, + 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, + 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, + 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, + 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, + 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, + 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, + 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, + 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, + 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, + 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, + 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, + 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, + 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, + 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, + 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, + 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, + 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, + 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, + 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, + 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, + 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, + 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, + 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, + 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, + 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, + 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, + 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, + 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, + 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, + 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, + 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, + 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, + 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, + 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, + 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, + 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, + 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, + 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, + 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, + 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, + 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, + 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, + 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, + 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, + 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, + 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, + 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, + 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, + 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, + 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, + 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, + 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, + 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, + 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, + 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, + 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, + 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, + 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, + 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, + 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, + 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, + 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, + 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, + 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, + 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, + 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, + 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, + 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, + 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, + 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, + 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, + 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, + 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, + 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, + 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, + 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, + 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, + 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, + 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, + 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, + 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, + 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, + 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, + 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, + 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, + 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, + 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, + 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, + 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, + 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, + 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, + 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, + 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, + 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, + 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, + 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, + 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, + 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, + 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, + 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, + 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, + 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, + 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, + 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, + 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, + 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, + 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, + 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, + 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, + 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, + 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, + 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, + 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, + 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, + 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, + 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, + 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, + 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, + 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, + 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, + 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, + 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, + 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, + 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, + 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, + 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, + 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, + 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, + 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, + 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, + 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, + 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, + 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, + 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, + 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, + 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, + 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, + 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, + 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, + 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, + 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, + 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, + 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, + 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, + 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, + 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, + 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, + 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, + 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, + 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, + 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, + 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, + 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, + 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, + 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, + 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, + 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, + 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, + 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, + 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, + 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, + 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, + 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, + 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, + 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, + 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, + 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, + 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, + 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, + 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, + 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, + 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, + 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, + 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, + 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, + 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, + 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, + 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, + 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, + 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, + 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, + 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, + 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, + 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, + 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, + 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, + 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, + 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, + 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, + 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, + 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, + 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, + 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, + 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, + 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, + 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, + 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, + 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, + 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, + 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, + 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, + 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, + 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, + 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, + 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, + 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, + 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, + 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, + 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, + 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, + 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, + 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, + 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, + 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, + 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, + 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, + 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, + 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, + 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, + 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, + 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, + 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, + 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, + 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, + 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, + 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, + 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, + 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, + 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, + 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, + 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, + 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, + 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, + 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, + 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, + 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, + 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, + 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, + 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, + 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, + 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, + 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, + 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, + 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, + 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, + 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, + 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, + 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, + 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, + 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, + 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, + 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, + 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, + 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, + 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, + 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, + 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, + 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, + 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, + 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, + 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, + 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, + 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, + 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, + 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, + 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, + 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, + 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, + 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, + 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, + 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, + 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, + 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, + 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, + 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, + 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, + 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, + 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, + 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, + 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, + 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, + 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, + 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, + 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, + 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, + 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, + 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, + 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, + 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, + 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, + 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, + 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, + 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, + 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, + 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, + 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, + 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, + 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, + 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, + 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, + 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, + 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, + 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, + 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, + 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, + 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, + 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, + 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, + 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, + 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, + 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, + 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, + 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, + 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, + 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, + 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, + 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, + 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, + 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, + 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, + 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, + 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, + 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, + 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, + 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, + 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, + 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, + 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, + 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, + 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, + 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, + 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, + 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, + 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, + 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, + 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, + 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, + 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, + 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, + 0x00, 0x03, 0xF0 }; + +const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 14, 34, 16, 5, -33 }, // 0x21 '!' + { 60, 18, 12, 22, 8, -33 }, // 0x22 '"' + { 87, 29, 33, 26, 2, -31 }, // 0x23 '#' + { 207, 26, 42, 26, 3, -35 }, // 0x24 '$' + { 344, 36, 34, 42, 6, -32 }, // 0x25 '%' + { 497, 29, 35, 34, 4, -33 }, // 0x26 '&' + { 624, 7, 12, 11, 8, -33 }, // 0x27 ''' + { 635, 17, 44, 16, 4, -33 }, // 0x28 '(' + { 729, 17, 44, 16, 0, -34 }, // 0x29 ')' + { 823, 15, 15, 18, 7, -33 }, // 0x2A '*' + { 852, 24, 22, 27, 4, -21 }, // 0x2B '+' + { 918, 10, 15, 13, 1, -6 }, // 0x2C ',' + { 937, 14, 6, 16, 3, -15 }, // 0x2D '-' + { 948, 8, 7, 13, 3, -6 }, // 0x2E '.' + { 955, 20, 34, 13, 0, -32 }, // 0x2F '/' + { 1040, 25, 35, 26, 4, -33 }, // 0x30 '0' + { 1150, 17, 33, 26, 8, -32 }, // 0x31 '1' + { 1221, 29, 34, 26, 1, -33 }, // 0x32 '2' + { 1345, 26, 35, 26, 3, -33 }, // 0x33 '3' + { 1459, 25, 32, 26, 3, -31 }, // 0x34 '4' + { 1559, 27, 34, 26, 3, -32 }, // 0x35 '5' + { 1674, 25, 35, 26, 4, -33 }, // 0x36 '6' + { 1784, 26, 33, 26, 6, -32 }, // 0x37 '7' + { 1892, 26, 35, 26, 3, -33 }, // 0x38 '8' + { 2006, 25, 35, 26, 4, -33 }, // 0x39 '9' + { 2116, 12, 25, 16, 5, -24 }, // 0x3A ':' + { 2154, 14, 33, 16, 3, -24 }, // 0x3B ';' + { 2212, 26, 23, 27, 4, -22 }, // 0x3C '<' + { 2287, 26, 18, 27, 3, -19 }, // 0x3D '=' + { 2346, 26, 23, 27, 1, -21 }, // 0x3E '>' + { 2421, 24, 35, 29, 8, -34 }, // 0x3F '?' + { 2526, 45, 41, 46, 3, -34 }, // 0x40 '@' + { 2757, 32, 34, 34, 1, -33 }, // 0x41 'A' + { 2893, 32, 34, 34, 4, -33 }, // 0x42 'B' + { 3029, 32, 36, 34, 5, -34 }, // 0x43 'C' + { 3173, 32, 34, 34, 4, -33 }, // 0x44 'D' + { 3309, 32, 34, 31, 4, -33 }, // 0x45 'E' + { 3445, 32, 34, 29, 3, -33 }, // 0x46 'F' + { 3581, 33, 36, 37, 5, -34 }, // 0x47 'G' + { 3730, 35, 34, 34, 3, -33 }, // 0x48 'H' + { 3879, 14, 34, 13, 3, -33 }, // 0x49 'I' + { 3939, 27, 35, 26, 3, -33 }, // 0x4A 'J' + { 4058, 37, 34, 34, 3, -33 }, // 0x4B 'K' + { 4216, 24, 34, 29, 4, -33 }, // 0x4C 'L' + { 4318, 41, 34, 39, 3, -33 }, // 0x4D 'M' + { 4493, 35, 34, 34, 3, -33 }, // 0x4E 'N' + { 4642, 34, 36, 37, 5, -34 }, // 0x4F 'O' + { 4795, 31, 34, 31, 4, -33 }, // 0x50 'P' + { 4927, 34, 37, 37, 5, -34 }, // 0x51 'Q' + { 5085, 33, 34, 34, 4, -33 }, // 0x52 'R' + { 5226, 30, 36, 31, 4, -34 }, // 0x53 'S' + { 5361, 28, 34, 29, 7, -33 }, // 0x54 'T' + { 5480, 32, 35, 34, 6, -33 }, // 0x55 'U' + { 5620, 30, 34, 31, 8, -33 }, // 0x56 'V' + { 5748, 43, 34, 44, 8, -33 }, // 0x57 'W' + { 5931, 37, 34, 31, 1, -33 }, // 0x58 'X' + { 6089, 29, 34, 31, 9, -33 }, // 0x59 'Y' + { 6213, 33, 34, 29, 1, -33 }, // 0x5A 'Z' + { 6354, 21, 43, 16, 1, -33 }, // 0x5B '[' + { 6467, 7, 36, 13, 6, -34 }, // 0x5C '\' + { 6499, 21, 43, 16, -1, -33 }, // 0x5D ']' + { 6612, 21, 20, 27, 6, -32 }, // 0x5E '^' + { 6665, 29, 4, 26, -3, 6 }, // 0x5F '_' + { 6680, 7, 7, 16, 8, -35 }, // 0x60 '`' + { 6687, 25, 26, 26, 2, -24 }, // 0x61 'a' + { 6769, 27, 35, 29, 3, -33 }, // 0x62 'b' + { 6888, 25, 26, 26, 4, -24 }, // 0x63 'c' + { 6970, 29, 35, 29, 4, -33 }, // 0x64 'd' + { 7097, 25, 26, 26, 3, -24 }, // 0x65 'e' + { 7179, 18, 34, 16, 4, -33 }, // 0x66 'f' + { 7256, 29, 35, 29, 2, -24 }, // 0x67 'g' + { 7383, 27, 34, 29, 3, -33 }, // 0x68 'h' + { 7498, 14, 34, 13, 3, -33 }, // 0x69 'i' + { 7558, 19, 44, 13, -2, -33 }, // 0x6A 'j' + { 7663, 28, 34, 26, 3, -33 }, // 0x6B 'k' + { 7782, 14, 34, 13, 3, -33 }, // 0x6C 'l' + { 7842, 40, 25, 42, 3, -24 }, // 0x6D 'm' + { 7967, 27, 25, 29, 3, -24 }, // 0x6E 'n' + { 8052, 26, 26, 29, 4, -24 }, // 0x6F 'o' + { 8137, 29, 35, 29, 1, -24 }, // 0x70 'p' + { 8264, 28, 35, 29, 3, -24 }, // 0x71 'q' + { 8387, 20, 25, 18, 3, -24 }, // 0x72 'r' + { 8450, 24, 26, 26, 3, -24 }, // 0x73 's' + { 8528, 14, 32, 16, 5, -30 }, // 0x74 't' + { 8584, 27, 26, 29, 4, -24 }, // 0x75 'u' + { 8672, 25, 25, 26, 6, -24 }, // 0x76 'v' + { 8751, 35, 25, 37, 6, -24 }, // 0x77 'w' + { 8861, 29, 25, 26, 1, -24 }, // 0x78 'x' + { 8952, 29, 35, 26, 2, -24 }, // 0x79 'y' + { 9079, 26, 25, 23, 1, -24 }, // 0x7A 'z' + { 9161, 18, 43, 18, 4, -33 }, // 0x7B '{' + { 9258, 13, 43, 13, 3, -33 }, // 0x7C '|' + { 9328, 18, 43, 18, 2, -33 }, // 0x7D '}' + { 9425, 22, 8, 27, 5, -14 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 10119 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h new file mode 100644 index 000000000..6250aca3e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h @@ -0,0 +1,227 @@ +const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { + 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, + 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, + 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, + 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, + 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, + 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, + 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, + 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, + 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, + 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, + 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, + 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, + 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, + 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, + 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, + 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, + 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, + 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, + 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, + 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, + 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, + 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, + 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, + 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, + 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, + 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, + 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, + 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, + 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, + 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, + 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, + 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, + 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, + 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, + 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, + 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, + 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, + 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, + 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, + 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, + 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, + 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, + 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, + 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, + 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, + 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, + 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, + 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, + 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, + 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, + 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, + 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, + 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, + 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, + 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, + 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, + 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, + 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, + 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, + 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, + 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, + 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, + 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, + 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, + 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, + 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, + 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, + 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, + 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, + 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, + 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, + 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, + 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, + 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, + 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, + 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, + 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, + 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, + 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, + 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, + 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, + 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, + 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, + 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, + 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, + 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, + 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, + 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, + 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, + 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, + 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, + 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, + 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, + 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, + 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, + 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, + 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, + 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, + 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, + 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, + 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, + 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, + 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, + 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, + 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, + 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, + 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, + 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, + 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, + 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, + 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, + 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, + 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, + 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, + 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, + 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E }; + +const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 5, 13, 6, 2, -12 }, // 0x21 '!' + { 9, 7, 5, 9, 3, -12 }, // 0x22 '"' + { 14, 11, 12, 10, 1, -11 }, // 0x23 '#' + { 31, 11, 16, 10, 1, -13 }, // 0x24 '$' + { 53, 14, 13, 16, 2, -12 }, // 0x25 '%' + { 76, 12, 13, 13, 2, -12 }, // 0x26 '&' + { 96, 3, 5, 4, 3, -12 }, // 0x27 ''' + { 98, 8, 17, 6, 2, -12 }, // 0x28 '(' + { 115, 8, 17, 6, -2, -13 }, // 0x29 ')' + { 132, 6, 6, 7, 3, -12 }, // 0x2A '*' + { 137, 9, 8, 11, 2, -7 }, // 0x2B '+' + { 146, 4, 6, 5, 0, -2 }, // 0x2C ',' + { 149, 5, 2, 6, 1, -5 }, // 0x2D '-' + { 151, 3, 2, 5, 1, -1 }, // 0x2E '.' + { 152, 8, 13, 5, 0, -12 }, // 0x2F '/' + { 165, 10, 13, 10, 1, -12 }, // 0x30 '0' + { 182, 7, 13, 10, 3, -12 }, // 0x31 '1' + { 194, 11, 13, 10, 1, -12 }, // 0x32 '2' + { 212, 11, 13, 10, 1, -12 }, // 0x33 '3' + { 230, 10, 12, 10, 1, -11 }, // 0x34 '4' + { 245, 11, 13, 10, 1, -12 }, // 0x35 '5' + { 263, 10, 13, 10, 2, -12 }, // 0x36 '6' + { 280, 10, 13, 10, 2, -12 }, // 0x37 '7' + { 297, 11, 13, 10, 1, -12 }, // 0x38 '8' + { 315, 11, 13, 10, 1, -12 }, // 0x39 '9' + { 333, 4, 9, 6, 2, -8 }, // 0x3A ':' + { 338, 5, 12, 6, 1, -8 }, // 0x3B ';' + { 346, 10, 9, 11, 1, -8 }, // 0x3C '<' + { 358, 10, 6, 11, 1, -6 }, // 0x3D '=' + { 366, 10, 9, 11, 1, -7 }, // 0x3E '>' + { 378, 10, 13, 11, 3, -12 }, // 0x3F '?' + { 395, 18, 16, 18, 1, -13 }, // 0x40 '@' + { 431, 13, 13, 13, 0, -12 }, // 0x41 'A' + { 453, 13, 13, 13, 1, -12 }, // 0x42 'B' + { 475, 13, 13, 13, 2, -12 }, // 0x43 'C' + { 497, 13, 13, 13, 1, -12 }, // 0x44 'D' + { 519, 13, 13, 12, 1, -12 }, // 0x45 'E' + { 541, 12, 13, 11, 1, -12 }, // 0x46 'F' + { 561, 12, 13, 14, 2, -12 }, // 0x47 'G' + { 581, 14, 13, 13, 1, -12 }, // 0x48 'H' + { 604, 5, 13, 5, 1, -12 }, // 0x49 'I' + { 613, 11, 13, 10, 1, -12 }, // 0x4A 'J' + { 631, 14, 13, 13, 1, -12 }, // 0x4B 'K' + { 654, 10, 13, 11, 1, -12 }, // 0x4C 'L' + { 671, 16, 13, 15, 1, -12 }, // 0x4D 'M' + { 697, 14, 13, 13, 1, -12 }, // 0x4E 'N' + { 720, 13, 13, 14, 2, -12 }, // 0x4F 'O' + { 742, 13, 13, 12, 1, -12 }, // 0x50 'P' + { 764, 13, 14, 14, 2, -12 }, // 0x51 'Q' + { 787, 13, 13, 13, 1, -12 }, // 0x52 'R' + { 809, 13, 13, 12, 1, -12 }, // 0x53 'S' + { 831, 11, 13, 11, 3, -12 }, // 0x54 'T' + { 849, 13, 13, 13, 2, -12 }, // 0x55 'U' + { 871, 11, 13, 12, 3, -12 }, // 0x56 'V' + { 889, 17, 13, 17, 3, -12 }, // 0x57 'W' + { 917, 14, 13, 12, 0, -12 }, // 0x58 'X' + { 940, 11, 13, 12, 3, -12 }, // 0x59 'Y' + { 958, 12, 13, 11, 1, -12 }, // 0x5A 'Z' + { 978, 8, 17, 6, 0, -12 }, // 0x5B '[' + { 995, 3, 17, 5, 2, -16 }, // 0x5C '\' + { 1002, 8, 17, 6, 0, -13 }, // 0x5D ']' + { 1019, 8, 8, 11, 2, -12 }, // 0x5E '^' + { 1027, 11, 1, 10, -1, 4 }, // 0x5F '_' + { 1029, 3, 2, 6, 3, -12 }, // 0x60 '`' + { 1030, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 1043, 11, 13, 11, 1, -12 }, // 0x62 'b' + { 1061, 10, 10, 10, 1, -9 }, // 0x63 'c' + { 1074, 12, 13, 11, 1, -12 }, // 0x64 'd' + { 1094, 10, 10, 10, 1, -9 }, // 0x65 'e' + { 1107, 6, 13, 6, 2, -12 }, // 0x66 'f' + { 1117, 12, 14, 11, 0, -9 }, // 0x67 'g' + { 1138, 11, 13, 11, 1, -12 }, // 0x68 'h' + { 1156, 5, 13, 5, 1, -12 }, // 0x69 'i' + { 1165, 8, 17, 5, -1, -12 }, // 0x6A 'j' + { 1182, 11, 13, 10, 1, -12 }, // 0x6B 'k' + { 1200, 5, 13, 5, 1, -12 }, // 0x6C 'l' + { 1209, 16, 10, 16, 1, -9 }, // 0x6D 'm' + { 1229, 11, 10, 11, 1, -9 }, // 0x6E 'n' + { 1243, 11, 10, 11, 1, -9 }, // 0x6F 'o' + { 1257, 12, 14, 11, 0, -9 }, // 0x70 'p' + { 1278, 11, 14, 11, 1, -9 }, // 0x71 'q' + { 1298, 8, 10, 7, 1, -9 }, // 0x72 'r' + { 1308, 9, 10, 10, 2, -9 }, // 0x73 's' + { 1320, 6, 12, 6, 2, -11 }, // 0x74 't' + { 1329, 10, 10, 11, 2, -9 }, // 0x75 'u' + { 1342, 10, 10, 10, 2, -9 }, // 0x76 'v' + { 1355, 14, 10, 14, 2, -9 }, // 0x77 'w' + { 1373, 12, 10, 10, 0, -9 }, // 0x78 'x' + { 1388, 11, 14, 10, 1, -9 }, // 0x79 'y' + { 1408, 10, 10, 9, 0, -9 }, // 0x7A 'z' + { 1421, 7, 17, 7, 2, -12 }, // 0x7B '{' + { 1436, 5, 17, 5, 1, -12 }, // 0x7C '|' + { 1447, 7, 17, 7, 0, -13 }, // 0x7D '}' + { 1462, 8, 2, 11, 2, -4 } }; // 0x7E '~' + +const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, + (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 2136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h new file mode 100644 index 000000000..efdbd8d11 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h @@ -0,0 +1,302 @@ +const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, + 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, + 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, + 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, + 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, + 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, + 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, + 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, + 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, + 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, + 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, + 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, + 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, + 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, + 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, + 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, + 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, + 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, + 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, + 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, + 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, + 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, + 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, + 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, + 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, + 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, + 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, + 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, + 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, + 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, + 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, + 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, + 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, + 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, + 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, + 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, + 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, + 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, + 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, + 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, + 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, + 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, + 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, + 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, + 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, + 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, + 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, + 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, + 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, + 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, + 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, + 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, + 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, + 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, + 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, + 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, + 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, + 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, + 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, + 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, + 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, + 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, + 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, + 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, + 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, + 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, + 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, + 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, + 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, + 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, + 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, + 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, + 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, + 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, + 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, + 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, + 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, + 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, + 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, + 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, + 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, + 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, + 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, + 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, + 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, + 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, + 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, + 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, + 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, + 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, + 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, + 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, + 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, + 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, + 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, + 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, + 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, + 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, + 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, + 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, + 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, + 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, + 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, + 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, + 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, + 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, + 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, + 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, + 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, + 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, + 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, + 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, + 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, + 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, + 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, + 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, + 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, + 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, + 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, + 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, + 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, + 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, + 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, + 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, + 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, + 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, + 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, + 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, + 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, + 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, + 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, + 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, + 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, + 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, + 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, + 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, + 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, + 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, + 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, + 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, + 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, + 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, + 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, + 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, + 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, + 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, + 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, + 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, + 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, + 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, + 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, + 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, + 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, + 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, + 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, + 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, + 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, + 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, + 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, + 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, + 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, + 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, + 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, + 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, + 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, + 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, + 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, + 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, + 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, + 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, + 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, + 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, + 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, + 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, + 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, + 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, + 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38 }; + +const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' + { 0, 6, 18, 7, 3, -17 }, // 0x21 '!' + { 14, 6, 6, 9, 4, -16 }, // 0x22 '"' + { 19, 15, 18, 13, 1, -17 }, // 0x23 '#' + { 53, 13, 21, 13, 2, -17 }, // 0x24 '$' + { 88, 19, 17, 21, 3, -16 }, // 0x25 '%' + { 129, 13, 17, 16, 2, -16 }, // 0x26 '&' + { 157, 2, 6, 5, 4, -16 }, // 0x27 ''' + { 159, 8, 23, 8, 3, -17 }, // 0x28 '(' + { 182, 8, 23, 8, 0, -16 }, // 0x29 ')' + { 205, 8, 8, 9, 4, -17 }, // 0x2A '*' + { 213, 12, 11, 14, 2, -10 }, // 0x2B '+' + { 230, 4, 6, 7, 1, -1 }, // 0x2C ',' + { 233, 6, 2, 8, 2, -7 }, // 0x2D '-' + { 235, 3, 2, 7, 2, -1 }, // 0x2E '.' + { 236, 10, 18, 7, 0, -17 }, // 0x2F '/' + { 259, 12, 17, 13, 2, -16 }, // 0x30 '0' + { 285, 7, 17, 13, 5, -16 }, // 0x31 '1' + { 300, 14, 17, 13, 1, -16 }, // 0x32 '2' + { 330, 12, 17, 13, 2, -16 }, // 0x33 '3' + { 356, 12, 17, 13, 2, -16 }, // 0x34 '4' + { 382, 13, 17, 13, 2, -16 }, // 0x35 '5' + { 410, 12, 17, 13, 2, -16 }, // 0x36 '6' + { 436, 13, 17, 13, 3, -16 }, // 0x37 '7' + { 464, 12, 17, 13, 2, -16 }, // 0x38 '8' + { 490, 12, 17, 13, 2, -16 }, // 0x39 '9' + { 516, 5, 12, 7, 3, -11 }, // 0x3A ':' + { 524, 6, 16, 7, 2, -11 }, // 0x3B ';' + { 536, 13, 12, 14, 2, -11 }, // 0x3C '<' + { 556, 13, 6, 14, 2, -8 }, // 0x3D '=' + { 566, 13, 12, 14, 1, -10 }, // 0x3E '>' + { 586, 11, 18, 13, 4, -17 }, // 0x3F '?' + { 611, 23, 21, 24, 2, -17 }, // 0x40 '@' + { 672, 16, 18, 16, 0, -17 }, // 0x41 'A' + { 708, 15, 18, 16, 2, -17 }, // 0x42 'B' + { 742, 16, 18, 17, 2, -17 }, // 0x43 'C' + { 778, 16, 18, 17, 2, -17 }, // 0x44 'D' + { 814, 16, 18, 16, 2, -17 }, // 0x45 'E' + { 850, 15, 18, 14, 2, -17 }, // 0x46 'F' + { 884, 16, 18, 19, 3, -17 }, // 0x47 'G' + { 920, 17, 18, 17, 2, -17 }, // 0x48 'H' + { 959, 6, 18, 7, 2, -17 }, // 0x49 'I' + { 973, 13, 18, 12, 1, -17 }, // 0x4A 'J' + { 1003, 18, 18, 16, 2, -17 }, // 0x4B 'K' + { 1044, 11, 18, 13, 2, -17 }, // 0x4C 'L' + { 1069, 20, 18, 20, 2, -17 }, // 0x4D 'M' + { 1114, 17, 18, 18, 2, -17 }, // 0x4E 'N' + { 1153, 17, 18, 18, 2, -17 }, // 0x4F 'O' + { 1192, 15, 18, 15, 2, -17 }, // 0x50 'P' + { 1226, 18, 19, 19, 2, -17 }, // 0x51 'Q' + { 1269, 16, 18, 17, 2, -17 }, // 0x52 'R' + { 1305, 15, 18, 16, 2, -17 }, // 0x53 'S' + { 1339, 14, 18, 15, 4, -17 }, // 0x54 'T' + { 1371, 16, 18, 17, 3, -17 }, // 0x55 'U' + { 1407, 15, 18, 15, 4, -17 }, // 0x56 'V' + { 1441, 22, 18, 22, 4, -17 }, // 0x57 'W' + { 1491, 19, 18, 16, 0, -17 }, // 0x58 'X' + { 1534, 16, 18, 16, 4, -17 }, // 0x59 'Y' + { 1570, 17, 18, 15, 1, -17 }, // 0x5A 'Z' + { 1609, 10, 23, 7, 0, -17 }, // 0x5B '[' + { 1638, 3, 18, 7, 4, -17 }, // 0x5C '\' + { 1645, 10, 23, 7, -1, -16 }, // 0x5D ']' + { 1674, 10, 9, 11, 2, -16 }, // 0x5E '^' + { 1686, 14, 1, 13, -1, 4 }, // 0x5F '_' + { 1688, 4, 4, 8, 4, -17 }, // 0x60 '`' + { 1690, 11, 13, 13, 2, -12 }, // 0x61 'a' + { 1708, 13, 18, 13, 1, -17 }, // 0x62 'b' + { 1738, 11, 13, 12, 2, -12 }, // 0x63 'c' + { 1756, 14, 18, 13, 2, -17 }, // 0x64 'd' + { 1788, 12, 13, 13, 2, -12 }, // 0x65 'e' + { 1808, 8, 18, 6, 2, -17 }, // 0x66 'f' + { 1826, 14, 18, 13, 1, -12 }, // 0x67 'g' + { 1858, 12, 18, 13, 1, -17 }, // 0x68 'h' + { 1885, 5, 18, 5, 2, -17 }, // 0x69 'i' + { 1897, 9, 23, 6, -1, -17 }, // 0x6A 'j' + { 1923, 13, 18, 12, 1, -17 }, // 0x6B 'k' + { 1953, 5, 18, 5, 2, -17 }, // 0x6C 'l' + { 1965, 19, 13, 20, 1, -12 }, // 0x6D 'm' + { 1996, 12, 13, 13, 1, -12 }, // 0x6E 'n' + { 2016, 12, 13, 13, 2, -12 }, // 0x6F 'o' + { 2036, 14, 18, 14, 0, -12 }, // 0x70 'p' + { 2068, 13, 18, 13, 2, -12 }, // 0x71 'q' + { 2098, 9, 13, 8, 1, -12 }, // 0x72 'r' + { 2113, 12, 13, 12, 1, -12 }, // 0x73 's' + { 2133, 7, 16, 6, 2, -15 }, // 0x74 't' + { 2147, 12, 13, 13, 2, -12 }, // 0x75 'u' + { 2167, 11, 13, 12, 3, -12 }, // 0x76 'v' + { 2185, 17, 13, 17, 3, -12 }, // 0x77 'w' + { 2213, 14, 13, 12, 0, -12 }, // 0x78 'x' + { 2236, 14, 18, 11, 0, -12 }, // 0x79 'y' + { 2268, 12, 13, 12, 1, -12 }, // 0x7A 'z' + { 2288, 8, 23, 8, 3, -17 }, // 0x7B '{' + { 2311, 6, 23, 6, 1, -17 }, // 0x7C '|' + { 2329, 9, 23, 8, -1, -16 }, // 0x7D '}' + { 2355, 11, 5, 14, 3, -10 } }; // 0x7E '~' + +const GFXfont FreeSansOblique12pt7b PROGMEM = { + (uint8_t *)FreeSansOblique12pt7bBitmaps, + (GFXglyph *)FreeSansOblique12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 3034 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h new file mode 100644 index 000000000..2a18a3f6a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h @@ -0,0 +1,518 @@ +const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, + 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, + 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, + 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, + 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, + 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, + 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, + 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, + 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, + 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, + 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, + 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, + 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, + 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, + 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, + 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, + 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, + 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, + 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, + 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, + 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, + 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, + 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, + 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, + 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, + 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, + 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, + 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, + 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, + 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, + 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, + 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, + 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, + 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, + 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, + 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, + 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, + 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, + 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, + 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, + 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, + 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, + 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, + 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, + 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, + 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, + 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, + 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, + 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, + 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, + 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, + 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, + 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, + 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, + 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, + 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, + 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, + 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, + 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, + 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, + 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, + 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, + 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, + 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, + 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, + 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, + 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, + 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, + 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, + 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, + 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, + 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, + 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, + 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, + 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, + 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, + 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, + 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, + 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, + 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, + 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, + 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, + 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, + 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, + 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, + 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, + 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, + 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, + 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, + 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, + 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, + 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, + 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, + 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, + 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, + 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, + 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, + 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, + 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, + 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, + 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, + 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, + 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, + 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, + 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, + 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, + 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, + 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, + 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, + 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, + 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, + 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, + 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, + 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, + 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, + 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, + 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, + 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, + 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, + 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, + 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, + 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, + 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, + 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, + 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, + 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, + 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, + 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, + 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, + 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, + 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, + 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, + 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, + 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, + 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, + 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, + 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, + 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, + 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, + 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, + 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, + 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, + 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, + 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, + 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, + 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, + 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, + 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, + 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, + 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, + 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, + 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, + 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, + 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, + 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, + 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, + 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, + 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, + 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, + 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, + 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, + 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, + 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, + 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, + 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, + 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, + 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, + 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, + 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, + 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, + 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, + 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, + 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, + 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, + 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, + 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, + 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, + 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, + 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, + 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, + 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, + 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, + 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, + 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, + 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, + 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, + 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, + 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, + 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, + 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, + 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, + 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, + 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, + 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, + 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, + 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, + 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, + 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, + 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, + 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, + 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, + 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, + 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, + 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, + 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, + 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, + 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, + 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, + 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, + 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, + 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, + 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, + 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, + 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, + 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, + 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, + 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, + 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, + 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, + 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, + 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, + 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, + 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, + 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, + 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, + 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, + 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, + 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, + 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, + 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, + 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, + 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, + 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, + 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, + 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, + 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, + 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, + 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, + 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, + 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, + 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, + 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, + 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, + 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, + 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, + 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, + 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, + 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, + 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, + 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, + 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, + 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, + 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, + 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, + 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, + 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, + 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, + 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, + 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, + 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, + 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, + 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, + 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, + 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, + 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, + 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, + 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, + 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, + 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, + 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, + 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, + 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, + 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, + 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, + 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, + 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, + 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, + 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, + 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, + 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, + 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, + 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, + 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, + 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, + 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, + 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, + 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, + 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, + 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, + 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, + 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, + 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, + 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, + 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, + 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, + 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, + 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, + 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, + 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, + 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, + 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, + 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, + 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, + 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, + 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, + 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, + 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, + 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, + 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, + 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, + 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78 }; + +const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' + { 0, 9, 26, 10, 4, -25 }, // 0x21 '!' + { 30, 10, 9, 12, 6, -24 }, // 0x22 '"' + { 42, 21, 25, 19, 2, -24 }, // 0x23 '#' + { 108, 20, 31, 19, 2, -26 }, // 0x24 '$' + { 186, 26, 25, 31, 5, -24 }, // 0x25 '%' + { 268, 20, 25, 23, 3, -24 }, // 0x26 '&' + { 331, 4, 9, 7, 6, -24 }, // 0x27 ''' + { 336, 12, 33, 12, 4, -25 }, // 0x28 '(' + { 386, 12, 33, 12, -1, -24 }, // 0x29 ')' + { 436, 10, 10, 14, 6, -25 }, // 0x2A '*' + { 449, 18, 16, 20, 3, -15 }, // 0x2B '+' + { 485, 5, 8, 10, 2, -2 }, // 0x2C ',' + { 490, 9, 3, 12, 3, -10 }, // 0x2D '-' + { 494, 4, 4, 10, 3, -3 }, // 0x2E '.' + { 496, 15, 26, 10, 0, -25 }, // 0x2F '/' + { 545, 18, 25, 19, 3, -24 }, // 0x30 '0' + { 602, 10, 25, 19, 7, -24 }, // 0x31 '1' + { 634, 20, 25, 19, 2, -24 }, // 0x32 '2' + { 697, 19, 25, 19, 2, -24 }, // 0x33 '3' + { 757, 18, 25, 19, 2, -24 }, // 0x34 '4' + { 814, 20, 25, 19, 2, -24 }, // 0x35 '5' + { 877, 19, 25, 19, 3, -24 }, // 0x36 '6' + { 937, 18, 25, 19, 5, -24 }, // 0x37 '7' + { 994, 19, 25, 19, 3, -24 }, // 0x38 '8' + { 1054, 19, 25, 19, 2, -24 }, // 0x39 '9' + { 1114, 7, 19, 10, 4, -18 }, // 0x3A ':' + { 1131, 8, 24, 10, 3, -18 }, // 0x3B ';' + { 1155, 19, 17, 20, 3, -16 }, // 0x3C '<' + { 1196, 18, 9, 20, 3, -12 }, // 0x3D '=' + { 1217, 19, 17, 20, 2, -15 }, // 0x3E '>' + { 1258, 16, 26, 19, 6, -25 }, // 0x3F '?' + { 1310, 33, 31, 36, 3, -25 }, // 0x40 '@' + { 1438, 23, 26, 23, 0, -25 }, // 0x41 'A' + { 1513, 21, 26, 23, 3, -25 }, // 0x42 'B' + { 1582, 22, 26, 25, 4, -25 }, // 0x43 'C' + { 1654, 23, 26, 25, 3, -25 }, // 0x44 'D' + { 1729, 23, 26, 23, 3, -25 }, // 0x45 'E' + { 1804, 22, 26, 21, 3, -25 }, // 0x46 'F' + { 1876, 24, 26, 27, 4, -25 }, // 0x47 'G' + { 1954, 25, 26, 25, 3, -25 }, // 0x48 'H' + { 2036, 8, 26, 10, 4, -25 }, // 0x49 'I' + { 2062, 18, 26, 18, 2, -25 }, // 0x4A 'J' + { 2121, 25, 26, 23, 3, -25 }, // 0x4B 'K' + { 2203, 16, 26, 19, 3, -25 }, // 0x4C 'L' + { 2255, 29, 26, 30, 3, -25 }, // 0x4D 'M' + { 2350, 25, 26, 26, 3, -25 }, // 0x4E 'N' + { 2432, 24, 26, 27, 4, -25 }, // 0x4F 'O' + { 2510, 22, 26, 23, 3, -25 }, // 0x50 'P' + { 2582, 25, 28, 27, 4, -25 }, // 0x51 'Q' + { 2670, 23, 26, 25, 3, -25 }, // 0x52 'R' + { 2745, 22, 26, 23, 3, -25 }, // 0x53 'S' + { 2817, 20, 26, 21, 6, -25 }, // 0x54 'T' + { 2882, 24, 26, 25, 4, -25 }, // 0x55 'U' + { 2960, 21, 26, 23, 6, -25 }, // 0x56 'V' + { 3029, 32, 26, 33, 6, -25 }, // 0x57 'W' + { 3133, 27, 26, 23, 1, -25 }, // 0x58 'X' + { 3221, 23, 26, 24, 6, -25 }, // 0x59 'Y' + { 3296, 25, 26, 21, 1, -25 }, // 0x5A 'Z' + { 3378, 13, 33, 10, 1, -25 }, // 0x5B '[' + { 3432, 4, 26, 10, 5, -25 }, // 0x5C '\' + { 3445, 13, 33, 10, -1, -24 }, // 0x5D ']' + { 3499, 14, 14, 16, 3, -24 }, // 0x5E '^' + { 3524, 21, 2, 19, -2, 5 }, // 0x5F '_' + { 3530, 6, 5, 12, 6, -25 }, // 0x60 '`' + { 3534, 18, 19, 19, 2, -18 }, // 0x61 'a' + { 3577, 19, 26, 20, 2, -25 }, // 0x62 'b' + { 3639, 16, 19, 18, 3, -18 }, // 0x63 'c' + { 3677, 20, 26, 20, 3, -25 }, // 0x64 'd' + { 3742, 17, 19, 19, 3, -18 }, // 0x65 'e' + { 3783, 11, 26, 9, 2, -25 }, // 0x66 'f' + { 3819, 19, 27, 19, 2, -18 }, // 0x67 'g' + { 3884, 18, 26, 19, 2, -25 }, // 0x68 'h' + { 3943, 8, 26, 8, 2, -25 }, // 0x69 'i' + { 3969, 14, 34, 8, -2, -25 }, // 0x6A 'j' + { 4029, 19, 26, 18, 2, -25 }, // 0x6B 'k' + { 4091, 8, 26, 8, 2, -25 }, // 0x6C 'l' + { 4117, 27, 19, 29, 2, -18 }, // 0x6D 'm' + { 4182, 18, 19, 19, 2, -18 }, // 0x6E 'n' + { 4225, 17, 19, 19, 3, -18 }, // 0x6F 'o' + { 4266, 21, 26, 20, 0, -18 }, // 0x70 'p' + { 4335, 20, 27, 19, 2, -18 }, // 0x71 'q' + { 4403, 13, 19, 11, 2, -18 }, // 0x72 'r' + { 4434, 16, 19, 18, 2, -18 }, // 0x73 's' + { 4472, 10, 23, 9, 3, -22 }, // 0x74 't' + { 4501, 18, 19, 19, 3, -18 }, // 0x75 'u' + { 4544, 16, 19, 17, 4, -18 }, // 0x76 'v' + { 4582, 24, 19, 25, 4, -18 }, // 0x77 'w' + { 4639, 19, 19, 17, 1, -18 }, // 0x78 'x' + { 4685, 20, 27, 17, 0, -18 }, // 0x79 'y' + { 4753, 19, 19, 17, 1, -18 }, // 0x7A 'z' + { 4799, 12, 33, 12, 3, -25 }, // 0x7B '{' + { 4849, 9, 33, 9, 2, -25 }, // 0x7C '|' + { 4887, 12, 33, 12, 0, -24 }, // 0x7D '}' + { 4937, 16, 7, 20, 5, -15 } }; // 0x7E '~' + +const GFXfont FreeSansOblique18pt7b PROGMEM = { + (uint8_t *)FreeSansOblique18pt7bBitmaps, + (GFXglyph *)FreeSansOblique18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5623 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h new file mode 100644 index 000000000..4c8c8ab02 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h @@ -0,0 +1,840 @@ +const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, + 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, + 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, + 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, + 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, + 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, + 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, + 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, + 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, + 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, + 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, + 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, + 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, + 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, + 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, + 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, + 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, + 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, + 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, + 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, + 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, + 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, + 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, + 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, + 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, + 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, + 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, + 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, + 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, + 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, + 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, + 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, + 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, + 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, + 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, + 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, + 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, + 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, + 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, + 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, + 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, + 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, + 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, + 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, + 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, + 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, + 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, + 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, + 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, + 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, + 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, + 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, + 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, + 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, + 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, + 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, + 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, + 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, + 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, + 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, + 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, + 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, + 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, + 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, + 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, + 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, + 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, + 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, + 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, + 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, + 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, + 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, + 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, + 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, + 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, + 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, + 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, + 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, + 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, + 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, + 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, + 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, + 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, + 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, + 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, + 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, + 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, + 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, + 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, + 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, + 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, + 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, + 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, + 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, + 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, + 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, + 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, + 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, + 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, + 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, + 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, + 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, + 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, + 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, + 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, + 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, + 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, + 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, + 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, + 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, + 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, + 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, + 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, + 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, + 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, + 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, + 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, + 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, + 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, + 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, + 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, + 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, + 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, + 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, + 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, + 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, + 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, + 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, + 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, + 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, + 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, + 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, + 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, + 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, + 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, + 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, + 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, + 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, + 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, + 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, + 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, + 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, + 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, + 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, + 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, + 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, + 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, + 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, + 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, + 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, + 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, + 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, + 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, + 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, + 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, + 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, + 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, + 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, + 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, + 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, + 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, + 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, + 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, + 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, + 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, + 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, + 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, + 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, + 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, + 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, + 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, + 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, + 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, + 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, + 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, + 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, + 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, + 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, + 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, + 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, + 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, + 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, + 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, + 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, + 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, + 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, + 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, + 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, + 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, + 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, + 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, + 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, + 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, + 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, + 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, + 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, + 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, + 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, + 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, + 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, + 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, + 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, + 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, + 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, + 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, + 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, + 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, + 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, + 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, + 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, + 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, + 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, + 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, + 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, + 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, + 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, + 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, + 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, + 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, + 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, + 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, + 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, + 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, + 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, + 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, + 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, + 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, + 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, + 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, + 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, + 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, + 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, + 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, + 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, + 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, + 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, + 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, + 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, + 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, + 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, + 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, + 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, + 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, + 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, + 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, + 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, + 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, + 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, + 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, + 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, + 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, + 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, + 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, + 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, + 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, + 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, + 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, + 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, + 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, + 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, + 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, + 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, + 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, + 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, + 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, + 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, + 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, + 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, + 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, + 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, + 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, + 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, + 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, + 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, + 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, + 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, + 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, + 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, + 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, + 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, + 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, + 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, + 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, + 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, + 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, + 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, + 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, + 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, + 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, + 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, + 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, + 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, + 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, + 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, + 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, + 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, + 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, + 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, + 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, + 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, + 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, + 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, + 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, + 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, + 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, + 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, + 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, + 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, + 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, + 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, + 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, + 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, + 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, + 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, + 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, + 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, + 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, + 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, + 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, + 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, + 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, + 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, + 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, + 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, + 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, + 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, + 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, + 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, + 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, + 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, + 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, + 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, + 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, + 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, + 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, + 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, + 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, + 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, + 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, + 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, + 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, + 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, + 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, + 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, + 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, + 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, + 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, + 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, + 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, + 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, + 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, + 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, + 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, + 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, + 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, + 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, + 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, + 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, + 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, + 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, + 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, + 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, + 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, + 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, + 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, + 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, + 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, + 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, + 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, + 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, + 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, + 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, + 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, + 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, + 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, + 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, + 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, + 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, + 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, + 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, + 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, + 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, + 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, + 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, + 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, + 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, + 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, + 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, + 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, + 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, + 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, + 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, + 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, + 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, + 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, + 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, + 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, + 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, + 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, + 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, + 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, + 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, + 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, + 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, + 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, + 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, + 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, + 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, + 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, + 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, + 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, + 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, + 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, + 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, + 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, + 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, + 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, + 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, + 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, + 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, + 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, + 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, + 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, + 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, + 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, + 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, + 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, + 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, + 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, + 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, + 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, + 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, + 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, + 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, + 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, + 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, + 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, + 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, + 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, + 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, + 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, + 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, + 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, + 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, + 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, + 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, + 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, + 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, + 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, + 0x00, 0x1E, 0x00 }; + +const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' + { 0, 11, 34, 13, 6, -33 }, // 0x21 '!' + { 47, 13, 12, 17, 8, -32 }, // 0x22 '"' + { 67, 28, 34, 26, 3, -32 }, // 0x23 '#' + { 186, 26, 42, 26, 3, -35 }, // 0x24 '$' + { 323, 36, 34, 42, 6, -32 }, // 0x25 '%' + { 476, 26, 34, 31, 4, -32 }, // 0x26 '&' + { 587, 5, 12, 9, 8, -32 }, // 0x27 ''' + { 595, 15, 44, 16, 5, -33 }, // 0x28 '(' + { 678, 15, 44, 16, 1, -33 }, // 0x29 ')' + { 761, 14, 13, 18, 8, -33 }, // 0x2A '*' + { 784, 23, 22, 27, 5, -20 }, // 0x2B '+' + { 848, 7, 12, 13, 3, -4 }, // 0x2C ',' + { 859, 12, 4, 16, 5, -14 }, // 0x2D '-' + { 865, 6, 5, 13, 4, -4 }, // 0x2E '.' + { 869, 21, 35, 13, -1, -33 }, // 0x2F '/' + { 961, 23, 34, 26, 5, -32 }, // 0x30 '0' + { 1059, 13, 33, 26, 10, -32 }, // 0x31 '1' + { 1113, 27, 33, 26, 2, -32 }, // 0x32 '2' + { 1225, 25, 34, 26, 3, -32 }, // 0x33 '3' + { 1332, 24, 33, 26, 3, -32 }, // 0x34 '4' + { 1431, 27, 34, 26, 3, -32 }, // 0x35 '5' + { 1546, 24, 34, 26, 4, -32 }, // 0x36 '6' + { 1648, 26, 33, 26, 6, -32 }, // 0x37 '7' + { 1756, 25, 34, 26, 3, -32 }, // 0x38 '8' + { 1863, 24, 34, 26, 4, -32 }, // 0x39 '9' + { 1965, 10, 25, 13, 5, -24 }, // 0x3A ':' + { 1997, 11, 32, 13, 4, -24 }, // 0x3B ';' + { 2041, 26, 23, 27, 4, -22 }, // 0x3C '<' + { 2116, 26, 12, 27, 3, -16 }, // 0x3D '=' + { 2155, 26, 23, 27, 2, -21 }, // 0x3E '>' + { 2230, 20, 35, 26, 9, -34 }, // 0x3F '?' + { 2318, 45, 42, 48, 4, -34 }, // 0x40 '@' + { 2555, 30, 34, 31, 1, -33 }, // 0x41 'A' + { 2683, 29, 34, 31, 4, -33 }, // 0x42 'B' + { 2807, 30, 36, 33, 5, -34 }, // 0x43 'C' + { 2942, 31, 34, 33, 4, -33 }, // 0x44 'D' + { 3074, 31, 34, 31, 4, -33 }, // 0x45 'E' + { 3206, 30, 34, 28, 4, -33 }, // 0x46 'F' + { 3334, 33, 36, 37, 5, -34 }, // 0x47 'G' + { 3483, 33, 34, 34, 4, -33 }, // 0x48 'H' + { 3624, 11, 34, 13, 5, -33 }, // 0x49 'I' + { 3671, 25, 35, 24, 2, -33 }, // 0x4A 'J' + { 3781, 34, 34, 31, 4, -33 }, // 0x4B 'K' + { 3926, 22, 34, 26, 4, -33 }, // 0x4C 'L' + { 4020, 39, 34, 40, 4, -33 }, // 0x4D 'M' + { 4186, 34, 34, 34, 4, -33 }, // 0x4E 'N' + { 4331, 33, 36, 36, 5, -34 }, // 0x4F 'O' + { 4480, 29, 34, 30, 4, -33 }, // 0x50 'P' + { 4604, 33, 38, 36, 5, -34 }, // 0x51 'Q' + { 4761, 30, 34, 33, 4, -33 }, // 0x52 'R' + { 4889, 29, 36, 31, 4, -34 }, // 0x53 'S' + { 5020, 28, 34, 29, 7, -33 }, // 0x54 'T' + { 5139, 31, 35, 34, 6, -33 }, // 0x55 'U' + { 5275, 29, 34, 30, 8, -33 }, // 0x56 'V' + { 5399, 43, 34, 44, 8, -33 }, // 0x57 'W' + { 5582, 36, 34, 31, 1, -33 }, // 0x58 'X' + { 5735, 30, 34, 32, 8, -33 }, // 0x59 'Y' + { 5863, 34, 34, 29, 1, -33 }, // 0x5A 'Z' + { 6008, 18, 44, 13, 1, -33 }, // 0x5B '[' + { 6107, 6, 35, 13, 7, -33 }, // 0x5C '\' + { 6134, 18, 44, 13, -1, -33 }, // 0x5D ']' + { 6233, 17, 18, 22, 6, -32 }, // 0x5E '^' + { 6272, 29, 2, 26, -3, 7 }, // 0x5F '_' + { 6280, 8, 7, 16, 8, -34 }, // 0x60 '`' + { 6287, 23, 27, 26, 3, -25 }, // 0x61 'a' + { 6365, 25, 35, 26, 3, -33 }, // 0x62 'b' + { 6475, 22, 27, 24, 4, -25 }, // 0x63 'c' + { 6550, 27, 35, 26, 4, -33 }, // 0x64 'd' + { 6669, 23, 27, 26, 4, -25 }, // 0x65 'e' + { 6747, 15, 34, 12, 3, -33 }, // 0x66 'f' + { 6811, 27, 36, 26, 2, -25 }, // 0x67 'g' + { 6933, 23, 34, 25, 3, -33 }, // 0x68 'h' + { 7031, 11, 34, 10, 3, -33 }, // 0x69 'i' + { 7078, 18, 44, 11, -2, -33 }, // 0x6A 'j' + { 7177, 25, 34, 24, 3, -33 }, // 0x6B 'k' + { 7284, 11, 34, 10, 3, -33 }, // 0x6C 'l' + { 7331, 36, 26, 38, 3, -25 }, // 0x6D 'm' + { 7448, 23, 26, 25, 3, -25 }, // 0x6E 'n' + { 7523, 23, 27, 26, 4, -25 }, // 0x6F 'o' + { 7601, 27, 36, 26, 1, -25 }, // 0x70 'p' + { 7723, 26, 36, 26, 3, -25 }, // 0x71 'q' + { 7840, 17, 26, 15, 3, -25 }, // 0x72 'r' + { 7896, 21, 27, 24, 3, -25 }, // 0x73 's' + { 7967, 13, 32, 12, 4, -30 }, // 0x74 't' + { 8019, 24, 26, 25, 4, -24 }, // 0x75 'u' + { 8097, 22, 25, 23, 6, -24 }, // 0x76 'v' + { 8166, 33, 25, 34, 6, -24 }, // 0x77 'w' + { 8270, 26, 25, 23, 1, -24 }, // 0x78 'x' + { 8352, 27, 35, 23, 0, -24 }, // 0x79 'y' + { 8471, 25, 25, 23, 1, -24 }, // 0x7A 'z' + { 8550, 16, 44, 16, 5, -33 }, // 0x7B '{' + { 8638, 12, 44, 12, 3, -33 }, // 0x7C '|' + { 8704, 16, 44, 16, -1, -33 }, // 0x7D '}' + { 8792, 21, 7, 27, 6, -19 } }; // 0x7E '~' + +const GFXfont FreeSansOblique24pt7b PROGMEM = { + (uint8_t *)FreeSansOblique24pt7bBitmaps, + (GFXglyph *)FreeSansOblique24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 9483 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h new file mode 100644 index 000000000..18a6cbe1e --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h @@ -0,0 +1,220 @@ +const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { + 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, + 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, + 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, + 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, + 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, + 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, + 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, + 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, + 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, + 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, + 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, + 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, + 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, + 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, + 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, + 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, + 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, + 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, + 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, + 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, + 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, + 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, + 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, + 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, + 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, + 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, + 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, + 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, + 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, + 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, + 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, + 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, + 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, + 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, + 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, + 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, + 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, + 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, + 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, + 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, + 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, + 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, + 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, + 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, + 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, + 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, + 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, + 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, + 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, + 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, + 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, + 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, + 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, + 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, + 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, + 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, + 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, + 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, + 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, + 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, + 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, + 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, + 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, + 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, + 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, + 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, + 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, + 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, + 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, + 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, + 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, + 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, + 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, + 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, + 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, + 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, + 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, + 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, + 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, + 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, + 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, + 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, + 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, + 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, + 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, + 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, + 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, + 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, + 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, + 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, + 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, + 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, + 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, + 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, + 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, + 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, + 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, + 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, + 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, + 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, + 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, + 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, + 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, + 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, + 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, + 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, + 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, + 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, + 0xC0 }; + +const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 5, 13, 5, 2, -12 }, // 0x21 '!' + { 9, 5, 4, 6, 3, -12 }, // 0x22 '"' + { 12, 11, 13, 10, 1, -12 }, // 0x23 '#' + { 30, 11, 16, 10, 1, -13 }, // 0x24 '$' + { 52, 15, 13, 16, 2, -12 }, // 0x25 '%' + { 77, 10, 13, 12, 2, -12 }, // 0x26 '&' + { 94, 2, 4, 3, 3, -12 }, // 0x27 ''' + { 95, 7, 17, 6, 2, -12 }, // 0x28 '(' + { 110, 7, 17, 6, -1, -12 }, // 0x29 ')' + { 125, 6, 5, 7, 3, -12 }, // 0x2A '*' + { 129, 9, 8, 11, 2, -7 }, // 0x2B '+' + { 138, 3, 5, 5, 1, -1 }, // 0x2C ',' + { 140, 4, 1, 6, 2, -4 }, // 0x2D '-' + { 141, 2, 1, 5, 2, 0 }, // 0x2E '.' + { 142, 8, 13, 5, 0, -12 }, // 0x2F '/' + { 155, 9, 13, 10, 2, -12 }, // 0x30 '0' + { 170, 5, 13, 10, 4, -12 }, // 0x31 '1' + { 179, 11, 13, 10, 1, -12 }, // 0x32 '2' + { 197, 10, 13, 10, 1, -12 }, // 0x33 '3' + { 214, 9, 13, 10, 1, -12 }, // 0x34 '4' + { 229, 11, 13, 10, 1, -12 }, // 0x35 '5' + { 247, 10, 13, 10, 2, -12 }, // 0x36 '6' + { 264, 10, 13, 10, 2, -12 }, // 0x37 '7' + { 281, 10, 13, 10, 1, -12 }, // 0x38 '8' + { 298, 10, 13, 10, 1, -12 }, // 0x39 '9' + { 315, 4, 9, 5, 2, -8 }, // 0x3A ':' + { 320, 5, 12, 5, 1, -8 }, // 0x3B ';' + { 328, 9, 9, 11, 2, -8 }, // 0x3C '<' + { 339, 10, 4, 11, 1, -5 }, // 0x3D '=' + { 344, 9, 9, 11, 1, -7 }, // 0x3E '>' + { 355, 9, 13, 10, 3, -12 }, // 0x3F '?' + { 370, 18, 16, 18, 1, -12 }, // 0x40 '@' + { 406, 12, 13, 12, 0, -12 }, // 0x41 'A' + { 426, 12, 13, 12, 1, -12 }, // 0x42 'B' + { 446, 12, 13, 13, 2, -12 }, // 0x43 'C' + { 466, 13, 13, 13, 1, -12 }, // 0x44 'D' + { 488, 12, 13, 12, 1, -12 }, // 0x45 'E' + { 508, 12, 13, 11, 1, -12 }, // 0x46 'F' + { 528, 13, 13, 14, 2, -12 }, // 0x47 'G' + { 550, 13, 13, 13, 1, -12 }, // 0x48 'H' + { 572, 4, 13, 5, 2, -12 }, // 0x49 'I' + { 579, 10, 13, 9, 1, -12 }, // 0x4A 'J' + { 596, 14, 13, 12, 1, -12 }, // 0x4B 'K' + { 619, 9, 13, 10, 1, -12 }, // 0x4C 'L' + { 634, 16, 13, 15, 1, -12 }, // 0x4D 'M' + { 660, 13, 13, 13, 1, -12 }, // 0x4E 'N' + { 682, 13, 13, 14, 2, -12 }, // 0x4F 'O' + { 704, 12, 13, 12, 1, -12 }, // 0x50 'P' + { 724, 13, 14, 14, 2, -12 }, // 0x51 'Q' + { 747, 13, 13, 13, 1, -12 }, // 0x52 'R' + { 769, 12, 13, 12, 1, -12 }, // 0x53 'S' + { 789, 10, 13, 11, 3, -12 }, // 0x54 'T' + { 806, 12, 13, 13, 2, -12 }, // 0x55 'U' + { 826, 11, 13, 12, 3, -12 }, // 0x56 'V' + { 844, 16, 13, 17, 3, -12 }, // 0x57 'W' + { 870, 14, 13, 12, 0, -12 }, // 0x58 'X' + { 893, 12, 13, 12, 3, -12 }, // 0x59 'Y' + { 913, 12, 13, 11, 1, -12 }, // 0x5A 'Z' + { 933, 7, 17, 5, 0, -12 }, // 0x5B '[' + { 948, 2, 13, 5, 3, -12 }, // 0x5C '\' + { 952, 7, 17, 5, 0, -12 }, // 0x5D ']' + { 967, 7, 7, 8, 2, -12 }, // 0x5E '^' + { 974, 11, 1, 10, -1, 3 }, // 0x5F '_' + { 976, 3, 3, 6, 3, -12 }, // 0x60 '`' + { 978, 10, 10, 10, 1, -9 }, // 0x61 'a' + { 991, 10, 13, 10, 1, -12 }, // 0x62 'b' + { 1008, 9, 10, 9, 1, -9 }, // 0x63 'c' + { 1020, 11, 13, 10, 1, -12 }, // 0x64 'd' + { 1038, 10, 10, 10, 1, -9 }, // 0x65 'e' + { 1051, 6, 13, 5, 1, -12 }, // 0x66 'f' + { 1061, 10, 14, 10, 0, -9 }, // 0x67 'g' + { 1079, 10, 13, 10, 1, -12 }, // 0x68 'h' + { 1096, 4, 13, 4, 1, -12 }, // 0x69 'i' + { 1103, 6, 17, 4, -1, -12 }, // 0x6A 'j' + { 1116, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 1131, 4, 13, 4, 1, -12 }, // 0x6C 'l' + { 1138, 15, 10, 15, 1, -9 }, // 0x6D 'm' + { 1157, 10, 11, 10, 1, -10 }, // 0x6E 'n' + { 1171, 10, 10, 10, 1, -9 }, // 0x6F 'o' + { 1184, 11, 14, 10, 0, -9 }, // 0x70 'p' + { 1204, 10, 14, 10, 1, -9 }, // 0x71 'q' + { 1222, 7, 10, 6, 1, -9 }, // 0x72 'r' + { 1231, 8, 10, 9, 1, -9 }, // 0x73 's' + { 1241, 4, 12, 5, 2, -11 }, // 0x74 't' + { 1247, 9, 10, 10, 2, -9 }, // 0x75 'u' + { 1259, 9, 10, 9, 2, -9 }, // 0x76 'v' + { 1271, 13, 10, 13, 2, -9 }, // 0x77 'w' + { 1288, 11, 10, 9, 0, -9 }, // 0x78 'x' + { 1302, 11, 14, 9, 0, -9 }, // 0x79 'y' + { 1322, 9, 10, 9, 1, -9 }, // 0x7A 'z' + { 1334, 5, 17, 6, 2, -12 }, // 0x7B '{' + { 1345, 4, 17, 5, 1, -12 }, // 0x7C '|' + { 1354, 5, 17, 6, 0, -12 }, // 0x7D '}' + { 1365, 9, 3, 11, 2, -7 } }; // 0x7E '~' + +const GFXfont FreeSansOblique9pt7b PROGMEM = { + (uint8_t *)FreeSansOblique9pt7bBitmaps, + (GFXglyph *)FreeSansOblique9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 2041 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h new file mode 100644 index 000000000..48ad3da69 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h @@ -0,0 +1,259 @@ +const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { + 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, + 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, + 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, + 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, + 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, + 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, + 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, + 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, + 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, + 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, + 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, + 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, + 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, + 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, + 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, + 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, + 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, + 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, + 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, + 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, + 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, + 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, + 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, + 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, + 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, + 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, + 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, + 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, + 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, + 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, + 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, + 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, + 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, + 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, + 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, + 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, + 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, + 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, + 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, + 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, + 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, + 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, + 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, + 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, + 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, + 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, + 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, + 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, + 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, + 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, + 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, + 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, + 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, + 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, + 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, + 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, + 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, + 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, + 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, + 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, + 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, + 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, + 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, + 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, + 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, + 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, + 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, + 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, + 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, + 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, + 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, + 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, + 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, + 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, + 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, + 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, + 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, + 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, + 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, + 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, + 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, + 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, + 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, + 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, + 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, + 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, + 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, + 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, + 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, + 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, + 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, + 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, + 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, + 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, + 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, + 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, + 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, + 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, + 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, + 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, + 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, + 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, + 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, + 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, + 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, + 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, + 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, + 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, + 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, + 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, + 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, + 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, + 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, + 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, + 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, + 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, + 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, + 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, + 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, + 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, + 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, + 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, + 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, + 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, + 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, + 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, + 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, + 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, + 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, + 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, + 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, + 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, + 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, + 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, + 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, + 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, + 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, + 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, + 0x62, 0x41, 0xC0 }; + +const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 2, 16, 8, 3, -15 }, // 0x21 '!' + { 4, 6, 6, 10, 1, -15 }, // 0x22 '"' + { 9, 12, 16, 12, 0, -15 }, // 0x23 '#' + { 33, 10, 18, 12, 1, -16 }, // 0x24 '$' + { 56, 18, 17, 20, 1, -16 }, // 0x25 '%' + { 95, 17, 16, 19, 1, -15 }, // 0x26 '&' + { 129, 2, 6, 5, 1, -15 }, // 0x27 ''' + { 131, 6, 20, 8, 1, -15 }, // 0x28 '(' + { 146, 6, 20, 8, 1, -15 }, // 0x29 ')' + { 161, 8, 10, 12, 3, -14 }, // 0x2A '*' + { 171, 11, 11, 14, 1, -10 }, // 0x2B '+' + { 187, 3, 6, 6, 2, -2 }, // 0x2C ',' + { 190, 6, 1, 8, 1, -5 }, // 0x2D '-' + { 191, 2, 3, 6, 2, -2 }, // 0x2E '.' + { 192, 7, 17, 7, 0, -16 }, // 0x2F '/' + { 207, 10, 17, 12, 1, -16 }, // 0x30 '0' + { 229, 6, 17, 12, 3, -16 }, // 0x31 '1' + { 242, 10, 15, 12, 1, -14 }, // 0x32 '2' + { 261, 10, 16, 12, 1, -15 }, // 0x33 '3' + { 281, 10, 16, 12, 1, -15 }, // 0x34 '4' + { 301, 10, 17, 12, 1, -16 }, // 0x35 '5' + { 323, 10, 17, 12, 1, -16 }, // 0x36 '6' + { 345, 10, 16, 12, 0, -15 }, // 0x37 '7' + { 365, 10, 17, 12, 1, -16 }, // 0x38 '8' + { 387, 10, 18, 12, 1, -16 }, // 0x39 '9' + { 410, 2, 12, 6, 2, -11 }, // 0x3A ':' + { 413, 4, 15, 6, 2, -11 }, // 0x3B ';' + { 421, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 441, 12, 6, 14, 1, -8 }, // 0x3D '=' + { 450, 12, 13, 14, 1, -11 }, // 0x3E '>' + { 470, 8, 17, 11, 2, -16 }, // 0x3F '?' + { 487, 17, 16, 21, 2, -15 }, // 0x40 '@' + { 521, 17, 16, 17, 0, -15 }, // 0x41 'A' + { 555, 12, 16, 15, 1, -15 }, // 0x42 'B' + { 579, 15, 16, 16, 1, -15 }, // 0x43 'C' + { 609, 16, 16, 17, 0, -15 }, // 0x44 'D' + { 641, 14, 16, 15, 0, -15 }, // 0x45 'E' + { 669, 14, 16, 14, 0, -15 }, // 0x46 'F' + { 697, 16, 16, 17, 1, -15 }, // 0x47 'G' + { 729, 16, 16, 17, 0, -15 }, // 0x48 'H' + { 761, 6, 16, 8, 1, -15 }, // 0x49 'I' + { 773, 8, 16, 9, 0, -15 }, // 0x4A 'J' + { 789, 16, 16, 17, 1, -15 }, // 0x4B 'K' + { 821, 15, 16, 15, 0, -15 }, // 0x4C 'L' + { 851, 19, 16, 21, 1, -15 }, // 0x4D 'M' + { 889, 16, 16, 17, 1, -15 }, // 0x4E 'N' + { 921, 15, 16, 17, 1, -15 }, // 0x4F 'O' + { 951, 12, 16, 14, 0, -15 }, // 0x50 'P' + { 975, 16, 20, 17, 1, -15 }, // 0x51 'Q' + { 1015, 15, 16, 16, 0, -15 }, // 0x52 'R' + { 1045, 11, 16, 13, 0, -15 }, // 0x53 'S' + { 1067, 15, 16, 15, 0, -15 }, // 0x54 'T' + { 1097, 16, 16, 17, 1, -15 }, // 0x55 'U' + { 1129, 17, 16, 17, 0, -15 }, // 0x56 'V' + { 1163, 22, 16, 23, 0, -15 }, // 0x57 'W' + { 1207, 17, 16, 17, 0, -15 }, // 0x58 'X' + { 1241, 16, 16, 17, 0, -15 }, // 0x59 'Y' + { 1273, 14, 16, 15, 1, -15 }, // 0x5A 'Z' + { 1301, 5, 20, 8, 2, -15 }, // 0x5B '[' + { 1314, 7, 17, 7, 0, -16 }, // 0x5C '\' + { 1329, 5, 20, 8, 1, -15 }, // 0x5D ']' + { 1342, 10, 9, 11, 1, -15 }, // 0x5E '^' + { 1354, 12, 1, 12, 0, 3 }, // 0x5F '_' + { 1356, 5, 4, 6, 0, -15 }, // 0x60 '`' + { 1359, 10, 11, 10, 1, -10 }, // 0x61 'a' + { 1373, 10, 17, 12, 1, -16 }, // 0x62 'b' + { 1395, 8, 11, 11, 1, -10 }, // 0x63 'c' + { 1406, 10, 17, 12, 1, -16 }, // 0x64 'd' + { 1428, 10, 11, 11, 1, -10 }, // 0x65 'e' + { 1442, 9, 17, 9, 0, -16 }, // 0x66 'f' + { 1462, 12, 16, 11, 0, -10 }, // 0x67 'g' + { 1486, 11, 17, 12, 0, -16 }, // 0x68 'h' + { 1510, 5, 16, 7, 0, -15 }, // 0x69 'i' + { 1520, 6, 21, 8, 0, -15 }, // 0x6A 'j' + { 1536, 11, 17, 12, 1, -16 }, // 0x6B 'k' + { 1560, 5, 17, 6, 0, -16 }, // 0x6C 'l' + { 1571, 18, 11, 19, 0, -10 }, // 0x6D 'm' + { 1596, 11, 11, 12, 0, -10 }, // 0x6E 'n' + { 1612, 10, 11, 12, 1, -10 }, // 0x6F 'o' + { 1626, 11, 16, 12, 0, -10 }, // 0x70 'p' + { 1648, 10, 16, 12, 1, -10 }, // 0x71 'q' + { 1668, 8, 11, 8, 0, -10 }, // 0x72 'r' + { 1679, 7, 11, 9, 1, -10 }, // 0x73 's' + { 1689, 6, 13, 7, 1, -12 }, // 0x74 't' + { 1699, 10, 11, 12, 1, -10 }, // 0x75 'u' + { 1713, 11, 11, 11, 0, -10 }, // 0x76 'v' + { 1729, 16, 11, 16, 0, -10 }, // 0x77 'w' + { 1751, 11, 11, 12, 0, -10 }, // 0x78 'x' + { 1767, 11, 16, 11, 0, -10 }, // 0x79 'y' + { 1789, 10, 11, 10, 0, -10 }, // 0x7A 'z' + { 1803, 5, 21, 12, 2, -16 }, // 0x7B '{' + { 1817, 1, 17, 5, 2, -16 }, // 0x7C '|' + { 1820, 5, 21, 12, 5, -15 }, // 0x7D '}' + { 1834, 12, 3, 12, 0, -6 } }; // 0x7E '~' + +const GFXfont FreeSerif12pt7b PROGMEM = { + (uint8_t *)FreeSerif12pt7bBitmaps, + (GFXglyph *)FreeSerif12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2511 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h new file mode 100644 index 000000000..7d19dd183 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h @@ -0,0 +1,429 @@ +const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { + 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, + 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, + 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, + 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, + 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, + 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, + 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, + 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, + 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, + 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, + 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, + 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, + 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, + 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, + 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, + 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, + 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, + 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, + 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, + 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, + 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, + 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, + 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, + 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, + 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, + 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, + 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, + 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, + 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, + 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, + 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, + 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, + 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, + 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, + 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, + 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, + 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, + 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, + 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, + 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, + 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, + 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, + 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, + 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, + 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, + 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, + 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, + 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, + 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, + 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, + 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, + 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, + 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, + 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, + 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, + 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, + 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, + 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, + 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, + 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, + 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, + 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, + 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, + 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, + 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, + 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, + 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, + 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, + 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, + 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, + 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, + 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, + 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, + 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, + 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, + 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, + 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, + 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, + 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, + 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, + 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, + 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, + 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, + 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, + 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, + 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, + 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, + 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, + 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, + 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, + 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, + 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, + 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, + 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, + 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, + 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, + 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, + 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, + 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, + 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, + 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, + 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, + 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, + 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, + 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, + 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, + 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, + 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, + 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, + 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, + 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, + 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, + 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, + 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, + 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, + 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, + 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, + 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, + 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, + 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, + 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, + 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, + 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, + 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, + 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, + 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, + 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, + 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, + 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, + 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, + 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, + 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, + 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, + 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, + 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, + 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, + 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, + 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, + 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, + 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, + 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, + 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, + 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, + 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, + 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, + 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, + 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, + 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, + 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, + 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, + 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, + 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, + 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, + 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, + 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, + 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, + 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, + 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, + 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, + 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, + 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, + 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, + 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, + 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, + 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, + 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, + 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, + 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, + 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, + 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, + 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, + 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, + 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, + 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, + 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, + 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, + 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, + 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, + 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, + 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, + 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, + 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, + 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, + 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, + 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, + 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, + 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, + 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, + 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, + 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, + 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, + 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, + 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, + 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, + 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, + 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, + 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, + 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, + 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, + 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, + 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, + 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, + 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, + 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, + 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, + 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, + 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, + 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, + 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, + 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, + 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, + 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, + 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, + 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, + 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, + 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, + 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, + 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, + 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, + 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, + 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, + 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, + 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, + 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, + 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, + 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, + 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, + 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, + 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, + 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, + 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, + 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, + 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, + 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, + 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, + 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, + 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, + 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, + 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, + 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, + 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, + 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, + 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, + 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, + 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, + 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, + 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C }; + +const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 4, 24, 12, 5, -23 }, // 0x21 '!' + { 12, 8, 9, 14, 3, -23 }, // 0x22 '"' + { 21, 17, 23, 17, 0, -22 }, // 0x23 '#' + { 70, 13, 27, 17, 2, -24 }, // 0x24 '$' + { 114, 25, 23, 29, 2, -22 }, // 0x25 '%' + { 186, 25, 25, 27, 1, -24 }, // 0x26 '&' + { 265, 3, 9, 7, 2, -23 }, // 0x27 ''' + { 269, 9, 30, 12, 2, -23 }, // 0x28 '(' + { 303, 9, 30, 12, 1, -22 }, // 0x29 ')' + { 337, 12, 14, 18, 3, -23 }, // 0x2A '*' + { 358, 16, 18, 20, 2, -17 }, // 0x2B '+' + { 394, 4, 9, 9, 2, -3 }, // 0x2C ',' + { 399, 8, 2, 12, 1, -8 }, // 0x2D '-' + { 401, 4, 4, 9, 2, -3 }, // 0x2E '.' + { 403, 10, 24, 10, 0, -23 }, // 0x2F '/' + { 433, 16, 24, 18, 1, -23 }, // 0x30 '0' + { 481, 10, 24, 18, 3, -23 }, // 0x31 '1' + { 511, 16, 24, 17, 1, -23 }, // 0x32 '2' + { 559, 13, 24, 17, 2, -23 }, // 0x33 '3' + { 598, 16, 23, 18, 0, -22 }, // 0x34 '4' + { 644, 13, 24, 17, 2, -23 }, // 0x35 '5' + { 683, 16, 24, 18, 1, -23 }, // 0x36 '6' + { 731, 14, 23, 18, 1, -22 }, // 0x37 '7' + { 772, 12, 25, 18, 2, -24 }, // 0x38 '8' + { 810, 16, 26, 17, 1, -24 }, // 0x39 '9' + { 862, 4, 17, 9, 2, -16 }, // 0x3A ':' + { 871, 5, 22, 9, 2, -16 }, // 0x3B ';' + { 885, 18, 18, 20, 1, -17 }, // 0x3C '<' + { 926, 18, 9, 20, 1, -12 }, // 0x3D '=' + { 947, 18, 18, 20, 1, -17 }, // 0x3E '>' + { 988, 13, 25, 16, 2, -24 }, // 0x3F '?' + { 1029, 24, 25, 30, 3, -24 }, // 0x40 '@' + { 1104, 24, 23, 25, 1, -22 }, // 0x41 'A' + { 1173, 20, 23, 22, 1, -22 }, // 0x42 'B' + { 1231, 22, 24, 23, 1, -23 }, // 0x43 'C' + { 1297, 23, 23, 25, 1, -22 }, // 0x44 'D' + { 1364, 20, 23, 21, 2, -22 }, // 0x45 'E' + { 1422, 17, 23, 20, 2, -22 }, // 0x46 'F' + { 1471, 23, 24, 25, 1, -23 }, // 0x47 'G' + { 1540, 22, 23, 25, 2, -22 }, // 0x48 'H' + { 1604, 9, 23, 11, 2, -22 }, // 0x49 'I' + { 1630, 12, 23, 13, 0, -22 }, // 0x4A 'J' + { 1665, 23, 23, 25, 2, -22 }, // 0x4B 'K' + { 1732, 19, 23, 21, 2, -22 }, // 0x4C 'L' + { 1787, 29, 23, 31, 1, -22 }, // 0x4D 'M' + { 1871, 23, 23, 25, 1, -22 }, // 0x4E 'N' + { 1938, 23, 24, 25, 1, -23 }, // 0x4F 'O' + { 2007, 18, 23, 20, 1, -22 }, // 0x50 'P' + { 2059, 23, 30, 25, 1, -23 }, // 0x51 'Q' + { 2146, 21, 23, 23, 2, -22 }, // 0x52 'R' + { 2207, 16, 24, 19, 1, -23 }, // 0x53 'S' + { 2255, 20, 23, 21, 1, -22 }, // 0x54 'T' + { 2313, 22, 23, 25, 2, -22 }, // 0x55 'U' + { 2377, 24, 23, 25, 0, -22 }, // 0x56 'V' + { 2446, 33, 23, 33, 0, -22 }, // 0x57 'W' + { 2541, 25, 23, 25, 0, -22 }, // 0x58 'X' + { 2613, 24, 23, 25, 1, -22 }, // 0x59 'Y' + { 2682, 21, 23, 21, 0, -22 }, // 0x5A 'Z' + { 2743, 7, 28, 12, 3, -22 }, // 0x5B '[' + { 2768, 10, 24, 10, 0, -23 }, // 0x5C '\' + { 2798, 7, 28, 12, 2, -22 }, // 0x5D ']' + { 2823, 15, 13, 16, 1, -22 }, // 0x5E '^' + { 2848, 18, 2, 17, 0, 3 }, // 0x5F '_' + { 2853, 8, 6, 9, 1, -23 }, // 0x60 '`' + { 2859, 13, 16, 15, 2, -15 }, // 0x61 'a' + { 2885, 16, 25, 17, 1, -24 }, // 0x62 'b' + { 2935, 14, 16, 16, 1, -15 }, // 0x63 'c' + { 2963, 16, 25, 17, 1, -24 }, // 0x64 'd' + { 3013, 13, 16, 16, 1, -15 }, // 0x65 'e' + { 3039, 13, 25, 13, 0, -24 }, // 0x66 'f' + { 3080, 16, 24, 16, 1, -15 }, // 0x67 'g' + { 3128, 16, 25, 17, 1, -24 }, // 0x68 'h' + { 3178, 8, 24, 10, 0, -23 }, // 0x69 'i' + { 3202, 9, 32, 12, 0, -23 }, // 0x6A 'j' + { 3238, 17, 25, 18, 1, -24 }, // 0x6B 'k' + { 3292, 8, 25, 9, 0, -24 }, // 0x6C 'l' + { 3317, 26, 16, 27, 1, -15 }, // 0x6D 'm' + { 3369, 16, 16, 17, 1, -15 }, // 0x6E 'n' + { 3401, 16, 16, 17, 1, -15 }, // 0x6F 'o' + { 3433, 16, 24, 17, 1, -15 }, // 0x70 'p' + { 3481, 16, 24, 17, 1, -15 }, // 0x71 'q' + { 3529, 11, 16, 12, 1, -15 }, // 0x72 'r' + { 3551, 10, 16, 13, 1, -15 }, // 0x73 's' + { 3571, 8, 19, 10, 2, -18 }, // 0x74 't' + { 3590, 16, 16, 17, 1, -15 }, // 0x75 'u' + { 3622, 16, 16, 16, 0, -15 }, // 0x76 'v' + { 3654, 24, 16, 24, 0, -15 }, // 0x77 'w' + { 3702, 17, 16, 17, 0, -15 }, // 0x78 'x' + { 3736, 16, 24, 16, 0, -15 }, // 0x79 'y' + { 3784, 14, 16, 15, 0, -15 }, // 0x7A 'z' + { 3812, 8, 30, 17, 3, -23 }, // 0x7B '{' + { 3842, 2, 24, 7, 2, -23 }, // 0x7C '|' + { 3848, 8, 30, 17, 6, -22 }, // 0x7D '}' + { 3878, 16, 4, 17, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSerif18pt7b PROGMEM = { + (uint8_t *)FreeSerif18pt7bBitmaps, + (GFXglyph *)FreeSerif18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4558 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h new file mode 100644 index 000000000..99ff3f497 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h @@ -0,0 +1,690 @@ +const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { + 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, + 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, + 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, + 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, + 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, + 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, + 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, + 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, + 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, + 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, + 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, + 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, + 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, + 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, + 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, + 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, + 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, + 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, + 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, + 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, + 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, + 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, + 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, + 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, + 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, + 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, + 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, + 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, + 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, + 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, + 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, + 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, + 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, + 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, + 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, + 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, + 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, + 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, + 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, + 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, + 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, + 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, + 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, + 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, + 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, + 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, + 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, + 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, + 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, + 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, + 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, + 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, + 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, + 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, + 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, + 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, + 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, + 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, + 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, + 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, + 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, + 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, + 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, + 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, + 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, + 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, + 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, + 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, + 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, + 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, + 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, + 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, + 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, + 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, + 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, + 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, + 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, + 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, + 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, + 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, + 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, + 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, + 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, + 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, + 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, + 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, + 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, + 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, + 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, + 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, + 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, + 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, + 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, + 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, + 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, + 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, + 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, + 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, + 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, + 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, + 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, + 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, + 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, + 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, + 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, + 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, + 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, + 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, + 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, + 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, + 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, + 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, + 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, + 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, + 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, + 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, + 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, + 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, + 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, + 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, + 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, + 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, + 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, + 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, + 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, + 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, + 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, + 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, + 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, + 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, + 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, + 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, + 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, + 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, + 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, + 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, + 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, + 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, + 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, + 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, + 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, + 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, + 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, + 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, + 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, + 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, + 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, + 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, + 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, + 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, + 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, + 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, + 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, + 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, + 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, + 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, + 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, + 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, + 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, + 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, + 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, + 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, + 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, + 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, + 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, + 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, + 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, + 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, + 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, + 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, + 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, + 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, + 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, + 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, + 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, + 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, + 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, + 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, + 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, + 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, + 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, + 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, + 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, + 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, + 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, + 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, + 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, + 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, + 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, + 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, + 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, + 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, + 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, + 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, + 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, + 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, + 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, + 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, + 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, + 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, + 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, + 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, + 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, + 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, + 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, + 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, + 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, + 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, + 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, + 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, + 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, + 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, + 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, + 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, + 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, + 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, + 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, + 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, + 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, + 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, + 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, + 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, + 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, + 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, + 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, + 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, + 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, + 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, + 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, + 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, + 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, + 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, + 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, + 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, + 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, + 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, + 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, + 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, + 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, + 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, + 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, + 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, + 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, + 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, + 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, + 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, + 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, + 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, + 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, + 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, + 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, + 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, + 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, + 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, + 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, + 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, + 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, + 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, + 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, + 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, + 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, + 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, + 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, + 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, + 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, + 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, + 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, + 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, + 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, + 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, + 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, + 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, + 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, + 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, + 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, + 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, + 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, + 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, + 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, + 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, + 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, + 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, + 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, + 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, + 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, + 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, + 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, + 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, + 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, + 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, + 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, + 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, + 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, + 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, + 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, + 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, + 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, + 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, + 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, + 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, + 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, + 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, + 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, + 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, + 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, + 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, + 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, + 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, + 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, + 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, + 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, + 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, + 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, + 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, + 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, + 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, + 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, + 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, + 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, + 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, + 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, + 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, + 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, + 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, + 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, + 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, + 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, + 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, + 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, + 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, + 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, + 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, + 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, + 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, + 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, + 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, + 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, + 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, + 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, + 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, + 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, + 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, + 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, + 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, + 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, + 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, + 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, + 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, + 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, + 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, + 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, + 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, + 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, + 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, + 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, + 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, + 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, + 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, + 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, + 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, + 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, + 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, + 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, + 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, + 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, + 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, + 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, + 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, + 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, + 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, + 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, + 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, + 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, + 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, + 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, + 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, + 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, + 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, + 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, + 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, + 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, + 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, + 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, + 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, + 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, + 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, + 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, + 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, + 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, + 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, + 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, + 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, + 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, + 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, + 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, + 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, + 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, + 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, + 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, + 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, + 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, + 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, + 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, + 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, + 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, + 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, + 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, + 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, + 0x07, 0xC0 }; + +const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 5, 32, 16, 6, -31 }, // 0x21 '!' + { 20, 12, 12, 19, 4, -31 }, // 0x22 '"' + { 38, 23, 31, 23, 0, -30 }, // 0x23 '#' + { 128, 19, 37, 24, 2, -33 }, // 0x24 '$' + { 216, 33, 32, 39, 3, -30 }, // 0x25 '%' + { 348, 32, 33, 37, 2, -31 }, // 0x26 '&' + { 480, 4, 12, 9, 3, -31 }, // 0x27 ''' + { 486, 12, 40, 16, 2, -31 }, // 0x28 '(' + { 546, 12, 40, 16, 2, -30 }, // 0x29 ')' + { 606, 16, 19, 24, 4, -30 }, // 0x2A '*' + { 644, 23, 23, 27, 2, -22 }, // 0x2B '+' + { 711, 6, 11, 12, 2, -4 }, // 0x2C ',' + { 720, 11, 2, 16, 2, -10 }, // 0x2D '-' + { 723, 5, 5, 12, 3, -3 }, // 0x2E '.' + { 727, 14, 32, 14, 0, -30 }, // 0x2F '/' + { 783, 22, 33, 23, 1, -31 }, // 0x30 '0' + { 874, 13, 32, 24, 5, -31 }, // 0x31 '1' + { 926, 21, 31, 23, 1, -30 }, // 0x32 '2' + { 1008, 18, 32, 23, 2, -30 }, // 0x33 '3' + { 1080, 21, 31, 24, 1, -30 }, // 0x34 '4' + { 1162, 19, 33, 24, 2, -31 }, // 0x35 '5' + { 1241, 21, 33, 23, 2, -31 }, // 0x36 '6' + { 1328, 20, 31, 24, 1, -30 }, // 0x37 '7' + { 1406, 18, 33, 23, 3, -31 }, // 0x38 '8' + { 1481, 21, 33, 24, 1, -31 }, // 0x39 '9' + { 1568, 5, 22, 12, 4, -20 }, // 0x3A ':' + { 1582, 6, 27, 12, 3, -20 }, // 0x3B ';' + { 1603, 24, 25, 27, 1, -24 }, // 0x3C '<' + { 1678, 24, 11, 27, 1, -16 }, // 0x3D '=' + { 1711, 24, 25, 27, 2, -23 }, // 0x3E '>' + { 1786, 17, 32, 21, 3, -31 }, // 0x3F '?' + { 1854, 32, 33, 41, 4, -31 }, // 0x40 '@' + { 1986, 32, 32, 34, 1, -31 }, // 0x41 'A' + { 2114, 27, 31, 30, 0, -30 }, // 0x42 'B' + { 2219, 28, 33, 31, 2, -31 }, // 0x43 'C' + { 2335, 31, 31, 34, 1, -30 }, // 0x44 'D' + { 2456, 27, 31, 29, 2, -30 }, // 0x45 'E' + { 2561, 24, 31, 27, 2, -30 }, // 0x46 'F' + { 2654, 31, 33, 35, 2, -31 }, // 0x47 'G' + { 2782, 30, 31, 34, 2, -30 }, // 0x48 'H' + { 2899, 13, 31, 15, 1, -30 }, // 0x49 'I' + { 2950, 17, 32, 18, 0, -30 }, // 0x4A 'J' + { 3018, 32, 31, 33, 1, -30 }, // 0x4B 'K' + { 3142, 26, 31, 29, 2, -30 }, // 0x4C 'L' + { 3243, 39, 31, 41, 1, -30 }, // 0x4D 'M' + { 3395, 32, 32, 34, 1, -30 }, // 0x4E 'N' + { 3523, 30, 33, 34, 2, -31 }, // 0x4F 'O' + { 3647, 23, 31, 27, 2, -30 }, // 0x50 'P' + { 3737, 31, 40, 34, 2, -31 }, // 0x51 'Q' + { 3892, 28, 31, 31, 2, -30 }, // 0x52 'R' + { 4001, 21, 33, 25, 2, -31 }, // 0x53 'S' + { 4088, 27, 31, 28, 1, -30 }, // 0x54 'T' + { 4193, 32, 32, 34, 1, -30 }, // 0x55 'U' + { 4321, 32, 32, 33, 0, -30 }, // 0x56 'V' + { 4449, 44, 32, 45, 0, -30 }, // 0x57 'W' + { 4625, 33, 31, 34, 0, -30 }, // 0x58 'X' + { 4753, 32, 31, 33, 0, -30 }, // 0x59 'Y' + { 4877, 27, 31, 29, 1, -30 }, // 0x5A 'Z' + { 4982, 9, 38, 16, 4, -30 }, // 0x5B '[' + { 5025, 14, 32, 14, 0, -30 }, // 0x5C '\' + { 5081, 9, 38, 16, 3, -30 }, // 0x5D ']' + { 5124, 20, 17, 22, 1, -30 }, // 0x5E '^' + { 5167, 24, 2, 23, 0, 5 }, // 0x5F '_' + { 5173, 10, 8, 12, 1, -31 }, // 0x60 '`' + { 5183, 18, 21, 20, 1, -20 }, // 0x61 'a' + { 5231, 21, 32, 24, 1, -31 }, // 0x62 'b' + { 5315, 19, 21, 21, 1, -20 }, // 0x63 'c' + { 5365, 22, 32, 23, 1, -31 }, // 0x64 'd' + { 5453, 18, 21, 21, 1, -20 }, // 0x65 'e' + { 5501, 17, 33, 18, 0, -32 }, // 0x66 'f' + { 5572, 21, 31, 22, 1, -20 }, // 0x67 'g' + { 5654, 22, 32, 23, 0, -31 }, // 0x68 'h' + { 5742, 11, 32, 13, 0, -31 }, // 0x69 'i' + { 5786, 12, 42, 16, 0, -31 }, // 0x6A 'j' + { 5849, 23, 32, 24, 1, -31 }, // 0x6B 'k' + { 5941, 11, 32, 12, 0, -31 }, // 0x6C 'l' + { 5985, 35, 21, 37, 1, -20 }, // 0x6D 'm' + { 6077, 22, 21, 23, 0, -20 }, // 0x6E 'n' + { 6135, 22, 21, 23, 1, -20 }, // 0x6F 'o' + { 6193, 21, 31, 24, 1, -20 }, // 0x70 'p' + { 6275, 21, 31, 23, 1, -20 }, // 0x71 'q' + { 6357, 15, 21, 16, 1, -20 }, // 0x72 'r' + { 6397, 13, 21, 17, 2, -20 }, // 0x73 's' + { 6432, 12, 26, 13, 1, -25 }, // 0x74 't' + { 6471, 22, 21, 23, 1, -20 }, // 0x75 'u' + { 6529, 22, 22, 22, 0, -20 }, // 0x76 'v' + { 6590, 32, 22, 32, 0, -20 }, // 0x77 'w' + { 6678, 22, 21, 23, 0, -20 }, // 0x78 'x' + { 6736, 22, 31, 22, 0, -20 }, // 0x79 'y' + { 6822, 18, 21, 20, 1, -20 }, // 0x7A 'z' + { 6870, 11, 41, 23, 5, -31 }, // 0x7B '{' + { 6927, 3, 32, 9, 3, -30 }, // 0x7C '|' + { 6939, 11, 41, 23, 7, -31 }, // 0x7D '}' + { 6996, 22, 5, 23, 1, -13 } }; // 0x7E '~' + +const GFXfont FreeSerif24pt7b PROGMEM = { + (uint8_t *)FreeSerif24pt7bBitmaps, + (GFXglyph *)FreeSerif24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 7682 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h new file mode 100644 index 000000000..cdb20c77b --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h @@ -0,0 +1,195 @@ +const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, + 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, + 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, + 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, + 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, + 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, + 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, + 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, + 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, + 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, + 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, + 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, + 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, + 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, + 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, + 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, + 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, + 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, + 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, + 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, + 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, + 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, + 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, + 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, + 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, + 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, + 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, + 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, + 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, + 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, + 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, + 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, + 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, + 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, + 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, + 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, + 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, + 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, + 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, + 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, + 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, + 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, + 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, + 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, + 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, + 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, + 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, + 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, + 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, + 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, + 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, + 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, + 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, + 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, + 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, + 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, + 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, + 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, + 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, + 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, + 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, + 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, + 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, + 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, + 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, + 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, + 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, + 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, + 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, + 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, + 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, + 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, + 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, + 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, + 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, + 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, + 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, + 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, + 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, + 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, + 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, + 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, + 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, + 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, + 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, + 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0 }; + +const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 2, 12, 6, 2, -11 }, // 0x21 '!' + { 3, 5, 4, 7, 1, -11 }, // 0x22 '"' + { 6, 9, 12, 9, 0, -11 }, // 0x23 '#' + { 20, 8, 14, 9, 1, -12 }, // 0x24 '$' + { 34, 13, 12, 15, 1, -11 }, // 0x25 '%' + { 54, 13, 13, 14, 1, -12 }, // 0x26 '&' + { 76, 2, 4, 4, 1, -11 }, // 0x27 ''' + { 77, 5, 15, 6, 1, -11 }, // 0x28 '(' + { 87, 5, 15, 6, 0, -11 }, // 0x29 ')' + { 97, 6, 8, 9, 3, -11 }, // 0x2A '*' + { 103, 9, 9, 10, 0, -8 }, // 0x2B '+' + { 114, 2, 3, 4, 2, 0 }, // 0x2C ',' + { 115, 4, 1, 6, 1, -3 }, // 0x2D '-' + { 116, 2, 2, 5, 1, -1 }, // 0x2E '.' + { 117, 5, 12, 5, 0, -11 }, // 0x2F '/' + { 125, 9, 13, 9, 0, -12 }, // 0x30 '0' + { 140, 5, 13, 9, 2, -12 }, // 0x31 '1' + { 149, 8, 12, 9, 1, -11 }, // 0x32 '2' + { 161, 8, 12, 9, 0, -11 }, // 0x33 '3' + { 173, 7, 12, 9, 1, -11 }, // 0x34 '4' + { 184, 8, 12, 9, 0, -11 }, // 0x35 '5' + { 196, 8, 13, 9, 1, -12 }, // 0x36 '6' + { 209, 8, 12, 9, 0, -11 }, // 0x37 '7' + { 221, 7, 13, 9, 1, -12 }, // 0x38 '8' + { 233, 8, 14, 9, 1, -12 }, // 0x39 '9' + { 247, 2, 8, 5, 1, -7 }, // 0x3A ':' + { 249, 3, 10, 5, 1, -7 }, // 0x3B ';' + { 253, 9, 9, 10, 1, -8 }, // 0x3C '<' + { 264, 9, 5, 10, 1, -6 }, // 0x3D '=' + { 270, 10, 9, 10, 0, -8 }, // 0x3E '>' + { 282, 7, 13, 8, 1, -12 }, // 0x3F '?' + { 294, 12, 13, 16, 2, -12 }, // 0x40 '@' + { 314, 13, 12, 13, 0, -11 }, // 0x41 'A' + { 334, 11, 12, 11, 0, -11 }, // 0x42 'B' + { 351, 11, 12, 12, 1, -11 }, // 0x43 'C' + { 368, 12, 12, 13, 0, -11 }, // 0x44 'D' + { 386, 10, 12, 11, 1, -11 }, // 0x45 'E' + { 401, 9, 12, 10, 1, -11 }, // 0x46 'F' + { 415, 12, 12, 13, 1, -11 }, // 0x47 'G' + { 433, 11, 12, 13, 1, -11 }, // 0x48 'H' + { 450, 4, 12, 6, 1, -11 }, // 0x49 'I' + { 456, 6, 12, 7, 0, -11 }, // 0x4A 'J' + { 465, 12, 12, 13, 1, -11 }, // 0x4B 'K' + { 483, 10, 12, 11, 1, -11 }, // 0x4C 'L' + { 498, 15, 12, 16, 0, -11 }, // 0x4D 'M' + { 521, 11, 12, 13, 1, -11 }, // 0x4E 'N' + { 538, 11, 13, 13, 1, -12 }, // 0x4F 'O' + { 556, 9, 12, 10, 1, -11 }, // 0x50 'P' + { 570, 11, 16, 13, 1, -12 }, // 0x51 'Q' + { 592, 11, 12, 12, 1, -11 }, // 0x52 'R' + { 609, 9, 12, 10, 0, -11 }, // 0x53 'S' + { 623, 11, 12, 11, 0, -11 }, // 0x54 'T' + { 640, 11, 12, 13, 1, -11 }, // 0x55 'U' + { 657, 12, 12, 13, 0, -11 }, // 0x56 'V' + { 675, 17, 12, 17, 0, -11 }, // 0x57 'W' + { 701, 13, 12, 13, 0, -11 }, // 0x58 'X' + { 721, 12, 12, 13, 0, -11 }, // 0x59 'Y' + { 739, 11, 12, 11, 0, -11 }, // 0x5A 'Z' + { 756, 3, 15, 6, 2, -11 }, // 0x5B '[' + { 762, 5, 12, 5, 0, -11 }, // 0x5C '\' + { 770, 3, 15, 6, 1, -11 }, // 0x5D ']' + { 776, 8, 7, 8, 0, -11 }, // 0x5E '^' + { 783, 9, 1, 9, 0, 2 }, // 0x5F '_' + { 785, 4, 3, 5, 0, -11 }, // 0x60 '`' + { 787, 7, 8, 8, 1, -7 }, // 0x61 'a' + { 794, 9, 13, 9, 0, -12 }, // 0x62 'b' + { 809, 7, 8, 8, 0, -7 }, // 0x63 'c' + { 816, 9, 13, 9, 0, -12 }, // 0x64 'd' + { 831, 8, 8, 8, 0, -7 }, // 0x65 'e' + { 839, 7, 13, 7, 1, -12 }, // 0x66 'f' + { 851, 10, 12, 8, 0, -7 }, // 0x67 'g' + { 866, 9, 13, 9, 0, -12 }, // 0x68 'h' + { 881, 4, 11, 5, 1, -10 }, // 0x69 'i' + { 887, 5, 15, 6, 0, -10 }, // 0x6A 'j' + { 897, 9, 13, 9, 1, -12 }, // 0x6B 'k' + { 912, 4, 13, 5, 1, -12 }, // 0x6C 'l' + { 919, 14, 8, 14, 0, -7 }, // 0x6D 'm' + { 933, 9, 8, 9, 0, -7 }, // 0x6E 'n' + { 942, 9, 8, 9, 0, -7 }, // 0x6F 'o' + { 951, 9, 12, 9, 0, -7 }, // 0x70 'p' + { 965, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 979, 6, 8, 6, 0, -7 }, // 0x72 'r' + { 985, 6, 8, 7, 1, -7 }, // 0x73 's' + { 991, 5, 9, 5, 0, -8 }, // 0x74 't' + { 997, 9, 8, 9, 0, -7 }, // 0x75 'u' + { 1006, 8, 8, 8, 0, -7 }, // 0x76 'v' + { 1014, 12, 8, 12, 0, -7 }, // 0x77 'w' + { 1026, 9, 8, 9, 0, -7 }, // 0x78 'x' + { 1035, 8, 12, 8, 0, -7 }, // 0x79 'y' + { 1047, 7, 8, 7, 1, -7 }, // 0x7A 'z' + { 1054, 5, 16, 9, 1, -12 }, // 0x7B '{' + { 1064, 1, 12, 4, 1, -11 }, // 0x7C '|' + { 1066, 5, 16, 9, 3, -11 }, // 0x7D '}' + { 1076, 9, 3, 9, 0, -5 } }; // 0x7E '~' + +const GFXfont FreeSerif9pt7b PROGMEM = { + (uint8_t *)FreeSerif9pt7bBitmaps, + (GFXglyph *)FreeSerif9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1752 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h new file mode 100644 index 000000000..1d499811f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h @@ -0,0 +1,271 @@ +const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { + 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, + 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, + 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, + 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, + 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, + 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, + 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, + 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, + 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, + 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, + 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, + 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, + 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, + 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, + 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, + 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, + 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, + 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, + 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, + 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, + 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, + 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, + 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, + 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, + 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, + 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, + 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, + 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, + 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, + 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, + 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, + 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, + 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, + 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, + 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, + 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, + 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, + 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, + 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, + 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, + 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, + 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, + 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, + 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, + 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, + 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, + 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, + 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, + 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, + 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, + 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, + 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, + 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, + 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, + 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, + 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, + 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, + 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, + 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, + 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, + 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, + 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, + 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, + 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, + 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, + 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, + 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, + 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, + 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, + 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, + 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, + 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, + 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, + 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, + 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, + 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, + 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, + 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, + 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, + 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, + 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, + 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, + 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, + 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, + 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, + 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, + 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, + 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, + 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, + 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, + 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, + 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, + 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, + 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, + 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, + 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, + 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, + 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, + 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, + 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, + 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, + 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, + 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, + 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, + 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, + 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, + 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, + 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, + 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, + 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, + 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, + 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, + 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, + 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, + 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, + 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, + 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, + 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, + 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, + 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, + 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, + 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, + 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, + 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, + 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, + 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, + 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, + 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, + 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, + 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, + 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, + 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, + 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, + 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, + 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, + 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, + 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, + 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, + 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, + 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, + 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, + 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, + 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, + 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, + 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, + 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0 }; + +const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 4, 16, 8, 2, -15 }, // 0x21 '!' + { 8, 9, 7, 13, 2, -15 }, // 0x22 '"' + { 16, 12, 16, 12, 0, -15 }, // 0x23 '#' + { 40, 11, 20, 12, 1, -17 }, // 0x24 '$' + { 68, 18, 16, 24, 3, -15 }, // 0x25 '%' + { 104, 18, 16, 20, 1, -15 }, // 0x26 '&' + { 140, 3, 7, 7, 2, -15 }, // 0x27 ''' + { 143, 6, 21, 8, 1, -16 }, // 0x28 '(' + { 159, 6, 21, 8, 1, -16 }, // 0x29 ')' + { 175, 9, 10, 12, 2, -15 }, // 0x2A '*' + { 187, 12, 12, 16, 2, -11 }, // 0x2B '+' + { 205, 4, 8, 6, 1, -3 }, // 0x2C ',' + { 209, 6, 3, 8, 1, -6 }, // 0x2D '-' + { 212, 4, 4, 6, 1, -3 }, // 0x2E '.' + { 214, 8, 17, 7, -1, -15 }, // 0x2F '/' + { 231, 11, 16, 12, 1, -15 }, // 0x30 '0' + { 253, 9, 16, 12, 1, -15 }, // 0x31 '1' + { 271, 12, 16, 12, 0, -15 }, // 0x32 '2' + { 295, 11, 16, 12, 1, -15 }, // 0x33 '3' + { 317, 10, 16, 12, 1, -15 }, // 0x34 '4' + { 337, 11, 16, 12, 1, -15 }, // 0x35 '5' + { 359, 11, 16, 12, 1, -15 }, // 0x36 '6' + { 381, 11, 16, 12, 0, -15 }, // 0x37 '7' + { 403, 11, 16, 12, 1, -15 }, // 0x38 '8' + { 425, 11, 16, 12, 1, -15 }, // 0x39 '9' + { 447, 4, 11, 8, 2, -10 }, // 0x3A ':' + { 453, 4, 15, 8, 2, -10 }, // 0x3B ';' + { 461, 14, 14, 16, 1, -12 }, // 0x3C '<' + { 486, 14, 8, 16, 1, -9 }, // 0x3D '=' + { 500, 14, 14, 16, 1, -12 }, // 0x3E '>' + { 525, 10, 16, 12, 1, -15 }, // 0x3F '?' + { 545, 16, 16, 22, 3, -15 }, // 0x40 '@' + { 577, 17, 16, 17, 0, -15 }, // 0x41 'A' + { 611, 14, 16, 16, 1, -15 }, // 0x42 'B' + { 639, 15, 16, 17, 1, -15 }, // 0x43 'C' + { 669, 17, 16, 18, 0, -15 }, // 0x44 'D' + { 703, 15, 16, 16, 1, -15 }, // 0x45 'E' + { 733, 14, 16, 15, 1, -15 }, // 0x46 'F' + { 761, 16, 16, 19, 1, -15 }, // 0x47 'G' + { 793, 16, 16, 19, 2, -15 }, // 0x48 'H' + { 825, 8, 16, 9, 1, -15 }, // 0x49 'I' + { 841, 12, 18, 12, 0, -15 }, // 0x4A 'J' + { 868, 17, 16, 19, 2, -15 }, // 0x4B 'K' + { 902, 14, 16, 16, 2, -15 }, // 0x4C 'L' + { 930, 20, 16, 23, 1, -15 }, // 0x4D 'M' + { 970, 15, 16, 17, 1, -15 }, // 0x4E 'N' + { 1000, 17, 16, 19, 1, -15 }, // 0x4F 'O' + { 1034, 12, 16, 15, 2, -15 }, // 0x50 'P' + { 1058, 17, 20, 19, 1, -15 }, // 0x51 'Q' + { 1101, 16, 16, 17, 1, -15 }, // 0x52 'R' + { 1133, 12, 16, 14, 1, -15 }, // 0x53 'S' + { 1157, 15, 16, 15, 0, -15 }, // 0x54 'T' + { 1187, 15, 16, 17, 1, -15 }, // 0x55 'U' + { 1217, 17, 17, 17, 0, -15 }, // 0x56 'V' + { 1254, 23, 16, 24, 0, -15 }, // 0x57 'W' + { 1300, 17, 16, 17, 0, -15 }, // 0x58 'X' + { 1334, 16, 16, 17, 1, -15 }, // 0x59 'Y' + { 1366, 15, 16, 16, 0, -15 }, // 0x5A 'Z' + { 1396, 5, 20, 8, 2, -15 }, // 0x5B '[' + { 1409, 8, 17, 7, -1, -15 }, // 0x5C '\' + { 1426, 5, 20, 8, 2, -15 }, // 0x5D ']' + { 1439, 10, 9, 14, 2, -15 }, // 0x5E '^' + { 1451, 12, 1, 12, 0, 4 }, // 0x5F '_' + { 1453, 5, 4, 8, 0, -16 }, // 0x60 '`' + { 1456, 11, 11, 12, 1, -10 }, // 0x61 'a' + { 1472, 12, 16, 13, 1, -15 }, // 0x62 'b' + { 1496, 9, 11, 10, 1, -10 }, // 0x63 'c' + { 1509, 12, 16, 13, 1, -15 }, // 0x64 'd' + { 1533, 10, 11, 11, 1, -10 }, // 0x65 'e' + { 1547, 8, 16, 9, 1, -15 }, // 0x66 'f' + { 1563, 11, 16, 12, 1, -10 }, // 0x67 'g' + { 1585, 12, 16, 13, 1, -15 }, // 0x68 'h' + { 1609, 6, 16, 7, 1, -15 }, // 0x69 'i' + { 1621, 8, 21, 10, 0, -15 }, // 0x6A 'j' + { 1642, 13, 16, 13, 1, -15 }, // 0x6B 'k' + { 1668, 6, 16, 7, 1, -15 }, // 0x6C 'l' + { 1680, 19, 11, 20, 1, -10 }, // 0x6D 'm' + { 1707, 12, 11, 13, 1, -10 }, // 0x6E 'n' + { 1724, 11, 11, 12, 1, -10 }, // 0x6F 'o' + { 1740, 12, 16, 13, 1, -10 }, // 0x70 'p' + { 1764, 12, 16, 13, 1, -10 }, // 0x71 'q' + { 1788, 10, 11, 10, 1, -10 }, // 0x72 'r' + { 1802, 8, 11, 10, 1, -10 }, // 0x73 's' + { 1813, 8, 15, 8, 1, -14 }, // 0x74 't' + { 1828, 12, 11, 14, 1, -10 }, // 0x75 'u' + { 1845, 11, 11, 12, 0, -10 }, // 0x76 'v' + { 1861, 17, 11, 17, 0, -10 }, // 0x77 'w' + { 1885, 12, 11, 12, 0, -10 }, // 0x78 'x' + { 1902, 11, 16, 12, 0, -10 }, // 0x79 'y' + { 1924, 10, 11, 11, 1, -10 }, // 0x7A 'z' + { 1938, 8, 21, 9, 0, -16 }, // 0x7B '{' + { 1959, 2, 17, 5, 2, -15 }, // 0x7C '|' + { 1964, 8, 21, 9, 2, -16 }, // 0x7D '}' + { 1985, 11, 4, 12, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSerifBold12pt7b PROGMEM = { + (uint8_t *)FreeSerifBold12pt7bBitmaps, + (GFXglyph *)FreeSerifBold12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2663 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h new file mode 100644 index 000000000..11d3c7ea2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h @@ -0,0 +1,462 @@ +const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { + 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, + 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, + 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, + 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, + 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, + 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, + 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, + 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, + 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, + 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, + 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, + 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, + 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, + 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, + 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, + 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, + 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, + 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, + 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, + 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, + 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, + 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, + 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, + 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, + 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, + 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, + 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, + 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, + 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, + 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, + 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, + 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, + 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, + 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, + 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, + 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, + 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, + 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, + 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, + 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, + 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, + 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, + 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, + 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, + 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, + 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, + 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, + 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, + 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, + 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, + 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, + 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, + 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, + 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, + 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, + 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, + 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, + 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, + 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, + 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, + 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, + 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, + 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, + 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, + 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, + 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, + 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, + 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, + 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, + 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, + 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, + 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, + 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, + 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, + 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, + 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, + 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, + 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, + 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, + 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, + 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, + 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, + 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, + 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, + 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, + 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, + 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, + 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, + 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, + 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, + 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, + 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, + 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, + 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, + 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, + 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, + 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, + 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, + 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, + 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, + 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, + 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, + 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, + 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, + 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, + 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, + 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, + 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, + 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, + 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, + 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, + 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, + 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, + 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, + 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, + 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, + 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, + 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, + 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, + 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, + 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, + 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, + 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, + 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, + 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, + 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, + 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, + 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, + 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, + 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, + 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, + 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, + 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, + 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, + 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, + 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, + 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, + 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, + 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, + 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, + 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, + 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, + 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, + 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, + 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, + 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, + 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, + 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, + 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, + 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, + 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, + 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, + 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, + 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, + 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, + 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, + 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, + 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, + 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, + 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, + 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, + 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, + 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, + 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, + 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, + 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, + 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, + 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, + 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, + 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, + 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, + 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, + 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, + 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, + 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, + 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, + 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, + 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, + 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, + 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, + 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, + 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, + 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, + 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, + 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, + 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, + 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, + 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, + 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, + 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, + 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, + 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, + 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, + 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, + 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, + 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, + 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, + 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, + 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, + 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, + 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, + 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, + 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, + 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, + 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, + 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, + 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, + 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, + 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, + 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, + 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, + 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, + 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, + 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, + 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, + 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, + 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, + 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, + 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, + 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, + 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, + 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, + 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, + 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, + 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, + 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, + 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, + 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, + 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, + 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, + 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, + 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, + 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, + 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, + 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, + 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, + 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, + 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, + 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, + 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, + 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, + 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, + 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, + 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, + 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, + 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, + 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, + 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, + 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, + 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, + 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, + 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, + 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, + 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, + 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, + 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, + 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, + 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, + 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, + 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, + 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, + 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, + 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, + 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, + 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, + 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, + 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, + 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, + 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, + 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, + 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, + 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, + 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, + 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, + 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, + 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, + 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, + 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, + 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, + 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, + 0x7C }; + +const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 6, 24, 12, 3, -23 }, // 0x21 '!' + { 18, 13, 10, 19, 3, -23 }, // 0x22 '"' + { 35, 18, 24, 17, 0, -23 }, // 0x23 '#' + { 89, 15, 28, 17, 1, -25 }, // 0x24 '$' + { 142, 27, 24, 35, 4, -23 }, // 0x25 '%' + { 223, 26, 25, 29, 2, -23 }, // 0x26 '&' + { 305, 4, 10, 10, 3, -23 }, // 0x27 ''' + { 310, 9, 30, 12, 2, -23 }, // 0x28 '(' + { 344, 9, 30, 12, 1, -23 }, // 0x29 ')' + { 378, 14, 15, 18, 2, -23 }, // 0x2A '*' + { 405, 19, 19, 24, 2, -17 }, // 0x2B '+' + { 451, 6, 12, 9, 1, -5 }, // 0x2C ',' + { 460, 8, 4, 12, 2, -9 }, // 0x2D '-' + { 464, 6, 6, 9, 1, -5 }, // 0x2E '.' + { 469, 11, 25, 10, -1, -23 }, // 0x2F '/' + { 504, 16, 24, 18, 1, -23 }, // 0x30 '0' + { 552, 12, 24, 18, 3, -23 }, // 0x31 '1' + { 588, 16, 24, 17, 1, -23 }, // 0x32 '2' + { 636, 16, 24, 18, 0, -23 }, // 0x33 '3' + { 684, 15, 24, 18, 1, -23 }, // 0x34 '4' + { 729, 15, 24, 18, 1, -23 }, // 0x35 '5' + { 774, 16, 24, 18, 1, -23 }, // 0x36 '6' + { 822, 16, 24, 17, 1, -23 }, // 0x37 '7' + { 870, 16, 24, 17, 1, -23 }, // 0x38 '8' + { 918, 16, 24, 18, 1, -23 }, // 0x39 '9' + { 966, 6, 16, 12, 3, -15 }, // 0x3A ':' + { 978, 7, 22, 12, 2, -15 }, // 0x3B ';' + { 998, 19, 20, 24, 2, -18 }, // 0x3C '<' + { 1046, 19, 12, 24, 2, -14 }, // 0x3D '=' + { 1075, 19, 20, 24, 3, -18 }, // 0x3E '>' + { 1123, 14, 24, 18, 2, -23 }, // 0x3F '?' + { 1165, 24, 25, 33, 4, -23 }, // 0x40 '@' + { 1240, 24, 24, 25, 1, -23 }, // 0x41 'A' + { 1312, 21, 24, 23, 1, -23 }, // 0x42 'B' + { 1375, 23, 25, 25, 1, -23 }, // 0x43 'C' + { 1447, 23, 24, 26, 1, -23 }, // 0x44 'D' + { 1516, 21, 24, 23, 2, -23 }, // 0x45 'E' + { 1579, 19, 24, 22, 2, -23 }, // 0x46 'F' + { 1636, 25, 25, 27, 1, -23 }, // 0x47 'G' + { 1715, 24, 24, 27, 2, -23 }, // 0x48 'H' + { 1787, 11, 24, 14, 2, -23 }, // 0x49 'I' + { 1820, 16, 27, 18, 0, -23 }, // 0x4A 'J' + { 1874, 25, 24, 27, 2, -23 }, // 0x4B 'K' + { 1949, 21, 24, 23, 2, -23 }, // 0x4C 'L' + { 2012, 31, 24, 33, 1, -23 }, // 0x4D 'M' + { 2105, 23, 24, 25, 1, -23 }, // 0x4E 'N' + { 2174, 25, 25, 27, 1, -23 }, // 0x4F 'O' + { 2253, 19, 24, 22, 2, -23 }, // 0x50 'P' + { 2310, 25, 30, 27, 1, -23 }, // 0x51 'Q' + { 2404, 23, 24, 25, 2, -23 }, // 0x52 'R' + { 2473, 16, 25, 20, 2, -23 }, // 0x53 'S' + { 2523, 21, 24, 23, 1, -23 }, // 0x54 'T' + { 2586, 22, 25, 25, 2, -23 }, // 0x55 'U' + { 2655, 24, 24, 25, 0, -23 }, // 0x56 'V' + { 2727, 34, 25, 34, 0, -23 }, // 0x57 'W' + { 2834, 24, 24, 25, 1, -23 }, // 0x58 'X' + { 2906, 24, 24, 25, 1, -23 }, // 0x59 'Y' + { 2978, 21, 24, 23, 1, -23 }, // 0x5A 'Z' + { 3041, 8, 29, 12, 2, -23 }, // 0x5B '[' + { 3070, 11, 25, 10, -1, -23 }, // 0x5C '\' + { 3105, 8, 29, 12, 2, -23 }, // 0x5D ']' + { 3134, 15, 13, 20, 3, -23 }, // 0x5E '^' + { 3159, 18, 3, 17, 0, 3 }, // 0x5F '_' + { 3166, 8, 6, 12, 0, -23 }, // 0x60 '`' + { 3172, 16, 16, 18, 1, -15 }, // 0x61 'a' + { 3204, 18, 24, 19, 1, -23 }, // 0x62 'b' + { 3258, 14, 16, 15, 1, -15 }, // 0x63 'c' + { 3286, 18, 24, 19, 1, -23 }, // 0x64 'd' + { 3340, 14, 16, 16, 1, -15 }, // 0x65 'e' + { 3368, 11, 24, 14, 2, -23 }, // 0x66 'f' + { 3401, 17, 23, 17, 1, -15 }, // 0x67 'g' + { 3450, 17, 24, 19, 1, -23 }, // 0x68 'h' + { 3501, 7, 24, 10, 2, -23 }, // 0x69 'i' + { 3522, 11, 31, 14, 0, -23 }, // 0x6A 'j' + { 3565, 18, 24, 19, 1, -23 }, // 0x6B 'k' + { 3619, 7, 24, 10, 1, -23 }, // 0x6C 'l' + { 3640, 27, 16, 29, 1, -15 }, // 0x6D 'm' + { 3694, 17, 16, 19, 1, -15 }, // 0x6E 'n' + { 3728, 17, 16, 18, 1, -15 }, // 0x6F 'o' + { 3762, 19, 23, 19, 0, -15 }, // 0x70 'p' + { 3817, 17, 23, 19, 1, -15 }, // 0x71 'q' + { 3866, 13, 16, 15, 1, -15 }, // 0x72 'r' + { 3892, 12, 16, 14, 1, -15 }, // 0x73 's' + { 3916, 10, 21, 12, 1, -20 }, // 0x74 't' + { 3943, 18, 16, 20, 1, -15 }, // 0x75 'u' + { 3979, 17, 16, 17, 0, -15 }, // 0x76 'v' + { 4013, 24, 16, 25, 0, -15 }, // 0x77 'w' + { 4061, 16, 16, 18, 1, -15 }, // 0x78 'x' + { 4093, 16, 23, 17, 0, -15 }, // 0x79 'y' + { 4139, 14, 16, 16, 0, -15 }, // 0x7A 'z' + { 4167, 11, 31, 14, 1, -24 }, // 0x7B '{' + { 4210, 3, 25, 8, 2, -23 }, // 0x7C '|' + { 4220, 11, 31, 14, 3, -24 }, // 0x7D '}' + { 4263, 16, 5, 18, 1, -11 } }; // 0x7E '~' + +const GFXfont FreeSerifBold18pt7b PROGMEM = { + (uint8_t *)FreeSerifBold18pt7bBitmaps, + (GFXglyph *)FreeSerifBold18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4945 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h new file mode 100644 index 000000000..0eb2d0b1a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h @@ -0,0 +1,759 @@ +const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { + 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, + 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, + 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, + 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, + 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, + 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, + 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, + 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, + 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, + 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, + 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, + 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, + 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, + 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, + 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, + 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, + 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, + 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, + 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, + 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, + 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, + 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, + 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, + 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, + 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, + 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, + 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, + 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, + 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, + 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, + 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, + 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, + 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, + 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, + 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, + 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, + 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, + 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, + 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, + 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, + 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, + 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, + 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, + 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, + 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, + 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, + 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, + 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, + 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, + 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, + 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, + 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, + 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, + 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, + 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, + 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, + 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, + 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, + 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, + 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, + 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, + 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, + 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, + 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, + 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, + 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, + 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, + 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, + 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, + 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, + 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, + 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, + 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, + 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, + 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, + 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, + 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, + 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, + 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, + 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, + 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, + 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, + 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, + 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, + 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, + 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, + 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, + 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, + 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, + 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, + 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, + 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, + 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, + 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, + 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, + 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, + 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, + 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, + 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, + 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, + 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, + 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, + 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, + 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, + 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, + 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, + 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, + 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, + 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, + 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, + 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, + 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, + 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, + 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, + 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, + 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, + 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, + 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, + 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, + 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, + 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, + 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, + 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, + 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, + 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, + 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, + 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, + 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, + 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, + 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, + 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, + 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, + 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, + 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, + 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, + 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, + 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, + 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, + 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, + 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, + 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, + 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, + 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, + 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, + 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, + 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, + 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, + 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, + 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, + 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, + 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, + 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, + 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, + 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, + 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, + 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, + 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, + 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, + 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, + 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, + 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, + 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, + 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, + 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, + 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, + 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, + 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, + 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, + 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, + 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, + 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, + 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, + 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, + 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, + 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, + 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, + 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, + 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, + 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, + 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, + 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, + 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, + 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, + 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, + 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, + 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, + 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, + 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, + 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, + 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, + 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, + 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, + 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, + 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, + 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, + 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, + 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, + 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, + 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, + 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, + 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, + 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, + 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, + 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, + 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, + 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, + 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, + 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, + 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, + 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, + 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, + 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, + 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, + 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, + 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, + 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, + 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, + 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, + 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, + 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, + 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, + 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, + 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, + 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, + 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, + 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, + 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, + 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, + 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, + 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, + 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, + 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, + 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, + 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, + 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, + 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, + 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, + 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, + 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, + 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, + 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, + 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, + 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, + 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, + 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, + 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, + 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, + 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, + 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, + 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, + 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, + 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, + 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, + 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, + 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, + 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, + 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, + 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, + 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, + 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, + 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, + 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, + 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, + 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, + 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, + 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, + 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, + 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, + 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, + 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, + 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, + 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, + 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, + 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, + 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, + 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, + 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, + 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, + 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, + 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, + 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, + 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, + 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, + 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, + 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, + 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, + 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, + 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, + 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, + 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, + 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, + 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, + 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, + 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, + 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, + 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, + 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, + 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, + 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, + 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, + 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, + 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, + 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, + 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, + 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, + 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, + 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, + 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, + 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, + 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, + 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, + 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, + 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, + 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, + 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, + 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, + 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, + 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, + 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, + 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, + 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, + 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, + 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, + 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, + 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, + 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, + 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, + 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, + 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, + 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, + 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, + 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, + 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, + 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, + 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, + 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, + 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, + 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, + 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, + 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, + 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, + 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, + 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, + 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, + 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, + 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, + 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, + 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, + 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, + 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, + 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, + 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, + 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, + 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, + 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, + 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, + 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, + 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, + 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, + 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, + 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, + 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, + 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, + 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, + 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, + 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, + 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, + 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, + 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, + 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, + 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, + 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, + 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, + 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, + 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, + 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, + 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, + 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, + 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, + 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, + 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, + 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, + 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, + 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, + 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, + 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, + 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, + 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, + 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, + 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, + 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, + 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, + 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, + 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, + 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, + 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, + 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, + 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, + 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, + 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, + 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, + 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, + 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, + 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, + 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, + 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, + 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, + 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, + 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, + 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, + 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, + 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, + 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, + 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, + 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, + 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, + 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, + 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, + 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, + 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, + 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, + 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, + 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, + 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, + 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, + 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, + 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, + 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, + 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, + 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, + 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, + 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, + 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, + 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, + 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, + 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, + 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, + 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, + 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, + 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, + 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, + 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, + 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, + 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, + 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, + 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, + 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, + 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, + 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, + 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, + 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, + 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, + 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, + 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, + 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, + 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, + 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, + 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, + 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, + 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, + 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, + 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, + 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, + 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, + 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, + 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, + 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, + 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, + 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, + 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, + 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, + 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, + 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, + 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, + 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, + 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, + 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, + 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, + 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, + 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, + 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, + 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, + 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, + 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, + 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, + 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, + 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, + 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, + 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, + 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, + 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, + 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, + 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, + 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, + 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, + 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, + 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, + 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, + 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, + 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, + 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, + 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, + 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, + 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, + 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, + 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, + 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, + 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, + 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, + 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, + 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, + 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, + 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, + 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, + 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00 }; + +const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 8, 34, 16, 4, -32 }, // 0x21 '!' + { 34, 17, 13, 26, 4, -32 }, // 0x22 '"' + { 62, 23, 33, 23, 0, -32 }, // 0x23 '#' + { 157, 21, 39, 24, 1, -34 }, // 0x24 '$' + { 260, 35, 34, 47, 6, -32 }, // 0x25 '%' + { 409, 34, 34, 39, 3, -32 }, // 0x26 '&' + { 554, 5, 13, 13, 4, -32 }, // 0x27 ''' + { 563, 12, 41, 16, 2, -32 }, // 0x28 '(' + { 625, 12, 41, 16, 1, -32 }, // 0x29 ')' + { 687, 18, 21, 24, 3, -32 }, // 0x2A '*' + { 735, 26, 25, 32, 3, -24 }, // 0x2B '+' + { 817, 8, 15, 12, 2, -6 }, // 0x2C ',' + { 832, 11, 5, 16, 2, -12 }, // 0x2D '-' + { 839, 8, 8, 12, 2, -6 }, // 0x2E '.' + { 847, 15, 33, 13, -1, -32 }, // 0x2F '/' + { 909, 22, 34, 23, 1, -32 }, // 0x30 '0' + { 1003, 18, 33, 23, 3, -32 }, // 0x31 '1' + { 1078, 21, 33, 24, 1, -32 }, // 0x32 '2' + { 1165, 21, 34, 24, 1, -32 }, // 0x33 '3' + { 1255, 21, 33, 24, 1, -32 }, // 0x34 '4' + { 1342, 20, 32, 23, 2, -31 }, // 0x35 '5' + { 1422, 21, 34, 24, 1, -32 }, // 0x36 '6' + { 1512, 21, 32, 23, 1, -31 }, // 0x37 '7' + { 1596, 21, 34, 23, 1, -32 }, // 0x38 '8' + { 1686, 22, 34, 23, 1, -32 }, // 0x39 '9' + { 1780, 8, 24, 16, 4, -22 }, // 0x3A ':' + { 1804, 9, 31, 16, 3, -22 }, // 0x3B ';' + { 1839, 26, 26, 32, 3, -24 }, // 0x3C '<' + { 1924, 26, 17, 32, 3, -20 }, // 0x3D '=' + { 1980, 26, 26, 32, 3, -24 }, // 0x3E '>' + { 2065, 18, 34, 24, 3, -32 }, // 0x3F '?' + { 2142, 33, 34, 44, 5, -32 }, // 0x40 '@' + { 2283, 32, 33, 34, 1, -32 }, // 0x41 'A' + { 2415, 28, 32, 31, 1, -31 }, // 0x42 'B' + { 2527, 30, 34, 33, 2, -32 }, // 0x43 'C' + { 2655, 32, 32, 34, 1, -31 }, // 0x44 'D' + { 2783, 28, 32, 32, 2, -31 }, // 0x45 'E' + { 2895, 25, 32, 29, 2, -31 }, // 0x46 'F' + { 2995, 33, 34, 36, 2, -32 }, // 0x47 'G' + { 3136, 33, 32, 37, 2, -31 }, // 0x48 'H' + { 3268, 15, 32, 18, 2, -31 }, // 0x49 'I' + { 3328, 22, 37, 24, 0, -31 }, // 0x4A 'J' + { 3430, 34, 32, 36, 2, -31 }, // 0x4B 'K' + { 3566, 28, 32, 31, 2, -31 }, // 0x4C 'L' + { 3678, 43, 32, 45, 0, -31 }, // 0x4D 'M' + { 3850, 31, 32, 34, 1, -31 }, // 0x4E 'N' + { 3974, 33, 34, 37, 2, -32 }, // 0x4F 'O' + { 4115, 26, 32, 30, 2, -31 }, // 0x50 'P' + { 4219, 33, 41, 37, 2, -32 }, // 0x51 'Q' + { 4389, 31, 32, 34, 2, -31 }, // 0x52 'R' + { 4513, 21, 34, 27, 3, -32 }, // 0x53 'S' + { 4603, 28, 32, 30, 1, -31 }, // 0x54 'T' + { 4715, 30, 33, 34, 2, -31 }, // 0x55 'U' + { 4839, 33, 32, 33, 0, -31 }, // 0x56 'V' + { 4971, 45, 33, 46, 1, -31 }, // 0x57 'W' + { 5157, 32, 32, 34, 1, -31 }, // 0x58 'X' + { 5285, 32, 32, 33, 1, -31 }, // 0x59 'Y' + { 5413, 28, 32, 30, 1, -31 }, // 0x5A 'Z' + { 5525, 11, 39, 16, 3, -31 }, // 0x5B '[' + { 5579, 15, 33, 13, -1, -32 }, // 0x5C '\' + { 5641, 11, 39, 16, 2, -31 }, // 0x5D ']' + { 5695, 21, 17, 27, 3, -31 }, // 0x5E '^' + { 5740, 24, 3, 23, 0, 5 }, // 0x5F '_' + { 5749, 11, 9, 16, 0, -33 }, // 0x60 '`' + { 5762, 22, 24, 23, 1, -22 }, // 0x61 'a' + { 5828, 25, 33, 26, 0, -31 }, // 0x62 'b' + { 5932, 19, 24, 20, 1, -22 }, // 0x63 'c' + { 5989, 24, 33, 26, 1, -31 }, // 0x64 'd' + { 6088, 18, 24, 21, 1, -22 }, // 0x65 'e' + { 6142, 17, 33, 18, 1, -32 }, // 0x66 'f' + { 6213, 19, 32, 24, 2, -22 }, // 0x67 'g' + { 6289, 24, 32, 26, 0, -31 }, // 0x68 'h' + { 6385, 11, 33, 14, 1, -32 }, // 0x69 'i' + { 6431, 14, 42, 18, 0, -32 }, // 0x6A 'j' + { 6505, 25, 32, 26, 0, -31 }, // 0x6B 'k' + { 6605, 11, 32, 13, 0, -31 }, // 0x6C 'l' + { 6649, 37, 23, 39, 0, -22 }, // 0x6D 'm' + { 6756, 24, 23, 26, 0, -22 }, // 0x6E 'n' + { 6825, 21, 24, 24, 1, -22 }, // 0x6F 'o' + { 6888, 24, 32, 26, 0, -22 }, // 0x70 'p' + { 6984, 24, 32, 26, 1, -22 }, // 0x71 'q' + { 7080, 19, 23, 20, 0, -22 }, // 0x72 'r' + { 7135, 15, 24, 19, 2, -22 }, // 0x73 's' + { 7180, 14, 31, 16, 1, -29 }, // 0x74 't' + { 7235, 25, 23, 27, 0, -21 }, // 0x75 'u' + { 7307, 22, 23, 23, 0, -21 }, // 0x76 'v' + { 7371, 33, 23, 33, 0, -21 }, // 0x77 'w' + { 7466, 22, 22, 24, 1, -21 }, // 0x78 'x' + { 7527, 21, 31, 23, 0, -21 }, // 0x79 'y' + { 7609, 19, 22, 21, 1, -21 }, // 0x7A 'z' + { 7662, 14, 42, 19, 1, -33 }, // 0x7B '{' + { 7736, 4, 33, 10, 3, -32 }, // 0x7C '|' + { 7753, 14, 42, 19, 4, -33 }, // 0x7D '}' + { 7827, 22, 7, 24, 1, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifBold24pt7b PROGMEM = { + (uint8_t *)FreeSerifBold24pt7bBitmaps, + (GFXglyph *)FreeSerifBold24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8519 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h new file mode 100644 index 000000000..52dbe36e1 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h @@ -0,0 +1,202 @@ +const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { + 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, + 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, + 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, + 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, + 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, + 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, + 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, + 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, + 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, + 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, + 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, + 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, + 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, + 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, + 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, + 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, + 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, + 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, + 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, + 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, + 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, + 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, + 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, + 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, + 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, + 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, + 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, + 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, + 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, + 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, + 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, + 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, + 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, + 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, + 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, + 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, + 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, + 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, + 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, + 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, + 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, + 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, + 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, + 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, + 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, + 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, + 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, + 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, + 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, + 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, + 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, + 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, + 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, + 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, + 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, + 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, + 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, + 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, + 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, + 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, + 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, + 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, + 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, + 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, + 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, + 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, + 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, + 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, + 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, + 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, + 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, + 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, + 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, + 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, + 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, + 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, + 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, + 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, + 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, + 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, + 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, + 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, + 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, + 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, + 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, + 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, + 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, + 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, + 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, + 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, + 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, + 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E }; + +const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 3, 12, 6, 1, -11 }, // 0x21 '!' + { 5, 6, 5, 10, 2, -11 }, // 0x22 '"' + { 9, 9, 13, 9, 0, -12 }, // 0x23 '#' + { 24, 8, 14, 9, 1, -12 }, // 0x24 '$' + { 38, 14, 12, 18, 2, -11 }, // 0x25 '%' + { 59, 13, 12, 15, 1, -11 }, // 0x26 '&' + { 79, 2, 5, 5, 1, -11 }, // 0x27 ''' + { 81, 4, 15, 6, 1, -11 }, // 0x28 '(' + { 89, 4, 15, 6, 1, -11 }, // 0x29 ')' + { 97, 7, 7, 9, 2, -11 }, // 0x2A '*' + { 104, 9, 9, 12, 1, -8 }, // 0x2B '+' + { 115, 3, 6, 4, 1, -2 }, // 0x2C ',' + { 118, 4, 2, 6, 1, -4 }, // 0x2D '-' + { 119, 3, 3, 4, 1, -2 }, // 0x2E '.' + { 121, 6, 13, 5, 0, -11 }, // 0x2F '/' + { 131, 9, 12, 9, 0, -11 }, // 0x30 '0' + { 145, 6, 12, 9, 1, -11 }, // 0x31 '1' + { 154, 9, 12, 9, 0, -11 }, // 0x32 '2' + { 168, 8, 12, 9, 0, -11 }, // 0x33 '3' + { 180, 8, 12, 9, 1, -11 }, // 0x34 '4' + { 192, 8, 12, 9, 1, -11 }, // 0x35 '5' + { 204, 8, 12, 9, 1, -11 }, // 0x36 '6' + { 216, 9, 12, 9, 0, -11 }, // 0x37 '7' + { 230, 8, 12, 9, 1, -11 }, // 0x38 '8' + { 242, 9, 12, 9, 0, -11 }, // 0x39 '9' + { 256, 3, 9, 6, 1, -8 }, // 0x3A ':' + { 260, 3, 12, 6, 2, -8 }, // 0x3B ';' + { 265, 10, 10, 12, 1, -9 }, // 0x3C '<' + { 278, 10, 5, 12, 1, -6 }, // 0x3D '=' + { 285, 10, 10, 12, 1, -8 }, // 0x3E '>' + { 298, 7, 12, 9, 1, -11 }, // 0x3F '?' + { 309, 13, 12, 17, 2, -11 }, // 0x40 '@' + { 329, 13, 12, 13, 0, -11 }, // 0x41 'A' + { 349, 11, 12, 12, 0, -11 }, // 0x42 'B' + { 366, 11, 12, 13, 1, -11 }, // 0x43 'C' + { 383, 11, 12, 13, 1, -11 }, // 0x44 'D' + { 400, 11, 12, 12, 1, -11 }, // 0x45 'E' + { 417, 10, 12, 11, 1, -11 }, // 0x46 'F' + { 432, 12, 12, 14, 1, -11 }, // 0x47 'G' + { 450, 12, 12, 14, 1, -11 }, // 0x48 'H' + { 468, 5, 12, 7, 1, -11 }, // 0x49 'I' + { 476, 8, 14, 9, 0, -11 }, // 0x4A 'J' + { 490, 13, 12, 14, 1, -11 }, // 0x4B 'K' + { 510, 11, 12, 12, 1, -11 }, // 0x4C 'L' + { 527, 16, 12, 17, 0, -11 }, // 0x4D 'M' + { 551, 11, 12, 13, 1, -11 }, // 0x4E 'N' + { 568, 12, 12, 14, 1, -11 }, // 0x4F 'O' + { 586, 10, 12, 11, 1, -11 }, // 0x50 'P' + { 601, 12, 15, 14, 1, -11 }, // 0x51 'Q' + { 624, 12, 12, 13, 1, -11 }, // 0x52 'R' + { 642, 8, 12, 10, 1, -11 }, // 0x53 'S' + { 654, 12, 12, 12, 0, -11 }, // 0x54 'T' + { 672, 11, 12, 13, 1, -11 }, // 0x55 'U' + { 689, 13, 13, 13, 0, -11 }, // 0x56 'V' + { 711, 18, 12, 18, 0, -11 }, // 0x57 'W' + { 738, 13, 12, 13, 0, -11 }, // 0x58 'X' + { 758, 13, 12, 13, 0, -11 }, // 0x59 'Y' + { 778, 11, 12, 12, 1, -11 }, // 0x5A 'Z' + { 795, 4, 15, 6, 1, -11 }, // 0x5B '[' + { 803, 6, 13, 5, 0, -11 }, // 0x5C '\' + { 813, 4, 15, 6, 1, -11 }, // 0x5D ']' + { 821, 8, 7, 10, 1, -11 }, // 0x5E '^' + { 828, 9, 1, 9, 0, 3 }, // 0x5F '_' + { 830, 4, 3, 6, 0, -12 }, // 0x60 '`' + { 832, 9, 9, 9, 0, -8 }, // 0x61 'a' + { 843, 10, 12, 10, 0, -11 }, // 0x62 'b' + { 858, 7, 9, 8, 0, -8 }, // 0x63 'c' + { 866, 10, 12, 10, 0, -11 }, // 0x64 'd' + { 881, 8, 9, 8, 0, -8 }, // 0x65 'e' + { 890, 7, 12, 7, 0, -11 }, // 0x66 'f' + { 901, 7, 13, 9, 1, -8 }, // 0x67 'g' + { 913, 10, 12, 10, 0, -11 }, // 0x68 'h' + { 928, 5, 12, 5, 0, -11 }, // 0x69 'i' + { 936, 6, 16, 7, 0, -11 }, // 0x6A 'j' + { 948, 10, 12, 10, 0, -11 }, // 0x6B 'k' + { 963, 5, 12, 5, 0, -11 }, // 0x6C 'l' + { 971, 15, 9, 15, 0, -8 }, // 0x6D 'm' + { 988, 10, 9, 10, 0, -8 }, // 0x6E 'n' + { 1000, 9, 9, 9, 0, -8 }, // 0x6F 'o' + { 1011, 10, 13, 10, 0, -8 }, // 0x70 'p' + { 1028, 10, 13, 10, 0, -8 }, // 0x71 'q' + { 1045, 8, 9, 8, 0, -8 }, // 0x72 'r' + { 1054, 5, 9, 7, 1, -8 }, // 0x73 's' + { 1060, 6, 11, 6, 0, -10 }, // 0x74 't' + { 1069, 10, 9, 10, 0, -8 }, // 0x75 'u' + { 1081, 9, 9, 9, 0, -8 }, // 0x76 'v' + { 1092, 12, 9, 13, 0, -8 }, // 0x77 'w' + { 1106, 9, 9, 9, 0, -8 }, // 0x78 'x' + { 1117, 8, 13, 9, 0, -8 }, // 0x79 'y' + { 1130, 7, 9, 8, 1, -8 }, // 0x7A 'z' + { 1138, 5, 16, 7, 0, -12 }, // 0x7B '{' + { 1148, 1, 13, 4, 1, -11 }, // 0x7C '|' + { 1150, 5, 16, 7, 2, -12 }, // 0x7D '}' + { 1160, 8, 2, 9, 1, -4 } }; // 0x7E '~' + +const GFXfont FreeSerifBold9pt7b PROGMEM = { + (uint8_t *)FreeSerifBold9pt7bBitmaps, + (GFXglyph *)FreeSerifBold9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1834 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h new file mode 100644 index 000000000..1f674e98d --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h @@ -0,0 +1,292 @@ +const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { + 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, + 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, + 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, + 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, + 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, + 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, + 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, + 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, + 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, + 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, + 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, + 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, + 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, + 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, + 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, + 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, + 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, + 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, + 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, + 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, + 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, + 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, + 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, + 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, + 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, + 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, + 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, + 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, + 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, + 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, + 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, + 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, + 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, + 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, + 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, + 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, + 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, + 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, + 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, + 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, + 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, + 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, + 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, + 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, + 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, + 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, + 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, + 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, + 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, + 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, + 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, + 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, + 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, + 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, + 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, + 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, + 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, + 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, + 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, + 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, + 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, + 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, + 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, + 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, + 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, + 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, + 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, + 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, + 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, + 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, + 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, + 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, + 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, + 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, + 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, + 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, + 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, + 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, + 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, + 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, + 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, + 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, + 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, + 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, + 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, + 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, + 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, + 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, + 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, + 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, + 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, + 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, + 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, + 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, + 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, + 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, + 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, + 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, + 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, + 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, + 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, + 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, + 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, + 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, + 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, + 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, + 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, + 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, + 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, + 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, + 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, + 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, + 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, + 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, + 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, + 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, + 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, + 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, + 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, + 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, + 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, + 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, + 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, + 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, + 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, + 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, + 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, + 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, + 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, + 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, + 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, + 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, + 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, + 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, + 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, + 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, + 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, + 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, + 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, + 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, + 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, + 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, + 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, + 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, + 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, + 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, + 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, + 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, + 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, + 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, + 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, + 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, + 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, + 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, + 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, + 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, + 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, + 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, + 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, + 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, + 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, + 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, + 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, + 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, + 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, + 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, + 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, + 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, + 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, + 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, + 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, + 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, + 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, + 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, + 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, + 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, + 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, + 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, + 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0 }; + +const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 8, 17, 9, 2, -15 }, // 0x21 '!' + { 17, 9, 7, 13, 4, -15 }, // 0x22 '"' + { 25, 14, 16, 12, -1, -15 }, // 0x23 '#' + { 53, 12, 20, 12, 0, -17 }, // 0x24 '$' + { 83, 18, 18, 20, 1, -16 }, // 0x25 '%' + { 124, 16, 17, 19, 0, -15 }, // 0x26 '&' + { 158, 3, 7, 7, 3, -15 }, // 0x27 ''' + { 161, 7, 21, 8, 1, -15 }, // 0x28 '(' + { 180, 7, 21, 8, -1, -15 }, // 0x29 ')' + { 199, 10, 10, 12, 1, -15 }, // 0x2A '*' + { 212, 12, 12, 14, 1, -11 }, // 0x2B '+' + { 230, 5, 8, 6, -2, -3 }, // 0x2C ',' + { 235, 6, 3, 8, 0, -6 }, // 0x2D '-' + { 238, 4, 4, 6, 0, -2 }, // 0x2E '.' + { 240, 10, 16, 8, 0, -15 }, // 0x2F '/' + { 260, 11, 17, 12, 0, -15 }, // 0x30 '0' + { 284, 10, 17, 12, 0, -15 }, // 0x31 '1' + { 306, 11, 17, 12, 0, -15 }, // 0x32 '2' + { 330, 11, 17, 12, 0, -15 }, // 0x33 '3' + { 354, 13, 16, 12, 0, -15 }, // 0x34 '4' + { 380, 12, 17, 12, 0, -15 }, // 0x35 '5' + { 406, 11, 17, 12, 1, -15 }, // 0x36 '6' + { 430, 11, 16, 12, 2, -15 }, // 0x37 '7' + { 452, 11, 17, 12, 0, -15 }, // 0x38 '8' + { 476, 11, 17, 12, 0, -15 }, // 0x39 '9' + { 500, 7, 12, 6, 0, -10 }, // 0x3A ':' + { 511, 8, 15, 6, -1, -10 }, // 0x3B ';' + { 526, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 546, 12, 6, 14, 2, -8 }, // 0x3D '=' + { 555, 13, 13, 14, 1, -12 }, // 0x3E '>' + { 577, 9, 17, 12, 2, -15 }, // 0x3F '?' + { 597, 17, 16, 20, 1, -15 }, // 0x40 '@' + { 631, 16, 17, 17, 0, -15 }, // 0x41 'A' + { 665, 16, 17, 15, 0, -15 }, // 0x42 'B' + { 699, 15, 17, 15, 1, -15 }, // 0x43 'C' + { 731, 18, 17, 17, 0, -15 }, // 0x44 'D' + { 770, 17, 17, 15, 0, -15 }, // 0x45 'E' + { 807, 16, 17, 15, 0, -15 }, // 0x46 'F' + { 841, 17, 17, 17, 1, -15 }, // 0x47 'G' + { 878, 20, 17, 18, 0, -15 }, // 0x48 'H' + { 921, 10, 17, 9, 0, -15 }, // 0x49 'I' + { 943, 14, 18, 12, 0, -15 }, // 0x4A 'J' + { 975, 17, 17, 16, 0, -15 }, // 0x4B 'K' + { 1012, 15, 17, 15, 0, -15 }, // 0x4C 'L' + { 1044, 23, 17, 21, 0, -15 }, // 0x4D 'M' + { 1093, 19, 17, 17, 0, -15 }, // 0x4E 'N' + { 1134, 16, 17, 16, 1, -15 }, // 0x4F 'O' + { 1168, 16, 17, 14, 0, -15 }, // 0x50 'P' + { 1202, 16, 21, 16, 1, -15 }, // 0x51 'Q' + { 1244, 16, 17, 16, 0, -15 }, // 0x52 'R' + { 1278, 12, 17, 12, 0, -15 }, // 0x53 'S' + { 1304, 15, 17, 14, 2, -15 }, // 0x54 'T' + { 1336, 16, 17, 17, 3, -15 }, // 0x55 'U' + { 1370, 16, 16, 17, 3, -15 }, // 0x56 'V' + { 1402, 21, 16, 22, 3, -15 }, // 0x57 'W' + { 1444, 17, 17, 17, 0, -15 }, // 0x58 'X' + { 1481, 14, 17, 15, 3, -15 }, // 0x59 'Y' + { 1511, 15, 17, 13, 0, -15 }, // 0x5A 'Z' + { 1543, 10, 20, 8, -1, -15 }, // 0x5B '[' + { 1568, 6, 16, 10, 3, -15 }, // 0x5C '\' + { 1580, 9, 20, 8, -1, -15 }, // 0x5D ']' + { 1603, 10, 9, 14, 2, -15 }, // 0x5E '^' + { 1615, 12, 1, 12, 0, 4 }, // 0x5F '_' + { 1617, 5, 4, 8, 2, -15 }, // 0x60 '`' + { 1620, 12, 12, 12, 0, -10 }, // 0x61 'a' + { 1638, 11, 18, 12, 1, -16 }, // 0x62 'b' + { 1663, 9, 12, 10, 1, -10 }, // 0x63 'c' + { 1677, 14, 18, 12, 0, -16 }, // 0x64 'd' + { 1709, 9, 12, 10, 1, -10 }, // 0x65 'e' + { 1723, 14, 22, 12, -2, -16 }, // 0x66 'f' + { 1762, 13, 16, 12, -1, -10 }, // 0x67 'g' + { 1788, 13, 18, 13, 0, -16 }, // 0x68 'h' + { 1818, 6, 17, 7, 1, -15 }, // 0x69 'i' + { 1831, 11, 21, 8, -2, -15 }, // 0x6A 'j' + { 1860, 13, 18, 12, 0, -16 }, // 0x6B 'k' + { 1890, 7, 18, 7, 1, -16 }, // 0x6C 'l' + { 1906, 18, 12, 18, 0, -10 }, // 0x6D 'm' + { 1933, 12, 12, 13, 0, -10 }, // 0x6E 'n' + { 1951, 10, 12, 11, 1, -10 }, // 0x6F 'o' + { 1966, 14, 16, 12, -2, -10 }, // 0x70 'p' + { 1994, 12, 16, 12, 0, -10 }, // 0x71 'q' + { 2018, 10, 11, 10, 0, -10 }, // 0x72 'r' + { 2032, 9, 12, 9, 0, -10 }, // 0x73 's' + { 2046, 7, 15, 7, 1, -13 }, // 0x74 't' + { 2060, 12, 12, 13, 1, -10 }, // 0x75 'u' + { 2078, 10, 11, 11, 1, -10 }, // 0x76 'v' + { 2092, 15, 11, 16, 1, -10 }, // 0x77 'w' + { 2113, 13, 12, 11, -1, -10 }, // 0x78 'x' + { 2133, 11, 16, 10, -1, -10 }, // 0x79 'y' + { 2155, 10, 13, 10, 0, -10 }, // 0x7A 'z' + { 2172, 11, 21, 8, 0, -16 }, // 0x7B '{' + { 2201, 2, 16, 6, 3, -15 }, // 0x7C '|' + { 2205, 10, 21, 8, -3, -16 }, // 0x7D '}' + { 2232, 11, 4, 14, 1, -7 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2910 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h new file mode 100644 index 000000000..e24eea61f --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h @@ -0,0 +1,500 @@ +const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, + 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, + 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, + 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, + 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, + 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, + 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, + 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, + 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, + 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, + 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, + 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, + 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, + 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, + 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, + 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, + 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, + 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, + 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, + 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, + 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, + 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, + 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, + 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, + 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, + 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, + 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, + 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, + 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, + 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, + 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, + 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, + 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, + 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, + 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, + 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, + 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, + 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, + 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, + 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, + 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, + 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, + 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, + 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, + 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, + 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, + 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, + 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, + 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, + 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, + 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, + 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, + 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, + 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, + 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, + 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, + 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, + 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, + 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, + 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, + 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, + 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, + 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, + 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, + 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, + 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, + 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, + 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, + 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, + 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, + 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, + 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, + 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, + 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, + 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, + 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, + 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, + 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, + 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, + 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, + 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, + 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, + 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, + 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, + 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, + 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, + 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, + 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, + 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, + 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, + 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, + 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, + 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, + 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, + 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, + 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, + 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, + 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, + 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, + 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, + 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, + 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, + 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, + 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, + 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, + 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, + 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, + 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, + 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, + 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, + 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, + 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, + 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, + 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, + 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, + 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, + 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, + 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, + 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, + 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, + 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, + 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, + 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, + 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, + 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, + 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, + 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, + 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, + 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, + 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, + 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, + 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, + 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, + 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, + 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, + 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, + 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, + 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, + 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, + 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, + 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, + 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, + 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, + 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, + 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, + 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, + 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, + 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, + 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, + 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, + 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, + 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, + 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, + 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, + 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, + 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, + 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, + 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, + 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, + 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, + 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, + 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, + 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, + 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, + 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, + 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, + 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, + 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, + 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, + 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, + 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, + 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, + 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, + 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, + 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, + 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, + 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, + 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, + 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, + 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, + 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, + 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, + 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, + 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, + 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, + 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, + 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, + 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, + 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, + 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, + 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, + 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, + 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, + 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, + 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, + 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, + 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, + 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, + 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, + 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, + 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, + 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, + 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, + 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, + 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, + 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, + 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, + 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, + 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, + 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, + 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, + 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, + 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, + 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, + 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, + 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, + 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, + 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, + 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, + 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, + 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, + 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, + 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, + 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, + 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, + 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, + 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, + 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, + 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, + 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, + 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, + 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, + 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, + 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, + 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, + 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, + 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, + 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, + 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, + 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, + 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, + 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, + 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, + 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, + 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, + 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, + 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, + 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, + 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, + 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, + 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, + 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, + 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, + 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, + 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, + 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, + 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, + 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, + 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, + 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, + 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, + 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, + 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, + 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, + 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, + 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, + 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, + 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, + 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, + 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, + 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, + 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, + 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, + 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, + 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, + 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, + 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, + 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, + 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, + 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, + 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, + 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, + 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, + 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, + 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, + 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, + 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, + 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, + 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, + 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, + 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, + 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, + 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, + 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, + 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, + 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, + 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, + 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, + 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, + 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, + 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, + 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, + 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, + 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, + 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, + 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, + 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, + 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, + 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, + 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, + 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, + 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, + 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, + 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, + 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, + 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, + 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, + 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, + 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, + 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, + 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, + 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, + 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, + 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, + 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, + 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, + 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, + 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, + 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, + 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, + 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, + 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C }; + +const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 11, 25, 14, 2, -23 }, // 0x21 '!' + { 35, 14, 10, 19, 4, -23 }, // 0x22 '"' + { 53, 20, 25, 17, -1, -24 }, // 0x23 '#' + { 116, 17, 29, 18, 0, -25 }, // 0x24 '$' + { 178, 27, 25, 29, 1, -23 }, // 0x25 '%' + { 263, 25, 25, 27, 0, -23 }, // 0x26 '&' + { 342, 5, 10, 10, 4, -23 }, // 0x27 ''' + { 349, 11, 30, 12, 1, -23 }, // 0x28 '(' + { 391, 11, 30, 12, -2, -23 }, // 0x29 ')' + { 433, 13, 15, 18, 2, -23 }, // 0x2A '*' + { 458, 17, 17, 20, 1, -16 }, // 0x2B '+' + { 495, 7, 11, 9, -2, -4 }, // 0x2C ',' + { 505, 9, 4, 12, 0, -9 }, // 0x2D '-' + { 510, 6, 5, 9, 0, -3 }, // 0x2E '.' + { 514, 14, 25, 12, 0, -23 }, // 0x2F '/' + { 558, 15, 25, 18, 1, -23 }, // 0x30 '0' + { 605, 15, 25, 17, 0, -23 }, // 0x31 '1' + { 652, 16, 25, 18, 0, -23 }, // 0x32 '2' + { 702, 15, 25, 17, 1, -23 }, // 0x33 '3' + { 749, 18, 24, 17, 0, -23 }, // 0x34 '4' + { 803, 17, 25, 18, 0, -23 }, // 0x35 '5' + { 857, 17, 25, 18, 1, -23 }, // 0x36 '6' + { 911, 16, 24, 17, 3, -23 }, // 0x37 '7' + { 959, 17, 25, 18, 0, -23 }, // 0x38 '8' + { 1013, 17, 25, 18, 0, -23 }, // 0x39 '9' + { 1067, 10, 17, 9, 0, -15 }, // 0x3A ':' + { 1089, 11, 22, 9, -1, -15 }, // 0x3B ';' + { 1120, 18, 19, 20, 1, -18 }, // 0x3C '<' + { 1163, 18, 10, 20, 2, -13 }, // 0x3D '=' + { 1186, 18, 19, 20, 2, -18 }, // 0x3E '>' + { 1229, 13, 25, 17, 3, -23 }, // 0x3F '?' + { 1270, 25, 25, 29, 2, -23 }, // 0x40 '@' + { 1349, 23, 25, 24, 0, -23 }, // 0x41 'A' + { 1421, 24, 25, 22, 0, -23 }, // 0x42 'B' + { 1496, 23, 25, 22, 1, -23 }, // 0x43 'C' + { 1568, 26, 25, 25, 0, -23 }, // 0x44 'D' + { 1650, 23, 25, 22, 0, -23 }, // 0x45 'E' + { 1722, 23, 25, 21, 0, -23 }, // 0x46 'F' + { 1794, 24, 25, 25, 2, -23 }, // 0x47 'G' + { 1869, 29, 25, 26, 0, -23 }, // 0x48 'H' + { 1960, 15, 25, 13, 0, -23 }, // 0x49 'I' + { 2007, 20, 27, 17, 0, -23 }, // 0x4A 'J' + { 2075, 25, 25, 23, 0, -23 }, // 0x4B 'K' + { 2154, 22, 25, 21, 0, -23 }, // 0x4C 'L' + { 2223, 33, 25, 31, 0, -23 }, // 0x4D 'M' + { 2327, 27, 25, 25, 0, -23 }, // 0x4E 'N' + { 2412, 23, 25, 24, 1, -23 }, // 0x4F 'O' + { 2484, 23, 25, 21, 0, -23 }, // 0x50 'P' + { 2556, 23, 31, 24, 1, -23 }, // 0x51 'Q' + { 2646, 24, 25, 23, 0, -23 }, // 0x52 'R' + { 2721, 18, 25, 18, 0, -23 }, // 0x53 'S' + { 2778, 21, 25, 21, 3, -23 }, // 0x54 'T' + { 2844, 24, 25, 25, 4, -23 }, // 0x55 'U' + { 2919, 24, 25, 25, 4, -23 }, // 0x56 'V' + { 2994, 31, 25, 32, 4, -23 }, // 0x57 'W' + { 3091, 25, 25, 24, 0, -23 }, // 0x58 'X' + { 3170, 21, 25, 22, 4, -23 }, // 0x59 'Y' + { 3236, 21, 25, 20, 0, -23 }, // 0x5A 'Z' + { 3302, 14, 30, 12, -1, -23 }, // 0x5B '[' + { 3355, 10, 25, 14, 4, -23 }, // 0x5C '\' + { 3387, 14, 30, 12, -2, -23 }, // 0x5D ']' + { 3440, 16, 13, 20, 2, -23 }, // 0x5E '^' + { 3466, 18, 3, 17, 0, 3 }, // 0x5F '_' + { 3473, 7, 6, 12, 3, -23 }, // 0x60 '`' + { 3479, 18, 17, 18, 0, -15 }, // 0x61 'a' + { 3518, 16, 26, 17, 1, -24 }, // 0x62 'b' + { 3570, 13, 17, 15, 1, -15 }, // 0x63 'c' + { 3598, 19, 25, 18, 1, -23 }, // 0x64 'd' + { 3658, 13, 17, 15, 1, -15 }, // 0x65 'e' + { 3686, 21, 32, 17, -3, -24 }, // 0x66 'f' + { 3770, 19, 23, 17, -1, -15 }, // 0x67 'g' + { 3825, 17, 25, 19, 1, -23 }, // 0x68 'h' + { 3879, 9, 25, 10, 1, -23 }, // 0x69 'i' + { 3908, 16, 31, 12, -3, -23 }, // 0x6A 'j' + { 3970, 17, 25, 18, 1, -23 }, // 0x6B 'k' + { 4024, 11, 25, 10, 1, -23 }, // 0x6C 'l' + { 4059, 26, 17, 27, 0, -15 }, // 0x6D 'm' + { 4115, 18, 17, 18, 0, -15 }, // 0x6E 'n' + { 4154, 15, 17, 17, 1, -15 }, // 0x6F 'o' + { 4186, 19, 23, 17, -2, -15 }, // 0x70 'p' + { 4241, 16, 23, 17, 1, -15 }, // 0x71 'q' + { 4287, 15, 16, 14, 0, -15 }, // 0x72 'r' + { 4317, 13, 17, 12, 0, -15 }, // 0x73 's' + { 4345, 10, 22, 10, 1, -20 }, // 0x74 't' + { 4373, 17, 17, 19, 1, -15 }, // 0x75 'u' + { 4410, 13, 16, 15, 2, -15 }, // 0x76 'v' + { 4436, 19, 16, 23, 3, -15 }, // 0x77 'w' + { 4474, 18, 17, 17, -1, -15 }, // 0x78 'x' + { 4513, 17, 23, 15, -2, -15 }, // 0x79 'y' + { 4562, 15, 19, 14, 0, -15 }, // 0x7A 'z' + { 4598, 15, 32, 12, 0, -24 }, // 0x7B '{' + { 4658, 3, 25, 9, 4, -23 }, // 0x7C '|' + { 4668, 15, 32, 12, -5, -24 }, // 0x7D '}' + { 4728, 16, 5, 20, 2, -11 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 5410 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h new file mode 100644 index 000000000..fcb857ef9 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h @@ -0,0 +1,793 @@ +const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, + 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, + 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, + 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, + 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, + 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, + 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, + 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, + 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, + 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, + 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, + 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, + 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, + 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, + 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, + 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, + 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, + 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, + 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, + 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, + 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, + 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, + 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, + 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, + 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, + 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, + 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, + 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, + 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, + 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, + 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, + 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, + 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, + 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, + 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, + 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, + 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, + 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, + 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, + 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, + 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, + 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, + 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, + 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, + 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, + 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, + 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, + 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, + 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, + 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, + 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, + 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, + 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, + 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, + 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, + 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, + 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, + 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, + 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, + 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, + 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, + 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, + 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, + 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, + 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, + 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, + 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, + 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, + 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, + 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, + 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, + 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, + 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, + 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, + 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, + 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, + 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, + 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, + 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, + 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, + 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, + 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, + 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, + 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, + 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, + 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, + 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, + 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, + 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, + 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, + 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, + 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, + 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, + 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, + 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, + 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, + 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, + 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, + 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, + 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, + 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, + 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, + 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, + 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, + 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, + 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, + 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, + 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, + 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, + 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, + 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, + 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, + 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, + 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, + 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, + 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, + 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, + 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, + 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, + 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, + 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, + 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, + 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, + 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, + 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, + 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, + 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, + 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, + 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, + 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, + 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, + 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, + 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, + 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, + 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, + 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, + 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, + 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, + 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, + 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, + 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, + 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, + 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, + 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, + 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, + 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, + 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, + 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, + 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, + 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, + 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, + 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, + 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, + 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, + 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, + 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, + 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, + 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, + 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, + 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, + 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, + 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, + 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, + 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, + 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, + 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, + 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, + 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, + 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, + 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, + 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, + 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, + 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, + 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, + 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, + 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, + 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, + 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, + 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, + 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, + 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, + 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, + 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, + 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, + 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, + 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, + 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, + 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, + 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, + 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, + 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, + 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, + 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, + 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, + 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, + 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, + 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, + 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, + 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, + 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, + 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, + 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, + 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, + 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, + 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, + 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, + 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, + 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, + 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, + 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, + 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, + 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, + 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, + 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, + 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, + 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, + 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, + 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, + 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, + 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, + 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, + 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, + 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, + 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, + 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, + 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, + 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, + 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, + 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, + 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, + 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, + 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, + 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, + 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, + 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, + 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, + 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, + 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, + 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, + 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, + 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, + 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, + 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, + 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, + 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, + 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, + 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, + 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, + 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, + 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, + 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, + 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, + 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, + 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, + 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, + 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, + 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, + 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, + 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, + 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, + 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, + 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, + 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, + 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, + 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, + 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, + 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, + 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, + 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, + 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, + 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, + 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, + 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, + 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, + 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, + 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, + 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, + 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, + 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, + 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, + 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, + 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, + 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, + 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, + 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, + 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, + 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, + 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, + 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, + 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, + 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, + 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, + 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, + 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, + 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, + 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, + 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, + 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, + 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, + 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, + 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, + 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, + 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, + 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, + 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, + 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, + 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, + 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, + 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, + 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, + 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, + 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, + 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, + 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, + 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, + 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, + 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, + 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, + 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, + 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, + 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, + 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, + 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, + 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, + 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, + 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, + 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, + 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, + 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, + 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, + 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, + 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, + 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, + 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, + 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, + 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, + 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, + 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, + 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, + 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, + 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, + 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, + 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, + 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, + 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, + 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, + 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, + 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, + 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, + 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, + 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, + 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, + 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, + 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, + 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, + 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, + 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, + 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, + 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, + 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, + 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, + 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, + 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, + 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, + 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, + 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, + 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, + 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, + 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, + 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, + 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, + 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, + 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, + 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, + 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, + 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, + 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, + 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, + 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, + 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, + 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, + 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, + 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, + 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, + 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, + 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, + 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, + 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, + 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, + 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, + 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, + 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, + 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, + 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, + 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, + 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, + 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, + 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, + 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, + 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, + 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, + 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, + 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, + 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, + 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, + 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, + 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, + 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, + 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, + 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, + 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, + 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, + 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, + 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, + 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, + 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, + 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, + 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, + 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, + 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, + 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, + 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, + 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, + 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, + 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, + 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, + 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, + 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, + 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, + 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, + 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, + 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, + 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, + 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, + 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, + 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, + 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, + 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, + 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, + 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, + 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, + 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, + 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, + 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, + 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, + 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, + 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, + 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, + 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, + 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, + 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, + 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, + 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, + 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, + 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, + 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, + 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, + 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, + 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, + 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, + 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, + 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, + 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, + 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, + 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, + 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, + 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, + 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, + 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, + 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, + 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, + 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, + 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, + 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, + 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, + 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, + 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, + 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, + 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, + 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, + 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, + 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, + 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, + 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, + 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, + 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, + 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, + 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, + 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, + 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, + 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, + 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, + 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, + 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, + 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, + 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, + 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, + 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, + 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, + 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, + 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, + 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, + 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, + 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, + 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, + 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, + 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, + 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, + 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, + 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, + 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, + 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, + 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, + 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, + 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, + 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, + 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, + 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, + 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, + 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, + 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, + 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, + 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, + 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, + 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, + 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, + 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, + 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, + 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, + 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, + 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, + 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, + 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, + 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, + 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, + 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, + 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, + 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, + 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, + 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, + 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, + 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, + 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, + 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, + 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, + 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, + 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, + 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, + 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, + 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, + 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, + 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, + 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, + 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, + 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, + 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, + 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, + 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, + 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, + 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, + 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, + 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, + 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, + 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, + 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, + 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, + 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, + 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, + 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, + 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, + 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, + 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, + 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, + 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, + 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, + 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, + 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, + 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, + 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, + 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, + 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, + 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, + 0x00 }; + +const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 15, 33, 18, 3, -31 }, // 0x21 '!' + { 62, 19, 13, 26, 6, -31 }, // 0x22 '"' + { 93, 27, 33, 23, -2, -32 }, // 0x23 '#' + { 205, 24, 39, 24, -1, -33 }, // 0x24 '$' + { 322, 35, 32, 39, 2, -30 }, // 0x25 '%' + { 462, 33, 33, 37, 0, -31 }, // 0x26 '&' + { 599, 7, 13, 13, 6, -31 }, // 0x27 ''' + { 611, 14, 41, 16, 1, -31 }, // 0x28 '(' + { 683, 14, 41, 16, -2, -31 }, // 0x29 ')' + { 755, 19, 20, 23, 3, -31 }, // 0x2A '*' + { 803, 22, 23, 27, 2, -22 }, // 0x2B '+' + { 867, 10, 15, 12, -3, -5 }, // 0x2C ',' + { 886, 12, 5, 16, 0, -12 }, // 0x2D '-' + { 894, 8, 7, 12, 0, -5 }, // 0x2E '.' + { 901, 19, 33, 16, 0, -31 }, // 0x2F '/' + { 980, 22, 33, 23, 1, -31 }, // 0x30 '0' + { 1071, 20, 32, 23, 0, -31 }, // 0x31 '1' + { 1151, 22, 32, 23, 1, -31 }, // 0x32 '2' + { 1239, 22, 33, 24, 0, -31 }, // 0x33 '3' + { 1330, 25, 32, 23, 0, -31 }, // 0x34 '4' + { 1430, 24, 32, 24, 0, -30 }, // 0x35 '5' + { 1526, 23, 32, 24, 1, -30 }, // 0x36 '6' + { 1618, 23, 31, 23, 3, -30 }, // 0x37 '7' + { 1708, 21, 33, 23, 1, -31 }, // 0x38 '8' + { 1795, 23, 33, 23, 0, -31 }, // 0x39 '9' + { 1890, 13, 22, 12, 0, -20 }, // 0x3A ':' + { 1926, 15, 30, 12, -2, -20 }, // 0x3B ';' + { 1983, 24, 25, 27, 1, -23 }, // 0x3C '<' + { 2058, 24, 14, 27, 3, -18 }, // 0x3D '=' + { 2100, 24, 25, 27, 3, -23 }, // 0x3E '>' + { 2175, 18, 33, 24, 4, -31 }, // 0x3F '?' + { 2250, 33, 33, 39, 3, -31 }, // 0x40 '@' + { 2387, 31, 32, 33, 0, -31 }, // 0x41 'A' + { 2511, 31, 31, 30, 0, -30 }, // 0x42 'B' + { 2632, 29, 33, 29, 2, -31 }, // 0x43 'C' + { 2752, 35, 31, 34, 0, -30 }, // 0x44 'D' + { 2888, 32, 31, 30, 0, -30 }, // 0x45 'E' + { 3012, 31, 31, 29, 0, -30 }, // 0x46 'F' + { 3133, 32, 33, 33, 2, -31 }, // 0x47 'G' + { 3265, 39, 31, 35, 0, -30 }, // 0x48 'H' + { 3417, 21, 31, 18, 0, -30 }, // 0x49 'I' + { 3499, 27, 36, 23, 0, -30 }, // 0x4A 'J' + { 3621, 34, 31, 31, 0, -30 }, // 0x4B 'K' + { 3753, 29, 31, 29, 0, -30 }, // 0x4C 'L' + { 3866, 44, 32, 41, 0, -30 }, // 0x4D 'M' + { 4042, 37, 32, 33, 0, -30 }, // 0x4E 'N' + { 4190, 31, 33, 32, 2, -31 }, // 0x4F 'O' + { 4318, 31, 31, 28, 0, -30 }, // 0x50 'P' + { 4439, 31, 42, 32, 2, -31 }, // 0x51 'Q' + { 4602, 32, 31, 31, 0, -30 }, // 0x52 'R' + { 4726, 24, 33, 24, 0, -31 }, // 0x53 'S' + { 4825, 27, 31, 28, 4, -30 }, // 0x54 'T' + { 4930, 32, 32, 34, 5, -30 }, // 0x55 'U' + { 5058, 31, 32, 33, 6, -30 }, // 0x56 'V' + { 5182, 41, 32, 44, 6, -30 }, // 0x57 'W' + { 5346, 34, 31, 33, 0, -30 }, // 0x58 'X' + { 5478, 28, 31, 30, 6, -30 }, // 0x59 'Y' + { 5587, 28, 31, 26, 0, -30 }, // 0x5A 'Z' + { 5696, 19, 38, 16, -2, -30 }, // 0x5B '[' + { 5787, 13, 33, 19, 6, -31 }, // 0x5C '\' + { 5841, 19, 38, 16, -3, -30 }, // 0x5D ']' + { 5932, 21, 17, 27, 3, -30 }, // 0x5E '^' + { 5977, 24, 3, 23, 0, 5 }, // 0x5F '_' + { 5986, 10, 9, 16, 4, -32 }, // 0x60 '`' + { 5998, 22, 23, 24, 1, -21 }, // 0x61 'a' + { 6062, 22, 33, 23, 1, -31 }, // 0x62 'b' + { 6153, 18, 23, 20, 1, -21 }, // 0x63 'c' + { 6205, 25, 34, 24, 1, -32 }, // 0x64 'd' + { 6312, 18, 23, 20, 1, -21 }, // 0x65 'e' + { 6364, 28, 41, 23, -4, -31 }, // 0x66 'f' + { 6508, 25, 31, 23, -1, -21 }, // 0x67 'g' + { 6605, 23, 34, 26, 1, -32 }, // 0x68 'h' + { 6703, 12, 33, 14, 2, -31 }, // 0x69 'i' + { 6753, 22, 42, 16, -4, -31 }, // 0x6A 'j' + { 6869, 24, 34, 24, 1, -32 }, // 0x6B 'k' + { 6971, 13, 34, 14, 2, -32 }, // 0x6C 'l' + { 7027, 35, 23, 36, 0, -21 }, // 0x6D 'm' + { 7128, 23, 23, 25, 0, -21 }, // 0x6E 'n' + { 7195, 20, 23, 22, 1, -21 }, // 0x6F 'o' + { 7253, 27, 31, 23, -4, -21 }, // 0x70 'p' + { 7358, 22, 31, 23, 1, -21 }, // 0x71 'q' + { 7444, 20, 22, 19, 0, -21 }, // 0x72 'r' + { 7499, 16, 23, 17, 0, -21 }, // 0x73 's' + { 7545, 13, 29, 13, 2, -27 }, // 0x74 't' + { 7593, 22, 23, 25, 2, -21 }, // 0x75 'u' + { 7657, 17, 23, 21, 3, -21 }, // 0x76 'v' + { 7706, 27, 23, 31, 3, -21 }, // 0x77 'w' + { 7784, 24, 23, 22, -1, -21 }, // 0x78 'x' + { 7853, 23, 31, 20, -3, -21 }, // 0x79 'y' + { 7943, 19, 25, 19, 0, -20 }, // 0x7A 'z' + { 8003, 20, 41, 16, 0, -31 }, // 0x7B '{' + { 8106, 4, 33, 13, 5, -31 }, // 0x7C '|' + { 8123, 20, 41, 16, -6, -31 }, // 0x7D '}' + { 8226, 21, 7, 27, 3, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8917 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h new file mode 100644 index 000000000..47711ee7c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h @@ -0,0 +1,215 @@ +const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, + 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, + 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, + 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, + 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, + 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, + 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, + 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, + 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, + 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, + 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, + 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, + 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, + 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, + 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, + 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, + 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, + 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, + 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, + 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, + 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, + 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, + 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, + 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, + 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, + 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, + 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, + 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, + 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, + 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, + 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, + 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, + 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, + 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, + 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, + 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, + 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, + 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, + 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, + 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, + 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, + 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, + 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, + 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, + 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, + 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, + 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, + 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, + 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, + 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, + 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, + 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, + 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, + 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, + 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, + 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, + 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, + 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, + 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, + 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, + 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, + 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, + 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, + 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, + 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, + 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, + 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, + 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, + 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, + 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, + 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, + 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, + 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, + 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, + 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, + 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, + 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, + 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, + 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, + 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, + 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, + 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, + 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, + 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, + 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, + 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, + 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, + 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, + 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, + 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, + 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, + 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, + 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, + 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, + 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, + 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, + 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, + 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, + 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, + 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, + 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, + 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, + 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, + 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, + 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, + 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, + 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, + 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, + 0x71, 0x8F }; + +const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 6, 13, 7, 1, -11 }, // 0x21 '!' + { 10, 6, 5, 10, 3, -11 }, // 0x22 '"' + { 14, 11, 13, 9, -1, -12 }, // 0x23 '#' + { 32, 11, 15, 9, -1, -12 }, // 0x24 '$' + { 53, 14, 13, 15, 1, -11 }, // 0x25 '%' + { 76, 13, 13, 14, 0, -11 }, // 0x26 '&' + { 98, 2, 5, 5, 3, -11 }, // 0x27 ''' + { 100, 5, 16, 6, 1, -11 }, // 0x28 '(' + { 110, 5, 16, 6, -1, -11 }, // 0x29 ')' + { 120, 8, 8, 9, 1, -11 }, // 0x2A '*' + { 128, 9, 9, 10, 0, -8 }, // 0x2B '+' + { 139, 3, 6, 5, -1, -2 }, // 0x2C ',' + { 142, 5, 2, 6, 0, -4 }, // 0x2D '-' + { 144, 3, 3, 4, 0, -1 }, // 0x2E '.' + { 146, 7, 12, 6, 0, -11 }, // 0x2F '/' + { 157, 9, 13, 9, 0, -11 }, // 0x30 '0' + { 172, 8, 13, 9, 0, -11 }, // 0x31 '1' + { 185, 9, 13, 9, 0, -11 }, // 0x32 '2' + { 200, 9, 13, 9, 0, -11 }, // 0x33 '3' + { 215, 9, 12, 9, 0, -11 }, // 0x34 '4' + { 229, 9, 13, 9, 0, -11 }, // 0x35 '5' + { 244, 9, 13, 9, 1, -11 }, // 0x36 '6' + { 259, 9, 12, 9, 1, -11 }, // 0x37 '7' + { 273, 8, 13, 9, 0, -11 }, // 0x38 '8' + { 286, 9, 13, 9, 0, -11 }, // 0x39 '9' + { 301, 5, 9, 5, 0, -7 }, // 0x3A ':' + { 307, 5, 11, 5, 0, -7 }, // 0x3B ';' + { 314, 9, 10, 10, 1, -9 }, // 0x3C '<' + { 326, 9, 5, 10, 1, -6 }, // 0x3D '=' + { 332, 9, 10, 10, 1, -9 }, // 0x3E '>' + { 344, 8, 13, 9, 1, -11 }, // 0x3F '?' + { 357, 13, 13, 15, 1, -12 }, // 0x40 '@' + { 379, 12, 13, 13, 0, -11 }, // 0x41 'A' + { 399, 12, 13, 12, 0, -11 }, // 0x42 'B' + { 419, 12, 13, 11, 1, -11 }, // 0x43 'C' + { 439, 14, 13, 13, 0, -11 }, // 0x44 'D' + { 462, 13, 13, 11, 0, -11 }, // 0x45 'E' + { 484, 13, 13, 11, 0, -11 }, // 0x46 'F' + { 506, 12, 13, 13, 1, -11 }, // 0x47 'G' + { 526, 15, 13, 14, 0, -11 }, // 0x48 'H' + { 551, 8, 13, 7, 0, -11 }, // 0x49 'I' + { 564, 10, 14, 9, 0, -11 }, // 0x4A 'J' + { 582, 13, 13, 12, 0, -11 }, // 0x4B 'K' + { 604, 12, 13, 11, 0, -11 }, // 0x4C 'L' + { 624, 17, 13, 16, 0, -11 }, // 0x4D 'M' + { 652, 14, 13, 13, 0, -11 }, // 0x4E 'N' + { 675, 12, 13, 12, 1, -11 }, // 0x4F 'O' + { 695, 12, 13, 11, 0, -11 }, // 0x50 'P' + { 715, 12, 16, 12, 1, -11 }, // 0x51 'Q' + { 739, 12, 13, 12, 0, -11 }, // 0x52 'R' + { 759, 9, 13, 9, 0, -11 }, // 0x53 'S' + { 774, 11, 13, 11, 2, -11 }, // 0x54 'T' + { 792, 12, 13, 13, 2, -11 }, // 0x55 'U' + { 812, 12, 12, 13, 2, -11 }, // 0x56 'V' + { 830, 16, 12, 17, 2, -11 }, // 0x57 'W' + { 854, 13, 13, 13, 0, -11 }, // 0x58 'X' + { 876, 11, 13, 11, 2, -11 }, // 0x59 'Y' + { 894, 11, 13, 10, 0, -11 }, // 0x5A 'Z' + { 912, 8, 15, 6, -1, -11 }, // 0x5B '[' + { 927, 5, 12, 7, 2, -11 }, // 0x5C '\' + { 935, 7, 15, 6, -1, -11 }, // 0x5D ']' + { 949, 8, 7, 10, 1, -11 }, // 0x5E '^' + { 956, 9, 1, 9, 0, 3 }, // 0x5F '_' + { 958, 4, 3, 6, 2, -11 }, // 0x60 '`' + { 960, 9, 9, 9, 0, -7 }, // 0x61 'a' + { 971, 8, 14, 9, 0, -12 }, // 0x62 'b' + { 985, 8, 9, 8, 0, -7 }, // 0x63 'c' + { 994, 10, 14, 9, 0, -12 }, // 0x64 'd' + { 1012, 7, 9, 7, 0, -7 }, // 0x65 'e' + { 1020, 11, 17, 9, -2, -12 }, // 0x66 'f' + { 1044, 9, 12, 9, 0, -7 }, // 0x67 'g' + { 1058, 9, 14, 10, 0, -12 }, // 0x68 'h' + { 1074, 5, 13, 5, 1, -11 }, // 0x69 'i' + { 1083, 9, 16, 6, -1, -11 }, // 0x6A 'j' + { 1101, 10, 14, 9, 0, -12 }, // 0x6B 'k' + { 1119, 5, 14, 5, 1, -12 }, // 0x6C 'l' + { 1128, 13, 9, 14, 0, -7 }, // 0x6D 'm' + { 1143, 8, 9, 9, 0, -7 }, // 0x6E 'n' + { 1152, 8, 9, 9, 0, -7 }, // 0x6F 'o' + { 1161, 10, 12, 9, -2, -7 }, // 0x70 'p' + { 1176, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 1190, 8, 8, 7, 0, -7 }, // 0x72 'r' + { 1198, 6, 9, 6, 0, -7 }, // 0x73 's' + { 1205, 5, 12, 5, 1, -10 }, // 0x74 't' + { 1213, 8, 9, 10, 1, -7 }, // 0x75 'u' + { 1222, 7, 8, 8, 1, -7 }, // 0x76 'v' + { 1229, 10, 8, 12, 1, -7 }, // 0x77 'w' + { 1239, 10, 9, 9, -1, -7 }, // 0x78 'x' + { 1251, 9, 12, 8, -1, -7 }, // 0x79 'y' + { 1265, 8, 9, 7, 0, -7 }, // 0x7A 'z' + { 1274, 8, 16, 6, 0, -12 }, // 0x7B '{' + { 1290, 1, 12, 5, 2, -11 }, // 0x7C '|' + { 1292, 8, 16, 6, -2, -12 }, // 0x7D '}' + { 1308, 8, 2, 10, 1, -4 } }; // 0x7E '~' + +const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1982 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h new file mode 100644 index 000000000..52332a7ad --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h @@ -0,0 +1,271 @@ +const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { + 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, + 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, + 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, + 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, + 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, + 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, + 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, + 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, + 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, + 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, + 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, + 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, + 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, + 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, + 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, + 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, + 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, + 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, + 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, + 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, + 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, + 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, + 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, + 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, + 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, + 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, + 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, + 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, + 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, + 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, + 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, + 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, + 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, + 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, + 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, + 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, + 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, + 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, + 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, + 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, + 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, + 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, + 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, + 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, + 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, + 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, + 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, + 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, + 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, + 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, + 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, + 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, + 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, + 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, + 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, + 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, + 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, + 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, + 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, + 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, + 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, + 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, + 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, + 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, + 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, + 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, + 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, + 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, + 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, + 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, + 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, + 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, + 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, + 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, + 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, + 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, + 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, + 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, + 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, + 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, + 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, + 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, + 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, + 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, + 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, + 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, + 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, + 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, + 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, + 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, + 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, + 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, + 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, + 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, + 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, + 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, + 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, + 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, + 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, + 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, + 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, + 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, + 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, + 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, + 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, + 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, + 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, + 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, + 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, + 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, + 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, + 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, + 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, + 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, + 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, + 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, + 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, + 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, + 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, + 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, + 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, + 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, + 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, + 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, + 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, + 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, + 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, + 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, + 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, + 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, + 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, + 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, + 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, + 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, + 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, + 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, + 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, + 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, + 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, + 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, + 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, + 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, + 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, + 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, + 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, + 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, + 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, + 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, + 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, + 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, + 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, + 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, + 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, + 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, + 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, + 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, + 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, + 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, + 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, + 0x18, 0x8C, 0x0F, 0x00 }; + +const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 6, 16, 8, 1, -15 }, // 0x21 '!' + { 12, 7, 6, 8, 3, -15 }, // 0x22 '"' + { 18, 13, 16, 12, 0, -15 }, // 0x23 '#' + { 44, 12, 20, 12, 0, -17 }, // 0x24 '$' + { 74, 17, 17, 20, 2, -16 }, // 0x25 '%' + { 111, 15, 16, 19, 2, -15 }, // 0x26 '&' + { 141, 2, 6, 5, 4, -15 }, // 0x27 ''' + { 143, 7, 20, 8, 1, -15 }, // 0x28 '(' + { 161, 7, 20, 8, 0, -15 }, // 0x29 ')' + { 179, 8, 10, 12, 4, -15 }, // 0x2A '*' + { 189, 11, 11, 16, 2, -10 }, // 0x2B '+' + { 205, 3, 6, 6, 0, -2 }, // 0x2C ',' + { 208, 5, 1, 8, 1, -5 }, // 0x2D '-' + { 209, 2, 3, 6, 1, -2 }, // 0x2E '.' + { 210, 11, 16, 7, 0, -15 }, // 0x2F '/' + { 232, 11, 17, 12, 1, -16 }, // 0x30 '0' + { 256, 9, 17, 12, 1, -16 }, // 0x31 '1' + { 276, 10, 15, 12, 1, -14 }, // 0x32 '2' + { 295, 10, 16, 12, 1, -15 }, // 0x33 '3' + { 315, 11, 16, 12, 0, -15 }, // 0x34 '4' + { 337, 11, 16, 12, 0, -15 }, // 0x35 '5' + { 359, 12, 17, 12, 1, -16 }, // 0x36 '6' + { 385, 11, 16, 12, 2, -15 }, // 0x37 '7' + { 407, 11, 17, 12, 1, -16 }, // 0x38 '8' + { 431, 11, 17, 12, 1, -16 }, // 0x39 '9' + { 455, 4, 11, 6, 1, -10 }, // 0x3A ':' + { 461, 5, 14, 6, 0, -10 }, // 0x3B ';' + { 470, 12, 13, 14, 1, -12 }, // 0x3C '<' + { 490, 12, 6, 16, 2, -8 }, // 0x3D '=' + { 499, 12, 13, 14, 2, -12 }, // 0x3E '>' + { 519, 9, 16, 11, 3, -15 }, // 0x3F '?' + { 537, 16, 16, 19, 2, -15 }, // 0x40 '@' + { 569, 15, 15, 16, 0, -14 }, // 0x41 'A' + { 598, 14, 16, 14, 0, -15 }, // 0x42 'B' + { 626, 16, 16, 15, 1, -15 }, // 0x43 'C' + { 658, 16, 16, 17, 0, -15 }, // 0x44 'D' + { 690, 16, 16, 14, 0, -15 }, // 0x45 'E' + { 722, 16, 16, 14, 0, -15 }, // 0x46 'F' + { 754, 16, 16, 17, 1, -15 }, // 0x47 'G' + { 786, 19, 16, 17, 0, -15 }, // 0x48 'H' + { 824, 9, 16, 8, 0, -15 }, // 0x49 'I' + { 842, 12, 16, 10, 0, -15 }, // 0x4A 'J' + { 866, 17, 16, 15, 0, -15 }, // 0x4B 'K' + { 900, 14, 16, 14, 0, -15 }, // 0x4C 'L' + { 928, 21, 16, 20, 0, -15 }, // 0x4D 'M' + { 970, 18, 16, 16, 0, -15 }, // 0x4E 'N' + { 1006, 15, 16, 16, 1, -15 }, // 0x4F 'O' + { 1036, 14, 16, 14, 0, -15 }, // 0x50 'P' + { 1064, 15, 20, 16, 1, -15 }, // 0x51 'Q' + { 1102, 14, 16, 15, 0, -15 }, // 0x52 'R' + { 1130, 12, 16, 11, 0, -15 }, // 0x53 'S' + { 1154, 15, 16, 14, 2, -15 }, // 0x54 'T' + { 1184, 16, 16, 17, 3, -15 }, // 0x55 'U' + { 1216, 15, 16, 16, 3, -15 }, // 0x56 'V' + { 1246, 20, 16, 21, 3, -15 }, // 0x57 'W' + { 1286, 16, 16, 16, 0, -15 }, // 0x58 'X' + { 1318, 13, 16, 14, 3, -15 }, // 0x59 'Y' + { 1344, 15, 16, 14, 0, -15 }, // 0x5A 'Z' + { 1374, 8, 20, 9, 1, -15 }, // 0x5B '[' + { 1394, 8, 16, 12, 3, -15 }, // 0x5C '\' + { 1410, 7, 20, 9, 1, -15 }, // 0x5D ']' + { 1428, 10, 9, 10, 0, -15 }, // 0x5E '^' + { 1440, 12, 1, 12, 0, 3 }, // 0x5F '_' + { 1442, 4, 4, 6, 3, -15 }, // 0x60 '`' + { 1444, 12, 11, 12, 0, -10 }, // 0x61 'a' + { 1461, 10, 16, 11, 1, -15 }, // 0x62 'b' + { 1481, 9, 11, 10, 1, -10 }, // 0x63 'c' + { 1494, 13, 16, 12, 0, -15 }, // 0x64 'd' + { 1520, 8, 11, 10, 1, -10 }, // 0x65 'e' + { 1531, 14, 22, 10, -2, -16 }, // 0x66 'f' + { 1570, 12, 16, 11, -1, -10 }, // 0x67 'g' + { 1594, 12, 16, 12, 0, -15 }, // 0x68 'h' + { 1618, 5, 16, 6, 1, -15 }, // 0x69 'i' + { 1628, 9, 21, 7, -2, -15 }, // 0x6A 'j' + { 1652, 11, 16, 11, 0, -15 }, // 0x6B 'k' + { 1674, 6, 16, 6, 1, -15 }, // 0x6C 'l' + { 1686, 17, 11, 17, 0, -10 }, // 0x6D 'm' + { 1710, 12, 11, 12, 0, -10 }, // 0x6E 'n' + { 1727, 10, 11, 11, 1, -10 }, // 0x6F 'o' + { 1741, 13, 16, 11, -2, -10 }, // 0x70 'p' + { 1767, 11, 16, 12, 0, -10 }, // 0x71 'q' + { 1789, 9, 11, 9, 0, -10 }, // 0x72 'r' + { 1802, 9, 11, 8, 0, -10 }, // 0x73 's' + { 1815, 6, 13, 6, 1, -12 }, // 0x74 't' + { 1825, 11, 11, 12, 1, -10 }, // 0x75 'u' + { 1841, 10, 11, 11, 1, -10 }, // 0x76 'v' + { 1855, 14, 11, 16, 2, -10 }, // 0x77 'w' + { 1875, 12, 11, 10, -1, -10 }, // 0x78 'x' + { 1892, 11, 16, 11, 0, -10 }, // 0x79 'y' + { 1914, 9, 13, 9, 0, -10 }, // 0x7A 'z' + { 1929, 9, 21, 10, 1, -16 }, // 0x7B '{' + { 1953, 1, 16, 7, 3, -15 }, // 0x7C '|' + { 1955, 9, 21, 10, 0, -16 }, // 0x7D '}' + { 1979, 11, 3, 13, 1, -6 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic12pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic12pt7bBitmaps, + (GFXglyph *)FreeSerifItalic12pt7bGlyphs, + 0x20, 0x7E, 29 }; + +// Approx. 2656 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h new file mode 100644 index 000000000..666ae7eb2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h @@ -0,0 +1,450 @@ +const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { + 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, + 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, + 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, + 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, + 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, + 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, + 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, + 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, + 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, + 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, + 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, + 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, + 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, + 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, + 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, + 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, + 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, + 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, + 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, + 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, + 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, + 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, + 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, + 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, + 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, + 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, + 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, + 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, + 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, + 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, + 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, + 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, + 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, + 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, + 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, + 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, + 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, + 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, + 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, + 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, + 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, + 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, + 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, + 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, + 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, + 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, + 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, + 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, + 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, + 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, + 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, + 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, + 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, + 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, + 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, + 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, + 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, + 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, + 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, + 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, + 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, + 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, + 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, + 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, + 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, + 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, + 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, + 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, + 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, + 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, + 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, + 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, + 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, + 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, + 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, + 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, + 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, + 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, + 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, + 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, + 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, + 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, + 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, + 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, + 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, + 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, + 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, + 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, + 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, + 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, + 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, + 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, + 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, + 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, + 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, + 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, + 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, + 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, + 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, + 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, + 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, + 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, + 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, + 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, + 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, + 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, + 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, + 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, + 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, + 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, + 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, + 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, + 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, + 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, + 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, + 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, + 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, + 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, + 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, + 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, + 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, + 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, + 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, + 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, + 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, + 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, + 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, + 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, + 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, + 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, + 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, + 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, + 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, + 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, + 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, + 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, + 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, + 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, + 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, + 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, + 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, + 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, + 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, + 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, + 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, + 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, + 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, + 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, + 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, + 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, + 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, + 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, + 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, + 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, + 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, + 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, + 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, + 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, + 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, + 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, + 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, + 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, + 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, + 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, + 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, + 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, + 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, + 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, + 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, + 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, + 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, + 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, + 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, + 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, + 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, + 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, + 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, + 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, + 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, + 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, + 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, + 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, + 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, + 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, + 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, + 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, + 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, + 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, + 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, + 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, + 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, + 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, + 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, + 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, + 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, + 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, + 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, + 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, + 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, + 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, + 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, + 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, + 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, + 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, + 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, + 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, + 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, + 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, + 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, + 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, + 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, + 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, + 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, + 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, + 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, + 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, + 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, + 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, + 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, + 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, + 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, + 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, + 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, + 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, + 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, + 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, + 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, + 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, + 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, + 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, + 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, + 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, + 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, + 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, + 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, + 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, + 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, + 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, + 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, + 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, + 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, + 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, + 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, + 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, + 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, + 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, + 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, + 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, + 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, + 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, + 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, + 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, + 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, + 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, + 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, + 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, + 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, + 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, + 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, + 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, + 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, + 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, + 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, + 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, + 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, + 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, + 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, + 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, + 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, + 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, + 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, + 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, + 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, + 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, + 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, + 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, + 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, + 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, + 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, + 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, + 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, + 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, + 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, + 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, + 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, + 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, + 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, + 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, + 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, + 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, + 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, + 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, + 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, + 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, + 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, + 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, + 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, + 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, + 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, + 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, + 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, + 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, + 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, + 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, + 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, + 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, + 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, + 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, + 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, + 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, + 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, + 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, + 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, + 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, + 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, + 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, + 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, + 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, + 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, + 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, + 0xF8, 0x7F, 0xC0, 0x07, 0x80 }; + +const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' + { 0, 10, 23, 12, 1, -22 }, // 0x21 '!' + { 29, 12, 9, 12, 4, -22 }, // 0x22 '"' + { 43, 19, 23, 17, 0, -22 }, // 0x23 '#' + { 98, 15, 29, 17, 1, -25 }, // 0x24 '$' + { 153, 25, 23, 29, 3, -22 }, // 0x25 '%' + { 225, 22, 23, 27, 3, -22 }, // 0x26 '&' + { 289, 5, 9, 7, 4, -22 }, // 0x27 ''' + { 295, 9, 29, 12, 1, -22 }, // 0x28 '(' + { 328, 9, 29, 12, 1, -22 }, // 0x29 ')' + { 361, 12, 14, 18, 5, -22 }, // 0x2A '*' + { 382, 16, 18, 24, 4, -17 }, // 0x2B '+' + { 418, 5, 8, 9, -1, -2 }, // 0x2C ',' + { 423, 8, 2, 12, 2, -8 }, // 0x2D '-' + { 425, 4, 4, 9, 1, -3 }, // 0x2E '.' + { 427, 16, 23, 10, 0, -22 }, // 0x2F '/' + { 473, 17, 24, 17, 1, -23 }, // 0x30 '0' + { 524, 12, 24, 17, 2, -23 }, // 0x31 '1' + { 560, 16, 23, 17, 1, -22 }, // 0x32 '2' + { 606, 17, 24, 18, 0, -23 }, // 0x33 '3' + { 657, 17, 24, 17, 0, -23 }, // 0x34 '4' + { 708, 16, 23, 18, 0, -22 }, // 0x35 '5' + { 754, 17, 24, 18, 1, -23 }, // 0x36 '6' + { 805, 16, 23, 17, 3, -22 }, // 0x37 '7' + { 851, 16, 24, 18, 1, -23 }, // 0x38 '8' + { 899, 16, 24, 17, 1, -23 }, // 0x39 '9' + { 947, 7, 15, 9, 2, -14 }, // 0x3A ':' + { 961, 9, 20, 9, 1, -14 }, // 0x3B ';' + { 984, 18, 18, 20, 2, -17 }, // 0x3C '<' + { 1025, 18, 9, 23, 3, -12 }, // 0x3D '=' + { 1046, 18, 18, 20, 2, -17 }, // 0x3E '>' + { 1087, 12, 23, 16, 4, -22 }, // 0x3F '?' + { 1122, 24, 23, 27, 2, -22 }, // 0x40 '@' + { 1191, 21, 23, 23, 0, -22 }, // 0x41 'A' + { 1252, 21, 23, 21, 0, -22 }, // 0x42 'B' + { 1313, 21, 23, 21, 2, -22 }, // 0x43 'C' + { 1374, 25, 23, 25, 0, -22 }, // 0x44 'D' + { 1446, 22, 23, 20, 0, -22 }, // 0x45 'E' + { 1510, 22, 23, 20, 0, -22 }, // 0x46 'F' + { 1574, 23, 23, 24, 2, -22 }, // 0x47 'G' + { 1641, 27, 23, 25, 0, -22 }, // 0x48 'H' + { 1719, 14, 23, 11, 0, -22 }, // 0x49 'I' + { 1760, 17, 23, 15, 0, -22 }, // 0x4A 'J' + { 1809, 25, 23, 22, 0, -22 }, // 0x4B 'K' + { 1881, 20, 23, 20, 0, -22 }, // 0x4C 'L' + { 1939, 31, 23, 29, 0, -22 }, // 0x4D 'M' + { 2029, 26, 23, 24, 0, -22 }, // 0x4E 'N' + { 2104, 23, 23, 23, 1, -22 }, // 0x4F 'O' + { 2171, 22, 23, 20, 0, -22 }, // 0x50 'P' + { 2235, 23, 29, 23, 1, -22 }, // 0x51 'Q' + { 2319, 21, 23, 22, 0, -22 }, // 0x52 'R' + { 2380, 17, 23, 16, 0, -22 }, // 0x53 'S' + { 2429, 20, 23, 21, 3, -22 }, // 0x54 'T' + { 2487, 23, 23, 25, 4, -22 }, // 0x55 'U' + { 2554, 21, 23, 23, 5, -22 }, // 0x56 'V' + { 2615, 29, 23, 31, 5, -22 }, // 0x57 'W' + { 2699, 24, 23, 23, 0, -22 }, // 0x58 'X' + { 2768, 19, 23, 21, 4, -22 }, // 0x59 'Y' + { 2823, 22, 23, 20, 0, -22 }, // 0x5A 'Z' + { 2887, 13, 28, 14, 1, -22 }, // 0x5B '[' + { 2933, 12, 23, 17, 4, -22 }, // 0x5C '\' + { 2968, 12, 28, 14, 1, -22 }, // 0x5D ']' + { 3010, 15, 13, 15, 0, -22 }, // 0x5E '^' + { 3035, 18, 2, 17, 0, 3 }, // 0x5F '_' + { 3040, 6, 6, 9, 5, -22 }, // 0x60 '`' + { 3045, 15, 15, 17, 1, -14 }, // 0x61 'a' + { 3074, 16, 24, 17, 1, -23 }, // 0x62 'b' + { 3122, 13, 15, 14, 1, -14 }, // 0x63 'c' + { 3147, 17, 24, 18, 1, -23 }, // 0x64 'd' + { 3198, 13, 15, 14, 1, -14 }, // 0x65 'e' + { 3223, 20, 31, 15, -3, -23 }, // 0x66 'f' + { 3301, 16, 22, 15, -1, -14 }, // 0x67 'g' + { 3345, 16, 24, 17, 1, -23 }, // 0x68 'h' + { 3393, 9, 23, 9, 1, -22 }, // 0x69 'i' + { 3419, 15, 30, 10, -3, -22 }, // 0x6A 'j' + { 3476, 15, 24, 16, 1, -23 }, // 0x6B 'k' + { 3521, 8, 25, 9, 1, -23 }, // 0x6C 'l' + { 3546, 24, 15, 25, 0, -14 }, // 0x6D 'm' + { 3591, 17, 15, 17, 0, -14 }, // 0x6E 'n' + { 3623, 15, 15, 17, 1, -14 }, // 0x6F 'o' + { 3652, 20, 22, 16, -3, -14 }, // 0x70 'p' + { 3707, 16, 22, 17, 1, -14 }, // 0x71 'q' + { 3751, 13, 15, 13, 1, -14 }, // 0x72 'r' + { 3776, 13, 15, 12, 0, -14 }, // 0x73 's' + { 3801, 9, 18, 8, 1, -17 }, // 0x74 't' + { 3822, 15, 15, 17, 1, -14 }, // 0x75 'u' + { 3851, 14, 15, 16, 2, -14 }, // 0x76 'v' + { 3878, 22, 15, 24, 1, -14 }, // 0x77 'w' + { 3920, 16, 15, 15, -1, -14 }, // 0x78 'x' + { 3950, 16, 22, 16, 0, -14 }, // 0x79 'y' + { 3994, 14, 18, 14, 0, -14 }, // 0x7A 'z' + { 4026, 12, 30, 14, 2, -23 }, // 0x7B '{' + { 4071, 2, 23, 10, 4, -22 }, // 0x7C '|' + { 4077, 12, 31, 14, 0, -24 }, // 0x7D '}' + { 4124, 17, 4, 19, 1, -10 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic18pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic18pt7bBitmaps, + (GFXglyph *)FreeSerifItalic18pt7bGlyphs, + 0x20, 0x7E, 42 }; + +// Approx. 4805 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h new file mode 100644 index 000000000..75da1e057 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h @@ -0,0 +1,737 @@ +const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { + 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, + 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, + 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, + 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, + 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, + 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, + 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, + 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, + 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, + 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, + 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, + 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, + 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, + 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, + 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, + 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, + 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, + 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, + 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, + 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, + 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, + 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, + 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, + 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, + 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, + 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, + 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, + 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, + 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, + 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, + 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, + 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, + 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, + 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, + 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, + 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, + 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, + 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, + 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, + 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, + 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, + 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, + 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, + 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, + 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, + 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, + 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, + 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, + 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, + 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, + 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, + 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, + 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, + 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, + 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, + 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, + 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, + 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, + 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, + 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, + 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, + 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, + 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, + 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, + 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, + 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, + 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, + 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, + 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, + 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, + 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, + 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, + 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, + 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, + 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, + 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, + 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, + 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, + 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, + 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, + 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, + 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, + 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, + 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, + 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, + 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, + 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, + 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, + 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, + 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, + 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, + 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, + 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, + 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, + 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, + 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, + 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, + 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, + 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, + 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, + 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, + 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, + 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, + 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, + 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, + 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, + 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, + 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, + 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, + 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, + 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, + 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, + 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, + 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, + 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, + 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, + 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, + 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, + 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, + 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, + 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, + 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, + 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, + 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, + 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, + 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, + 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, + 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, + 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, + 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, + 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, + 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, + 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, + 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, + 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, + 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, + 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, + 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, + 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 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, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, + 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, + 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, + 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, + 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, + 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, + 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, + 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, + 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, + 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, + 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, + 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, + 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, + 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, + 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, + 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, + 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, + 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, + 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, + 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, + 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, + 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, + 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, + 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, + 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, + 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, + 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, + 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, + 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, + 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, + 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, + 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, + 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, + 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, + 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, + 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, + 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, + 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, + 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, + 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, + 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, + 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, + 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, + 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, + 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, + 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, + 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, + 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, + 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, + 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, + 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, + 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, + 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, + 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, + 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, + 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, + 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, + 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, + 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, + 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, + 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, + 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, + 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, + 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, + 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, + 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, + 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, + 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, + 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, + 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, + 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, + 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, + 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, + 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, + 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, + 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, + 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, + 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, + 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, + 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, + 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, + 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, + 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, + 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, + 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, + 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, + 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, + 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, + 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, + 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, + 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, + 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, + 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, + 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, + 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, + 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, + 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, + 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, + 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, + 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, + 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, + 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, + 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, + 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, + 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, + 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, + 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, + 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, + 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, + 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, + 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, + 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, + 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, + 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, + 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, + 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, + 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, + 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, + 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, + 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, + 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, + 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, + 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, + 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, + 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, + 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, + 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, + 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, + 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, + 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, + 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, + 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, + 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, + 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, + 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, + 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, + 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, + 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, + 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, + 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, + 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, + 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, + 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, + 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, + 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, + 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, + 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, + 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, + 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, + 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, + 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, + 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, + 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, + 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, + 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, + 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, + 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, + 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, + 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, + 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, + 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, + 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, + 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, + 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, + 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, + 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, + 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, + 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, + 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, + 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, + 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, + 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, + 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, + 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, + 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, + 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, + 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, + 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, + 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, + 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, + 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, + 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, + 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, + 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, + 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, + 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, + 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, + 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, + 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, + 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, + 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, + 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, + 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, + 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, + 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, + 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, + 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, + 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, + 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, + 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, + 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, + 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, + 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, + 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, + 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, + 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, + 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, + 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, + 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, + 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, + 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, + 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, + 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, + 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, + 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, + 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, + 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, + 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, + 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, + 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, + 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, + 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, + 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, + 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, + 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, + 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, + 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, + 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, + 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, + 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, + 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, + 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, + 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, + 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, + 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, + 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, + 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, + 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, + 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, + 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, + 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, + 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, + 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, + 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, + 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, + 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, + 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, + 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, + 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, + 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, + 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, + 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, + 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, + 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, + 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, + 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, + 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, + 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, + 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, + 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, + 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, + 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, + 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, + 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, + 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, + 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, + 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, + 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, + 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, + 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, + 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, + 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, + 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, + 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, + 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, + 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, + 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, + 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, + 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, + 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, + 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, + 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, + 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, + 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, + 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, + 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, + 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, + 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, + 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, + 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, + 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, + 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, + 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, + 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, + 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, + 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, + 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, + 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, + 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, + 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, + 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, + 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, + 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, + 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, + 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, + 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, + 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, + 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, + 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, + 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, + 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, + 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, + 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, + 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, + 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, + 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, + 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, + 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, + 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, + 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, + 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, + 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, + 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, + 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, + 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, + 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, + 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, + 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, + 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, + 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, + 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, + 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, + 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, + 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, + 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, + 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, + 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, + 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, + 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, + 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, + 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, + 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, + 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, + 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, + 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, + 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, + 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, + 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, + 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, + 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, + 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, + 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, + 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, + 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, + 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, + 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, + 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, + 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, + 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, + 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, + 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, + 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, + 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, + 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, + 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, + 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, + 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, + 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, + 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, + 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, + 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, + 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, + 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, + 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, + 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, + 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, + 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, + 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, + 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, + 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, + 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, + 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, + 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, + 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, + 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, + 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, + 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, + 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, + 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, + 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, + 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, + 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, + 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, + 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, + 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, + 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, + 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, + 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, + 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, + 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, + 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, + 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, + 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, + 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, + 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, + 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, + 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, + 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, + 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, + 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, + 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00 }; + +const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' + { 0, 12, 32, 16, 2, -30 }, // 0x21 '!' + { 48, 14, 12, 16, 6, -31 }, // 0x22 '"' + { 69, 25, 31, 23, 0, -30 }, // 0x23 '#' + { 166, 21, 38, 24, 2, -33 }, // 0x24 '$' + { 266, 33, 32, 39, 4, -30 }, // 0x25 '%' + { 398, 30, 33, 37, 4, -31 }, // 0x26 '&' + { 522, 5, 12, 9, 6, -31 }, // 0x27 ''' + { 530, 13, 39, 16, 2, -30 }, // 0x28 '(' + { 594, 13, 39, 16, 0, -30 }, // 0x29 ')' + { 658, 16, 20, 23, 7, -31 }, // 0x2A '*' + { 698, 23, 23, 32, 4, -22 }, // 0x2B '+' + { 765, 7, 11, 12, -1, -4 }, // 0x2C ',' + { 775, 11, 3, 16, 2, -11 }, // 0x2D '-' + { 780, 5, 5, 12, 1, -3 }, // 0x2E '.' + { 784, 21, 33, 14, 0, -31 }, // 0x2F '/' + { 871, 21, 31, 23, 2, -30 }, // 0x30 '0' + { 953, 17, 32, 23, 2, -31 }, // 0x31 '1' + { 1021, 21, 31, 24, 0, -30 }, // 0x32 '2' + { 1103, 22, 32, 23, 0, -31 }, // 0x33 '3' + { 1191, 22, 32, 23, 0, -31 }, // 0x34 '4' + { 1279, 22, 32, 24, 0, -31 }, // 0x35 '5' + { 1367, 23, 32, 23, 1, -31 }, // 0x36 '6' + { 1459, 21, 32, 23, 4, -31 }, // 0x37 '7' + { 1543, 22, 32, 23, 1, -31 }, // 0x38 '8' + { 1631, 22, 33, 23, 1, -31 }, // 0x39 '9' + { 1722, 9, 22, 12, 2, -20 }, // 0x3A ':' + { 1747, 11, 27, 12, 1, -20 }, // 0x3B ';' + { 1785, 23, 25, 27, 3, -24 }, // 0x3C '<' + { 1857, 24, 12, 31, 4, -17 }, // 0x3D '=' + { 1893, 24, 25, 27, 3, -24 }, // 0x3E '>' + { 1968, 16, 33, 21, 6, -31 }, // 0x3F '?' + { 2034, 33, 33, 37, 3, -31 }, // 0x40 '@' + { 2171, 29, 31, 31, 0, -30 }, // 0x41 'A' + { 2284, 28, 31, 28, 0, -30 }, // 0x42 'B' + { 2393, 30, 33, 29, 2, -31 }, // 0x43 'C' + { 2517, 33, 31, 33, 0, -30 }, // 0x44 'D' + { 2645, 29, 31, 27, 0, -30 }, // 0x45 'E' + { 2758, 29, 31, 27, 0, -30 }, // 0x46 'F' + { 2871, 31, 33, 32, 2, -31 }, // 0x47 'G' + { 2999, 36, 31, 33, 0, -30 }, // 0x48 'H' + { 3139, 18, 31, 15, 0, -30 }, // 0x49 'I' + { 3209, 23, 32, 20, 0, -30 }, // 0x4A 'J' + { 3301, 33, 31, 30, 0, -30 }, // 0x4B 'K' + { 3429, 27, 31, 27, 0, -30 }, // 0x4C 'L' + { 3534, 42, 31, 39, 0, -30 }, // 0x4D 'M' + { 3697, 35, 32, 32, 0, -30 }, // 0x4E 'N' + { 3837, 30, 33, 31, 2, -31 }, // 0x4F 'O' + { 3961, 29, 31, 27, 0, -30 }, // 0x50 'P' + { 4074, 30, 41, 31, 2, -31 }, // 0x51 'Q' + { 4228, 28, 31, 29, 0, -30 }, // 0x52 'R' + { 4337, 23, 33, 21, 0, -31 }, // 0x53 'S' + { 4432, 27, 31, 28, 4, -30 }, // 0x54 'T' + { 4537, 31, 32, 33, 5, -30 }, // 0x55 'U' + { 4661, 29, 32, 31, 6, -30 }, // 0x56 'V' + { 4777, 39, 32, 42, 6, -30 }, // 0x57 'W' + { 4933, 32, 31, 31, 0, -30 }, // 0x58 'X' + { 5057, 26, 31, 28, 5, -30 }, // 0x59 'Y' + { 5158, 29, 31, 26, 0, -30 }, // 0x5A 'Z' + { 5271, 17, 39, 18, 1, -31 }, // 0x5B '[' + { 5354, 17, 33, 23, 5, -31 }, // 0x5C '\' + { 5425, 17, 39, 18, 1, -31 }, // 0x5D ']' + { 5508, 20, 17, 20, 0, -31 }, // 0x5E '^' + { 5551, 24, 2, 23, 0, 5 }, // 0x5F '_' + { 5557, 8, 8, 12, 6, -31 }, // 0x60 '`' + { 5565, 21, 21, 23, 1, -20 }, // 0x61 'a' + { 5621, 21, 33, 22, 1, -31 }, // 0x62 'b' + { 5708, 18, 22, 19, 1, -20 }, // 0x63 'c' + { 5758, 24, 33, 23, 1, -31 }, // 0x64 'd' + { 5857, 18, 22, 19, 1, -20 }, // 0x65 'e' + { 5907, 27, 42, 20, -4, -31 }, // 0x66 'f' + { 6049, 21, 31, 21, -1, -20 }, // 0x67 'g' + { 6131, 21, 32, 23, 1, -31 }, // 0x68 'h' + { 6215, 10, 32, 12, 2, -30 }, // 0x69 'i' + { 6255, 19, 41, 13, -3, -30 }, // 0x6A 'j' + { 6353, 21, 33, 21, 1, -31 }, // 0x6B 'k' + { 6440, 11, 33, 12, 2, -31 }, // 0x6C 'l' + { 6486, 31, 21, 34, 1, -20 }, // 0x6D 'm' + { 6568, 21, 21, 23, 1, -20 }, // 0x6E 'n' + { 6624, 21, 22, 22, 1, -20 }, // 0x6F 'o' + { 6682, 27, 31, 22, -4, -20 }, // 0x70 'p' + { 6787, 21, 31, 23, 1, -20 }, // 0x71 'q' + { 6869, 17, 21, 17, 1, -20 }, // 0x72 'r' + { 6914, 17, 22, 16, 0, -20 }, // 0x73 's' + { 6961, 12, 26, 11, 1, -24 }, // 0x74 't' + { 7000, 20, 22, 23, 1, -20 }, // 0x75 'u' + { 7055, 18, 22, 21, 3, -20 }, // 0x76 'v' + { 7105, 30, 22, 32, 2, -20 }, // 0x77 'w' + { 7188, 22, 22, 20, -1, -20 }, // 0x78 'x' + { 7249, 21, 31, 22, 1, -20 }, // 0x79 'y' + { 7331, 17, 24, 18, 0, -19 }, // 0x7A 'z' + { 7382, 17, 40, 19, 2, -31 }, // 0x7B '{' + { 7467, 3, 33, 13, 5, -31 }, // 0x7C '|' + { 7480, 16, 41, 19, 0, -32 }, // 0x7D '}' + { 7562, 22, 6, 25, 2, -14 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic24pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic24pt7bBitmaps, + (GFXglyph *)FreeSerifItalic24pt7bGlyphs, + 0x20, 0x7E, 56 }; + +// Approx. 8251 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h new file mode 100644 index 000000000..34e6b8df2 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h @@ -0,0 +1,202 @@ +const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { + 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, + 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, + 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, + 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, + 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, + 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, + 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, + 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, + 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, + 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, + 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, + 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, + 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, + 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, + 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, + 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, + 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, + 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, + 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, + 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, + 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, + 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, + 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, + 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, + 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, + 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, + 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, + 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, + 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, + 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, + 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, + 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, + 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, + 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, + 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, + 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, + 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, + 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, + 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, + 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, + 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, + 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, + 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, + 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, + 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, + 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, + 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, + 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, + 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, + 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, + 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, + 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, + 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, + 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, + 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, + 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, + 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, + 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, + 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, + 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, + 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, + 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, + 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, + 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, + 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, + 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, + 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, + 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, + 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, + 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, + 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, + 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, + 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, + 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, + 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, + 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, + 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, + 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, + 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, + 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, + 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, + 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, + 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, + 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, + 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, + 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, + 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, + 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, + 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, + 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, + 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, + 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, + 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, + 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, + 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, + 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, + 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E }; + +const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' + { 0, 4, 12, 6, 1, -11 }, // 0x21 '!' + { 6, 5, 4, 6, 3, -11 }, // 0x22 '"' + { 9, 10, 12, 9, 0, -11 }, // 0x23 '#' + { 24, 9, 15, 9, 1, -12 }, // 0x24 '$' + { 41, 14, 12, 15, 1, -11 }, // 0x25 '%' + { 62, 12, 12, 14, 1, -11 }, // 0x26 '&' + { 80, 2, 4, 4, 3, -11 }, // 0x27 ''' + { 81, 6, 15, 6, 1, -11 }, // 0x28 '(' + { 93, 6, 15, 6, 0, -11 }, // 0x29 ')' + { 105, 6, 8, 9, 3, -11 }, // 0x2A '*' + { 111, 9, 9, 12, 1, -8 }, // 0x2B '+' + { 122, 2, 4, 5, 0, -1 }, // 0x2C ',' + { 123, 4, 1, 6, 1, -3 }, // 0x2D '-' + { 124, 2, 2, 5, 0, -1 }, // 0x2E '.' + { 125, 8, 12, 5, 0, -11 }, // 0x2F '/' + { 137, 9, 13, 9, 1, -12 }, // 0x30 '0' + { 152, 6, 13, 9, 1, -12 }, // 0x31 '1' + { 162, 8, 12, 9, 1, -11 }, // 0x32 '2' + { 174, 9, 12, 9, 0, -11 }, // 0x33 '3' + { 188, 9, 12, 9, 0, -11 }, // 0x34 '4' + { 202, 9, 12, 9, 0, -11 }, // 0x35 '5' + { 216, 9, 13, 9, 1, -12 }, // 0x36 '6' + { 231, 9, 12, 9, 1, -11 }, // 0x37 '7' + { 245, 9, 13, 9, 1, -12 }, // 0x38 '8' + { 260, 9, 13, 9, 0, -12 }, // 0x39 '9' + { 275, 4, 8, 4, 1, -7 }, // 0x3A ':' + { 279, 4, 10, 4, 1, -7 }, // 0x3B ';' + { 284, 9, 9, 10, 1, -8 }, // 0x3C '<' + { 295, 9, 5, 12, 2, -6 }, // 0x3D '=' + { 301, 9, 9, 10, 1, -8 }, // 0x3E '>' + { 312, 7, 12, 8, 2, -11 }, // 0x3F '?' + { 323, 13, 12, 14, 1, -11 }, // 0x40 '@' + { 343, 11, 11, 12, 0, -10 }, // 0x41 'A' + { 359, 11, 12, 11, 0, -11 }, // 0x42 'B' + { 376, 12, 12, 11, 1, -11 }, // 0x43 'C' + { 394, 13, 12, 13, 0, -11 }, // 0x44 'D' + { 414, 12, 12, 10, 0, -11 }, // 0x45 'E' + { 432, 12, 12, 10, 0, -11 }, // 0x46 'F' + { 450, 12, 12, 12, 1, -11 }, // 0x47 'G' + { 468, 14, 12, 13, 0, -11 }, // 0x48 'H' + { 489, 7, 12, 6, 0, -11 }, // 0x49 'I' + { 500, 9, 12, 8, 0, -11 }, // 0x4A 'J' + { 514, 13, 12, 12, 0, -11 }, // 0x4B 'K' + { 534, 11, 12, 10, 0, -11 }, // 0x4C 'L' + { 551, 16, 12, 15, 0, -11 }, // 0x4D 'M' + { 575, 13, 12, 12, 0, -11 }, // 0x4E 'N' + { 595, 11, 12, 12, 1, -11 }, // 0x4F 'O' + { 612, 11, 12, 10, 0, -11 }, // 0x50 'P' + { 629, 11, 15, 12, 1, -11 }, // 0x51 'Q' + { 650, 11, 12, 11, 0, -11 }, // 0x52 'R' + { 667, 10, 12, 8, 0, -11 }, // 0x53 'S' + { 682, 11, 12, 11, 2, -11 }, // 0x54 'T' + { 699, 12, 12, 13, 2, -11 }, // 0x55 'U' + { 717, 11, 12, 12, 2, -11 }, // 0x56 'V' + { 734, 15, 12, 16, 2, -11 }, // 0x57 'W' + { 757, 12, 12, 12, 0, -11 }, // 0x58 'X' + { 775, 10, 12, 11, 2, -11 }, // 0x59 'Y' + { 790, 11, 12, 10, 0, -11 }, // 0x5A 'Z' + { 807, 7, 15, 7, 0, -11 }, // 0x5B '[' + { 821, 6, 12, 9, 2, -11 }, // 0x5C '\' + { 830, 6, 15, 7, 1, -11 }, // 0x5D ']' + { 842, 8, 7, 8, 0, -11 }, // 0x5E '^' + { 849, 9, 1, 9, 0, 2 }, // 0x5F '_' + { 851, 3, 3, 5, 2, -11 }, // 0x60 '`' + { 853, 9, 8, 9, 0, -7 }, // 0x61 'a' + { 862, 9, 12, 9, 0, -11 }, // 0x62 'b' + { 876, 8, 8, 7, 0, -7 }, // 0x63 'c' + { 884, 9, 12, 9, 0, -11 }, // 0x64 'd' + { 898, 7, 8, 7, 0, -7 }, // 0x65 'e' + { 905, 11, 17, 8, -1, -12 }, // 0x66 'f' + { 929, 9, 12, 8, 0, -7 }, // 0x67 'g' + { 943, 9, 12, 9, 0, -11 }, // 0x68 'h' + { 957, 4, 12, 4, 1, -11 }, // 0x69 'i' + { 963, 7, 16, 5, -1, -11 }, // 0x6A 'j' + { 977, 8, 12, 8, 0, -11 }, // 0x6B 'k' + { 989, 4, 12, 5, 1, -11 }, // 0x6C 'l' + { 995, 13, 8, 13, 0, -7 }, // 0x6D 'm' + { 1008, 8, 8, 9, 0, -7 }, // 0x6E 'n' + { 1016, 9, 8, 9, 0, -7 }, // 0x6F 'o' + { 1025, 10, 12, 8, -1, -7 }, // 0x70 'p' + { 1040, 9, 12, 9, 0, -7 }, // 0x71 'q' + { 1054, 7, 8, 7, 0, -7 }, // 0x72 'r' + { 1061, 7, 8, 6, 0, -7 }, // 0x73 's' + { 1068, 5, 9, 4, 0, -8 }, // 0x74 't' + { 1074, 8, 8, 9, 1, -7 }, // 0x75 'u' + { 1082, 7, 8, 8, 1, -7 }, // 0x76 'v' + { 1089, 11, 8, 12, 1, -7 }, // 0x77 'w' + { 1100, 9, 8, 8, -1, -7 }, // 0x78 'x' + { 1109, 9, 12, 9, 0, -7 }, // 0x79 'y' + { 1123, 8, 9, 7, 0, -7 }, // 0x7A 'z' + { 1132, 6, 15, 7, 1, -11 }, // 0x7B '{' + { 1144, 1, 12, 5, 2, -11 }, // 0x7C '|' + { 1146, 7, 16, 7, 0, -12 }, // 0x7D '}' + { 1160, 8, 3, 10, 1, -5 } }; // 0x7E '~' + +const GFXfont FreeSerifItalic9pt7b PROGMEM = { + (uint8_t *)FreeSerifItalic9pt7bBitmaps, + (GFXglyph *)FreeSerifItalic9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1835 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h new file mode 100644 index 000000000..ac41f31cd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h @@ -0,0 +1,131 @@ +// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, +// stylized font with all characters within a 6 pixel height. + +const uint8_t Org_01Bitmaps[] PROGMEM = { + 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, + 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, + 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, + 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, + 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, + 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, + 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, + 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, + 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, + 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, + 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, + 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, + 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, + 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, + 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, + 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, + 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, + 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, + 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, + 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, + 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, + 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, + 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0 }; + +const GFXglyph Org_01Glyphs[] PROGMEM = { + { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' + { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' + { 1, 3, 1, 4, 0, -4 }, // 0x22 '"' + { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' + { 6, 5, 5, 6, 0, -4 }, // 0x24 '$' + { 10, 5, 5, 6, 0, -4 }, // 0x25 '%' + { 14, 5, 5, 6, 0, -4 }, // 0x26 '&' + { 18, 1, 1, 2, 0, -4 }, // 0x27 ''' + { 19, 2, 5, 3, 0, -4 }, // 0x28 '(' + { 21, 2, 5, 3, 0, -4 }, // 0x29 ')' + { 23, 3, 3, 4, 0, -3 }, // 0x2A '*' + { 25, 3, 3, 4, 0, -3 }, // 0x2B '+' + { 27, 1, 2, 2, 0, 0 }, // 0x2C ',' + { 28, 4, 1, 5, 0, -2 }, // 0x2D '-' + { 29, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 30, 5, 5, 6, 0, -4 }, // 0x2F '/' + { 34, 5, 5, 6, 0, -4 }, // 0x30 '0' + { 38, 1, 5, 2, 0, -4 }, // 0x31 '1' + { 39, 5, 5, 6, 0, -4 }, // 0x32 '2' + { 43, 5, 5, 6, 0, -4 }, // 0x33 '3' + { 47, 5, 5, 6, 0, -4 }, // 0x34 '4' + { 51, 5, 5, 6, 0, -4 }, // 0x35 '5' + { 55, 5, 5, 6, 0, -4 }, // 0x36 '6' + { 59, 5, 5, 6, 0, -4 }, // 0x37 '7' + { 63, 5, 5, 6, 0, -4 }, // 0x38 '8' + { 67, 5, 5, 6, 0, -4 }, // 0x39 '9' + { 71, 1, 4, 2, 0, -3 }, // 0x3A ':' + { 72, 1, 4, 2, 0, -3 }, // 0x3B ';' + { 73, 3, 5, 4, 0, -4 }, // 0x3C '<' + { 75, 4, 3, 5, 0, -3 }, // 0x3D '=' + { 77, 3, 5, 4, 0, -4 }, // 0x3E '>' + { 79, 5, 5, 6, 0, -4 }, // 0x3F '?' + { 83, 5, 5, 6, 0, -4 }, // 0x40 '@' + { 87, 5, 5, 6, 0, -4 }, // 0x41 'A' + { 91, 5, 5, 6, 0, -4 }, // 0x42 'B' + { 95, 5, 5, 6, 0, -4 }, // 0x43 'C' + { 99, 5, 5, 6, 0, -4 }, // 0x44 'D' + { 103, 5, 5, 6, 0, -4 }, // 0x45 'E' + { 107, 5, 5, 6, 0, -4 }, // 0x46 'F' + { 111, 5, 5, 6, 0, -4 }, // 0x47 'G' + { 115, 5, 5, 6, 0, -4 }, // 0x48 'H' + { 119, 5, 5, 6, 0, -4 }, // 0x49 'I' + { 123, 5, 5, 6, 0, -4 }, // 0x4A 'J' + { 127, 5, 5, 6, 0, -4 }, // 0x4B 'K' + { 131, 5, 5, 6, 0, -4 }, // 0x4C 'L' + { 135, 5, 5, 6, 0, -4 }, // 0x4D 'M' + { 139, 5, 5, 6, 0, -4 }, // 0x4E 'N' + { 143, 5, 5, 6, 0, -4 }, // 0x4F 'O' + { 147, 5, 5, 6, 0, -4 }, // 0x50 'P' + { 151, 5, 5, 6, 0, -4 }, // 0x51 'Q' + { 155, 5, 5, 6, 0, -4 }, // 0x52 'R' + { 159, 5, 5, 6, 0, -4 }, // 0x53 'S' + { 163, 5, 5, 6, 0, -4 }, // 0x54 'T' + { 167, 5, 5, 6, 0, -4 }, // 0x55 'U' + { 171, 5, 5, 6, 0, -4 }, // 0x56 'V' + { 175, 5, 5, 6, 0, -4 }, // 0x57 'W' + { 179, 5, 5, 6, 0, -4 }, // 0x58 'X' + { 183, 5, 5, 6, 0, -4 }, // 0x59 'Y' + { 187, 5, 5, 6, 0, -4 }, // 0x5A 'Z' + { 191, 2, 5, 3, 0, -4 }, // 0x5B '[' + { 193, 5, 5, 6, 0, -4 }, // 0x5C '\' + { 197, 2, 5, 3, 0, -4 }, // 0x5D ']' + { 199, 3, 2, 4, 0, -4 }, // 0x5E '^' + { 200, 5, 1, 6, 0, 1 }, // 0x5F '_' + { 201, 1, 1, 2, 0, -4 }, // 0x60 '`' + { 202, 4, 4, 5, 0, -3 }, // 0x61 'a' + { 204, 4, 5, 5, 0, -4 }, // 0x62 'b' + { 207, 4, 4, 5, 0, -3 }, // 0x63 'c' + { 209, 4, 5, 5, 0, -4 }, // 0x64 'd' + { 212, 4, 4, 5, 0, -3 }, // 0x65 'e' + { 214, 3, 5, 4, 0, -4 }, // 0x66 'f' + { 216, 4, 5, 5, 0, -3 }, // 0x67 'g' + { 219, 4, 5, 5, 0, -4 }, // 0x68 'h' + { 222, 1, 4, 2, 0, -3 }, // 0x69 'i' + { 223, 2, 5, 3, 0, -3 }, // 0x6A 'j' + { 225, 4, 5, 5, 0, -4 }, // 0x6B 'k' + { 228, 1, 5, 2, 0, -4 }, // 0x6C 'l' + { 229, 5, 4, 6, 0, -3 }, // 0x6D 'm' + { 232, 4, 4, 5, 0, -3 }, // 0x6E 'n' + { 234, 4, 4, 5, 0, -3 }, // 0x6F 'o' + { 236, 4, 5, 5, 0, -3 }, // 0x70 'p' + { 239, 4, 5, 5, 0, -3 }, // 0x71 'q' + { 242, 4, 4, 5, 0, -3 }, // 0x72 'r' + { 244, 4, 4, 5, 0, -3 }, // 0x73 's' + { 246, 5, 5, 6, 0, -4 }, // 0x74 't' + { 250, 4, 4, 5, 0, -3 }, // 0x75 'u' + { 252, 4, 4, 5, 0, -3 }, // 0x76 'v' + { 254, 5, 4, 6, 0, -3 }, // 0x77 'w' + { 257, 4, 4, 5, 0, -3 }, // 0x78 'x' + { 259, 4, 5, 5, 0, -3 }, // 0x79 'y' + { 262, 4, 4, 5, 0, -3 }, // 0x7A 'z' + { 264, 3, 5, 4, 0, -4 }, // 0x7B '{' + { 266, 1, 5, 2, 0, -4 }, // 0x7C '|' + { 267, 3, 5, 4, 0, -4 }, // 0x7D '}' + { 269, 5, 3, 6, 0, -3 } }; // 0x7E '~' + +const GFXfont Org_01 PROGMEM = { + (uint8_t *)Org_01Bitmaps, + (GFXglyph *)Org_01Glyphs, + 0x20, 0x7E, 7 }; + +// Approx. 943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h new file mode 100644 index 000000000..0ed654374 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h @@ -0,0 +1,123 @@ +// Picopixel by Sebastian Weber. A tiny font +// with all characters within a 6 pixel height. + +const uint8_t PicopixelBitmaps[] PROGMEM = { + 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, + 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, + 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, + 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, + 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, + 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, + 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, + 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, + 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, + 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, + 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, + 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, + 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, + 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, + 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A }; + +const GFXglyph PicopixelGlyphs[] PROGMEM = { + { 0, 0, 0, 2, 0, 1 }, // 0x20 ' ' + { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' + { 1, 3, 2, 4, 0, -4 }, // 0x22 '"' + { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' + { 6, 3, 6, 4, 0, -4 }, // 0x24 '$' + { 9, 3, 5, 4, 0, -4 }, // 0x25 '%' + { 11, 4, 5, 5, 0, -4 }, // 0x26 '&' + { 14, 1, 2, 2, 0, -4 }, // 0x27 ''' + { 15, 2, 5, 3, 0, -4 }, // 0x28 '(' + { 17, 2, 5, 3, 0, -4 }, // 0x29 ')' + { 19, 3, 3, 4, 0, -3 }, // 0x2A '*' + { 21, 3, 3, 4, 0, -3 }, // 0x2B '+' + { 23, 2, 2, 3, 0, 0 }, // 0x2C ',' + { 24, 3, 1, 4, 0, -2 }, // 0x2D '-' + { 25, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 26, 3, 5, 4, 0, -4 }, // 0x2F '/' + { 28, 3, 5, 4, 0, -4 }, // 0x30 '0' + { 30, 2, 5, 3, 0, -4 }, // 0x31 '1' + { 32, 3, 5, 4, 0, -4 }, // 0x32 '2' + { 34, 3, 5, 4, 0, -4 }, // 0x33 '3' + { 36, 3, 5, 4, 0, -4 }, // 0x34 '4' + { 38, 3, 5, 4, 0, -4 }, // 0x35 '5' + { 40, 3, 5, 4, 0, -4 }, // 0x36 '6' + { 42, 3, 5, 4, 0, -4 }, // 0x37 '7' + { 44, 3, 5, 4, 0, -4 }, // 0x38 '8' + { 46, 3, 5, 4, 0, -4 }, // 0x39 '9' + { 48, 1, 3, 2, 0, -3 }, // 0x3A ':' + { 49, 2, 4, 3, 0, -3 }, // 0x3B ';' + { 50, 2, 3, 3, 0, -3 }, // 0x3C '<' + { 51, 3, 3, 4, 0, -3 }, // 0x3D '=' + { 53, 2, 3, 3, 0, -3 }, // 0x3E '>' + { 54, 3, 5, 4, 0, -4 }, // 0x3F '?' + { 56, 3, 5, 4, 0, -4 }, // 0x40 '@' + { 58, 3, 5, 4, 0, -4 }, // 0x41 'A' + { 60, 3, 5, 4, 0, -4 }, // 0x42 'B' + { 62, 3, 5, 4, 0, -4 }, // 0x43 'C' + { 64, 3, 5, 4, 0, -4 }, // 0x44 'D' + { 66, 3, 5, 4, 0, -4 }, // 0x45 'E' + { 68, 3, 5, 4, 0, -4 }, // 0x46 'F' + { 70, 3, 5, 4, 0, -4 }, // 0x47 'G' + { 72, 3, 5, 4, 0, -4 }, // 0x48 'H' + { 74, 1, 5, 2, 0, -4 }, // 0x49 'I' + { 75, 3, 5, 4, 0, -4 }, // 0x4A 'J' + { 77, 3, 5, 4, 0, -4 }, // 0x4B 'K' + { 79, 3, 5, 4, 0, -4 }, // 0x4C 'L' + { 81, 5, 5, 6, 0, -4 }, // 0x4D 'M' + { 85, 4, 5, 5, 0, -4 }, // 0x4E 'N' + { 88, 3, 5, 4, 0, -4 }, // 0x4F 'O' + { 90, 3, 5, 4, 0, -4 }, // 0x50 'P' + { 92, 3, 6, 4, 0, -4 }, // 0x51 'Q' + { 95, 3, 5, 4, 0, -4 }, // 0x52 'R' + { 97, 3, 5, 4, 0, -4 }, // 0x53 'S' + { 99, 3, 5, 4, 0, -4 }, // 0x54 'T' + { 101, 3, 5, 4, 0, -4 }, // 0x55 'U' + { 103, 3, 5, 4, 0, -4 }, // 0x56 'V' + { 105, 5, 5, 6, 0, -4 }, // 0x57 'W' + { 109, 3, 5, 4, 0, -4 }, // 0x58 'X' + { 111, 3, 5, 4, 0, -4 }, // 0x59 'Y' + { 113, 3, 5, 4, 0, -4 }, // 0x5A 'Z' + { 115, 2, 5, 3, 0, -4 }, // 0x5B '[' + { 117, 3, 5, 4, 0, -4 }, // 0x5C '\' + { 119, 2, 5, 3, 0, -4 }, // 0x5D ']' + { 121, 3, 2, 4, 0, -4 }, // 0x5E '^' + { 122, 4, 1, 4, 0, 1 }, // 0x5F '_' + { 123, 2, 2, 3, 0, -4 }, // 0x60 '`' + { 124, 3, 4, 4, 0, -3 }, // 0x61 'a' + { 126, 3, 5, 4, 0, -4 }, // 0x62 'b' + { 128, 3, 3, 4, 0, -2 }, // 0x63 'c' + { 130, 3, 5, 4, 0, -4 }, // 0x64 'd' + { 132, 3, 4, 4, 0, -3 }, // 0x65 'e' + { 134, 2, 5, 3, 0, -4 }, // 0x66 'f' + { 136, 3, 5, 4, 0, -3 }, // 0x67 'g' + { 138, 3, 5, 4, 0, -4 }, // 0x68 'h' + { 140, 1, 5, 2, 0, -4 }, // 0x69 'i' + { 141, 2, 6, 3, 0, -4 }, // 0x6A 'j' + { 143, 3, 5, 4, 0, -4 }, // 0x6B 'k' + { 145, 2, 5, 3, 0, -4 }, // 0x6C 'l' + { 147, 5, 3, 6, 0, -2 }, // 0x6D 'm' + { 149, 3, 3, 4, 0, -2 }, // 0x6E 'n' + { 151, 3, 3, 4, 0, -2 }, // 0x6F 'o' + { 153, 3, 4, 4, 0, -2 }, // 0x70 'p' + { 155, 3, 4, 4, 0, -2 }, // 0x71 'q' + { 157, 2, 3, 3, 0, -2 }, // 0x72 'r' + { 158, 3, 4, 4, 0, -3 }, // 0x73 's' + { 160, 2, 5, 3, 0, -4 }, // 0x74 't' + { 162, 3, 3, 4, 0, -2 }, // 0x75 'u' + { 164, 3, 3, 4, 0, -2 }, // 0x76 'v' + { 166, 5, 3, 6, 0, -2 }, // 0x77 'w' + { 168, 3, 3, 4, 0, -2 }, // 0x78 'x' + { 170, 3, 4, 4, 0, -2 }, // 0x79 'y' + { 172, 3, 4, 4, 0, -3 }, // 0x7A 'z' + { 174, 3, 5, 4, 0, -4 }, // 0x7B '{' + { 176, 1, 6, 2, 0, -4 }, // 0x7C '|' + { 177, 3, 5, 4, 0, -4 }, // 0x7D '}' + { 179, 4, 2, 5, 0, -3 } }; // 0x7E '~' + +const GFXfont Picopixel PROGMEM = { + (uint8_t *)PicopixelBitmaps, + (GFXglyph *)PicopixelGlyphs, + 0x20, 0x7E, 7 }; + +// Approx. 852 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b new file mode 100644 index 000000000..d77676c21 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b @@ -0,0 +1,130 @@ +/** +** The FontStruction “Tiny3x3a” +** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is +** licensed under a Creative Commons Attribution Non-commercial Share Alike license +** (http://creativecommons.org/licenses/by-nc-sa/3.0/). +** “Tiny3x3a” was originally cloned (copied) from the FontStruction +** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant +** Grant, which is licensed under a Creative Commons Attribution Non-commercial +** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). +* +* Converted by eadmaster with fontconvert +**/ + +const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { + 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, + 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, + 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, + 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, + 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, + 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, + 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, + 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, + 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, + 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, + 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, + 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78 }; + +const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { + { 0, 0, 0, 4, 0, 1 }, // 0x20 ' ' + { 0, 1, 2, 3, 1, -2 }, // 0x21 '!' + { 1, 3, 2, 4, 0, -2 }, // 0x22 '"' + { 2, 3, 3, 4, 0, -2 }, // 0x23 '#' + { 4, 3, 3, 4, 0, -2 }, // 0x24 '$' + { 6, 3, 3, 4, 0, -2 }, // 0x25 '%' + { 8, 3, 3, 4, 0, -2 }, // 0x26 '&' + { 10, 1, 1, 3, 1, -2 }, // 0x27 ''' + { 11, 2, 3, 3, 0, -2 }, // 0x28 '(' + { 12, 2, 3, 4, 1, -2 }, // 0x29 ')' + { 13, 2, 2, 4, 1, -2 }, // 0x2A '*' + { 14, 3, 3, 4, 0, -2 }, // 0x2B '+' + { 16, 1, 2, 2, 0, 0 }, // 0x2C ',' + { 17, 3, 1, 4, 0, -1 }, // 0x2D '-' + { 18, 1, 1, 2, 0, 0 }, // 0x2E '.' + { 19, 3, 3, 4, 0, -2 }, // 0x2F '/' + { 21, 3, 3, 4, 0, -2 }, // 0x30 '0' + { 23, 2, 3, 3, 0, -2 }, // 0x31 '1' + { 24, 3, 3, 4, 0, -2 }, // 0x32 '2' + { 26, 3, 3, 4, 0, -2 }, // 0x33 '3' + { 28, 3, 3, 4, 0, -2 }, // 0x34 '4' + { 30, 3, 3, 4, 0, -2 }, // 0x35 '5' + { 32, 3, 3, 4, 0, -2 }, // 0x36 '6' + { 34, 3, 3, 4, 0, -2 }, // 0x37 '7' + { 36, 3, 3, 4, 0, -2 }, // 0x38 '8' + { 38, 3, 3, 4, 0, -2 }, // 0x39 '9' + { 40, 1, 3, 3, 1, -2 }, // 0x3A ':' + { 41, 2, 3, 3, 0, -1 }, // 0x3B ';' + { 42, 2, 3, 3, 0, -2 }, // 0x3C '<' + { 43, 3, 3, 4, 0, -2 }, // 0x3D '=' + { 45, 2, 3, 4, 1, -2 }, // 0x3E '>' + { 46, 2, 3, 4, 1, -2 }, // 0x3F '?' + { 47, 3, 3, 4, 0, -2 }, // 0x40 '@' + { 49, 3, 3, 4, 0, -2 }, // 0x41 'A' + { 51, 3, 3, 4, 0, -2 }, // 0x42 'B' + { 53, 3, 3, 4, 0, -2 }, // 0x43 'C' + { 55, 3, 3, 4, 0, -2 }, // 0x44 'D' + { 57, 3, 3, 4, 0, -2 }, // 0x45 'E' + { 59, 3, 3, 4, 0, -2 }, // 0x46 'F' + { 61, 3, 3, 4, 0, -2 }, // 0x47 'G' + { 63, 3, 3, 4, 0, -2 }, // 0x48 'H' + { 65, 1, 3, 3, 1, -2 }, // 0x49 'I' + { 66, 3, 3, 4, 0, -2 }, // 0x4A 'J' + { 68, 3, 3, 4, 0, -2 }, // 0x4B 'K' + { 70, 3, 3, 4, 0, -2 }, // 0x4C 'L' + { 72, 3, 3, 4, 0, -2 }, // 0x4D 'M' + { 74, 3, 3, 4, 0, -2 }, // 0x4E 'N' + { 76, 3, 3, 4, 0, -2 }, // 0x4F 'O' + { 78, 3, 3, 4, 0, -2 }, // 0x50 'P' + { 80, 3, 3, 4, 0, -2 }, // 0x51 'Q' + { 82, 3, 3, 4, 0, -2 }, // 0x52 'R' + { 84, 3, 3, 4, 0, -2 }, // 0x53 'S' + { 86, 3, 3, 4, 0, -2 }, // 0x54 'T' + { 88, 3, 3, 4, 0, -2 }, // 0x55 'U' + { 90, 3, 3, 4, 0, -2 }, // 0x56 'V' + { 92, 3, 3, 4, 0, -2 }, // 0x57 'W' + { 94, 3, 3, 4, 0, -2 }, // 0x58 'X' + { 96, 3, 3, 4, 0, -2 }, // 0x59 'Y' + { 98, 3, 3, 4, 0, -2 }, // 0x5A 'Z' + { 100, 2, 3, 3, 0, -2 }, // 0x5B '[' + { 101, 3, 3, 4, 0, -2 }, // 0x5C '\' + { 103, 2, 3, 4, 1, -2 }, // 0x5D ']' + { 104, 3, 2, 4, 0, -2 }, // 0x5E '^' + { 105, 3, 1, 4, 0, 0 }, // 0x5F '_' + { 106, 2, 2, 3, 0, -2 }, // 0x60 '`' + { 107, 2, 2, 3, 0, -1 }, // 0x61 'a' + { 108, 2, 3, 3, 0, -2 }, // 0x62 'b' + { 109, 2, 2, 3, 0, -1 }, // 0x63 'c' + { 110, 2, 3, 3, 0, -2 }, // 0x64 'd' + { 111, 2, 2, 3, 0, -1 }, // 0x65 'e' + { 112, 2, 3, 3, 0, -2 }, // 0x66 'f' + { 113, 2, 3, 3, 0, -1 }, // 0x67 'g' + { 114, 2, 3, 3, 0, -2 }, // 0x68 'h' + { 115, 1, 2, 2, 0, -1 }, // 0x69 'i' + { 116, 2, 3, 3, 0, -1 }, // 0x6A 'j' + { 117, 3, 3, 4, 0, -2 }, // 0x6B 'k' + { 119, 2, 3, 3, 0, -2 }, // 0x6C 'l' + { 120, 3, 2, 4, 0, -1 }, // 0x6D 'm' + { 121, 3, 2, 4, 0, -1 }, // 0x6E 'n' + { 122, 2, 2, 3, 0, -1 }, // 0x6F 'o' + { 123, 2, 3, 3, 0, -1 }, // 0x70 'p' + { 124, 2, 3, 3, 0, -1 }, // 0x71 'q' + { 125, 2, 2, 3, 0, -1 }, // 0x72 'r' + { 126, 2, 2, 3, 0, -1 }, // 0x73 's' + { 127, 3, 3, 4, 0, -2 }, // 0x74 't' + { 129, 3, 2, 4, 0, -1 }, // 0x75 'u' + { 130, 3, 2, 4, 0, -1 }, // 0x76 'v' + { 131, 3, 2, 4, 0, -1 }, // 0x77 'w' + { 132, 2, 2, 3, 0, -1 }, // 0x78 'x' + { 133, 3, 3, 4, 0, -1 }, // 0x79 'y' + { 135, 2, 2, 3, 0, -1 }, // 0x7A 'z' + { 136, 3, 3, 4, 0, -2 }, // 0x7B '{' + { 138, 1, 4, 3, 1, -2 }, // 0x7C '|' + { 139, 3, 3, 4, 0, -2 }, // 0x7D '}' + { 141, 3, 2, 4, 0, -2 } }; // 0x7E '~' + +const GFXfont Tiny3x3a2pt7b PROGMEM = { + (uint8_t *)Tiny3x3a2pt7bBitmaps, + (GFXglyph *)Tiny3x3a2pt7bGlyphs, + 0x20, 0x7E, 4 }; + +// Approx. 814 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h new file mode 100644 index 000000000..dad420dcd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h @@ -0,0 +1,474 @@ +/** +** The original 3x5 font is licensed under the 3-clause BSD license: +** +** Copyright 1999 Brian J. Swetland +** Copyright 1999 Vassilii Khachaturov +** Portions (of vt100.c/vt100.h) copyright Dan Marks +** +** 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. +** 3. The name of the authors may not be used to endorse or promote products +** derived from this software without specific prior written permission. +** +** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. +** +** Modifications to Tom Thumb for improved readability are from Robey Pointer, +** see: +** http://robey.lag.net/2010/01/23/tiny-monospace-font.html +** +** The original author does not have any objection to relicensing of Robey +** Pointer's modifications (in this file) in a more permissive license. See +** the discussion at the above blog, and also here: +** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license +** +** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, +** with the help of this Python script: +** https://gist.github.com/skelliam/322d421f028545f16f6d +** William Skellenger (williamj@skellenger.net) +** Twitter: @skelliam +** +*/ + +#define TOMTHUMB_USE_EXTENDED 0 + +const uint8_t TomThumbBitmaps[] PROGMEM = { + 0x00, /* 0x20 space */ + 0x80, 0x80, 0x80, 0x00, 0x80, /* 0x21 exclam */ + 0xA0, 0xA0, /* 0x22 quotedbl */ + 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /* 0x23 numbersign */ + 0x60, 0xC0, 0x60, 0xC0, 0x40, /* 0x24 dollar */ + 0x80, 0x20, 0x40, 0x80, 0x20, /* 0x25 percent */ + 0xC0, 0xC0, 0xE0, 0xA0, 0x60, /* 0x26 ampersand */ + 0x80, 0x80, /* 0x27 quotesingle */ + 0x40, 0x80, 0x80, 0x80, 0x40, /* 0x28 parenleft */ + 0x80, 0x40, 0x40, 0x40, 0x80, /* 0x29 parenright */ + 0xA0, 0x40, 0xA0, /* 0x2A asterisk */ + 0x40, 0xE0, 0x40, /* 0x2B plus */ + 0x40, 0x80, /* 0x2C comma */ + 0xE0, /* 0x2D hyphen */ + 0x80, /* 0x2E period */ + 0x20, 0x20, 0x40, 0x80, 0x80, /* 0x2F slash */ + 0x60, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x30 zero */ + 0x40, 0xC0, 0x40, 0x40, 0x40, /* 0x31 one */ + 0xC0, 0x20, 0x40, 0x80, 0xE0, /* 0x32 two */ + 0xC0, 0x20, 0x40, 0x20, 0xC0, /* 0x33 three */ + 0xA0, 0xA0, 0xE0, 0x20, 0x20, /* 0x34 four */ + 0xE0, 0x80, 0xC0, 0x20, 0xC0, /* 0x35 five */ + 0x60, 0x80, 0xE0, 0xA0, 0xE0, /* 0x36 six */ + 0xE0, 0x20, 0x40, 0x80, 0x80, /* 0x37 seven */ + 0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /* 0x38 eight */ + 0xE0, 0xA0, 0xE0, 0x20, 0xC0, /* 0x39 nine */ + 0x80, 0x00, 0x80, /* 0x3A colon */ + 0x40, 0x00, 0x40, 0x80, /* 0x3B semicolon */ + 0x20, 0x40, 0x80, 0x40, 0x20, /* 0x3C less */ + 0xE0, 0x00, 0xE0, /* 0x3D equal */ + 0x80, 0x40, 0x20, 0x40, 0x80, /* 0x3E greater */ + 0xE0, 0x20, 0x40, 0x00, 0x40, /* 0x3F question */ + 0x40, 0xA0, 0xE0, 0x80, 0x60, /* 0x40 at */ + 0x40, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x41 A */ + 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /* 0x42 B */ + 0x60, 0x80, 0x80, 0x80, 0x60, /* 0x43 C */ + 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x44 D */ + 0xE0, 0x80, 0xE0, 0x80, 0xE0, /* 0x45 E */ + 0xE0, 0x80, 0xE0, 0x80, 0x80, /* 0x46 F */ + 0x60, 0x80, 0xE0, 0xA0, 0x60, /* 0x47 G */ + 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x48 H */ + 0xE0, 0x40, 0x40, 0x40, 0xE0, /* 0x49 I */ + 0x20, 0x20, 0x20, 0xA0, 0x40, /* 0x4A J */ + 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /* 0x4B K */ + 0x80, 0x80, 0x80, 0x80, 0xE0, /* 0x4C L */ + 0xA0, 0xE0, 0xE0, 0xA0, 0xA0, /* 0x4D M */ + 0xA0, 0xE0, 0xE0, 0xE0, 0xA0, /* 0x4E N */ + 0x40, 0xA0, 0xA0, 0xA0, 0x40, /* 0x4F O */ + 0xC0, 0xA0, 0xC0, 0x80, 0x80, /* 0x50 P */ + 0x40, 0xA0, 0xA0, 0xE0, 0x60, /* 0x51 Q */ + 0xC0, 0xA0, 0xE0, 0xC0, 0xA0, /* 0x52 R */ + 0x60, 0x80, 0x40, 0x20, 0xC0, /* 0x53 S */ + 0xE0, 0x40, 0x40, 0x40, 0x40, /* 0x54 T */ + 0xA0, 0xA0, 0xA0, 0xA0, 0x60, /* 0x55 U */ + 0xA0, 0xA0, 0xA0, 0x40, 0x40, /* 0x56 V */ + 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, /* 0x57 W */ + 0xA0, 0xA0, 0x40, 0xA0, 0xA0, /* 0x58 X */ + 0xA0, 0xA0, 0x40, 0x40, 0x40, /* 0x59 Y */ + 0xE0, 0x20, 0x40, 0x80, 0xE0, /* 0x5A Z */ + 0xE0, 0x80, 0x80, 0x80, 0xE0, /* 0x5B bracketleft */ + 0x80, 0x40, 0x20, /* 0x5C backslash */ + 0xE0, 0x20, 0x20, 0x20, 0xE0, /* 0x5D bracketright */ + 0x40, 0xA0, /* 0x5E asciicircum */ + 0xE0, /* 0x5F underscore */ + 0x80, 0x40, /* 0x60 grave */ + 0xC0, 0x60, 0xA0, 0xE0, /* 0x61 a */ + 0x80, 0xC0, 0xA0, 0xA0, 0xC0, /* 0x62 b */ + 0x60, 0x80, 0x80, 0x60, /* 0x63 c */ + 0x20, 0x60, 0xA0, 0xA0, 0x60, /* 0x64 d */ + 0x60, 0xA0, 0xC0, 0x60, /* 0x65 e */ + 0x20, 0x40, 0xE0, 0x40, 0x40, /* 0x66 f */ + 0x60, 0xA0, 0xE0, 0x20, 0x40, /* 0x67 g */ + 0x80, 0xC0, 0xA0, 0xA0, 0xA0, /* 0x68 h */ + 0x80, 0x00, 0x80, 0x80, 0x80, /* 0x69 i */ + 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /* 0x6A j */ + 0x80, 0xA0, 0xC0, 0xC0, 0xA0, /* 0x6B k */ + 0xC0, 0x40, 0x40, 0x40, 0xE0, /* 0x6C l */ + 0xE0, 0xE0, 0xE0, 0xA0, /* 0x6D m */ + 0xC0, 0xA0, 0xA0, 0xA0, /* 0x6E n */ + 0x40, 0xA0, 0xA0, 0x40, /* 0x6F o */ + 0xC0, 0xA0, 0xA0, 0xC0, 0x80, /* 0x70 p */ + 0x60, 0xA0, 0xA0, 0x60, 0x20, /* 0x71 q */ + 0x60, 0x80, 0x80, 0x80, /* 0x72 r */ + 0x60, 0xC0, 0x60, 0xC0, /* 0x73 s */ + 0x40, 0xE0, 0x40, 0x40, 0x60, /* 0x74 t */ + 0xA0, 0xA0, 0xA0, 0x60, /* 0x75 u */ + 0xA0, 0xA0, 0xE0, 0x40, /* 0x76 v */ + 0xA0, 0xE0, 0xE0, 0xE0, /* 0x77 w */ + 0xA0, 0x40, 0x40, 0xA0, /* 0x78 x */ + 0xA0, 0xA0, 0x60, 0x20, 0x40, /* 0x79 y */ + 0xE0, 0x60, 0xC0, 0xE0, /* 0x7A z */ + 0x60, 0x40, 0x80, 0x40, 0x60, /* 0x7B braceleft */ + 0x80, 0x80, 0x00, 0x80, 0x80, /* 0x7C bar */ + 0xC0, 0x40, 0x20, 0x40, 0xC0, /* 0x7D braceright */ + 0x60, 0xC0, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + 0x80, 0x00, 0x80, 0x80, 0x80, /* 0xA1 exclamdown */ + 0x40, 0xE0, 0x80, 0xE0, 0x40, /* 0xA2 cent */ + 0x60, 0x40, 0xE0, 0x40, 0xE0, /* 0xA3 sterling */ + 0xA0, 0x40, 0xE0, 0x40, 0xA0, /* 0xA4 currency */ + 0xA0, 0xA0, 0x40, 0xE0, 0x40, /* 0xA5 yen */ + 0x80, 0x80, 0x00, 0x80, 0x80, /* 0xA6 brokenbar */ + 0x60, 0x40, 0xA0, 0x40, 0xC0, /* 0xA7 section */ + 0xA0, /* 0xA8 dieresis */ + 0x60, 0x80, 0x60, /* 0xA9 copyright */ + 0x60, 0xA0, 0xE0, 0x00, 0xE0, /* 0xAA ordfeminine */ + 0x40, 0x80, 0x40, /* 0xAB guillemotleft */ + 0xE0, 0x20, /* 0xAC logicalnot */ + 0xC0, /* 0xAD softhyphen */ + 0xC0, 0xC0, 0xA0, /* 0xAE registered */ + 0xE0, /* 0xAF macron */ + 0x40, 0xA0, 0x40, /* 0xB0 degree */ + 0x40, 0xE0, 0x40, 0x00, 0xE0, /* 0xB1 plusminus */ + 0xC0, 0x40, 0x60, /* 0xB2 twosuperior */ + 0xE0, 0x60, 0xE0, /* 0xB3 threesuperior */ + 0x40, 0x80, /* 0xB4 acute */ + 0xA0, 0xA0, 0xA0, 0xC0, 0x80, /* 0xB5 mu */ + 0x60, 0xA0, 0x60, 0x60, 0x60, /* 0xB6 paragraph */ + 0xE0, 0xE0, 0xE0, /* 0xB7 periodcentered */ + 0x40, 0x20, 0xC0, /* 0xB8 cedilla */ + 0x80, 0x80, 0x80, /* 0xB9 onesuperior */ + 0x40, 0xA0, 0x40, 0x00, 0xE0, /* 0xBA ordmasculine */ + 0x80, 0x40, 0x80, /* 0xBB guillemotright */ + 0x80, 0x80, 0x00, 0x60, 0x20, /* 0xBC onequarter */ + 0x80, 0x80, 0x00, 0xC0, 0x60, /* 0xBD onehalf */ + 0xC0, 0xC0, 0x00, 0x60, 0x20, /* 0xBE threequarters */ + 0x40, 0x00, 0x40, 0x80, 0xE0, /* 0xBF questiondown */ + 0x40, 0x20, 0x40, 0xE0, 0xA0, /* 0xC0 Agrave */ + 0x40, 0x80, 0x40, 0xE0, 0xA0, /* 0xC1 Aacute */ + 0xE0, 0x00, 0x40, 0xE0, 0xA0, /* 0xC2 Acircumflex */ + 0x60, 0xC0, 0x40, 0xE0, 0xA0, /* 0xC3 Atilde */ + 0xA0, 0x40, 0xA0, 0xE0, 0xA0, /* 0xC4 Adieresis */ + 0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /* 0xC5 Aring */ + 0x60, 0xC0, 0xE0, 0xC0, 0xE0, /* 0xC6 AE */ + 0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /* 0xC7 Ccedilla */ + 0x40, 0x20, 0xE0, 0xC0, 0xE0, /* 0xC8 Egrave */ + 0x40, 0x80, 0xE0, 0xC0, 0xE0, /* 0xC9 Eacute */ + 0xE0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCA Ecircumflex */ + 0xA0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCB Edieresis */ + 0x40, 0x20, 0xE0, 0x40, 0xE0, /* 0xCC Igrave */ + 0x40, 0x80, 0xE0, 0x40, 0xE0, /* 0xCD Iacute */ + 0xE0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCE Icircumflex */ + 0xA0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCF Idieresis */ + 0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD0 Eth */ + 0xC0, 0x60, 0xA0, 0xE0, 0xA0, /* 0xD1 Ntilde */ + 0x40, 0x20, 0xE0, 0xA0, 0xE0, /* 0xD2 Ograve */ + 0x40, 0x80, 0xE0, 0xA0, 0xE0, /* 0xD3 Oacute */ + 0xE0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD4 Ocircumflex */ + 0xC0, 0x60, 0xE0, 0xA0, 0xE0, /* 0xD5 Otilde */ + 0xA0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD6 Odieresis */ + 0xA0, 0x40, 0xA0, /* 0xD7 multiply */ + 0x60, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD8 Oslash */ + 0x80, 0x40, 0xA0, 0xA0, 0xE0, /* 0xD9 Ugrave */ + 0x20, 0x40, 0xA0, 0xA0, 0xE0, /* 0xDA Uacute */ + 0xE0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDB Ucircumflex */ + 0xA0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDC Udieresis */ + 0x20, 0x40, 0xA0, 0xE0, 0x40, /* 0xDD Yacute */ + 0x80, 0xE0, 0xA0, 0xE0, 0x80, /* 0xDE Thorn */ + 0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /* 0xDF germandbls */ + 0x40, 0x20, 0x60, 0xA0, 0xE0, /* 0xE0 agrave */ + 0x40, 0x80, 0x60, 0xA0, 0xE0, /* 0xE1 aacute */ + 0xE0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE2 acircumflex */ + 0x60, 0xC0, 0x60, 0xA0, 0xE0, /* 0xE3 atilde */ + 0xA0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE4 adieresis */ + 0x60, 0x60, 0x60, 0xA0, 0xE0, /* 0xE5 aring */ + 0x60, 0xE0, 0xE0, 0xC0, /* 0xE6 ae */ + 0x60, 0x80, 0x60, 0x20, 0x40, /* 0xE7 ccedilla */ + 0x40, 0x20, 0x60, 0xE0, 0x60, /* 0xE8 egrave */ + 0x40, 0x80, 0x60, 0xE0, 0x60, /* 0xE9 eacute */ + 0xE0, 0x00, 0x60, 0xE0, 0x60, /* 0xEA ecircumflex */ + 0xA0, 0x00, 0x60, 0xE0, 0x60, /* 0xEB edieresis */ + 0x80, 0x40, 0x80, 0x80, 0x80, /* 0xEC igrave */ + 0x40, 0x80, 0x40, 0x40, 0x40, /* 0xED iacute */ + 0xE0, 0x00, 0x40, 0x40, 0x40, /* 0xEE icircumflex */ + 0xA0, 0x00, 0x40, 0x40, 0x40, /* 0xEF idieresis */ + 0x60, 0xC0, 0x60, 0xA0, 0x60, /* 0xF0 eth */ + 0xC0, 0x60, 0xC0, 0xA0, 0xA0, /* 0xF1 ntilde */ + 0x40, 0x20, 0x40, 0xA0, 0x40, /* 0xF2 ograve */ + 0x40, 0x80, 0x40, 0xA0, 0x40, /* 0xF3 oacute */ + 0xE0, 0x00, 0x40, 0xA0, 0x40, /* 0xF4 ocircumflex */ + 0xC0, 0x60, 0x40, 0xA0, 0x40, /* 0xF5 otilde */ + 0xA0, 0x00, 0x40, 0xA0, 0x40, /* 0xF6 odieresis */ + 0x40, 0x00, 0xE0, 0x00, 0x40, /* 0xF7 divide */ + 0x60, 0xE0, 0xA0, 0xC0, /* 0xF8 oslash */ + 0x80, 0x40, 0xA0, 0xA0, 0x60, /* 0xF9 ugrave */ + 0x20, 0x40, 0xA0, 0xA0, 0x60, /* 0xFA uacute */ + 0xE0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFB ucircumflex */ + 0xA0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFC udieresis */ + 0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /* 0xFD yacute */ + 0x80, 0xC0, 0xA0, 0xC0, 0x80, /* 0xFE thorn */ + 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /* 0xFF ydieresis */ + 0x00, /* 0x11D gcircumflex */ + 0x60, 0xC0, 0xE0, 0xC0, 0x60, /* 0x152 OE */ + 0x60, 0xE0, 0xC0, 0xE0, /* 0x153 oe */ + 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x160 Scaron */ + 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x161 scaron */ + 0xA0, 0x00, 0xA0, 0x40, 0x40, /* 0x178 Ydieresis */ + 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17D Zcaron */ + 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17E zcaron */ + 0x00, /* 0xEA4 uni0EA4 */ + 0x00, /* 0x13A0 uni13A0 */ + 0x80, /* 0x2022 bullet */ + 0xA0, /* 0x2026 ellipsis */ + 0x60, 0xE0, 0xE0, 0xC0, 0x60, /* 0x20AC Euro */ + 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ + }; + + +/* {offset, width, height, advance cursor, x offset, y offset} */ +const GFXglyph TomThumbGlyphs[] PROGMEM = { + { 0, 8, 1, 2, 0, -5 }, /* 0x20 space */ + { 1, 8, 5, 2, 0, -5 }, /* 0x21 exclam */ + { 6, 8, 2, 4, 0, -5 }, /* 0x22 quotedbl */ + { 8, 8, 5, 4, 0, -5 }, /* 0x23 numbersign */ + { 13, 8, 5, 4, 0, -5 }, /* 0x24 dollar */ + { 18, 8, 5, 4, 0, -5 }, /* 0x25 percent */ + { 23, 8, 5, 4, 0, -5 }, /* 0x26 ampersand */ + { 28, 8, 2, 2, 0, -5 }, /* 0x27 quotesingle */ + { 30, 8, 5, 3, 0, -5 }, /* 0x28 parenleft */ + { 35, 8, 5, 3, 0, -5 }, /* 0x29 parenright */ + { 40, 8, 3, 4, 0, -5 }, /* 0x2A asterisk */ + { 43, 8, 3, 4, 0, -4 }, /* 0x2B plus */ + { 46, 8, 2, 3, 0, -2 }, /* 0x2C comma */ + { 48, 8, 1, 4, 0, -3 }, /* 0x2D hyphen */ + { 49, 8, 1, 2, 0, -1 }, /* 0x2E period */ + { 50, 8, 5, 4, 0, -5 }, /* 0x2F slash */ + { 55, 8, 5, 4, 0, -5 }, /* 0x30 zero */ + { 60, 8, 5, 3, 0, -5 }, /* 0x31 one */ + { 65, 8, 5, 4, 0, -5 }, /* 0x32 two */ + { 70, 8, 5, 4, 0, -5 }, /* 0x33 three */ + { 75, 8, 5, 4, 0, -5 }, /* 0x34 four */ + { 80, 8, 5, 4, 0, -5 }, /* 0x35 five */ + { 85, 8, 5, 4, 0, -5 }, /* 0x36 six */ + { 90, 8, 5, 4, 0, -5 }, /* 0x37 seven */ + { 95, 8, 5, 4, 0, -5 }, /* 0x38 eight */ + { 100, 8, 5, 4, 0, -5 }, /* 0x39 nine */ + { 105, 8, 3, 2, 0, -4 }, /* 0x3A colon */ + { 108, 8, 4, 3, 0, -4 }, /* 0x3B semicolon */ + { 112, 8, 5, 4, 0, -5 }, /* 0x3C less */ + { 117, 8, 3, 4, 0, -4 }, /* 0x3D equal */ + { 120, 8, 5, 4, 0, -5 }, /* 0x3E greater */ + { 125, 8, 5, 4, 0, -5 }, /* 0x3F question */ + { 130, 8, 5, 4, 0, -5 }, /* 0x40 at */ + { 135, 8, 5, 4, 0, -5 }, /* 0x41 A */ + { 140, 8, 5, 4, 0, -5 }, /* 0x42 B */ + { 145, 8, 5, 4, 0, -5 }, /* 0x43 C */ + { 150, 8, 5, 4, 0, -5 }, /* 0x44 D */ + { 155, 8, 5, 4, 0, -5 }, /* 0x45 E */ + { 160, 8, 5, 4, 0, -5 }, /* 0x46 F */ + { 165, 8, 5, 4, 0, -5 }, /* 0x47 G */ + { 170, 8, 5, 4, 0, -5 }, /* 0x48 H */ + { 175, 8, 5, 4, 0, -5 }, /* 0x49 I */ + { 180, 8, 5, 4, 0, -5 }, /* 0x4A J */ + { 185, 8, 5, 4, 0, -5 }, /* 0x4B K */ + { 190, 8, 5, 4, 0, -5 }, /* 0x4C L */ + { 195, 8, 5, 4, 0, -5 }, /* 0x4D M */ + { 200, 8, 5, 4, 0, -5 }, /* 0x4E N */ + { 205, 8, 5, 4, 0, -5 }, /* 0x4F O */ + { 210, 8, 5, 4, 0, -5 }, /* 0x50 P */ + { 215, 8, 5, 4, 0, -5 }, /* 0x51 Q */ + { 220, 8, 5, 4, 0, -5 }, /* 0x52 R */ + { 225, 8, 5, 4, 0, -5 }, /* 0x53 S */ + { 230, 8, 5, 4, 0, -5 }, /* 0x54 T */ + { 235, 8, 5, 4, 0, -5 }, /* 0x55 U */ + { 240, 8, 5, 4, 0, -5 }, /* 0x56 V */ + { 245, 8, 5, 4, 0, -5 }, /* 0x57 W */ + { 250, 8, 5, 4, 0, -5 }, /* 0x58 X */ + { 255, 8, 5, 4, 0, -5 }, /* 0x59 Y */ + { 260, 8, 5, 4, 0, -5 }, /* 0x5A Z */ + { 265, 8, 5, 4, 0, -5 }, /* 0x5B bracketleft */ + { 270, 8, 3, 4, 0, -4 }, /* 0x5C backslash */ + { 273, 8, 5, 4, 0, -5 }, /* 0x5D bracketright */ + { 278, 8, 2, 4, 0, -5 }, /* 0x5E asciicircum */ + { 280, 8, 1, 4, 0, -1 }, /* 0x5F underscore */ + { 281, 8, 2, 3, 0, -5 }, /* 0x60 grave */ + { 283, 8, 4, 4, 0, -4 }, /* 0x61 a */ + { 287, 8, 5, 4, 0, -5 }, /* 0x62 b */ + { 292, 8, 4, 4, 0, -4 }, /* 0x63 c */ + { 296, 8, 5, 4, 0, -5 }, /* 0x64 d */ + { 301, 8, 4, 4, 0, -4 }, /* 0x65 e */ + { 305, 8, 5, 4, 0, -5 }, /* 0x66 f */ + { 310, 8, 5, 4, 0, -4 }, /* 0x67 g */ + { 315, 8, 5, 4, 0, -5 }, /* 0x68 h */ + { 320, 8, 5, 2, 0, -5 }, /* 0x69 i */ + { 325, 8, 6, 4, 0, -5 }, /* 0x6A j */ + { 331, 8, 5, 4, 0, -5 }, /* 0x6B k */ + { 336, 8, 5, 4, 0, -5 }, /* 0x6C l */ + { 341, 8, 4, 4, 0, -4 }, /* 0x6D m */ + { 345, 8, 4, 4, 0, -4 }, /* 0x6E n */ + { 349, 8, 4, 4, 0, -4 }, /* 0x6F o */ + { 353, 8, 5, 4, 0, -4 }, /* 0x70 p */ + { 358, 8, 5, 4, 0, -4 }, /* 0x71 q */ + { 363, 8, 4, 4, 0, -4 }, /* 0x72 r */ + { 367, 8, 4, 4, 0, -4 }, /* 0x73 s */ + { 371, 8, 5, 4, 0, -5 }, /* 0x74 t */ + { 376, 8, 4, 4, 0, -4 }, /* 0x75 u */ + { 380, 8, 4, 4, 0, -4 }, /* 0x76 v */ + { 384, 8, 4, 4, 0, -4 }, /* 0x77 w */ + { 388, 8, 4, 4, 0, -4 }, /* 0x78 x */ + { 392, 8, 5, 4, 0, -4 }, /* 0x79 y */ + { 397, 8, 4, 4, 0, -4 }, /* 0x7A z */ + { 401, 8, 5, 4, 0, -5 }, /* 0x7B braceleft */ + { 406, 8, 5, 2, 0, -5 }, /* 0x7C bar */ + { 411, 8, 5, 4, 0, -5 }, /* 0x7D braceright */ + { 416, 8, 2, 4, 0, -5 }, /* 0x7E asciitilde */ +#if (TOMTHUMB_USE_EXTENDED) + { 418, 8, 5, 2, 0, -5 }, /* 0xA1 exclamdown */ + { 423, 8, 5, 4, 0, -5 }, /* 0xA2 cent */ + { 428, 8, 5, 4, 0, -5 }, /* 0xA3 sterling */ + { 433, 8, 5, 4, 0, -5 }, /* 0xA4 currency */ + { 438, 8, 5, 4, 0, -5 }, /* 0xA5 yen */ + { 443, 8, 5, 2, 0, -5 }, /* 0xA6 brokenbar */ + { 448, 8, 5, 4, 0, -5 }, /* 0xA7 section */ + { 453, 8, 1, 4, 0, -5 }, /* 0xA8 dieresis */ + { 454, 8, 3, 4, 0, -5 }, /* 0xA9 copyright */ + { 457, 8, 5, 4, 0, -5 }, /* 0xAA ordfeminine */ + { 462, 8, 3, 3, 0, -5 }, /* 0xAB guillemotleft */ + { 465, 8, 2, 4, 0, -4 }, /* 0xAC logicalnot */ + { 467, 8, 1, 3, 0, -3 }, /* 0xAD softhyphen */ + { 468, 8, 3, 4, 0, -5 }, /* 0xAE registered */ + { 471, 8, 1, 4, 0, -5 }, /* 0xAF macron */ + { 472, 8, 3, 4, 0, -5 }, /* 0xB0 degree */ + { 475, 8, 5, 4, 0, -5 }, /* 0xB1 plusminus */ + { 480, 8, 3, 4, 0, -5 }, /* 0xB2 twosuperior */ + { 483, 8, 3, 4, 0, -5 }, /* 0xB3 threesuperior */ + { 486, 8, 2, 3, 0, -5 }, /* 0xB4 acute */ + { 488, 8, 5, 4, 0, -5 }, /* 0xB5 mu */ + { 493, 8, 5, 4, 0, -5 }, /* 0xB6 paragraph */ + { 498, 8, 3, 4, 0, -4 }, /* 0xB7 periodcentered */ + { 501, 8, 3, 4, 0, -3 }, /* 0xB8 cedilla */ + { 504, 8, 3, 2, 0, -5 }, /* 0xB9 onesuperior */ + { 507, 8, 5, 4, 0, -5 }, /* 0xBA ordmasculine */ + { 512, 8, 3, 3, 0, -5 }, /* 0xBB guillemotright */ + { 515, 8, 5, 4, 0, -5 }, /* 0xBC onequarter */ + { 520, 8, 5, 4, 0, -5 }, /* 0xBD onehalf */ + { 525, 8, 5, 4, 0, -5 }, /* 0xBE threequarters */ + { 530, 8, 5, 4, 0, -5 }, /* 0xBF questiondown */ + { 535, 8, 5, 4, 0, -5 }, /* 0xC0 Agrave */ + { 540, 8, 5, 4, 0, -5 }, /* 0xC1 Aacute */ + { 545, 8, 5, 4, 0, -5 }, /* 0xC2 Acircumflex */ + { 550, 8, 5, 4, 0, -5 }, /* 0xC3 Atilde */ + { 555, 8, 5, 4, 0, -5 }, /* 0xC4 Adieresis */ + { 560, 8, 5, 4, 0, -5 }, /* 0xC5 Aring */ + { 565, 8, 5, 4, 0, -5 }, /* 0xC6 AE */ + { 570, 8, 6, 4, 0, -5 }, /* 0xC7 Ccedilla */ + { 576, 8, 5, 4, 0, -5 }, /* 0xC8 Egrave */ + { 581, 8, 5, 4, 0, -5 }, /* 0xC9 Eacute */ + { 586, 8, 5, 4, 0, -5 }, /* 0xCA Ecircumflex */ + { 591, 8, 5, 4, 0, -5 }, /* 0xCB Edieresis */ + { 596, 8, 5, 4, 0, -5 }, /* 0xCC Igrave */ + { 601, 8, 5, 4, 0, -5 }, /* 0xCD Iacute */ + { 606, 8, 5, 4, 0, -5 }, /* 0xCE Icircumflex */ + { 611, 8, 5, 4, 0, -5 }, /* 0xCF Idieresis */ + { 616, 8, 5, 4, 0, -5 }, /* 0xD0 Eth */ + { 621, 8, 5, 4, 0, -5 }, /* 0xD1 Ntilde */ + { 626, 8, 5, 4, 0, -5 }, /* 0xD2 Ograve */ + { 631, 8, 5, 4, 0, -5 }, /* 0xD3 Oacute */ + { 636, 8, 5, 4, 0, -5 }, /* 0xD4 Ocircumflex */ + { 641, 8, 5, 4, 0, -5 }, /* 0xD5 Otilde */ + { 646, 8, 5, 4, 0, -5 }, /* 0xD6 Odieresis */ + { 651, 8, 3, 4, 0, -4 }, /* 0xD7 multiply */ + { 654, 8, 5, 4, 0, -5 }, /* 0xD8 Oslash */ + { 659, 8, 5, 4, 0, -5 }, /* 0xD9 Ugrave */ + { 664, 8, 5, 4, 0, -5 }, /* 0xDA Uacute */ + { 669, 8, 5, 4, 0, -5 }, /* 0xDB Ucircumflex */ + { 674, 8, 5, 4, 0, -5 }, /* 0xDC Udieresis */ + { 679, 8, 5, 4, 0, -5 }, /* 0xDD Yacute */ + { 684, 8, 5, 4, 0, -5 }, /* 0xDE Thorn */ + { 689, 8, 6, 4, 0, -5 }, /* 0xDF germandbls */ + { 695, 8, 5, 4, 0, -5 }, /* 0xE0 agrave */ + { 700, 8, 5, 4, 0, -5 }, /* 0xE1 aacute */ + { 705, 8, 5, 4, 0, -5 }, /* 0xE2 acircumflex */ + { 710, 8, 5, 4, 0, -5 }, /* 0xE3 atilde */ + { 715, 8, 5, 4, 0, -5 }, /* 0xE4 adieresis */ + { 720, 8, 5, 4, 0, -5 }, /* 0xE5 aring */ + { 725, 8, 4, 4, 0, -4 }, /* 0xE6 ae */ + { 729, 8, 5, 4, 0, -4 }, /* 0xE7 ccedilla */ + { 734, 8, 5, 4, 0, -5 }, /* 0xE8 egrave */ + { 739, 8, 5, 4, 0, -5 }, /* 0xE9 eacute */ + { 744, 8, 5, 4, 0, -5 }, /* 0xEA ecircumflex */ + { 749, 8, 5, 4, 0, -5 }, /* 0xEB edieresis */ + { 754, 8, 5, 3, 0, -5 }, /* 0xEC igrave */ + { 759, 8, 5, 3, 0, -5 }, /* 0xED iacute */ + { 764, 8, 5, 4, 0, -5 }, /* 0xEE icircumflex */ + { 769, 8, 5, 4, 0, -5 }, /* 0xEF idieresis */ + { 774, 8, 5, 4, 0, -5 }, /* 0xF0 eth */ + { 779, 8, 5, 4, 0, -5 }, /* 0xF1 ntilde */ + { 784, 8, 5, 4, 0, -5 }, /* 0xF2 ograve */ + { 789, 8, 5, 4, 0, -5 }, /* 0xF3 oacute */ + { 794, 8, 5, 4, 0, -5 }, /* 0xF4 ocircumflex */ + { 799, 8, 5, 4, 0, -5 }, /* 0xF5 otilde */ + { 804, 8, 5, 4, 0, -5 }, /* 0xF6 odieresis */ + { 809, 8, 5, 4, 0, -5 }, /* 0xF7 divide */ + { 814, 8, 4, 4, 0, -4 }, /* 0xF8 oslash */ + { 818, 8, 5, 4, 0, -5 }, /* 0xF9 ugrave */ + { 823, 8, 5, 4, 0, -5 }, /* 0xFA uacute */ + { 828, 8, 5, 4, 0, -5 }, /* 0xFB ucircumflex */ + { 833, 8, 5, 4, 0, -5 }, /* 0xFC udieresis */ + { 838, 8, 6, 4, 0, -5 }, /* 0xFD yacute */ + { 844, 8, 5, 4, 0, -4 }, /* 0xFE thorn */ + { 849, 8, 6, 4, 0, -5 }, /* 0xFF ydieresis */ + { 855, 8, 1, 2, 0, -1 }, /* 0x11D gcircumflex */ + { 856, 8, 5, 4, 0, -5 }, /* 0x152 OE */ + { 861, 8, 4, 4, 0, -4 }, /* 0x153 oe */ + { 865, 8, 5, 4, 0, -5 }, /* 0x160 Scaron */ + { 870, 8, 5, 4, 0, -5 }, /* 0x161 scaron */ + { 875, 8, 5, 4, 0, -5 }, /* 0x178 Ydieresis */ + { 880, 8, 5, 4, 0, -5 }, /* 0x17D Zcaron */ + { 885, 8, 5, 4, 0, -5 }, /* 0x17E zcaron */ + { 890, 8, 1, 2, 0, -1 }, /* 0xEA4 uni0EA4 */ + { 891, 8, 1, 2, 0, -1 }, /* 0x13A0 uni13A0 */ + { 892, 8, 1, 2, 0, -3 }, /* 0x2022 bullet */ + { 893, 8, 1, 4, 0, -1 }, /* 0x2026 ellipsis */ + { 894, 8, 5, 4, 0, -5 }, /* 0x20AC Euro */ + { 899, 8, 5, 4, 0, -5 }, /* 0xFFFD uniFFFD */ +#endif /* (TOMTHUMB_USE_EXTENDED) */ +}; + +const GFXfont TomThumb PROGMEM = { + (uint8_t *)TomThumbBitmaps, + (GFXglyph *)TomThumbGlyphs, + 0x20, 0x7E, 6 }; diff --git a/lib/Adafruit_GFX-1.2.2.07/README.md b/lib/Adafruit_GFX-1.2.2.07/README.md new file mode 100644 index 000000000..21f2bc8eb --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/README.md @@ -0,0 +1,31 @@ +# Adafruit GFX Library + +This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be 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 and open-source hardware by purchasing products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +BSD license, check license.txt for more information. +All text above must be included in any redistribution. + +Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. + +# Useful Resources + +- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code + +- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 + +- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, #include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font. + +- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX .h format. + +--- + +### Roadmap + +The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add ungainly workarounds. + +Highly unlikely to merge any changes for additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is (this also creates liabilities for tools and documentation). If you *must* have a more sophisticated font format, consider creating a fork with the features required for your project. For similar reasons, also unlikely to add any more bitmap formats, it's getting messy. + +Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile new file mode 100644 index 000000000..47f5a0e15 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile @@ -0,0 +1,12 @@ +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + strip $@ + +clean: + rm -f fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c new file mode 100644 index 000000000..bfd21103c --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c @@ -0,0 +1,284 @@ +/* +TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' +Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. + +NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing +fonts to be used with the Adafruit_GFX Arduino library. + +For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: + ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h + +REQUIRES FREETYPE LIBRARY. www.freetype.org + +Currently this only extracts the printable 7-bit ASCII chars of a font. +Will eventually extend with some int'l chars a la ftGFX, not there yet. +Keep 7-bit fonts around as an option in that case, more compact. + +See notes at end for glyph nomenclature & other tidbits. +*/ + +#include +#include +#include +#include +#include FT_GLYPH_H +#include "../gfxfont.h" // Adafruit_GFX font structures + +#define DPI 141 // Approximate res. of Adafruit 2.8" TFT + +// Accumulate bits for output, with periodic hexadecimal byte write +void enbit(uint8_t value) { + static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; + if(value) sum |= bit; // Set bit if needed + if(!(bit >>= 1)) { // Advance to next bit, end of byte reached? + if(!firstCall) { // Format output table nicely + if(++row >= 12) { // Last entry on line? + printf(",\n "); // Newline format output + row = 0; // Reset row counter + } else { // Not end of line + printf(", "); // Simple comma delim + } + } + printf("0x%02X", sum); // Write byte value + sum = 0; // Clear for next byte + bit = 0x80; // Reset bit counter + firstCall = 0; // Formatting flag + } +} + +int main(int argc, char *argv[]) { + int i, j, err, size, first=' ', last='~', + bitmapOffset = 0, x, y, byte; + char *fontName, c, *ptr; + FT_Library library; + FT_Face face; + FT_Glyph glyph; + FT_Bitmap *bitmap; + FT_BitmapGlyphRec *g; + GFXglyph *table; + uint8_t bit; + + // Parse command line. Valid syntaxes are: + // fontconvert [filename] [size] + // fontconvert [filename] [size] [last char] + // fontconvert [filename] [size] [first char] [last char] + // Unless overridden, default first and last chars are + // ' ' (space) and '~', respectively + + if(argc < 3) { + fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", + argv[0]); + return 1; + } + + size = atoi(argv[2]); + + if(argc == 4) { + last = atoi(argv[3]); + } else if(argc == 5) { + first = atoi(argv[3]); + last = atoi(argv[4]); + } + + if(last < first) { + i = first; + first = last; + last = i; + } + + ptr = strrchr(argv[1], '/'); // Find last slash in filename + if(ptr) ptr++; // First character of filename (path stripped) + else ptr = argv[1]; // No path; font in local dir. + + // Allocate space for font name and glyph table + if((!(fontName = malloc(strlen(ptr) + 20))) || + (!(table = (GFXglyph *)malloc((last - first + 1) * + sizeof(GFXglyph))))) { + fprintf(stderr, "Malloc error\n"); + return 1; + } + + // Derive font table names from filename. Period (filename + // extension) is truncated and replaced with the font size & bits. + strcpy(fontName, ptr); + ptr = strrchr(fontName, '.'); // Find last period (file ext) + if(!ptr) ptr = &fontName[strlen(fontName)]; // If none, append + // Insert font size and 7/8 bit. fontName was alloc'd w/extra + // space to allow this, we're not sprintfing into Forbidden Zone. + sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); + // Space and punctuation chars in name replaced w/ underscores. + for(i=0; (c=fontName[i]); i++) { + if(isspace(c) || ispunct(c)) fontName[i] = '_'; + } + + // Init FreeType lib, load font + if((err = FT_Init_FreeType(&library))) { + fprintf(stderr, "FreeType init error: %d", err); + return err; + } + if((err = FT_New_Face(library, argv[1], 0, &face))) { + fprintf(stderr, "Font load error: %d", err); + FT_Done_FreeType(library); + return err; + } + + // << 6 because '26dot6' fixed-point format + FT_Set_Char_Size(face, size << 6, 0, DPI, 0); + + // Currently all symbols from 'first' to 'last' are processed. + // Fonts may contain WAY more glyphs than that, but this code + // will need to handle encoding stuff to deal with extracting + // the right symbols, and that's not done yet. + // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); + + printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); + + // Process glyphs and output huge bitmap data array + for(i=first, j=0; i<=last; i++, j++) { + // MONO renderer provides clean image with perfect crop + // (no wasted pixels) via bitmap struct. + if((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { + fprintf(stderr, "Error %d loading char '%c'\n", + err, i); + continue; + } + + if((err = FT_Render_Glyph(face->glyph, + FT_RENDER_MODE_MONO))) { + fprintf(stderr, "Error %d rendering char '%c'\n", + err, i); + continue; + } + + if((err = FT_Get_Glyph(face->glyph, &glyph))) { + fprintf(stderr, "Error %d getting glyph '%c'\n", + err, i); + continue; + } + + bitmap = &face->glyph->bitmap; + g = (FT_BitmapGlyphRec *)glyph; + + // Minimal font and per-glyph information is stored to + // reduce flash space requirements. Glyph bitmaps are + // fully bit-packed; no per-scanline pad, though end of + // each character may be padded to next byte boundary + // when needed. 16-bit offset means 64K max for bitmaps, + // code currently doesn't check for overflow. (Doesn't + // check that size & offsets are within bounds either for + // that matter...please convert fonts responsibly.) + table[j].bitmapOffset = bitmapOffset; + table[j].width = bitmap->width; + table[j].height = bitmap->rows; + table[j].xAdvance = face->glyph->advance.x >> 6; + table[j].xOffset = g->left; + table[j].yOffset = 1 - g->top; + + for(y=0; y < bitmap->rows; y++) { + for(x=0;x < bitmap->width; x++) { + byte = x / 8; + bit = 0x80 >> (x & 7); + enbit(bitmap->buffer[ + y * bitmap->pitch + byte] & bit); + } + } + + // Pad end of char bitmap to next byte boundary if needed + int n = (bitmap->width * bitmap->rows) & 7; + if(n) { // Pixel count not an even multiple of 8? + n = 8 - n; // # bits to next multiple + while(n--) enbit(0); + } + bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; + + FT_Done_Glyph(glyph); + } + + printf(" };\n\n"); // End bitmap array + + // Output glyph attributes table (one per character) + printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); + for(i=first, j=0; i<=last; i++, j++) { + printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", + table[j].bitmapOffset, + table[j].width, + table[j].height, + table[j].xAdvance, + table[j].xOffset, + table[j].yOffset); + if(i < last) { + printf(", // 0x%02X", i); + if((i >= ' ') && (i <= '~')) { + printf(" '%c'", i); + } + putchar('\n'); + } + } + printf(" }; // 0x%02X", last); + if((last >= ' ') && (last <= '~')) printf(" '%c'", last); + printf("\n\n"); + + // Output font structure + printf("const GFXfont %s PROGMEM = {\n", fontName); + printf(" (uint8_t *)%sBitmaps,\n", fontName); + printf(" (GFXglyph *)%sGlyphs,\n", fontName); + if (face->size->metrics.height == 0) { + // No face height info, assume fixed width and get from a glyph. + printf(" 0x%02X, 0x%02X, %d };\n\n", + first, last, table[0].height); + } else { + printf(" 0x%02X, 0x%02X, %ld };\n\n", + first, last, face->size->metrics.height >> 6); + } + printf("// Approx. %d bytes\n", + bitmapOffset + (last - first + 1) * 7 + 7); + // Size estimate is based on AVR struct and pointer sizes; + // actual size may vary. + + FT_Done_FreeType(library); + + return 0; +} + +/* ------------------------------------------------------------------------- + +Character metrics are slightly different from classic GFX & ftGFX. +In classic GFX: cursor position is the upper-left pixel of each 5x7 +character; lower extent of most glyphs (except those w/descenders) +is +6 pixels in Y direction. +W/new GFX fonts: cursor position is on baseline, where baseline is +'inclusive' (containing the bottom-most row of pixels in most symbols, +except those with descenders; ftGFX is one pixel lower). + +Cursor Y will be moved automatically when switching between classic +and new fonts. If you switch fonts, any print() calls will continue +along the same baseline. + + ...........#####.. -- yOffset + ..........######.. + ..........######.. + .........#######.. + ........#########. + * = Cursor pos. ........#########. + .......##########. + ......#####..####. + ......#####..####. + *.#.. .....#####...####. + .#.#. ....############## + #...# ...############### + #...# ...############### + ##### ..#####......##### + #...# .#####.......##### +====== #...# ====== #*###.........#### ======= Baseline + || xOffset + +glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space +(+Y is down), from the cursor position to the top-left pixel of the +glyph bitmap. i.e. yOffset is typically negative, xOffset is typically +zero but a few glyphs will have other values (even negative xOffsets +sometimes, totally normal). glyph->xAdvance is the distance to move +the cursor on the X axis after drawing the corresponding symbol. + +There's also some changes with regard to 'background' color and new GFX +fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. +*/ diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md new file mode 100644 index 000000000..361078b60 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md @@ -0,0 +1,88 @@ +### A short guide to use fontconvert.c to create your own fonts using MinGW. + +#### STEP 1: INSTALL MinGW + +Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). +Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). +I suggest installing with the "Graphical User Interface Installer". +To complete your initial installation you should further install some "packages". +For our purpose you should only install the "Basic Setup" packages. +To do that: + +1. Open the MinGW Installation Manager +2. From the left panel click "Basic Setup". +3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" +and click "Mark for installation" +4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". + + +#### STEP 2: INSTALL Freetype Library + +To read about the freetype project visit [freetype.org](https://www.freetype.org/). +To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) +and choose "freetype-2.7.tar.gz" file (or a newer version if available). +To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. +(I also renamed the folder to "ft27") +Before you build the library it's good to read these articles: +* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) +* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) +* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) + +Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). +Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. +To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. +Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. +Enter "ft27" directory using the cd commands: +``` +cd /c +cd ft27 +``` + +and then type one by one the commands: +``` +./configure --prefix=/mingw +make +make install +``` +Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". +That, hopefully, means that you have installed the library correctly !! + +#### STEP 3: Build fontconvert.c + +Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. +Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). +Change the commands so in the end the program looks like : +``` +all: fontconvert + +CC = gcc +CFLAGS = -Wall -I c:/mingw/include/freetype2 +LIBS = -lfreetype + +fontconvert: fontconvert.c + $(CC) $(CFLAGS) $< $(LIBS) -o $@ + +clean: + rm -f fontconvert +``` +Go back in the command prompt and with a cd command enter the fontconvert directory. +``` +cd /c/adafruit_gfx_library\fontconvert +``` +Give the command: +``` +make +``` +This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. + +#### STEP 4: Create your own font header files + +Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. +So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: +``` +./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h +``` +You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). + +Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee +and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh new file mode 100644 index 000000000..35f07ea52 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Ugly little Bash script, generates a set of .h files for GFX using +# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), +# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, +# bold, oblique or italic, and bold+oblique or bold+italic; and four +# sizes: 9, 12, 18 and 24 point. No real error checking or anything, +# this just powers through all the combinations, calling the fontconvert +# utility and redirecting the output to a .h file for each combo. + +# Adafruit_GFX repository does not include the source outline fonts +# (huge zipfile, different license) but they're easily acquired: +# http://savannah.gnu.org/projects/freefont/ + +convert=./fontconvert +inpath=~/Desktop/freefont/ +outpath=../Fonts/ +fonts=(FreeMono FreeSans FreeSerif) +styles=("" Bold Italic BoldItalic Oblique BoldOblique) +sizes=(9 12 18 24) + +for f in ${fonts[*]} +do + for index in ${!styles[*]} + do + st=${styles[$index]} + for si in ${sizes[*]} + do + infile=$inpath$f$st".ttf" + if [ -f $infile ] # Does source combination exist? + then + outfile=$outpath$f$st$si"pt7b.h" +# printf "%s %s %s > %s\n" $convert $infile $si $outfile + $convert $infile $si > $outfile + fi + done + done +done diff --git a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h new file mode 100644 index 000000000..07381eddd --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h @@ -0,0 +1,24 @@ +// Font structures for newer Adafruit_GFX (1.1 and later). +// Example fonts are included in 'Fonts' directory. +// To use a font in your Arduino sketch, #include the corresponding .h +// file and pass address of GFXfont struct to setFont(). Pass NULL to +// revert to 'classic' fixed-space bitmap font. + +#ifndef _GFXFONT_H_ +#define _GFXFONT_H_ + +typedef struct { // Data stored PER GLYPH + uint16_t bitmapOffset; // Pointer into GFXfont->bitmap + uint8_t width, height; // Bitmap dimensions in pixels + uint8_t xAdvance; // Distance to advance cursor (x axis) + int8_t xOffset, yOffset; // Dist from cursor pos to UL corner +} GFXglyph; + +typedef struct { // Data stored for FONT AS A WHOLE: + uint8_t *bitmap; // Glyph bitmaps, concatenated + GFXglyph *glyph; // Glyph array + uint8_t first, last; // ASCII extents + uint8_t yAdvance; // Newline distance (y axis) +} GFXfont; + +#endif // _GFXFONT_H_ diff --git a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c new file mode 100644 index 000000000..6f88bd23a --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c @@ -0,0 +1,276 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#ifndef FONT5X7_H +#define FONT5X7_H + +#ifdef __AVR__ + #include + #include +#elif defined(ESP8266) + #include +#else + #define PROGMEM +#endif + +// Standard ASCII 5x7 font + +static const unsigned char font[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, + 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, + 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, + 0x18, 0x3C, 0x7E, 0x3C, 0x18, + 0x1C, 0x57, 0x7D, 0x57, 0x1C, + 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, + 0x00, 0x18, 0x3C, 0x18, 0x00, + 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, + 0x00, 0x18, 0x24, 0x18, 0x00, + 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, + 0x30, 0x48, 0x3A, 0x06, 0x0E, + 0x26, 0x29, 0x79, 0x29, 0x26, + 0x40, 0x7F, 0x05, 0x05, 0x07, + 0x40, 0x7F, 0x05, 0x25, 0x3F, + 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, + 0x7F, 0x3E, 0x1C, 0x1C, 0x08, + 0x08, 0x1C, 0x1C, 0x3E, 0x7F, + 0x14, 0x22, 0x7F, 0x22, 0x14, + 0x5F, 0x5F, 0x00, 0x5F, 0x5F, + 0x06, 0x09, 0x7F, 0x01, 0x7F, + 0x00, 0x66, 0x89, 0x95, 0x6A, + 0x60, 0x60, 0x60, 0x60, 0x60, + 0x94, 0xA2, 0xFF, 0xA2, 0x94, + 0x08, 0x04, 0x7E, 0x04, 0x08, + 0x10, 0x20, 0x7E, 0x20, 0x10, + 0x08, 0x08, 0x2A, 0x1C, 0x08, + 0x08, 0x1C, 0x2A, 0x08, 0x08, + 0x1E, 0x10, 0x10, 0x10, 0x10, + 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, + 0x30, 0x38, 0x3E, 0x38, 0x30, + 0x06, 0x0E, 0x3E, 0x0E, 0x06, + 0x00, 0x00, 0x00, 0x00, 0x00, + 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, 0x56, 0x20, 0x50, + 0x00, 0x08, 0x07, 0x03, 0x00, + 0x00, 0x1C, 0x22, 0x41, 0x00, + 0x00, 0x41, 0x22, 0x1C, 0x00, + 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, + 0x08, 0x08, 0x3E, 0x08, 0x08, + 0x00, 0x80, 0x70, 0x30, 0x00, + 0x08, 0x08, 0x08, 0x08, 0x08, + 0x00, 0x00, 0x60, 0x60, 0x00, + 0x20, 0x10, 0x08, 0x04, 0x02, + 0x3E, 0x51, 0x49, 0x45, 0x3E, + 0x00, 0x42, 0x7F, 0x40, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, + 0x21, 0x41, 0x49, 0x4D, 0x33, + 0x18, 0x14, 0x12, 0x7F, 0x10, + 0x27, 0x45, 0x45, 0x45, 0x39, + 0x3C, 0x4A, 0x49, 0x49, 0x31, + 0x41, 0x21, 0x11, 0x09, 0x07, + 0x36, 0x49, 0x49, 0x49, 0x36, + 0x46, 0x49, 0x49, 0x29, 0x1E, + 0x00, 0x00, 0x14, 0x00, 0x00, + 0x00, 0x40, 0x34, 0x00, 0x00, + 0x00, 0x08, 0x14, 0x22, 0x41, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x00, 0x41, 0x22, 0x14, 0x08, + 0x02, 0x01, 0x59, 0x09, 0x06, + 0x3E, 0x41, 0x5D, 0x59, 0x4E, + 0x7C, 0x12, 0x11, 0x12, 0x7C, + 0x7F, 0x49, 0x49, 0x49, 0x36, + 0x3E, 0x41, 0x41, 0x41, 0x22, + 0x7F, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x49, 0x49, 0x49, 0x41, + 0x7F, 0x09, 0x09, 0x09, 0x01, + 0x3E, 0x41, 0x41, 0x51, 0x73, + 0x7F, 0x08, 0x08, 0x08, 0x7F, + 0x00, 0x41, 0x7F, 0x41, 0x00, + 0x20, 0x40, 0x41, 0x3F, 0x01, + 0x7F, 0x08, 0x14, 0x22, 0x41, + 0x7F, 0x40, 0x40, 0x40, 0x40, + 0x7F, 0x02, 0x1C, 0x02, 0x7F, + 0x7F, 0x04, 0x08, 0x10, 0x7F, + 0x3E, 0x41, 0x41, 0x41, 0x3E, + 0x7F, 0x09, 0x09, 0x09, 0x06, + 0x3E, 0x41, 0x51, 0x21, 0x5E, + 0x7F, 0x09, 0x19, 0x29, 0x46, + 0x26, 0x49, 0x49, 0x49, 0x32, + 0x03, 0x01, 0x7F, 0x01, 0x03, + 0x3F, 0x40, 0x40, 0x40, 0x3F, + 0x1F, 0x20, 0x40, 0x20, 0x1F, + 0x3F, 0x40, 0x38, 0x40, 0x3F, + 0x63, 0x14, 0x08, 0x14, 0x63, + 0x03, 0x04, 0x78, 0x04, 0x03, + 0x61, 0x59, 0x49, 0x4D, 0x43, + 0x00, 0x7F, 0x41, 0x41, 0x41, + 0x02, 0x04, 0x08, 0x10, 0x20, + 0x00, 0x41, 0x41, 0x41, 0x7F, + 0x04, 0x02, 0x01, 0x02, 0x04, + 0x40, 0x40, 0x40, 0x40, 0x40, + 0x00, 0x03, 0x07, 0x08, 0x00, + 0x20, 0x54, 0x54, 0x78, 0x40, + 0x7F, 0x28, 0x44, 0x44, 0x38, + 0x38, 0x44, 0x44, 0x44, 0x28, + 0x38, 0x44, 0x44, 0x28, 0x7F, + 0x38, 0x54, 0x54, 0x54, 0x18, + 0x00, 0x08, 0x7E, 0x09, 0x02, + 0x18, 0xA4, 0xA4, 0x9C, 0x78, + 0x7F, 0x08, 0x04, 0x04, 0x78, + 0x00, 0x44, 0x7D, 0x40, 0x00, + 0x20, 0x40, 0x40, 0x3D, 0x00, + 0x7F, 0x10, 0x28, 0x44, 0x00, + 0x00, 0x41, 0x7F, 0x40, 0x00, + 0x7C, 0x04, 0x78, 0x04, 0x78, + 0x7C, 0x08, 0x04, 0x04, 0x78, + 0x38, 0x44, 0x44, 0x44, 0x38, + 0xFC, 0x18, 0x24, 0x24, 0x18, + 0x18, 0x24, 0x24, 0x18, 0xFC, + 0x7C, 0x08, 0x04, 0x04, 0x08, + 0x48, 0x54, 0x54, 0x54, 0x24, + 0x04, 0x04, 0x3F, 0x44, 0x24, + 0x3C, 0x40, 0x40, 0x20, 0x7C, + 0x1C, 0x20, 0x40, 0x20, 0x1C, + 0x3C, 0x40, 0x30, 0x40, 0x3C, + 0x44, 0x28, 0x10, 0x28, 0x44, + 0x4C, 0x90, 0x90, 0x90, 0x7C, + 0x44, 0x64, 0x54, 0x4C, 0x44, + 0x00, 0x08, 0x36, 0x41, 0x00, + 0x00, 0x00, 0x77, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, + 0x02, 0x01, 0x02, 0x04, 0x02, + 0x3C, 0x26, 0x23, 0x26, 0x3C, + 0x1E, 0xA1, 0xA1, 0x61, 0x12, + 0x3A, 0x40, 0x40, 0x20, 0x7A, + 0x38, 0x54, 0x54, 0x55, 0x59, + 0x21, 0x55, 0x55, 0x79, 0x41, + 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut + 0x21, 0x55, 0x54, 0x78, 0x40, + 0x20, 0x54, 0x55, 0x79, 0x40, + 0x0C, 0x1E, 0x52, 0x72, 0x12, + 0x39, 0x55, 0x55, 0x55, 0x59, + 0x39, 0x54, 0x54, 0x54, 0x59, + 0x39, 0x55, 0x54, 0x54, 0x58, + 0x00, 0x00, 0x45, 0x7C, 0x41, + 0x00, 0x02, 0x45, 0x7D, 0x42, + 0x00, 0x01, 0x45, 0x7C, 0x40, + 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut + 0xF0, 0x28, 0x25, 0x28, 0xF0, + 0x7C, 0x54, 0x55, 0x45, 0x00, + 0x20, 0x54, 0x54, 0x7C, 0x54, + 0x7C, 0x0A, 0x09, 0x7F, 0x49, + 0x32, 0x49, 0x49, 0x49, 0x32, + 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut + 0x32, 0x4A, 0x48, 0x48, 0x30, + 0x3A, 0x41, 0x41, 0x21, 0x7A, + 0x3A, 0x42, 0x40, 0x20, 0x78, + 0x00, 0x9D, 0xA0, 0xA0, 0x7D, + 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut + 0x3D, 0x40, 0x40, 0x40, 0x3D, + 0x3C, 0x24, 0xFF, 0x24, 0x24, + 0x48, 0x7E, 0x49, 0x43, 0x66, + 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, + 0xFF, 0x09, 0x29, 0xF6, 0x20, + 0xC0, 0x88, 0x7E, 0x09, 0x03, + 0x20, 0x54, 0x54, 0x79, 0x41, + 0x00, 0x00, 0x44, 0x7D, 0x41, + 0x30, 0x48, 0x48, 0x4A, 0x32, + 0x38, 0x40, 0x40, 0x22, 0x7A, + 0x00, 0x7A, 0x0A, 0x0A, 0x72, + 0x7D, 0x0D, 0x19, 0x31, 0x7D, + 0x26, 0x29, 0x29, 0x2F, 0x28, + 0x26, 0x29, 0x29, 0x29, 0x26, + 0x30, 0x48, 0x4D, 0x40, 0x20, + 0x38, 0x08, 0x08, 0x08, 0x08, + 0x08, 0x08, 0x08, 0x08, 0x38, + 0x2F, 0x10, 0xC8, 0xAC, 0xBA, + 0x2F, 0x10, 0x28, 0x34, 0xFA, + 0x00, 0x00, 0x7B, 0x00, 0x00, + 0x08, 0x14, 0x2A, 0x14, 0x22, + 0x22, 0x14, 0x2A, 0x14, 0x08, + 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code + 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block + 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block + 0x00, 0x00, 0x00, 0xFF, 0x00, + 0x10, 0x10, 0x10, 0xFF, 0x00, + 0x14, 0x14, 0x14, 0xFF, 0x00, + 0x10, 0x10, 0xFF, 0x00, 0xFF, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x14, 0x14, 0x14, 0xFC, 0x00, + 0x14, 0x14, 0xF7, 0x00, 0xFF, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x14, 0x14, 0xF4, 0x04, 0xFC, + 0x14, 0x14, 0x17, 0x10, 0x1F, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0x1F, 0x00, + 0x10, 0x10, 0x10, 0xF0, 0x00, + 0x00, 0x00, 0x00, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0x1F, 0x10, + 0x10, 0x10, 0x10, 0xF0, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x10, + 0x10, 0x10, 0x10, 0x10, 0x10, + 0x10, 0x10, 0x10, 0xFF, 0x10, + 0x00, 0x00, 0x00, 0xFF, 0x14, + 0x00, 0x00, 0xFF, 0x00, 0xFF, + 0x00, 0x00, 0x1F, 0x10, 0x17, + 0x00, 0x00, 0xFC, 0x04, 0xF4, + 0x14, 0x14, 0x17, 0x10, 0x17, + 0x14, 0x14, 0xF4, 0x04, 0xF4, + 0x00, 0x00, 0xFF, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x14, 0x14, + 0x14, 0x14, 0xF7, 0x00, 0xF7, + 0x14, 0x14, 0x14, 0x17, 0x14, + 0x10, 0x10, 0x1F, 0x10, 0x1F, + 0x14, 0x14, 0x14, 0xF4, 0x14, + 0x10, 0x10, 0xF0, 0x10, 0xF0, + 0x00, 0x00, 0x1F, 0x10, 0x1F, + 0x00, 0x00, 0x00, 0x1F, 0x14, + 0x00, 0x00, 0x00, 0xFC, 0x14, + 0x00, 0x00, 0xF0, 0x10, 0xF0, + 0x10, 0x10, 0xFF, 0x10, 0xFF, + 0x14, 0x14, 0x14, 0xFF, 0x14, + 0x10, 0x10, 0x10, 0x1F, 0x00, + 0x00, 0x00, 0x00, 0xF0, 0x10, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, + 0xFF, 0xFF, 0xFF, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xFF, 0xFF, + 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, + 0x38, 0x44, 0x44, 0x38, 0x44, + 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta + 0x7E, 0x02, 0x02, 0x06, 0x06, + 0x02, 0x7E, 0x02, 0x7E, 0x02, + 0x63, 0x55, 0x49, 0x41, 0x63, + 0x38, 0x44, 0x44, 0x3C, 0x04, + 0x40, 0x7E, 0x20, 0x1E, 0x20, + 0x06, 0x02, 0x7E, 0x02, 0x02, + 0x99, 0xA5, 0xE7, 0xA5, 0x99, + 0x1C, 0x2A, 0x49, 0x2A, 0x1C, + 0x4C, 0x72, 0x01, 0x72, 0x4C, + 0x30, 0x4A, 0x4D, 0x4D, 0x30, + 0x30, 0x48, 0x78, 0x48, 0x30, + 0xBC, 0x62, 0x5A, 0x46, 0x3D, + 0x3E, 0x49, 0x49, 0x49, 0x00, + 0x7E, 0x01, 0x01, 0x01, 0x7E, + 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, + 0x44, 0x44, 0x5F, 0x44, 0x44, + 0x40, 0x51, 0x4A, 0x44, 0x40, + 0x40, 0x44, 0x4A, 0x51, 0x40, + 0x00, 0x00, 0xFF, 0x01, 0x03, + 0xE0, 0x80, 0xFF, 0x00, 0x00, + 0x08, 0x08, 0x6B, 0x6B, 0x08, + 0x36, 0x12, 0x36, 0x24, 0x36, + 0x06, 0x0F, 0x09, 0x0F, 0x06, + 0x00, 0x00, 0x18, 0x18, 0x00, + 0x00, 0x00, 0x10, 0x10, 0x00, + 0x30, 0x40, 0xFF, 0x01, 0x01, + 0x00, 0x1F, 0x01, 0x01, 0x1E, + 0x00, 0x19, 0x1D, 0x17, 0x12, + 0x00, 0x3C, 0x3C, 0x3C, 0x3C, + 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP +}; +#endif // FONT5X7_H diff --git a/lib/Adafruit_GFX-1.2.2.07/library.properties b/lib/Adafruit_GFX-1.2.2.07/library.properties new file mode 100644 index 000000000..c6b0c4751 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/library.properties @@ -0,0 +1,9 @@ +name=Adafruit GFX Library +version=1.2.2 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. +paragraph=Install this library in addition to the display library for your hardware. +category=Display +url=https://github.com/adafruit/Adafruit-GFX-Library +architectures=* diff --git a/lib/Adafruit_GFX-1.2.2.07/license.txt b/lib/Adafruit_GFX-1.2.2.07/license.txt new file mode 100644 index 000000000..7492e93a1 --- /dev/null +++ b/lib/Adafruit_GFX-1.2.2.07/license.txt @@ -0,0 +1,24 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012 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. diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp new file mode 100644 index 000000000..fd7039173 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp @@ -0,0 +1,672 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/ + ----> http://www.adafruit.com/products/ + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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 + +#include "Adafruit_LEDBackpack.h" +#include "Adafruit_GFX.h" + +#ifndef _BV + #define _BV(bit) (1<<(bit)) +#endif + +#ifndef _swap_int16_t +#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } +#endif + +static const uint8_t numbertable[] = { + 0x3F, /* 0 */ + 0x06, /* 1 */ + 0x5B, /* 2 */ + 0x4F, /* 3 */ + 0x66, /* 4 */ + 0x6D, /* 5 */ + 0x7D, /* 6 */ + 0x07, /* 7 */ + 0x7F, /* 8 */ + 0x6F, /* 9 */ + 0x77, /* a */ + 0x7C, /* b */ + 0x39, /* C */ + 0x5E, /* d */ + 0x79, /* E */ + 0x71, /* F */ +}; + +static const uint16_t alphafonttable[] PROGMEM = { + +0b0000000000000001, +0b0000000000000010, +0b0000000000000100, +0b0000000000001000, +0b0000000000010000, +0b0000000000100000, +0b0000000001000000, +0b0000000010000000, +0b0000000100000000, +0b0000001000000000, +0b0000010000000000, +0b0000100000000000, +0b0001000000000000, +0b0010000000000000, +0b0100000000000000, +0b1000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0000000000000000, +0b0001001011001001, +0b0001010111000000, +0b0001001011111001, +0b0000000011100011, +0b0000010100110000, +0b0001001011001000, +0b0011101000000000, +0b0001011100000000, +0b0000000000000000, // +0b0000000000000110, // ! +0b0000001000100000, // " +0b0001001011001110, // # +0b0001001011101101, // $ +0b0000110000100100, // % +0b0010001101011101, // & +0b0000010000000000, // ' +0b0010010000000000, // ( +0b0000100100000000, // ) +0b0011111111000000, // * +0b0001001011000000, // + +0b0000100000000000, // , +0b0000000011000000, // - +0b0000000000000000, // . +0b0000110000000000, // / +0b0000110000111111, // 0 +0b0000000000000110, // 1 +0b0000000011011011, // 2 +0b0000000010001111, // 3 +0b0000000011100110, // 4 +0b0010000001101001, // 5 +0b0000000011111101, // 6 +0b0000000000000111, // 7 +0b0000000011111111, // 8 +0b0000000011101111, // 9 +0b0001001000000000, // : +0b0000101000000000, // ; +0b0010010000000000, // < +0b0000000011001000, // = +0b0000100100000000, // > +0b0001000010000011, // ? +0b0000001010111011, // @ +0b0000000011110111, // A +0b0001001010001111, // B +0b0000000000111001, // C +0b0001001000001111, // D +0b0000000011111001, // E +0b0000000001110001, // F +0b0000000010111101, // G +0b0000000011110110, // H +0b0001001000000000, // I +0b0000000000011110, // J +0b0010010001110000, // K +0b0000000000111000, // L +0b0000010100110110, // M +0b0010000100110110, // N +0b0000000000111111, // O +0b0000000011110011, // P +0b0010000000111111, // Q +0b0010000011110011, // R +0b0000000011101101, // S +0b0001001000000001, // T +0b0000000000111110, // U +0b0000110000110000, // V +0b0010100000110110, // W +0b0010110100000000, // X +0b0001010100000000, // Y +0b0000110000001001, // Z +0b0000000000111001, // [ +0b0010000100000000, // +0b0000000000001111, // ] +0b0000110000000011, // ^ +0b0000000000001000, // _ +0b0000000100000000, // ` +0b0001000001011000, // a +0b0010000001111000, // b +0b0000000011011000, // c +0b0000100010001110, // d +0b0000100001011000, // e +0b0000000001110001, // f +0b0000010010001110, // g +0b0001000001110000, // h +0b0001000000000000, // i +0b0000000000001110, // j +0b0011011000000000, // k +0b0000000000110000, // l +0b0001000011010100, // m +0b0001000001010000, // n +0b0000000011011100, // o +0b0000000101110000, // p +0b0000010010000110, // q +0b0000000001010000, // r +0b0010000010001000, // s +0b0000000001111000, // t +0b0000000000011100, // u +0b0010000000000100, // v +0b0010100000010100, // w +0b0010100011000000, // x +0b0010000000001100, // y +0b0000100001001000, // z +0b0000100101001001, // { +0b0001001000000000, // | +0b0010010010001001, // } +0b0000010100100000, // ~ +0b0011111111111111, + +}; +void Adafruit_LEDBackpack::setBrightness(uint8_t b) { + if (b > 15) b = 15; + Wire.beginTransmission(i2c_addr); + Wire.write(HT16K33_CMD_BRIGHTNESS | b); + Wire.endTransmission(); +} + +void Adafruit_LEDBackpack::blinkRate(uint8_t b) { + Wire.beginTransmission(i2c_addr); + if (b > 3) b = 0; // turn off if not sure + + Wire.write(HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1)); + Wire.endTransmission(); +} + +Adafruit_LEDBackpack::Adafruit_LEDBackpack(void) { +} + +void Adafruit_LEDBackpack::begin(uint8_t _addr = 0x70) { + i2c_addr = _addr; + + Wire.begin(); + + Wire.beginTransmission(i2c_addr); + Wire.write(0x21); // turn on oscillator + Wire.endTransmission(); + blinkRate(HT16K33_BLINK_OFF); + + setBrightness(15); // max brightness +} + +void Adafruit_LEDBackpack::writeDisplay(void) { + Wire.beginTransmission(i2c_addr); + Wire.write((uint8_t)0x00); // start at address $00 + + for (uint8_t i=0; i<8; i++) { + Wire.write(displaybuffer[i] & 0xFF); + Wire.write(displaybuffer[i] >> 8); + } + Wire.endTransmission(); +} + +void Adafruit_LEDBackpack::clear(void) { + for (uint8_t i=0; i<8; i++) { + displaybuffer[i] = 0; + } +} + +/******************************* QUAD ALPHANUM OBJECT */ + +Adafruit_AlphaNum4::Adafruit_AlphaNum4(void) { + +} + +void Adafruit_AlphaNum4::writeDigitRaw(uint8_t n, uint16_t bitmask) { + displaybuffer[n] = bitmask; +} + +void Adafruit_AlphaNum4::writeDigitAscii(uint8_t n, uint8_t a, boolean d) { + uint16_t font = pgm_read_word(alphafonttable+a); + + displaybuffer[n] = font; + + /* + Serial.print(a, DEC); + Serial.print(" / '"); Serial.write(a); + Serial.print("' = 0x"); Serial.println(font, HEX); + */ + + if (d) displaybuffer[n] |= (1<<14); +} + +/******************************* 24 BARGRAPH OBJECT */ + +Adafruit_24bargraph::Adafruit_24bargraph(void) { + +} + +void Adafruit_24bargraph::setBar(uint8_t bar, uint8_t color) { + uint16_t a, c; + + if (bar < 12) + c = bar / 4; + else + c = (bar - 12) / 4; + + a = bar % 4; + if (bar >= 12) + a += 4; + + //Serial.print("Ano = "); Serial.print(a); Serial.print(" Cath = "); Serial.println(c); + if (color == LED_RED) { + // Turn on red LED. + displaybuffer[c] |= _BV(a); + // Turn off green LED. + displaybuffer[c] &= ~_BV(a+8); + } else if (color == LED_YELLOW) { + // Turn on red and green LED. + displaybuffer[c] |= _BV(a) | _BV(a+8); + } else if (color == LED_OFF) { + // Turn off red and green LED. + displaybuffer[c] &= ~_BV(a) & ~_BV(a+8); + } else if (color == LED_GREEN) { + // Turn on green LED. + displaybuffer[c] |= _BV(a+8); + // Turn off red LED. + displaybuffer[c] &= ~_BV(a); + } +} + + +/******************************* 16x8 MATRIX OBJECT */ + +Adafruit_8x16matrix::Adafruit_8x16matrix(void) : Adafruit_GFX(8, 16) { +} + +void Adafruit_8x16matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 2: + _swap_int16_t(x, y); + x = 16 - x - 1; + break; + case 3: + x = 16 - x - 1; + y = 8 - y - 1; + break; + case 0: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + /* + Serial.print("("); Serial.print(x); + Serial.print(","); Serial.print(y); + Serial.println(")"); + */ + + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 16)) return; + + if (color) { + displaybuffer[y] |= 1 << x; + } else { + displaybuffer[y] &= ~(1 << x); + } +} + +/******************************* 16x8 MINI MATRIX OBJECT */ + +Adafruit_8x16minimatrix::Adafruit_8x16minimatrix(void) : Adafruit_GFX(8, 16) { +} + +void Adafruit_8x16minimatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + + if ((y < 0) || (x < 0)) return; + if ((getRotation() % 2 == 0) && ((y >= 16) || (x >= 8))) return; + if ((getRotation() % 2 == 1) && ((x >= 16) || (y >= 8))) return; + + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 2: + if (y >= 8) { + x += 8; + y -= 8; + } + _swap_int16_t(x, y); + break; + case 3: + x = 16 - x - 1; + if (x >= 8) { + x -= 8; + y += 8; + } + break; + case 0: + y = 16 - y - 1; + x = 8 - x - 1; + if (y >= 8) { + x += 8; + y -= 8; + } + _swap_int16_t(x, y); + break; + case 1: + y = 8 - y - 1; + if (x >= 8) { + x -= 8; + y += 8; + } + break; + } + + if (color) { + displaybuffer[x] |= 1 << y; + } else { + displaybuffer[x] &= ~(1 << y); + } +} + +/******************************* 8x8 MATRIX OBJECT */ + +Adafruit_8x8matrix::Adafruit_8x8matrix(void) : Adafruit_GFX(8, 8) { +} + +void Adafruit_8x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 8)) return; + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 8 - x - 1; + break; + case 2: + x = 8 - x - 1; + y = 8 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + + // wrap around the x + x += 7; + x %= 8; + + + if (color) { + displaybuffer[y] |= 1 << x; + } else { + displaybuffer[y] &= ~(1 << x); + } +} + +/******************************* 8x8 BICOLOR MATRIX OBJECT */ + +Adafruit_BicolorMatrix::Adafruit_BicolorMatrix(void) : Adafruit_GFX(8, 8) { +} + +void Adafruit_BicolorMatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((y < 0) || (y >= 8)) return; + if ((x < 0) || (x >= 8)) return; + + switch (getRotation()) { + case 1: + _swap_int16_t(x, y); + x = 8 - x - 1; + break; + case 2: + x = 8 - x - 1; + y = 8 - y - 1; + break; + case 3: + _swap_int16_t(x, y); + y = 8 - y - 1; + break; + } + + if (color == LED_GREEN) { + // Turn on green LED. + displaybuffer[y] |= 1 << x; + // Turn off red LED. + displaybuffer[y] &= ~(1 << (x+8)); + } else if (color == LED_RED) { + // Turn on red LED. + displaybuffer[y] |= 1 << (x+8); + // Turn off green LED. + displaybuffer[y] &= ~(1 << x); + } else if (color == LED_YELLOW) { + // Turn on green and red LED. + displaybuffer[y] |= (1 << (x+8)) | (1 << x); + } else if (color == LED_OFF) { + // Turn off green and red LED. + displaybuffer[y] &= ~(1 << x) & ~(1 << (x+8)); + } +} + +/******************************* 7 SEGMENT OBJECT */ + +Adafruit_7segment::Adafruit_7segment(void) { + position = 0; +} + +void Adafruit_7segment::print(unsigned long n, int base) +{ + if (base == 0) write(n); + else printNumber(n, base); +} + +void Adafruit_7segment::print(char c, int base) +{ + print((long) c, base); +} + +void Adafruit_7segment::print(unsigned char b, int base) +{ + print((unsigned long) b, base); +} + +void Adafruit_7segment::print(int n, int base) +{ + print((long) n, base); +} + +void Adafruit_7segment::print(unsigned int n, int base) +{ + print((unsigned long) n, base); +} + +void Adafruit_7segment::println(void) { + position = 0; +} + +void Adafruit_7segment::println(char c, int base) +{ + print(c, base); + println(); +} + +void Adafruit_7segment::println(unsigned char b, int base) +{ + print(b, base); + println(); +} + +void Adafruit_7segment::println(int n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(unsigned int n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(long n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(unsigned long n, int base) +{ + print(n, base); + println(); +} + +void Adafruit_7segment::println(double n, int digits) +{ + print(n, digits); + println(); +} + +void Adafruit_7segment::print(double n, int digits) +{ + printFloat(n, digits); +} + + +size_t Adafruit_7segment::write(uint8_t c) { + + uint8_t r = 0; + + if (c == '\n') position = 0; + if (c == '\r') position = 0; + + if ((c >= '0') && (c <= '9')) { + writeDigitNum(position, c-'0'); + r = 1; + } + + position++; + if (position == 2) position++; + + return r; +} + +void Adafruit_7segment::writeDigitRaw(uint8_t d, uint8_t bitmask) { + if (d > 4) return; + displaybuffer[d] = bitmask; +} + +void Adafruit_7segment::drawColon(boolean state) { + if (state) + displaybuffer[2] = 0x2; + else + displaybuffer[2] = 0; +} + +void Adafruit_7segment::writeColon(void) { + Wire.beginTransmission(i2c_addr); + Wire.write((uint8_t)0x04); // start at address $02 + + Wire.write(displaybuffer[2] & 0xFF); + Wire.write(displaybuffer[2] >> 8); + + Wire.endTransmission(); +} + +void Adafruit_7segment::writeDigitNum(uint8_t d, uint8_t num, boolean dot) { + if (d > 4) return; + + writeDigitRaw(d, numbertable[num] | (dot << 7)); +} + +void Adafruit_7segment::print(long n, int base) +{ + printNumber(n, base); +} + +void Adafruit_7segment::printNumber(long n, uint8_t base) +{ + printFloat(n, 0, base); +} + +void Adafruit_7segment::printFloat(double n, uint8_t fracDigits, uint8_t base) +{ + uint8_t numericDigits = 4; // available digits on display + boolean isNegative = false; // true if the number is negative + + // is the number negative? + if(n < 0) { + isNegative = true; // need to draw sign later + --numericDigits; // the sign will take up one digit + n *= -1; // pretend the number is positive + } + + // calculate the factor required to shift all fractional digits + // into the integer part of the number + double toIntFactor = 1.0; + for(int i = 0; i < fracDigits; ++i) toIntFactor *= base; + + // create integer containing digits to display by applying + // shifting factor and rounding adjustment + uint32_t displayNumber = n * toIntFactor + 0.5; + + // calculate upper bound on displayNumber given + // available digits on display + uint32_t tooBig = 1; + for(int i = 0; i < numericDigits; ++i) tooBig *= base; + + // if displayNumber is too large, try fewer fractional digits + while(displayNumber >= tooBig) { + --fracDigits; + toIntFactor /= base; + displayNumber = n * toIntFactor + 0.5; + } + + // did toIntFactor shift the decimal off the display? + if (toIntFactor < 1) { + printError(); + } else { + // otherwise, display the number + int8_t displayPos = 4; + + if (displayNumber) //if displayNumber is not 0 + { + for(uint8_t i = 0; displayNumber || i <= fracDigits; ++i) { + boolean displayDecimal = (fracDigits != 0 && i == fracDigits); + writeDigitNum(displayPos--, displayNumber % base, displayDecimal); + if(displayPos == 2) writeDigitRaw(displayPos--, 0x00); + displayNumber /= base; + } + } + else { + writeDigitNum(displayPos--, 0, false); + } + + // display negative sign if negative + if(isNegative) writeDigitRaw(displayPos--, 0x40); + + // clear remaining display positions + while(displayPos >= 0) writeDigitRaw(displayPos--, 0x00); + } +} + +void Adafruit_7segment::printError(void) { + for(uint8_t i = 0; i < SEVENSEG_DIGITS; ++i) { + writeDigitRaw(i, (i == 2 ? 0x00 : 0x40)); + } +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h new file mode 100644 index 000000000..7b468f305 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h @@ -0,0 +1,171 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/ + ----> http://www.adafruit.com/products/ + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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 Adafruit_LEDBackpack_h +#define Adafruit_LEDBackpack_h + +#if (ARDUINO >= 100) + #include "Arduino.h" +#else + #include "WProgram.h" +#endif + + + #include + +#include "Adafruit_GFX.h" + +#define LED_ON 1 +#define LED_OFF 0 + +#define LED_RED 1 +#define LED_YELLOW 2 +#define LED_GREEN 3 + + + +#define HT16K33_BLINK_CMD 0x80 +#define HT16K33_BLINK_DISPLAYON 0x01 +#define HT16K33_BLINK_OFF 0 +#define HT16K33_BLINK_2HZ 1 +#define HT16K33_BLINK_1HZ 2 +#define HT16K33_BLINK_HALFHZ 3 + +#define HT16K33_CMD_BRIGHTNESS 0xE0 + +#define SEVENSEG_DIGITS 5 + + +// this is the raw HT16K33 controller +class Adafruit_LEDBackpack { + public: + Adafruit_LEDBackpack(void); + void begin(uint8_t _addr); + void setBrightness(uint8_t b); + void blinkRate(uint8_t b); + void writeDisplay(void); + void clear(void); + + uint16_t displaybuffer[8]; + + void init(uint8_t a); + protected: + uint8_t i2c_addr; +}; + +class Adafruit_AlphaNum4 : public Adafruit_LEDBackpack { + public: + Adafruit_AlphaNum4(void); + + void writeDigitRaw(uint8_t n, uint16_t bitmask); + void writeDigitAscii(uint8_t n, uint8_t ascii, boolean dot = false); + + private: + + +}; + +class Adafruit_24bargraph : public Adafruit_LEDBackpack { + public: + Adafruit_24bargraph(void); + + void setBar(uint8_t bar, uint8_t color); + + private: +}; + + +class Adafruit_8x16matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x16matrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_8x16minimatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x16minimatrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_8x8matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_8x8matrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + +class Adafruit_BicolorMatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { + public: + Adafruit_BicolorMatrix(void); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + private: +}; + + +#define DEC 10 +#define HEX 16 +#define OCT 8 +#define BIN 2 +#define BYTE 0 + +class Adafruit_7segment : public Adafruit_LEDBackpack { + public: + Adafruit_7segment(void); + size_t write(uint8_t c); + + void print(char, int = BYTE); + void print(unsigned char, int = BYTE); + void print(int, int = DEC); + void print(unsigned int, int = DEC); + void print(long, int = DEC); + void print(unsigned long, int = DEC); + void print(double, int = 2); + void println(char, int = BYTE); + void println(unsigned char, int = BYTE); + void println(int, int = DEC); + void println(unsigned int, int = DEC); + void println(long, int = DEC); + void println(unsigned long, int = DEC); + void println(double, int = 2); + void println(void); + + void writeDigitRaw(uint8_t x, uint8_t bitmask); + void writeDigitNum(uint8_t x, uint8_t num, boolean dot = false); + void drawColon(boolean state); + void printNumber(long, uint8_t = 2); + void printFloat(double, uint8_t = 2, uint8_t = DEC); + void printError(void); + + void writeColon(void); + + private: + uint8_t position; +}; +#endif // Adafruit_LEDBackpack_h + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.md b/lib/Adafruit_LED_Backpack-1.1.6/README.md new file mode 100644 index 000000000..3834b6e1f --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/README.md @@ -0,0 +1,30 @@ +# Adafruit-LED-Backpack-Library + + +## Compatibility + +MCU | Tested Works | Doesn't Work | Not Tested | Notes +----------------- | :----------: | :----------: | :---------: | ----- +Atmega328 @ 16MHz | X | | | +Atmega328 @ 12MHz | X | | | +Atmega32u4 @ 16MHz | X | | | +Atmega32u4 @ 8MHz | X | | | +ESP8266 | X | | | +Atmega2560 @ 16MHz | X | | | +ATSAM3X8E | X | | | Use SDA/SCL on pins 20 & 21 +ATSAM21D | X | | | +ATtiny85 @ 16MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed +ATtiny85 @ 8MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed + + * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini + * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V + * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 + * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro + * ESP8266 : Adafruit Huzzah + * ATmega2560 @ 16MHz : Arduino Mega + * ATSAM3X8E : Arduino Due + * ATSAM21D : Arduino Zero, M0 Pro + * ATtiny85 @ 16MHz : Adafruit Trinket 5V + * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V + + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.txt b/lib/Adafruit_LED_Backpack-1.1.6/README.txt new file mode 100644 index 000000000..268d96a8c --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/README.txt @@ -0,0 +1,26 @@ +This is a library for the Adafruit LED Backpacks +This library works with the Adafruit Mini 8x8 and 7-Segment LED Backpacks + ----> http://www.adafruit.com/products/881 + ----> http://www.adafruit.com/products/880 + ----> http://www.adafruit.com/products/879 + ----> http://www.adafruit.com/products/878 + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + +These displays use I2C to communicate, 2 pins are required to +interface. There are multiple selectable I2C addresses. For backpacks +with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks +with 3 Address Select pins: 0x70 thru 0x77 + + +Written by Limor Fried/Ladyada for Adafruit Industries. +MIT license, all text above must be included in any redistribution + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_LEDBackpack. Check that the Adafruit_LEDBackpack folder contains Adafruit_LEDBackpack.cpp and Adafruit_LEDBackpack. + +Place the Adafruit_LEDBackpack library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE + +**** Also requires the Adafruit_GFX library for Arduino. **** +Download it from here: + https://github.com/adafruit/Adafruit-GFX-Library \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino new file mode 100644 index 000000000..faf8247dd --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino @@ -0,0 +1,55 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +#ifndef _BV + #define _BV(bit) (1<<(bit)) +#endif + + +Adafruit_LEDBackpack matrix = Adafruit_LEDBackpack(); + +uint8_t counter = 0; + +void setup() { + Serial.begin(9600); + Serial.println("HT16K33 test"); + + matrix.begin(0x70); // pass in the address +} + +void loop() { + // paint one LED per row. The HT16K33 internal memory looks like + // a 8x16 bit matrix (8 rows, 16 columns) + for (uint8_t i=0; i<8; i++) { + // draw a diagonal row of pixels + matrix.displaybuffer[i] = _BV((counter+i) % 16) | _BV((counter+i+8) % 16) ; + } + // write the changes we just made to the display + matrix.writeDisplay(); + delay(100); + + counter++; + if (counter >= 16) counter = 0; +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino new file mode 100644 index 000000000..d9ed552e3 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino @@ -0,0 +1,65 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED 24 Bargraph Backpack + ----> http://www.adafruit.com/products/721 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_24bargraph bar = Adafruit_24bargraph(); + +void setup() { + Serial.begin(9600); + Serial.println("HT16K33 Bi-Color Bargraph test"); + + bar.begin(0x70); // pass in the address + + for (uint8_t b=0; b<24; b++ ){ + if ((b % 3) == 0) bar.setBar(b, LED_RED); + if ((b % 3) == 1) bar.setBar(b, LED_YELLOW); + if ((b % 3) == 2) bar.setBar(b, LED_GREEN); + } + bar.writeDisplay(); + delay(2000); +} + + +void loop() { + for (uint8_t b=0; b<24; b++) { + bar.setBar(b, LED_RED); + bar.writeDisplay(); + delay(50); + bar.setBar(b, LED_OFF); + bar.writeDisplay(); + } + for (uint8_t b=0; b<24; b++) { + bar.setBar(b, LED_GREEN); + bar.writeDisplay(); + delay(50); + bar.setBar(b, LED_OFF); + bar.writeDisplay(); + } + + for (uint8_t b=0; b<24; b++) { + bar.setBar(23-b, LED_YELLOW); + bar.writeDisplay(); + delay(50); + bar.setBar(23-b, LED_OFF); + bar.writeDisplay(); + } +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde new file mode 100644 index 000000000..01088032a --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde @@ -0,0 +1,122 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); + +void setup() { + Serial.begin(9600); + Serial.println("8x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_YELLOW); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_RED); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_GREEN); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,7, LED_YELLOW); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,8, LED_RED); + matrix.fillRect(2,2, 4,4, LED_GREEN); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,3, 3, LED_YELLOW); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextSize(1); + matrix.setTextColor(LED_GREEN); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(3); + matrix.setTextColor(LED_RED); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino new file mode 100644 index 000000000..5ffb542c2 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino @@ -0,0 +1,178 @@ +// Clock example using a seven segment display & DS1307 real-time clock. +// +// Must have the Adafruit RTClib library installed too! See: +// https://github.com/adafruit/RTClib +// +// Designed specifically to work with the Adafruit LED 7-Segment backpacks +// and DS1307 real-time clock breakout: +// ----> http://www.adafruit.com/products/881 +// ----> http://www.adafruit.com/products/880 +// ----> http://www.adafruit.com/products/879 +// ----> http://www.adafruit.com/products/878 +// ----> https://www.adafruit.com/products/264 +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by Tony DiCola for Adafruit Industries. +// Released under a MIT license: https://opensource.org/licenses/MIT + +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + + +// Set to false to display time in 12 hour format, or true to use 24 hour: +#define TIME_24_HOUR false + +// I2C address of the display. Stick with the default address of 0x70 +// unless you've changed the address jumpers on the back of the display. +#define DISPLAY_ADDRESS 0x70 + + +// Create display and DS1307 objects. These are global variables that +// can be accessed from both the setup and loop function below. +Adafruit_7segment clockDisplay = Adafruit_7segment(); +RTC_DS1307 rtc = RTC_DS1307(); + +// Keep track of the hours, minutes, seconds displayed by the clock. +// Start off at 0:00:00 as a signal that the time should be read from +// the DS1307 to initialize it. +int hours = 0; +int minutes = 0; +int seconds = 0; + +// Remember if the colon was drawn on the display so it can be blinked +// on and off every second. +bool blinkColon = false; + + +void setup() { + // Setup function runs once at startup to initialize the display + // and DS1307 clock. + + // Setup Serial port to print debug output. + Serial.begin(115200); + Serial.println("Clock starting!"); + + // Setup the display. + clockDisplay.begin(DISPLAY_ADDRESS); + + // Setup the DS1307 real-time clock. + rtc.begin(); + + // Set the DS1307 clock if it hasn't been set before. + bool setClockTime = !rtc.isrunning(); + // Alternatively you can force the clock to be set again by + // uncommenting this line: + //setClockTime = true; + if (setClockTime) { + Serial.println("Setting DS1307 time!"); + // This line sets the DS1307 time to the exact date and time the + // sketch was compiled: + rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); + // Alternatively you can set the RTC with an explicit date & time, + // for example to set January 21, 2014 at 3am you would uncomment: + //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); + } +} + +void loop() { + // Loop function runs over and over again to implement the clock logic. + + // Check if it's the top of the hour and get a new time reading + // from the DS1307. This helps keep the clock accurate by fixing + // any drift. + if (minutes == 0) { + // Get the time from the DS1307. + DateTime now = rtc.now(); + // Print out the time for debug purposes: + Serial.print("Read date & time from DS1307: "); + Serial.print(now.year(), DEC); + Serial.print('/'); + Serial.print(now.month(), DEC); + Serial.print('/'); + Serial.print(now.day(), DEC); + Serial.print(' '); + Serial.print(now.hour(), DEC); + Serial.print(':'); + Serial.print(now.minute(), DEC); + Serial.print(':'); + Serial.print(now.second(), DEC); + Serial.println(); + // Now set the hours and minutes. + hours = now.hour(); + minutes = now.minute(); + } + + // Show the time on the display by turning it into a numeric + // value, like 3:30 turns into 330, by multiplying the hour by + // 100 and then adding the minutes. + int displayValue = hours*100 + minutes; + + // Do 24 hour to 12 hour format conversion when required. + if (!TIME_24_HOUR) { + // Handle when hours are past 12 by subtracting 12 hours (1200 value). + if (hours > 12) { + displayValue -= 1200; + } + // Handle hour 0 (midnight) being shown as 12. + else if (hours == 0) { + displayValue += 1200; + } + } + + // Now print the time value to the display. + clockDisplay.print(displayValue, DEC); + + // Add zero padding when in 24 hour mode and it's midnight. + // In this case the print function above won't have leading 0's + // which can look confusing. Go in and explicitly add these zeros. + if (TIME_24_HOUR && hours == 0) { + // Pad hour 0. + clockDisplay.writeDigitNum(1, 0); + // Also pad when the 10's minute is 0 and should be padded. + if (minutes < 10) { + clockDisplay.writeDigitNum(2, 0); + } + } + + // Blink the colon by flipping its value every loop iteration + // (which happens every second). + blinkColon = !blinkColon; + clockDisplay.drawColon(blinkColon); + + // Now push out to the display the new values that were set above. + clockDisplay.writeDisplay(); + + // Pause for a second for time to elapse. This value is in milliseconds + // so 1000 milliseconds = 1 second. + delay(1000); + + // Now increase the seconds by one. + seconds += 1; + // If the seconds go above 59 then the minutes should increase and + // the seconds should wrap back to 0. + if (seconds > 59) { + seconds = 0; + minutes += 1; + // Again if the minutes go above 59 then the hour should increase and + // the minutes should wrap back to 0. + if (minutes > 59) { + minutes = 0; + hours += 1; + // Note that when the minutes are 0 (i.e. it's the top of a new hour) + // then the start of the loop will read the actual time from the DS1307 + // again. Just to be safe though we'll also increment the hour and wrap + // back to 0 if it goes above 23 (i.e. past midnight). + if (hours > 23) { + hours = 0; + } + } + } + + // Loop code is finished, it will jump back to the start of the loop + // function again! +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino new file mode 100644 index 000000000..a6054969c --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino @@ -0,0 +1,159 @@ +// Clock example using a seven segment display & GPS for time. +// +// Must have the Adafruit GPS library installed too! See: +// https://github.com/adafruit/Adafruit-GPS-Library +// +// Designed specifically to work with the Adafruit LED 7-Segment backpacks +// and ultimate GPS breakout/shield: +// ----> http://www.adafruit.com/products/881 +// ----> http://www.adafruit.com/products/880 +// ----> http://www.adafruit.com/products/879 +// ----> http://www.adafruit.com/products/878 +// ----> http://www.adafruit.com/products/746 +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by Tony DiCola for Adafruit Industries. +// Released under a MIT license: https://opensource.org/licenses/MIT + +#include +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + + +// Set to false to display time in 12 hour format, or true to use 24 hour: +#define TIME_24_HOUR false + +// Offset the hours from UTC (universal time) to your local time by changing +// this value. The GPS time will be in UTC so lookup the offset for your +// local time from a site like: +// https://en.wikipedia.org/wiki/List_of_UTC_time_offsets +// This value, -7, will set the time to UTC-7 or Pacific Standard Time during +// daylight savings time. +#define HOUR_OFFSET -7 + +// I2C address of the display. Stick with the default address of 0x70 +// unless you've changed the address jumpers on the back of the display. +#define DISPLAY_ADDRESS 0x70 + + +// Create display and GPS objects. These are global variables that +// can be accessed from both the setup and loop function below. +Adafruit_7segment clockDisplay = Adafruit_7segment(); +SoftwareSerial gpsSerial(8, 7); // GPS breakout/shield will use a + // software serial connection with + // TX = pin 8 and RX = pin 7. +Adafruit_GPS gps(&gpsSerial); + + +void setup() { + // Setup function runs once at startup to initialize the display and GPS. + + // Setup Serial port to print debug output. + Serial.begin(115200); + Serial.println("Clock starting!"); + + // Setup the display. + clockDisplay.begin(DISPLAY_ADDRESS); + + // Setup the GPS using a 9600 baud connection (the default for most + // GPS modules). + gps.begin(9600); + + // Configure GPS to onlu output minimum data (location, time, fix). + gps.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); + + // Use a 1 hz, once a second, update rate. + gps.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); + + // Enable the interrupt to parse GPS data. + enableGPSInterrupt(); +} + +void loop() { + // Loop function runs over and over again to implement the clock logic. + + // Check if GPS has new data and parse it. + if (gps.newNMEAreceived()) { + gps.parse(gps.lastNMEA()); + } + + // Grab the current hours, minutes, seconds from the GPS. + // This will only be set once the GPS has a fix! Make sure to add + // a coin cell battery so the GPS will save the time between power-up/down. + int hours = gps.hour + HOUR_OFFSET; // Add hour offset to convert from UTC + // to local time. + // Handle when UTC + offset wraps around to a negative or > 23 value. + if (hours < 0) { + hours = 24+hours; + } + if (hours > 23) { + hours = 24-hours; + } + int minutes = gps.minute; + int seconds = gps.seconds; + + // Show the time on the display by turning it into a numeric + // value, like 3:30 turns into 330, by multiplying the hour by + // 100 and then adding the minutes. + int displayValue = hours*100 + minutes; + + // Do 24 hour to 12 hour format conversion when required. + if (!TIME_24_HOUR) { + // Handle when hours are past 12 by subtracting 12 hours (1200 value). + if (hours > 12) { + displayValue -= 1200; + } + // Handle hour 0 (midnight) being shown as 12. + else if (hours == 0) { + displayValue += 1200; + } + } + + // Now print the time value to the display. + clockDisplay.print(displayValue, DEC); + + // Add zero padding when in 24 hour mode and it's midnight. + // In this case the print function above won't have leading 0's + // which can look confusing. Go in and explicitly add these zeros. + if (TIME_24_HOUR && hours == 0) { + // Pad hour 0. + clockDisplay.writeDigitNum(1, 0); + // Also pad when the 10's minute is 0 and should be padded. + if (minutes < 10) { + clockDisplay.writeDigitNum(2, 0); + } + } + + // Blink the colon by turning it on every even second and off + // every odd second. The modulus operator is very handy here to + // check if a value is even (modulus 2 equals 0) or odd (modulus 2 + // equals 1). + clockDisplay.drawColon(seconds % 2 == 0); + + // Now push out to the display the new values that were set above. + clockDisplay.writeDisplay(); + + // Loop code is finished, it will jump back to the start of the loop + // function again! Don't add any delays because the parsing needs to + // happen all the time! +} + +SIGNAL(TIMER0_COMPA_vect) { + // Use a timer interrupt once a millisecond to check for new GPS data. + // This piggybacks on Arduino's internal clock timer for the millis() + // function. + gps.read(); +} + +void enableGPSInterrupt() { + // Function to enable the timer interrupt that will parse GPS data. + // Timer0 is already used for millis() - we'll just interrupt somewhere + // in the middle and call the "Compare A" function above + OCR0A = 0xAF; + TIMSK0 |= _BV(OCIE0A); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino new file mode 100644 index 000000000..b724e1d19 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino @@ -0,0 +1,133 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit 16x8 LED Matrix backpacks + ----> http://www.adafruit.com/products/2035 + ----> http://www.adafruit.com/products/2036 + ----> http://www.adafruit.com/products/2037 + ----> http://www.adafruit.com/products/2038 + ----> http://www.adafruit.com/products/2039 + ----> http://www.adafruit.com/products/2040 + ----> http://www.adafruit.com/products/2041 + ----> http://www.adafruit.com/products/2042 + ----> http://www.adafruit.com/products/2043 + ----> http://www.adafruit.com/products/2044 + ----> http://www.adafruit.com/products/2052 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x16matrix matrix = Adafruit_8x16matrix(); + +void setup() { + Serial.begin(9600); + Serial.println("16x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,15, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,16, LED_ON); + matrix.fillRect(2,2, 4,12, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,8, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + matrix.setRotation(1); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino new file mode 100644 index 000000000..650da459e --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino @@ -0,0 +1,120 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED Matrix backpacks + ----> http://www.adafruit.com/products/872 + ----> http://www.adafruit.com/products/871 + ----> http://www.adafruit.com/products/870 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x8matrix matrix = Adafruit_8x8matrix(); + +void setup() { + Serial.begin(9600); + Serial.println("8x8 LED Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); // clear display + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,7, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,8, LED_ON); + matrix.fillRect(2,2, 4,4, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,3, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(3); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino new file mode 100644 index 000000000..b8d29e549 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino @@ -0,0 +1,123 @@ +/*************************************************** + This is a library for our I2C LED Backpacks & FeatherWings + + Designed specifically to work with the Adafruit 16x8 LED Matrix FeatherWing + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix(); + +void setup() { + //while (!Serial); + Serial.begin(9600); + Serial.println("16x8 LED Mini Matrix Test"); + + matrix.begin(0x70); // pass in the address +} + +static const uint8_t PROGMEM + smile_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10100101, + B10011001, + B01000010, + B00111100 }, + neutral_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10111101, + B10000001, + B01000010, + B00111100 }, + frown_bmp[] = + { B00111100, + B01000010, + B10100101, + B10000001, + B10011001, + B10100101, + B01000010, + B00111100 }; + +void loop() { + + matrix.clear(); + matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + matrix.clear(); + matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); + matrix.writeDisplay(); + delay(500); + + + matrix.drawPixel(0, 0, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawLine(0,0, 7,15, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawRect(0,0, 8,16, LED_ON); + matrix.fillRect(2,2, 4,12, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.clear(); + matrix.drawCircle(3,8, 3, LED_ON); + matrix.writeDisplay(); // write the changes we just made to the display + delay(500); + + matrix.setTextSize(2); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + for (int8_t x=0; x>=-64; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("Hello"); + matrix.writeDisplay(); + delay(100); + } + + matrix.setTextSize(1); + matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely + matrix.setTextColor(LED_ON); + matrix.setRotation(1); + for (int8_t x=7; x>=-36; x--) { + matrix.clear(); + matrix.setCursor(x,0); + matrix.print("World"); + matrix.writeDisplay(); + delay(100); + } + matrix.setRotation(0); +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino new file mode 100644 index 000000000..70cb050e4 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino @@ -0,0 +1,73 @@ +// Demo the quad alphanumeric display LED backpack kit +// scrolls through every character, then scrolls Serial +// input onto the display + +#include +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); + +void setup() { + Serial.begin(9600); + + alpha4.begin(0x70); // pass in the address + + alpha4.writeDigitRaw(3, 0x0); + alpha4.writeDigitRaw(0, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(0, 0x0); + alpha4.writeDigitRaw(1, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(1, 0x0); + alpha4.writeDigitRaw(2, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(2, 0x0); + alpha4.writeDigitRaw(3, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + + alpha4.clear(); + alpha4.writeDisplay(); + + // display every character, + for (uint8_t i='!'; i<='z'; i++) { + alpha4.writeDigitAscii(0, i); + alpha4.writeDigitAscii(1, i+1); + alpha4.writeDigitAscii(2, i+2); + alpha4.writeDigitAscii(3, i+3); + alpha4.writeDisplay(); + + delay(300); + } + Serial.println("Start typing to display!"); +} + + +char displaybuffer[4] = {' ', ' ', ' ', ' '}; + +void loop() { + while (! Serial.available()) return; + + char c = Serial.read(); + if (! isprint(c)) return; // only printable! + + // scroll down display + displaybuffer[0] = displaybuffer[1]; + displaybuffer[1] = displaybuffer[2]; + displaybuffer[2] = displaybuffer[3]; + displaybuffer[3] = c; + + // set every digit to the buffer + alpha4.writeDigitAscii(0, displaybuffer[0]); + alpha4.writeDigitAscii(1, displaybuffer[1]); + alpha4.writeDigitAscii(2, displaybuffer[2]); + alpha4.writeDigitAscii(3, displaybuffer[3]); + + // write it out! + alpha4.writeDisplay(); + delay(200); +} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino new file mode 100644 index 000000000..827ea85e5 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino @@ -0,0 +1,72 @@ +// Demo the quad alphanumeric display LED backpack kit +// Displays a short message and then scrolls through every character + +// For use with Gemma or Trinket (Attiny85) + +#include +#include + + +// Connect + pins to 3-5V +// Connect GND to ground +// Connect Data to #0 +// Connect Clock to #2 + +#include +#include "Adafruit_LEDBackpack.h" + +char *message = "Hello world! "; + +Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); + +void setup() { + // This is the auto-speed doubler line, keep it in, it will + // automatically double the speed when 16Mhz is selected! + if (F_CPU == 16000000) clock_prescale_set(clock_div_1); + + alpha4.begin(0x70); // pass in the address + + alpha4.writeDigitRaw(3, 0x0); + alpha4.writeDigitRaw(0, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(0, 0x0); + alpha4.writeDigitRaw(1, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(1, 0x0); + alpha4.writeDigitRaw(2, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + alpha4.writeDigitRaw(2, 0x0); + alpha4.writeDigitRaw(3, 0xFFFF); + alpha4.writeDisplay(); + delay(200); + + alpha4.clear(); + alpha4.writeDisplay(); + + // send a message! + for (uint8_t i=0; i +#include +#include +#include "Adafruit_LEDBackpack.h" + +// Because the two eye matrices share the same address, only four +// matrix objects are needed for the five displays: +#define MATRIX_EYES 0 +#define MATRIX_MOUTH_LEFT 1 +#define MATRIX_MOUTH_MIDDLE 2 +#define MATRIX_MOUTH_RIGHT 3 +Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects + Adafruit_8x8matrix(), Adafruit_8x8matrix(), + Adafruit_8x8matrix(), Adafruit_8x8matrix() }; + +// Rather than assigning matrix addresses sequentially in a loop, each +// has a spot in this array. This makes it easier if you inadvertently +// install one or more matrices in the wrong physical position -- +// re-order the addresses in this table and you can still refer to +// matrices by index above, no other code or wiring needs to change. +static const uint8_t matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; + +static const uint8_t PROGMEM // Bitmaps are stored in program memory + blinkImg[][8] = { // Eye animation frames + { B00111100, // Fully open eye + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B00000000, + B00111100, + B11111111, + B11111111, + B11111111, + B00111100, + B00000000 }, + { B00000000, + B00000000, + B00000000, + B00111100, + B11111111, + B01111110, + B00011000, + B00000000 }, + { B00000000, // Fully closed eye + B00000000, + B00000000, + B00000000, + B10000001, + B01111110, + B00000000, + B00000000 } }, + mouthImg[][24] = { // Mouth animation frames + { B00000000, B00000000, B00000000, // Mouth position A + B00000000, B00000000, B00000000, + B01111111, B11111111, B11111110, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position B + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00000111, B00000000, B11100000, + B00000000, B11111111, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position C + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00001000, B00000000, B00010000, + B00000110, B00000000, B01100000, + B00000001, B11000011, B10000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position D + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00100000, B00000000, B00000100, + B00010000, B00000000, B00001000, + B00001100, B00000000, B00110000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position E + B00000000, B00111100, B00000000, + B00011111, B11000011, B11111000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00111100, B00000000, // Mouth position F + B00000000, B11000011, B00000000, + B00001111, B00000000, B11110000, + B00000001, B00000000, B10000000, + B00000000, B11000011, B00000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 } }; + +uint8_t + blinkIndex[] = { 1, 2, 3, 4, 3, 2, 1 }, // Blink bitmap sequence + blinkCountdown = 100, // Countdown to next blink (in frames) + gazeCountdown = 75, // Countdown to next eye movement + gazeFrames = 50, // Duration of eye movement (smaller = faster) + mouthPos = 0, // Current image number for mouth + mouthCountdown = 10; // Countdown to next mouth change +int8_t + eyeX = 3, eyeY = 3, // Current eye position + newX = 3, newY = 3, // Next eye position + dX = 0, dY = 0; // Distance from prior to new position + +void setup() { + + // Seed random number generator from an unused analog input: + randomSeed(analogRead(A0)); + + // Initialize each matrix object: + for(uint8_t i=0; i<4; i++) { + matrix[i].begin(matrixAddr[i]); + // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: + // matrix[i].setRotation(3); + } +} + +void loop() { + + // Draw eyeball in current state of blinkyness (no pupil). Note that + // only one eye needs to be drawn. Because the two eye matrices share + // the same address, the same data will be received by both. + matrix[MATRIX_EYES].clear(); + // When counting down to the next blink, show the eye in the fully- + // open state. On the last few counts (during the blink), look up + // the corresponding bitmap index. + matrix[MATRIX_EYES].drawBitmap(0, 0, + blinkImg[ + (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? + blinkIndex[blinkCountdown] : // Yes, look up bitmap # + 0 // No, show bitmap 0 + ], 8, 8, LED_ON); + // Decrement blink counter. At end, set random time for next blink. + if(--blinkCountdown == 0) blinkCountdown = random(5, 180); + + // Add a pupil (2x2 black square) atop the blinky eyeball bitmap. + // Periodically, the pupil moves to a new position... + if(--gazeCountdown <= gazeFrames) { + // Eyes are in motion - draw pupil at interim position + matrix[MATRIX_EYES].fillRect( + newX - (dX * gazeCountdown / gazeFrames), + newY - (dY * gazeCountdown / gazeFrames), + 2, 2, LED_OFF); + if(gazeCountdown == 0) { // Last frame? + eyeX = newX; eyeY = newY; // Yes. What's new is old, then... + do { // Pick random positions until one is within the eye circle + newX = random(7); newY = random(7); + dX = newX - 3; dY = newY - 3; + } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras + dX = newX - eyeX; // Horizontal distance to move + dY = newY - eyeY; // Vertical distance to move + gazeFrames = random(3, 15); // Duration of eye movement + gazeCountdown = random(gazeFrames, 120); // Count to end of next movement + } + } else { + // Not in motion yet -- draw pupil at current static position + matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); + } + + // Draw mouth, switch to new random image periodically + drawMouth(mouthImg[mouthPos]); + if(--mouthCountdown == 0) { + mouthPos = random(6); // Random image + // If the 'neutral' position was chosen, there's a 1-in-5 chance we'll + // select a longer hold time. This gives the appearance of periodic + // pauses in speech (e.g. between sentences, etc.). + mouthCountdown = ((mouthPos == 0) && (random(5) == 0)) ? + random(10, 40) : // Longer random duration + random(2, 8); // Shorter random duration + } + + // Refresh all of the matrices in one quick pass + for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); + + delay(20); // ~50 FPS +} + +// Draw mouth image across three adjacent displays +void drawMouth(const uint8_t *img) { + for(uint8_t i=0; i<3; i++) { + matrix[MATRIX_MOUTH_LEFT + i].clear(); + matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); + } +} + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino new file mode 100644 index 000000000..0a4f70c74 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino @@ -0,0 +1,81 @@ +/*************************************************** + This is a library for our I2C LED Backpacks + + Designed specifically to work with the Adafruit LED 7-Segment backpacks + ----> http://www.adafruit.com/products/881 + ----> http://www.adafruit.com/products/880 + ----> http://www.adafruit.com/products/879 + ----> http://www.adafruit.com/products/878 + + These displays use I2C to communicate, 2 pins are required to + interface. There are multiple selectable I2C addresses. For backpacks + with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks + with 3 Address Select pins: 0x70 thru 0x77 + + 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. + BSD license, all text above must be included in any redistribution + ****************************************************/ + +#include // Enable this line if using Arduino Uno, Mega, etc. +#include +#include "Adafruit_LEDBackpack.h" + +Adafruit_7segment matrix = Adafruit_7segment(); + +void setup() { +#ifndef __AVR_ATtiny85__ + Serial.begin(9600); + Serial.println("7 Segment Backpack Test"); +#endif + matrix.begin(0x70); +} + +void loop() { + // try to print a number thats too long + matrix.print(10000, DEC); + matrix.writeDisplay(); + delay(500); + + // print a hex number + matrix.print(0xBEEF, HEX); + matrix.writeDisplay(); + delay(500); + + // print a floating point + matrix.print(12.34); + matrix.writeDisplay(); + delay(500); + + // print with print/println + for (uint16_t counter = 0; counter < 9999; counter++) { + matrix.println(counter); + matrix.writeDisplay(); + delay(10); + } + + // method #2 - draw each digit + uint16_t blinkcounter = 0; + boolean drawDots = false; + for (uint16_t counter = 0; counter < 9999; counter ++) { + matrix.writeDigitNum(0, (counter / 1000), drawDots); + matrix.writeDigitNum(1, (counter / 100) % 10, drawDots); + matrix.drawColon(drawDots); + matrix.writeDigitNum(3, (counter / 10) % 10, drawDots); + matrix.writeDigitNum(4, counter % 10, drawDots); + + blinkcounter+=50; + if (blinkcounter < 500) { + drawDots = false; + } else if (blinkcounter < 1000) { + drawDots = true; + } else { + blinkcounter = 0; + } + matrix.writeDisplay(); + delay(10); + } +} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde new file mode 100644 index 000000000..b3c521bcc --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde @@ -0,0 +1,336 @@ +// 'wavface' example sketch for Adafruit I2C 8x8 LED backpacks +// and Wave Shield: +// +// www.adafruit.com/products/870 www.adafruit.com/products/1049 +// www.adafruit.com/products/871 www.adafruit.com/products/1050 +// www.adafruit.com/products/872 www.adafruit.com/products/1051 +// www.adafruit.com/products/959 www.adafruit.com/products/1052 +// www.adafruit.com/products/94 +// +// Requires Adafruit_LEDBackpack, Adafruit_GFX libraries and WaveHC +// libraries. +// +// This sketch shows animation roughly synchronized to prerecorded +// speech. It's fairly complex and may be overwhelming to novice +// programmers, who may want to start with the 'matrix8x8' example +// and then 'roboface' before working through this code. Also, much +// of the comments relating to the face animation have been stripped +// here for brevity...refer to the 'roboface' sketch if you have any +// questions how that part works. +// +// Additional hardware required: sounds are triggered using three +// normally-open momentary buttons connected to Digital pins 6, 7, 8 +// and GND. (e.g. www.adafruit.com/products/1009 ) +// +// Adafruit invests time and resources providing this open source code, +// please support Adafruit and open-source hardware by purchasing +// products from Adafruit! +// +// Written by P. Burgess for Adafruit Industries, parts adapted from +// 'PiSpeakHC' sketch included with WaveHC library. +// BSD license, all text above must be included in any redistribution. + +#include +#include +#include +#include +#include +#include "Adafruit_LEDBackpack.h" + +// These WAV files should be in the root level of the SD card: +static const char PROGMEM + wav0[] = "beware_i.wav", + wav1[] = "ihunger.wav", + wav2[] = "run_cowd.wav"; +static const char * const wavname[] PROGMEM = { wav0, wav1, wav2 }; +// PROGMEM makes frequent appearances throughout this code, reason being that +// the SD card library requires gobs of precious RAM (leaving very little to +// our own sketch). PROGMEM lets us put fixed data into program flash memory, +// which is considerably more spacious. String tables are paritcularly nasty. +// See www.arduino.cc/en/Reference/PROGMEM for more info. + +SdReader card; // This object holds the information for the card +FatVolume vol; // This holds the information for the partition on the card +FatReader root; // This holds the information for the volumes root directory +FatReader file; // This object represent the WAV file for a phrase +WaveHC wave; // A single wave object -- only one sound is played at a time + +// Because the two eye matrices share the same address, only four +// matrix objects are needed for the five displays: +#define MATRIX_EYES 0 +#define MATRIX_MOUTH_LEFT 1 +#define MATRIX_MOUTH_MIDDLE 2 +#define MATRIX_MOUTH_RIGHT 3 +Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects + Adafruit_8x8matrix(), Adafruit_8x8matrix(), + Adafruit_8x8matrix(), Adafruit_8x8matrix() }; + +// Rather than assigning matrix addresses sequentially in a loop, each +// has a spot in this array. This makes it easier if you inadvertently +// install one or more matrices in the wrong physical position -- +// re-order the addresses in this table and you can still refer to +// matrices by index above, no other code or wiring needs to change. +static const uint8_t PROGMEM matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; + +static const uint8_t PROGMEM // Bitmaps are stored in program memory + blinkImg[][8] = { // Eye animation frames + { B00111100, // Fully open eye + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B01111110, + B11111111, + B11111111, + B11111111, + B11111111, + B01111110, + B00111100 }, + { B00000000, + B00000000, + B00111100, + B11111111, + B11111111, + B11111111, + B00111100, + B00000000 }, + { B00000000, + B00000000, + B00000000, + B00111100, + B11111111, + B01111110, + B00011000, + B00000000 }, + { B00000000, // Fully closed eye + B00000000, + B00000000, + B00000000, + B10000001, + B01111110, + B00000000, + B00000000 } }, + mouthImg[][24] = { // Mouth animation frames + { B00000000, B00000000, B00000000, // Mouth position A + B00000000, B00000000, B00000000, + B01111111, B11111111, B11111110, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position B + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00000111, B00000000, B11100000, + B00000000, B11111111, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position C + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00001000, B00000000, B00010000, + B00000110, B00000000, B01100000, + B00000001, B11000011, B10000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position D + B00000000, B00000000, B00000000, + B00111111, B11111111, B11111100, + B00100000, B00000000, B00000100, + B00010000, B00000000, B00001000, + B00001100, B00000000, B00110000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000 }, + { B00000000, B00000000, B00000000, // Mouth position E + B00000000, B00111100, B00000000, + B00011111, B11000011, B11111000, + B00000011, B10000001, B11000000, + B00000000, B01111110, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 }, + { B00000000, B00111100, B00000000, // Mouth position F + B00000000, B11000011, B00000000, + B00001111, B00000000, B11110000, + B00000001, B00000000, B10000000, + B00000000, B11000011, B00000000, + B00000000, B00111100, B00000000, + B00000000, B00000000, B00000000, + B00000000, B00000000, B00000000 } }; + +// Animation sequences corresponding to each WAV. First number in +// each pair is a mouth bitmap index. Second number is the hold +// time (in frames). 255 marks end of list. +// There is no 'magic' here, the software is NOT deriving mouth +// position from the sound...the tables were determined by hand, +// just as animators do it. Further explanation here: +// http://www.idleworm.com/how/anm/03t/talk1.shtml + +static const uint8_t PROGMEM + seq1[] = { 0, 2, 2, 5, 5, 3, 3, 7, // "Beware, I live!" + 4, 5, 3, 4, 2, 5, 4, 3, + 3, 4, 1, 5, 3, 5, 255 }, + seq2[] = { 0, 1, 3, 5, 1, 5, 4, 2, // "I hunger!" + 3, 2, 1, 2, 4, 4, 1, 3, + 4, 2, 255 }, + seq3[] = { 0, 1, 1, 2, 3, 6, 2, 5, // "Run, coward!" + 0, 1, 4, 4, 5, 2, 1, 5, + 3, 6, 1, 4, 255 }; +static const uint8_t * const anim[] = { seq1, seq2, seq3 }; + +const uint8_t + blinkIndex[] PROGMEM = { 1, 2, 3, 4, 3, 2, 1 }; // Blink bitmap sequence +uint8_t + blinkCountdown = 100, // Countdown to next blink (in frames) + gazeCountdown = 75, // Countdown to next eye movement + gazeFrames = 50, // Duration of eye movement (smaller = faster) + mouthPos = 0, // Current image number for mouth + mouthCountdown = 10, // Countdown to next mouth change + newPos = 255, // New mouth position for current frame + *seq, // Animation sequence currently being played back + idx, // Current array index within animation sequence + prevBtn = 99, // Button # pressed on last loop() iteration + btnCount = 0; // Number of iterations same button has been held +int8_t + eyeX = 3, eyeY = 3, // Current eye position + newX = 3, newY = 3, // Next eye position + dX = 0, dY = 0; // Distance from prior to new position + +void setup() { + + Serial.begin(9600); + + Serial.println(F("WAV face")); + + if(!card.init()) Serial.println(F("Card init. failed!")); + if(!vol.init(card)) Serial.println(F("No partition!")); + if(!root.openRoot(vol)) Serial.println(F("Couldn't open dir")); + Serial.println(F("Files found:")); + root.ls(); + + // Seed random number generator from an unused analog input: + randomSeed(analogRead(A0)); + + // Initialize each matrix object: + for(uint8_t i=0; i<4; i++) { + matrix[i].begin(pgm_read_byte(&matrixAddr[i])); + // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: + // matrix[i].setRotation(3); + } + + // Enable pull-up resistors on three button inputs. + // Other end of each button then connects to GND. + for(uint8_t i=6; i<=8; i++) { + pinMode(i, INPUT); + digitalWrite(i, HIGH); // Enable pullup + } +} + +void loop() { + + uint8_t i; + + // Draw eyeball in current state of blinkyness (no pupil). + matrix[MATRIX_EYES].clear(); + matrix[MATRIX_EYES].drawBitmap(0, 0, + blinkImg[ + (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? + pgm_read_byte(&blinkIndex[blinkCountdown]) : // Yes, look up bitmap # + 0 // No, show bitmap 0 + ], 8, 8, LED_ON); + // Decrement blink counter. At end, set random time for next blink. + if(--blinkCountdown == 0) blinkCountdown = random(5, 180); + + if(--gazeCountdown <= gazeFrames) { + // Eyes are in motion - draw pupil at interim position + matrix[MATRIX_EYES].fillRect( + newX - (dX * gazeCountdown / gazeFrames), + newY - (dY * gazeCountdown / gazeFrames), + 2, 2, LED_OFF); + if(gazeCountdown == 0) { // Last frame? + eyeX = newX; eyeY = newY; // Yes. What's new is old, then... + do { // Pick random positions until one is within the eye circle + newX = random(7); newY = random(7); + dX = newX - 3; dY = newY - 3; + } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras + dX = newX - eyeX; // Horizontal distance to move + dY = newY - eyeY; // Vertical distance to move + gazeFrames = random(3, 15); // Duration of eye movement + gazeCountdown = random(gazeFrames, 120); // Count to end of next movement + } + } else { + // Not in motion yet -- draw pupil at current static position + matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); + } + + // Scan buttons 6, 7, 8 looking for first button pressed... + for(i=0; (i<3) && (digitalRead(i+6) == HIGH); i++); + + if(i < 3) { // Anything pressed? Yes! + if(i == prevBtn) { // Same as last time we checked? Good! + if(++btnCount == 3) { // 3 passes to 'debounce' button input + playfile((char *)pgm_read_word(&wavname[i])); // Start WAV + // Look up animation sequence # corresponding to this WAV... + seq = (uint8_t *)pgm_read_word(&anim[i]); + idx = 0; // Begin at first byte of data + newPos = pgm_read_byte(&seq[idx++]); // Initial mouth pos + mouthCountdown = pgm_read_byte(&seq[idx++]); // Hold time for pos + } + } else btnCount = 0; // Different button than before - start count over + prevBtn = i; + } else prevBtn = 99; // No buttons pressed + + if(newPos != 255) { // Is the mouth in motion? + if(--mouthCountdown == 0) { // Count down frames to next position + newPos = pgm_read_byte(&seq[idx++]); // New mouth position + if(newPos == 255) { // End of list? + mouthPos = 0; // Yes, set mouth to neutral position + } else { + mouthPos = newPos; // Set mouth to new position + mouthCountdown = pgm_read_byte(&seq[idx++]); // Read hold time + } + } + } else mouthPos = 0; // Mouth not in motion -- set to neutral position + + drawMouth(mouthImg[mouthPos]); + + // Refresh all matrices in one quick pass + for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); + + delay(20); +} + +// Draw mouth image across three adjacent displays +void drawMouth(const uint8_t *img) { + for(uint8_t i=0; i<3; i++) { + matrix[MATRIX_MOUTH_LEFT + i].clear(); + matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); + } +} + +// Open and start playing a WAV file +void playfile(const char *name) { + char filename[13]; // 8.3+NUL + + if(wave.isplaying) wave.stop(); // Stop any currently-playing WAV + + strcpy_P(filename, name); // Copy name out of PROGMEM into RAM + + if(!file.open(root, filename)) { + Serial.print(F("Couldn't open file ")); + Serial.println(filename); + return; + } + if(!wave.create(file)) { + Serial.println(F("Not a valid WAV")); + return; + } + wave.play(); +} + diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav new file mode 100644 index 0000000000000000000000000000000000000000..f27bd6f3bd914634ace3182349ce404c713cfdb2 GIT binary patch literal 20802 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

MPVIBi>ZPEZ6y{NWPHD)}|8P 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 literal 0 HcmV?d00001 diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav new file mode 100644 index 0000000000000000000000000000000000000000..babb864ecf9412bb83e60897d43a1afb59a19db9 GIT binary patch literal 16096 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 AIRF3v literal 0 HcmV?d00001 diff --git a/lib/Adafruit_LED_Backpack-1.1.6/library.properties b/lib/Adafruit_LED_Backpack-1.1.6/library.properties new file mode 100644 index 000000000..e04636907 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/library.properties @@ -0,0 +1,9 @@ +name=Adafruit LED Backpack Library +version=1.1.6 +author=Adafruit +maintainer=Adafruit +sentence=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks +paragraph=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks +category=Display +url=https://github.com/adafruit/Adafruit-LED-Backpack-Library +architectures=* diff --git a/lib/Adafruit_LED_Backpack-1.1.6/license.txt b/lib/Adafruit_LED_Backpack-1.1.6/license.txt new file mode 100644 index 000000000..fee1e9c31 --- /dev/null +++ b/lib/Adafruit_LED_Backpack-1.1.6/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2012 Adafruit Industries + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..f0e26146f --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,46 @@ +Thank you for opening an issue on an Adafruit Arduino library repository. To +improve the speed of resolution please review the following guidelines and +common troubleshooting steps below before creating the issue: + +- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use + the forums at http://forums.adafruit.com to ask questions and troubleshoot why + something isn't working as expected. In many cases the problem is a common issue + that you will more quickly receive help from the forum community. GitHub issues + are meant for known defects in the code. If you don't know if there is a defect + in the code then start with troubleshooting on the forum first. + +- **If following a tutorial or guide be sure you didn't miss a step.** Carefully + check all of the steps and commands to run have been followed. Consult the + forum if you're unsure or have questions about steps in a guide/tutorial. + +- **For Arduino projects check these very common issues to ensure they don't apply**: + + - For uploading sketches or communicating with the board make sure you're using + a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes + very hard to tell the difference between a data and charge cable! Try using the + cable with other devices or swapping to another cable to confirm it is not + the problem. + + - **Be sure you are supplying adequate power to the board.** Check the specs of + your board and plug in an external power supply. In many cases just + plugging a board into your computer is not enough to power it and other + peripherals. + + - **Double check all soldering joints and connections.** Flakey connections + cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. + + - **Ensure you are using an official Arduino or Adafruit board.** We can't + guarantee a clone board will have the same functionality and work as expected + with this code and don't support them. + +If you're sure this issue is a defect in the code and checked the steps above +please fill in the following fields to provide enough troubleshooting information. +You may delete the guideline and text above to just leave the following details: + +- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** + +- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO + VERSION HERE** + +- List the steps to reproduce the problem below (if possible attach a sketch or + copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..7b641eb86 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ +Thank you for creating a pull request to contribute to Adafruit's GitHub code! +Before you open the request please review the following guidelines and tips to +help it be more easily integrated: + +- **Describe the scope of your change--i.e. what the change does and what parts + of the code were modified.** This will help us understand any risks of integrating + the code. + +- **Describe any known limitations with your change.** For example if the change + doesn't apply to a supported platform of the library please mention it. + +- **Please run any tests or examples that can exercise your modified code.** We + strive to not break users of the code and running tests/examples helps with this + process. + +Thank you again for contributing! We will try to test and integrate the change +as soon as we can, but be aware we have many GitHub repositories to manage and +can't immediately respond to every request. There is no need to bump or check in +on a pull request (it will clutter the discussion of the request). + +Also don't be worried if the request is closed or not integrated--sometimes the +priorities of Adafruit's GitHub code (education, ease of use) might not match the +priorities of the pull request. Don't fret, the open source community thrives on +forks and GitHub makes it easy to keep your changes in a forked repo. + +After reviewing the guidelines above you can delete this text from the pull request. diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp new file mode 100644 index 000000000..570a33584 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp @@ -0,0 +1,729 @@ +/********************************************************************* +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen below must be included in any redistribution +*********************************************************************/ + +#ifdef __AVR__ + #include +#elif defined(ESP8266) || defined(ESP32) + #include +#else + #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) +#endif + +#if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) && !defined(ESP32) && !defined(__arc__) + #include +#endif + +#include + +#include +#include +#include "Adafruit_GFX.h" +#include "Adafruit_SSD1306.h" + +// the memory buffer for the LCD + +static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, +0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, +#if (SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH > 96*16) +0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, +0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, +0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, +0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, +0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, +0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, +0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, +0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, +0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, +0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, +0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, +0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, +0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, +0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, +0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +#if (SSD1306_LCDHEIGHT == 64) +0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, +0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, +0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, +0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, +0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, +0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, +0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, +0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, +0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, +0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, +0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, +0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, +0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, +0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, +0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#endif +#endif +}; + +#define ssd1306_swap(a, b) { int16_t t = a; a = b; b = t; } + +// the most basic function, set a single pixel +void Adafruit_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { + if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) + return; + + // check rotation, move pixel around if necessary + switch (getRotation()) { + case 1: + ssd1306_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + break; + case 3: + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + // x is which column + switch (color) + { + case WHITE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] |= (1 << (y&7)); break; + case BLACK: buffer[x+ (y/8)*SSD1306_LCDWIDTH] &= ~(1 << (y&7)); break; + case INVERSE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] ^= (1 << (y&7)); break; + } + +} + +Adafruit_SSD1306::Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + cs = CS; + rst = RST; + dc = DC; + sclk = SCLK; + sid = SID; + hwSPI = false; +} + +// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset +Adafruit_SSD1306::Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + dc = DC; + rst = RST; + cs = CS; + hwSPI = true; +} + +// initializer for I2C - we only indicate the reset pin! +Adafruit_SSD1306::Adafruit_SSD1306(int8_t reset) : +Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { + sclk = dc = cs = sid = -1; + rst = reset; +} + + +void Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) { + _vccstate = vccstate; + _i2caddr = i2caddr; + + // set pin directions + if (sid != -1){ + pinMode(dc, OUTPUT); + pinMode(cs, OUTPUT); +#ifdef HAVE_PORTREG + csport = portOutputRegister(digitalPinToPort(cs)); + cspinmask = digitalPinToBitMask(cs); + dcport = portOutputRegister(digitalPinToPort(dc)); + dcpinmask = digitalPinToBitMask(dc); +#endif + if (!hwSPI){ + // set pins for software-SPI + pinMode(sid, OUTPUT); + pinMode(sclk, OUTPUT); +#ifdef HAVE_PORTREG + clkport = portOutputRegister(digitalPinToPort(sclk)); + clkpinmask = digitalPinToBitMask(sclk); + mosiport = portOutputRegister(digitalPinToPort(sid)); + mosipinmask = digitalPinToBitMask(sid); +#endif + } + if (hwSPI){ + SPI.begin(); +#ifdef SPI_HAS_TRANSACTION + SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); +#else + SPI.setClockDivider (4); +#endif + } + } + else + { + // I2C Init + Wire.begin(); +#ifdef __SAM3X8E__ + // Force 400 KHz I2C, rawr! (Uses pins 20, 21 for SDA, SCL) + TWI1->TWI_CWGR = 0; + TWI1->TWI_CWGR = ((VARIANT_MCK / (2 * 400000)) - 4) * 0x101; +#endif + } + if ((reset) && (rst >= 0)) { + // Setup reset pin direction (used by both SPI and I2C) + pinMode(rst, OUTPUT); + digitalWrite(rst, HIGH); + // VDD (3.3V) goes high at start, lets just chill for a ms + delay(1); + // bring reset low + digitalWrite(rst, LOW); + // wait 10ms + delay(10); + // bring out of reset + digitalWrite(rst, HIGH); + // turn on VCC (9V?) + } + + // Init sequence + ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE + ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 + ssd1306_command(0x80); // the suggested ratio 0x80 + + ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 + ssd1306_command(SSD1306_LCDHEIGHT - 1); + + ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 + ssd1306_command(0x0); // no offset + ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 + ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x10); } + else + { ssd1306_command(0x14); } + ssd1306_command(SSD1306_MEMORYMODE); // 0x20 + ssd1306_command(0x00); // 0x0 act like ks0108 + ssd1306_command(SSD1306_SEGREMAP | 0x1); + ssd1306_command(SSD1306_COMSCANDEC); + + #if defined SSD1306_128_32 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x02); + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + ssd1306_command(0x8F); + +#elif defined SSD1306_128_64 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x12); + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x9F); } + else + { ssd1306_command(0xCF); } + +#elif defined SSD1306_96_16 + ssd1306_command(SSD1306_SETCOMPINS); // 0xDA + ssd1306_command(0x2); //ada x12 + ssd1306_command(SSD1306_SETCONTRAST); // 0x81 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x10); } + else + { ssd1306_command(0xAF); } + +#endif + + ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 + if (vccstate == SSD1306_EXTERNALVCC) + { ssd1306_command(0x22); } + else + { ssd1306_command(0xF1); } + ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB + ssd1306_command(0x40); + ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 + ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 + + ssd1306_command(SSD1306_DEACTIVATE_SCROLL); + + ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel +} + + +void Adafruit_SSD1306::invertDisplay(uint8_t i) { + if (i) { + ssd1306_command(SSD1306_INVERTDISPLAY); + } else { + ssd1306_command(SSD1306_NORMALDISPLAY); + } +} + +void Adafruit_SSD1306::ssd1306_command(uint8_t c) { + if (sid != -1) + { + // SPI +#ifdef HAVE_PORTREG + *csport |= cspinmask; + *dcport &= ~dcpinmask; + *csport &= ~cspinmask; +#else + digitalWrite(cs, HIGH); + digitalWrite(dc, LOW); + digitalWrite(cs, LOW); +#endif + fastSPIwrite(c); +#ifdef HAVE_PORTREG + *csport |= cspinmask; +#else + digitalWrite(cs, HIGH); +#endif + } + else + { + // I2C + uint8_t control = 0x00; // Co = 0, D/C = 0 + Wire.beginTransmission(_i2caddr); + Wire.write(control); + Wire.write(c); + Wire.endTransmission(); + } +} + +// startscrollright +// Activate a right handed scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X00); + ssd1306_command(0XFF); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrollleft +// Activate a right handed scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrollleft(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_LEFT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X00); + ssd1306_command(0XFF); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrolldiagright +// Activate a diagonal scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrolldiagright(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); + ssd1306_command(0X00); + ssd1306_command(SSD1306_LCDHEIGHT); + ssd1306_command(SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X01); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +// startscrolldiagleft +// Activate a diagonal scroll for rows start through stop +// Hint, the display is 16 rows tall. To scroll the whole display, run: +// display.scrollright(0x00, 0x0F) +void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ + ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); + ssd1306_command(0X00); + ssd1306_command(SSD1306_LCDHEIGHT); + ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); + ssd1306_command(0X00); + ssd1306_command(start); + ssd1306_command(0X00); + ssd1306_command(stop); + ssd1306_command(0X01); + ssd1306_command(SSD1306_ACTIVATE_SCROLL); +} + +void Adafruit_SSD1306::stopscroll(void){ + ssd1306_command(SSD1306_DEACTIVATE_SCROLL); +} + +// Dim the display +// dim = true: display is dimmed +// dim = false: display is normal +void Adafruit_SSD1306::dim(boolean dim) { + uint8_t contrast; + + if (dim) { + contrast = 0; // Dimmed display + } else { + if (_vccstate == SSD1306_EXTERNALVCC) { + contrast = 0x9F; + } else { + contrast = 0xCF; + } + } + // the range of contrast to too small to be really useful + // it is useful to dim the display + ssd1306_command(SSD1306_SETCONTRAST); + ssd1306_command(contrast); +} + +void Adafruit_SSD1306::display(void) { + ssd1306_command(SSD1306_COLUMNADDR); + ssd1306_command(0); // Column start address (0 = reset) + ssd1306_command(SSD1306_LCDWIDTH-1); // Column end address (127 = reset) + + ssd1306_command(SSD1306_PAGEADDR); + ssd1306_command(0); // Page start address (0 = reset) + #if SSD1306_LCDHEIGHT == 64 + ssd1306_command(7); // Page end address + #endif + #if SSD1306_LCDHEIGHT == 32 + ssd1306_command(3); // Page end address + #endif + #if SSD1306_LCDHEIGHT == 16 + ssd1306_command(1); // Page end address + #endif + + if (sid != -1) + { + // SPI +#ifdef HAVE_PORTREG + *csport |= cspinmask; + *dcport |= dcpinmask; + *csport &= ~cspinmask; +#else + digitalWrite(cs, HIGH); + digitalWrite(dc, HIGH); + digitalWrite(cs, LOW); +#endif + + for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { + fastSPIwrite(buffer[i]); + } +#ifdef HAVE_PORTREG + *csport |= cspinmask; +#else + digitalWrite(cs, HIGH); +#endif + } + else + { + // save I2C bitrate +#ifdef TWBR + uint8_t twbrbackup = TWBR; + TWBR = 12; // upgrade to 400KHz! +#endif + + //Serial.println(TWBR, DEC); + //Serial.println(TWSR & 0x3, DEC); + + // I2C + for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { + // send a bunch of data in one xmission + Wire.beginTransmission(_i2caddr); + WIRE_WRITE(0x40); + for (uint8_t x=0; x<16; x++) { + WIRE_WRITE(buffer[i]); + i++; + } + i--; + Wire.endTransmission(); + } +#ifdef TWBR + TWBR = twbrbackup; +#endif + } +} + +// clear everything +void Adafruit_SSD1306::clearDisplay(void) { + memset(buffer, 0, (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8)); +} + + +inline void Adafruit_SSD1306::fastSPIwrite(uint8_t d) { + + if(hwSPI) { + (void)SPI.transfer(d); + } else { + for(uint8_t bit = 0x80; bit; bit >>= 1) { +#ifdef HAVE_PORTREG + *clkport &= ~clkpinmask; + if(d & bit) *mosiport |= mosipinmask; + else *mosiport &= ~mosipinmask; + *clkport |= clkpinmask; +#else + digitalWrite(sclk, LOW); + if(d & bit) digitalWrite(sid, HIGH); + else digitalWrite(sid, LOW); + digitalWrite(sclk, HIGH); +#endif + } + } +} + +void Adafruit_SSD1306::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { + boolean bSwap = false; + switch(rotation) { + case 0: + // 0 degree rotation, do nothing + break; + case 1: + // 90 degree rotation, swap x & y for rotation, then invert x + bSwap = true; + ssd1306_swap(x, y); + x = WIDTH - x - 1; + break; + case 2: + // 180 degree rotation, invert x and y - then shift y around for height. + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + x -= (w-1); + break; + case 3: + // 270 degree rotation, swap x & y for rotation, then invert y and adjust y for w (not to become h) + bSwap = true; + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + y -= (w-1); + break; + } + + if(bSwap) { + drawFastVLineInternal(x, y, w, color); + } else { + drawFastHLineInternal(x, y, w, color); + } +} + +void Adafruit_SSD1306::drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) { + // Do bounds/limit checks + if(y < 0 || y >= HEIGHT) { return; } + + // make sure we don't try to draw below 0 + if(x < 0) { + w += x; + x = 0; + } + + // make sure we don't go off the edge of the display + if( (x + w) > WIDTH) { + w = (WIDTH - x); + } + + // if our width is now negative, punt + if(w <= 0) { return; } + + // set up the pointer for movement through the buffer + register uint8_t *pBuf = buffer; + // adjust the buffer pointer for the current row + pBuf += ((y/8) * SSD1306_LCDWIDTH); + // and offset x columns in + pBuf += x; + + register uint8_t mask = 1 << (y&7); + + switch (color) + { + case WHITE: while(w--) { *pBuf++ |= mask; }; break; + case BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; + case INVERSE: while(w--) { *pBuf++ ^= mask; }; break; + } +} + +void Adafruit_SSD1306::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { + bool bSwap = false; + switch(rotation) { + case 0: + break; + case 1: + // 90 degree rotation, swap x & y for rotation, then invert x and adjust x for h (now to become w) + bSwap = true; + ssd1306_swap(x, y); + x = WIDTH - x - 1; + x -= (h-1); + break; + case 2: + // 180 degree rotation, invert x and y - then shift y around for height. + x = WIDTH - x - 1; + y = HEIGHT - y - 1; + y -= (h-1); + break; + case 3: + // 270 degree rotation, swap x & y for rotation, then invert y + bSwap = true; + ssd1306_swap(x, y); + y = HEIGHT - y - 1; + break; + } + + if(bSwap) { + drawFastHLineInternal(x, y, h, color); + } else { + drawFastVLineInternal(x, y, h, color); + } +} + + +void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color) { + + // do nothing if we're off the left or right side of the screen + if(x < 0 || x >= WIDTH) { return; } + + // make sure we don't try to draw below 0 + if(__y < 0) { + // __y is negative, this will subtract enough from __h to account for __y being 0 + __h += __y; + __y = 0; + + } + + // make sure we don't go past the height of the display + if( (__y + __h) > HEIGHT) { + __h = (HEIGHT - __y); + } + + // if our height is now negative, punt + if(__h <= 0) { + return; + } + + // this display doesn't need ints for coordinates, use local byte registers for faster juggling + register uint8_t y = __y; + register uint8_t h = __h; + + + // set up the pointer for fast movement through the buffer + register uint8_t *pBuf = buffer; + // adjust the buffer pointer for the current row + pBuf += ((y/8) * SSD1306_LCDWIDTH); + // and offset x columns in + pBuf += x; + + // do the first partial byte, if necessary - this requires some masking + register uint8_t mod = (y&7); + if(mod) { + // mask off the high n bits we want to set + mod = 8-mod; + + // note - lookup table results in a nearly 10% performance improvement in fill* functions + // register uint8_t mask = ~(0xFF >> (mod)); + static uint8_t premask[8] = {0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; + register uint8_t mask = premask[mod]; + + // adjust the mask if we're not going to reach the end of this byte + if( h < mod) { + mask &= (0XFF >> (mod-h)); + } + + switch (color) + { + case WHITE: *pBuf |= mask; break; + case BLACK: *pBuf &= ~mask; break; + case INVERSE: *pBuf ^= mask; break; + } + + // fast exit if we're done here! + if(h= 8) { + if (color == INVERSE) { // separate copy of the code so we don't impact performance of the black/white write version with an extra comparison per loop + do { + *pBuf=~(*pBuf); + + // adjust the buffer forward 8 rows worth of data + pBuf += SSD1306_LCDWIDTH; + + // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) + h -= 8; + } while(h >= 8); + } + else { + // store a local value to work with + register uint8_t val = (color == WHITE) ? 255 : 0; + + do { + // write our value in + *pBuf = val; + + // adjust the buffer forward 8 rows worth of data + pBuf += SSD1306_LCDWIDTH; + + // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) + h -= 8; + } while(h >= 8); + } + } + + // now do the final partial byte, if necessary + if(h) { + mod = h & 7; + // this time we want to mask the low bits of the byte, vs the high bits we did above + // register uint8_t mask = (1 << mod) - 1; + // note - lookup table results in a nearly 10% performance improvement in fill* functions + static uint8_t postmask[8] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F }; + register uint8_t mask = postmask[mod]; + switch (color) + { + case WHITE: *pBuf |= mask; break; + case BLACK: *pBuf &= ~mask; break; + case INVERSE: *pBuf ^= mask; break; + } + } +} diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h new file mode 100644 index 000000000..1d43dfddf --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h @@ -0,0 +1,186 @@ +/********************************************************************* +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ +#ifndef _Adafruit_SSD1306_H_ +#define _Adafruit_SSD1306_H_ + +#if ARDUINO >= 100 + #include "Arduino.h" + #define WIRE_WRITE Wire.write +#else + #include "WProgram.h" + #define WIRE_WRITE Wire.send +#endif + +#if defined(__SAM3X8E__) + typedef volatile RwReg PortReg; + typedef uint32_t PortMask; + #define HAVE_PORTREG +#elif defined(ARDUINO_ARCH_SAMD) +// not supported +#elif defined(ESP8266) || defined(ESP32) || defined(ARDUINO_STM32_FEATHER) || defined(__arc__) + typedef volatile uint32_t PortReg; + typedef uint32_t PortMask; +#elif defined(__AVR__) + typedef volatile uint8_t PortReg; + typedef uint8_t PortMask; + #define HAVE_PORTREG +#else + // chances are its 32 bit so assume that + typedef volatile uint32_t PortReg; + typedef uint32_t PortMask; +#endif + +#include +#include + +#define BLACK 0 +#define WHITE 1 +#define INVERSE 2 + +#define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D +// Address for 128x32 is 0x3C +// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded) + +/*========================================================================= + SSD1306 Displays + ----------------------------------------------------------------------- + The driver is used in multiple displays (128x64, 128x32, etc.). + Select the appropriate display below to create an appropriately + sized framebuffer, etc. + + SSD1306_128_64 128x64 pixel display + + SSD1306_128_32 128x32 pixel display + + SSD1306_96_16 + + -----------------------------------------------------------------------*/ + #define SSD1306_128_64 +// #define SSD1306_128_32 +// #define SSD1306_96_16 +/*=========================================================================*/ + +#if defined SSD1306_128_64 && defined SSD1306_128_32 + #error "Only one SSD1306 display can be specified at once in SSD1306.h" +#endif +#if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16 + #error "At least one SSD1306 display must be specified in SSD1306.h" +#endif + +#if defined SSD1306_128_64 + #define SSD1306_LCDWIDTH 128 + #define SSD1306_LCDHEIGHT 64 +#endif +#if defined SSD1306_128_32 + #define SSD1306_LCDWIDTH 128 + #define SSD1306_LCDHEIGHT 32 +#endif +#if defined SSD1306_96_16 + #define SSD1306_LCDWIDTH 96 + #define SSD1306_LCDHEIGHT 16 +#endif + +#define SSD1306_SETCONTRAST 0x81 +#define SSD1306_DISPLAYALLON_RESUME 0xA4 +#define SSD1306_DISPLAYALLON 0xA5 +#define SSD1306_NORMALDISPLAY 0xA6 +#define SSD1306_INVERTDISPLAY 0xA7 +#define SSD1306_DISPLAYOFF 0xAE +#define SSD1306_DISPLAYON 0xAF + +#define SSD1306_SETDISPLAYOFFSET 0xD3 +#define SSD1306_SETCOMPINS 0xDA + +#define SSD1306_SETVCOMDETECT 0xDB + +#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 +#define SSD1306_SETPRECHARGE 0xD9 + +#define SSD1306_SETMULTIPLEX 0xA8 + +#define SSD1306_SETLOWCOLUMN 0x00 +#define SSD1306_SETHIGHCOLUMN 0x10 + +#define SSD1306_SETSTARTLINE 0x40 + +#define SSD1306_MEMORYMODE 0x20 +#define SSD1306_COLUMNADDR 0x21 +#define SSD1306_PAGEADDR 0x22 + +#define SSD1306_COMSCANINC 0xC0 +#define SSD1306_COMSCANDEC 0xC8 + +#define SSD1306_SEGREMAP 0xA0 + +#define SSD1306_CHARGEPUMP 0x8D + +#define SSD1306_EXTERNALVCC 0x1 +#define SSD1306_SWITCHCAPVCC 0x2 + +// Scrolling #defines +#define SSD1306_ACTIVATE_SCROLL 0x2F +#define SSD1306_DEACTIVATE_SCROLL 0x2E +#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 +#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 +#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 +#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 +#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A + +class Adafruit_SSD1306 : public Adafruit_GFX { + public: + Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); + Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS); + Adafruit_SSD1306(int8_t RST = -1); + + void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS, bool reset=true); + void ssd1306_command(uint8_t c); + + void clearDisplay(void); + void invertDisplay(uint8_t i); + void display(); + + void startscrollright(uint8_t start, uint8_t stop); + void startscrollleft(uint8_t start, uint8_t stop); + + void startscrolldiagright(uint8_t start, uint8_t stop); + void startscrolldiagleft(uint8_t start, uint8_t stop); + void stopscroll(void); + + void dim(boolean dim); + + void drawPixel(int16_t x, int16_t y, uint16_t color); + + virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + + private: + int8_t _i2caddr, _vccstate, sid, sclk, dc, rst, cs; + void fastSPIwrite(uint8_t c); + + boolean hwSPI; +#ifdef HAVE_PORTREG + PortReg *mosiport, *clkport, *csport, *dcport; + PortMask mosipinmask, clkpinmask, cspinmask, dcpinmask; +#endif + + inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); + inline void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) __attribute__((always_inline)); + +}; + +#endif /* _Adafruit_SSD1306_H_ */ diff --git a/lib/Adafruit_SSD1306-1.1.2/README.md b/lib/Adafruit_SSD1306-1.1.2/README.md new file mode 100644 index 000000000..d76bb285c --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/README.md @@ -0,0 +1,32 @@ +# Adafruit_SSD1306 + + +## Compatibility + +MCU | Tested Works | Doesn't Work | Not Tested | Notes +------------------ | :----------: | :----------: | :---------: | ----- +Atmega328 @ 16MHz | X | | | +Atmega328 @ 12MHz | X | | | +Atmega32u4 @ 16MHz | X | | | +Atmega32u4 @ 8MHz | X | | | +ESP8266 | X | | | change OLED_RESET to different pin if using default I2C pins D4/D5. +Atmega2560 @ 16MHz | X | | | +ATSAM3X8E | X | | | +ATSAM21D | X | | | +ATtiny85 @ 16MHz | | X | | +ATtiny85 @ 8MHz | | X | | +Intel Curie @ 32MHz | | | X | +STM32F2 | | | X | + + * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini + * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V + * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 + * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro + * ESP8266 : Adafruit Huzzah + * ATmega2560 @ 16MHz : Arduino Mega + * ATSAM3X8E : Arduino Due + * ATSAM21D : Arduino Zero, M0 Pro + * ATtiny85 @ 16MHz : Adafruit Trinket 5V + * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V + + diff --git a/lib/Adafruit_SSD1306-1.1.2/README.txt b/lib/Adafruit_SSD1306-1.1.2/README.txt new file mode 100644 index 000000000..420cc153c --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/README.txt @@ -0,0 +1,24 @@ +This is a library for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +These displays use SPI to communicate, 4 or 5 pins are required to +interface + +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. +Scrolling code contributed by Michael Gregg +BSD license, check license.txt for more information +All text above must be included in any redistribution + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_SSD1306. Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h + +Place the Adafruit_SSD1306 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE. + +You will also have to download the Adafruit GFX Graphics core which does all the circles, text, rectangles, etc. You can get it from +https://github.com/adafruit/Adafruit-GFX-Library +and download/install that library as well \ No newline at end of file diff --git a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino new file mode 100644 index 000000000..b3b8bfa9a --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino @@ -0,0 +1,375 @@ +/********************************************************************* +This is an example for our Monochrome OLEDs based on SSD1306 drivers + + Pick one up today in the adafruit shop! + ------> http://www.adafruit.com/category/63_98 + +This example is for a 128x32 size display using I2C to communicate +3 pins are required to interface (2 I2C and one reset) + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +#define OLED_RESET 4 +Adafruit_SSD1306 display(OLED_RESET); + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 32) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + delay(1); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); + delay(1); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + delay(1); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + delay(1); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x32 size display using SPI to communicate +4 or 5 pins are required to interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +// If using software SPI (the default case): +#define OLED_MOSI 9 +#define OLED_CLK 10 +#define OLED_DC 11 +#define OLED_CS 12 +#define OLED_RESET 13 +Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); + +/* Uncomment this block to use hardware SPI +#define OLED_DC 6 +#define OLED_CS 7 +#define OLED_RESET 8 +Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); +*/ + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 32) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC); + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x64 size display using I2C to communicate +3 pins are required to interface (2 I2C and one reset) + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +#define OLED_RESET 4 +Adafruit_SSD1306 display(OLED_RESET); + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 64) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64) + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + delay(1); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); + delay(1); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + delay(1); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + delay(1); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + delay(1); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i http://www.adafruit.com/category/63_98 + +This example is for a 128x64 size display using SPI to communicate +4 or 5 pins are required to interface + +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. +BSD license, check license.txt for more information +All text above, and the splash screen must be included in any redistribution +*********************************************************************/ + +#include +#include +#include +#include + +// If using software SPI (the default case): +#define OLED_MOSI 9 +#define OLED_CLK 10 +#define OLED_DC 11 +#define OLED_CS 12 +#define OLED_RESET 13 +Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); + +/* Uncomment this block to use hardware SPI +#define OLED_DC 6 +#define OLED_CS 7 +#define OLED_RESET 8 +Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); +*/ + +#define NUMFLAKES 10 +#define XPOS 0 +#define YPOS 1 +#define DELTAY 2 + +#define LOGO16_GLCD_HEIGHT 16 +#define LOGO16_GLCD_WIDTH 16 +static const unsigned char PROGMEM logo16_glcd_bmp[] = +{ B00000000, B11000000, + B00000001, B11000000, + B00000001, B11000000, + B00000011, B11100000, + B11110011, B11100000, + B11111110, B11111000, + B01111110, B11111111, + B00110011, B10011111, + B00011111, B11111100, + B00001101, B01110000, + B00011011, B10100000, + B00111111, B11100000, + B00111111, B11110000, + B01111100, B11110000, + B01110000, B01110000, + B00000000, B00110000 }; + +#if (SSD1306_LCDHEIGHT != 64) +#error("Height incorrect, please fix Adafruit_SSD1306.h!"); +#endif + +void setup() { + Serial.begin(9600); + + // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) + display.begin(SSD1306_SWITCHCAPVCC); + // init done + + // Show image buffer on the display hardware. + // Since the buffer is intialized with an Adafruit splashscreen + // internally, this will display the splashscreen. + display.display(); + delay(2000); + + // Clear the buffer. + display.clearDisplay(); + + // draw a single pixel + display.drawPixel(10, 10, WHITE); + // Show the display buffer on the hardware. + // NOTE: You _must_ call display after making any drawing commands + // to make them visible on the display hardware! + display.display(); + delay(2000); + display.clearDisplay(); + + // draw many lines + testdrawline(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw rectangles + testdrawrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw multiple rectangles + testfillrect(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw mulitple circles + testdrawcircle(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw a white circle, 10 pixel radius + display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); + display.display(); + delay(2000); + display.clearDisplay(); + + testdrawroundrect(); + delay(2000); + display.clearDisplay(); + + testfillroundrect(); + delay(2000); + display.clearDisplay(); + + testdrawtriangle(); + delay(2000); + display.clearDisplay(); + + testfilltriangle(); + delay(2000); + display.clearDisplay(); + + // draw the first ~12 characters in the font + testdrawchar(); + display.display(); + delay(2000); + display.clearDisplay(); + + // draw scrolling text + testscrolltext(); + delay(2000); + display.clearDisplay(); + + // text display tests + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + display.println("Hello, world!"); + display.setTextColor(BLACK, WHITE); // 'inverted' text + display.println(3.141592); + display.setTextSize(2); + display.setTextColor(WHITE); + display.print("0x"); display.println(0xDEADBEEF, HEX); + display.display(); + delay(2000); + display.clearDisplay(); + + // miniature bitmap display + display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); + display.display(); + + // invert the display + display.invertDisplay(true); + delay(1000); + display.invertDisplay(false); + delay(1000); + display.clearDisplay(); + + // draw a bitmap icon and 'animate' movement + testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); +} + + +void loop() { + +} + + +void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { + uint8_t icons[NUMFLAKES][3]; + + // initialize + for (uint8_t f=0; f< NUMFLAKES; f++) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + + Serial.print("x: "); + Serial.print(icons[f][XPOS], DEC); + Serial.print(" y: "); + Serial.print(icons[f][YPOS], DEC); + Serial.print(" dy: "); + Serial.println(icons[f][DELTAY], DEC); + } + + while (1) { + // draw each icon + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); + } + display.display(); + delay(200); + + // then erase it + move it + for (uint8_t f=0; f< NUMFLAKES; f++) { + display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); + // move it + icons[f][YPOS] += icons[f][DELTAY]; + // if its gone, reinit + if (icons[f][YPOS] > display.height()) { + icons[f][XPOS] = random(display.width()); + icons[f][YPOS] = 0; + icons[f][DELTAY] = random(5) + 1; + } + } + } +} + + +void testdrawchar(void) { + display.setTextSize(1); + display.setTextColor(WHITE); + display.setCursor(0,0); + + for (uint8_t i=0; i < 168; i++) { + if (i == '\n') continue; + display.write(i); + if ((i > 0) && (i % 21 == 0)) + display.println(); + } + display.display(); +} + +void testdrawcircle(void) { + for (int16_t i=0; i0; i-=5) { + display.fillTriangle(display.width()/2, display.height()/2-i, + display.width()/2-i, display.height()/2+i, + display.width()/2+i, display.height()/2+i, WHITE); + if (color == WHITE) color = BLACK; + else color = WHITE; + display.display(); + } +} + +void testdrawroundrect(void) { + for (int16_t i=0; i=0; i-=4) { + display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=display.width()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); + display.display(); + } + for (int16_t i=display.height()-1; i>=0; i-=4) { + display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); + display.display(); + } + delay(250); + + display.clearDisplay(); + for (int16_t i=0; i +sentence=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! +paragraph=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! +category=Display +url=https://github.com/adafruit/Adafruit_SSD1306 +architectures=* diff --git a/lib/Adafruit_SSD1306-1.1.2/license.txt b/lib/Adafruit_SSD1306-1.1.2/license.txt new file mode 100644 index 000000000..f6a0f22b8 --- /dev/null +++ b/lib/Adafruit_SSD1306-1.1.2/license.txt @@ -0,0 +1,26 @@ +Software License Agreement (BSD License) + +Copyright (c) 2012, 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: +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. +3. Neither the name of the copyright holders nor the +names of its contributors may be used to endorse or promote products +derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 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. diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp new file mode 100644 index 000000000..08a41f78a --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp @@ -0,0 +1,315 @@ +// Based on the work by DFRobot + +#include "LiquidCrystal_I2C.h" +#include +#if defined(ARDUINO) && ARDUINO >= 100 + +#include "Arduino.h" + +#define printIIC(args) Wire.write(args) +inline size_t LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); + return 1; +} + +#else +#include "WProgram.h" + +#define printIIC(args) Wire.send(args) +inline void LiquidCrystal_I2C::write(uint8_t value) { + send(value, Rs); +} + +#endif +#include "Wire.h" + + + +// When the display powers up, it is configured as follows: +// +// 1. Display clear +// 2. Function set: +// DL = 1; 8-bit interface data +// N = 0; 1-line display +// F = 0; 5x8 dot character font +// 3. Display on/off control: +// D = 0; Display off +// C = 0; Cursor off +// B = 0; Blinking off +// 4. Entry mode set: +// I/D = 1; Increment by 1 +// S = 0; No shift +// +// Note, however, that resetting the Arduino doesn't reset the LCD, so we +// can't assume that its in that state when a sketch starts (and the +// LiquidCrystal constructor is called). + +LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows) +{ + _Addr = lcd_Addr; + _cols = lcd_cols; + _rows = lcd_rows; + _backlightval = LCD_NOBACKLIGHT; +} + +void LiquidCrystal_I2C::init(){ + init_priv(); +} + +void LiquidCrystal_I2C::init_priv() +{ + Wire.begin(); + _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; + begin(_cols, _rows); +} + +void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { + if (lines > 1) { + _displayfunction |= LCD_2LINE; + } + _numlines = lines; + + // for some 1 line displays you can select a 10 pixel high font + if ((dotsize != 0) && (lines == 1)) { + _displayfunction |= LCD_5x10DOTS; + } + + // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! + // according to datasheet, we need at least 40ms after power rises above 2.7V + // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 + delay(50); + + // Now we pull both RS and R/W low to begin commands + expanderWrite(_backlightval); // reset expanderand turn backlight off (Bit 8 =1) + delay(1000); + + //put the LCD into 4 bit mode + // this is according to the hitachi HD44780 datasheet + // figure 24, pg 46 + + // we start in 8bit mode, try to set 4 bit mode + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // second try + write4bits(0x03 << 4); + delayMicroseconds(4500); // wait min 4.1ms + + // third go! + write4bits(0x03 << 4); + delayMicroseconds(150); + + // finally, set to 4-bit interface + write4bits(0x02 << 4); + + + // set # lines, font size, etc. + command(LCD_FUNCTIONSET | _displayfunction); + + // turn the display on with no cursor or blinking default + _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; + display(); + + // clear it off + clear(); + + // Initialize to default text direction (for roman languages) + _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; + + // set the entry mode + command(LCD_ENTRYMODESET | _displaymode); + + home(); + +} + +/********** high level commands, for the user! */ +void LiquidCrystal_I2C::clear(){ + command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::home(){ + command(LCD_RETURNHOME); // set cursor position to zero + delayMicroseconds(2000); // this command takes a long time! +} + +void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){ + int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; + if ( row > _numlines ) { + row = _numlines-1; // we count rows starting w/0 + } + command(LCD_SETDDRAMADDR | (col + row_offsets[row])); +} + +// Turn the display on/off (quickly) +void LiquidCrystal_I2C::noDisplay() { + _displaycontrol &= ~LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::display() { + _displaycontrol |= LCD_DISPLAYON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turns the underline cursor on/off +void LiquidCrystal_I2C::noCursor() { + _displaycontrol &= ~LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::cursor() { + _displaycontrol |= LCD_CURSORON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// Turn on and off the blinking cursor +void LiquidCrystal_I2C::noBlink() { + _displaycontrol &= ~LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} +void LiquidCrystal_I2C::blink() { + _displaycontrol |= LCD_BLINKON; + command(LCD_DISPLAYCONTROL | _displaycontrol); +} + +// These commands scroll the display without changing the RAM +void LiquidCrystal_I2C::scrollDisplayLeft(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); +} +void LiquidCrystal_I2C::scrollDisplayRight(void) { + command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); +} + +// This is for text that flows Left to Right +void LiquidCrystal_I2C::leftToRight(void) { + _displaymode |= LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This is for text that flows Right to Left +void LiquidCrystal_I2C::rightToLeft(void) { + _displaymode &= ~LCD_ENTRYLEFT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'right justify' text from the cursor +void LiquidCrystal_I2C::autoscroll(void) { + _displaymode |= LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// This will 'left justify' text from the cursor +void LiquidCrystal_I2C::noAutoscroll(void) { + _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; + command(LCD_ENTRYMODESET | _displaymode); +} + +// Allows us to fill the first 8 CGRAM locations +// with custom characters +void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) { + location &= 0x7; // we only have 8 locations 0-7 + command(LCD_SETCGRAMADDR | (location << 3)); + for (int i=0; i<8; i++) { + write(charmap[i]); + } +} + +// Turn the (optional) backlight off/on +void LiquidCrystal_I2C::noBacklight(void) { + _backlightval=LCD_NOBACKLIGHT; + expanderWrite(0); +} + +void LiquidCrystal_I2C::backlight(void) { + _backlightval=LCD_BACKLIGHT; + expanderWrite(0); +} + + + +/*********** mid level commands, for sending data/cmds */ + +inline void LiquidCrystal_I2C::command(uint8_t value) { + send(value, 0); +} + + +/************ low level data pushing commands **********/ + +// write either command or data +void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { + uint8_t highnib=value&0xf0; + uint8_t lownib=(value<<4)&0xf0; + write4bits((highnib)|mode); + write4bits((lownib)|mode); +} + +void LiquidCrystal_I2C::write4bits(uint8_t value) { + expanderWrite(value); + pulseEnable(value); +} + +void LiquidCrystal_I2C::expanderWrite(uint8_t _data){ + Wire.beginTransmission(_Addr); + printIIC((int)(_data) | _backlightval); + Wire.endTransmission(); +} + +void LiquidCrystal_I2C::pulseEnable(uint8_t _data){ + expanderWrite(_data | En); // En high + delayMicroseconds(1); // enable pulse must be >450ns + + expanderWrite(_data & ~En); // En low + delayMicroseconds(50); // commands need > 37us to settle +} + + +// Alias functions + +void LiquidCrystal_I2C::cursor_on(){ + cursor(); +} + +void LiquidCrystal_I2C::cursor_off(){ + noCursor(); +} + +void LiquidCrystal_I2C::blink_on(){ + blink(); +} + +void LiquidCrystal_I2C::blink_off(){ + noBlink(); +} + +void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){ + createChar(char_num, rows); +} + +void LiquidCrystal_I2C::setBacklight(uint8_t new_val){ + if(new_val){ + backlight(); // turn backlight on + }else{ + noBacklight(); // turn backlight off + } +} + +void LiquidCrystal_I2C::printstr(const char c[]){ + //This function is not identical to the function used for "real" I2C displays + //it's here so the user sketch doesn't have to be changed + print(c); +} + + +// unsupported API functions +void LiquidCrystal_I2C::off(){} +void LiquidCrystal_I2C::on(){} +void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {} +uint8_t LiquidCrystal_I2C::status(){return 0;} +uint8_t LiquidCrystal_I2C::keypad (){return 0;} +uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;} +void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end){} +void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_row_end){} +void LiquidCrystal_I2C::setContrast(uint8_t new_val){} + + diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h new file mode 100644 index 000000000..faf19fbea --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h @@ -0,0 +1,126 @@ +//YWROBOT +#ifndef LiquidCrystal_I2C_h +#define LiquidCrystal_I2C_h + +#include +#include "Print.h" +#include + +// commands +#define LCD_CLEARDISPLAY 0x01 +#define LCD_RETURNHOME 0x02 +#define LCD_ENTRYMODESET 0x04 +#define LCD_DISPLAYCONTROL 0x08 +#define LCD_CURSORSHIFT 0x10 +#define LCD_FUNCTIONSET 0x20 +#define LCD_SETCGRAMADDR 0x40 +#define LCD_SETDDRAMADDR 0x80 + +// flags for display entry mode +#define LCD_ENTRYRIGHT 0x00 +#define LCD_ENTRYLEFT 0x02 +#define LCD_ENTRYSHIFTINCREMENT 0x01 +#define LCD_ENTRYSHIFTDECREMENT 0x00 + +// flags for display on/off control +#define LCD_DISPLAYON 0x04 +#define LCD_DISPLAYOFF 0x00 +#define LCD_CURSORON 0x02 +#define LCD_CURSOROFF 0x00 +#define LCD_BLINKON 0x01 +#define LCD_BLINKOFF 0x00 + +// flags for display/cursor shift +#define LCD_DISPLAYMOVE 0x08 +#define LCD_CURSORMOVE 0x00 +#define LCD_MOVERIGHT 0x04 +#define LCD_MOVELEFT 0x00 + +// flags for function set +#define LCD_8BITMODE 0x10 +#define LCD_4BITMODE 0x00 +#define LCD_2LINE 0x08 +#define LCD_1LINE 0x00 +#define LCD_5x10DOTS 0x04 +#define LCD_5x8DOTS 0x00 + +// flags for backlight control +#define LCD_BACKLIGHT 0x08 +#define LCD_NOBACKLIGHT 0x00 + +#define En B00000100 // Enable bit +#define Rw B00000010 // Read/Write bit +#define Rs B00000001 // Register select bit + +class LiquidCrystal_I2C : public Print { +public: + LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); + void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); + void clear(); + void home(); + void noDisplay(); + void display(); + void noBlink(); + void blink(); + void noCursor(); + void cursor(); + void scrollDisplayLeft(); + void scrollDisplayRight(); + void printLeft(); + void printRight(); + void leftToRight(); + void rightToLeft(); + void shiftIncrement(); + void shiftDecrement(); + void noBacklight(); + void backlight(); + void autoscroll(); + void noAutoscroll(); + void createChar(uint8_t, uint8_t[]); + void setCursor(uint8_t, uint8_t); +#if defined(ARDUINO) && ARDUINO >= 100 + virtual size_t write(uint8_t); +#else + virtual void write(uint8_t); +#endif + void command(uint8_t); + void init(); + +////compatibility API function aliases +void blink_on(); // alias for blink() +void blink_off(); // alias for noBlink() +void cursor_on(); // alias for cursor() +void cursor_off(); // alias for noCursor() +void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() +void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() +void printstr(const char[]); + +////Unsupported API functions (not implemented in this library) +uint8_t status(); +void setContrast(uint8_t new_val); +uint8_t keypad(); +void setDelay(int,int); +void on(); +void off(); +uint8_t init_bargraph(uint8_t graphtype); +void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); +void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); + + +private: + void init_priv(); + void send(uint8_t, uint8_t); + void write4bits(uint8_t); + void expanderWrite(uint8_t); + void pulseEnable(uint8_t); + uint8_t _Addr; + uint8_t _displayfunction; + uint8_t _displaycontrol; + uint8_t _displaymode; + uint8_t _numlines; + uint8_t _cols; + uint8_t _rows; + uint8_t _backlightval; +}; + +#endif diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o new file mode 100644 index 0000000000000000000000000000000000000000..bca78e0d24dfc30341ef0d5e91cf127ee829e126 GIT binary patch literal 41564 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 literal 0 HcmV?d00001 diff --git a/lib/LiquidCrystal_I2C-1.1.3/README.md b/lib/LiquidCrystal_I2C-1.1.3/README.md new file mode 100644 index 000000000..aee58d3a2 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/README.md @@ -0,0 +1,2 @@ +# LiquidCrystal_I2C +LiquidCrystal Arduino library for the DFRobot I2C LCD displays diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde new file mode 100644 index 000000000..492612d71 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde @@ -0,0 +1,70 @@ +//YWROBOT +//Compatible with the Arduino IDE 1.0 +//Library version:1.1 +#include +#include + +#if defined(ARDUINO) && ARDUINO >= 100 +#define printByte(args) write(args); +#else +#define printByte(args) print(args,BYTE); +#endif + +uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; +uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; +uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; +uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0}; +uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0}; +uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0}; +uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0}; +uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4}; + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.backlight(); + + lcd.createChar(0, bell); + lcd.createChar(1, note); + lcd.createChar(2, clock); + lcd.createChar(3, heart); + lcd.createChar(4, duck); + lcd.createChar(5, check); + lcd.createChar(6, cross); + lcd.createChar(7, retarrow); + lcd.home(); + + lcd.print("Hello world..."); + lcd.setCursor(0, 1); + lcd.print(" i "); + lcd.printByte(3); + lcd.print(" arduinos!"); + delay(5000); + displayKeyCodes(); + +} + +// display all keycodes +void displayKeyCodes(void) { + uint8_t i = 0; + while (1) { + lcd.clear(); + lcd.print("Codes 0x"); lcd.print(i, HEX); + lcd.print("-0x"); lcd.print(i+16, HEX); + lcd.setCursor(0, 1); + for (int j=0; j<16; j++) { + lcd.printByte(i+j); + } + i+=16; + + delay(4000); + } +} + +void loop() +{ + +} + diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde new file mode 100644 index 000000000..6dfdee8f8 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde @@ -0,0 +1,28 @@ +//YWROBOT +//Compatible with the Arduino IDE 1.0 +//Library version:1.1 +#include +#include + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.init(); + // Print a message to the LCD. + lcd.backlight(); + lcd.setCursor(3,0); + lcd.print("Hello, world!"); + lcd.setCursor(2,1); + lcd.print("Ywrobot Arduino!"); + lcd.setCursor(0,2); + lcd.print("Arduino LCM IIC 2004"); + lcd.setCursor(2,3); + lcd.print("Power By Ec-yuan!"); +} + + +void loop() +{ +} diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde new file mode 100644 index 000000000..fdbbc64eb --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde @@ -0,0 +1,34 @@ +/* + * Displays text sent over the serial port (e.g. from the Serial Monitor) on + * an attached LCD. + * YWROBOT + *Compatible with the Arduino IDE 1.0 + *Library version:1.1 + */ +#include +#include + +LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display + +void setup() +{ + lcd.init(); // initialize the lcd + lcd.backlight(); + Serial.begin(9600); +} + +void loop() +{ + // when characters arrive over the serial port... + if (Serial.available()) { + // wait a bit for the entire message to arrive + delay(100); + // clear the screen + lcd.clear(); + // read all the available characters + while (Serial.available() > 0) { + // display each character to the LCD + lcd.write(Serial.read()); + } + } +} diff --git a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt new file mode 100644 index 000000000..8c450a9e9 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt @@ -0,0 +1,46 @@ +########################################### +# Syntax Coloring Map For LiquidCrystal_I2C +########################################### + +########################################### +# Datatypes (KEYWORD1) +########################################### + +LiquidCrystal_I2C KEYWORD1 + +########################################### +# Methods and Functions (KEYWORD2) +########################################### +init KEYWORD2 +begin KEYWORD2 +clear KEYWORD2 +home KEYWORD2 +noDisplay KEYWORD2 +display KEYWORD2 +noBlink KEYWORD2 +blink KEYWORD2 +noCursor KEYWORD2 +cursor KEYWORD2 +scrollDisplayLeft KEYWORD2 +scrollDisplayRight KEYWORD2 +leftToRight KEYWORD2 +rightToLeft KEYWORD2 +shiftIncrement KEYWORD2 +shiftDecrement KEYWORD2 +noBacklight KEYWORD2 +backlight KEYWORD2 +autoscroll KEYWORD2 +noAutoscroll KEYWORD2 +createChar KEYWORD2 +setCursor KEYWORD2 +print KEYWORD2 +blink_on KEYWORD2 +blink_off KEYWORD2 +cursor_on KEYWORD2 +cursor_off KEYWORD2 +setBacklight KEYWORD2 +load_custom_character KEYWORD2 +printstr KEYWORD2 +########################################### +# Constants (LITERAL1) +########################################### diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.json b/lib/LiquidCrystal_I2C-1.1.3/library.json new file mode 100644 index 000000000..5a23a3989 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/library.json @@ -0,0 +1,15 @@ +{ + "name": "LiquidCrystal_I2C", + "keywords": "LCD, liquidcrystal, I2C", + "description": "A library for DFRobot I2C LCD displays", + "repository": + { + "type": "git", + "url": "https://github.com/marcoschwartz/LiquidCrystal_I2C.git" + }, + "frameworks": "arduino", + "platforms": + [ + "atmelavr" + ] +} \ No newline at end of file diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.properties b/lib/LiquidCrystal_I2C-1.1.3/library.properties new file mode 100644 index 000000000..ad8b02c15 --- /dev/null +++ b/lib/LiquidCrystal_I2C-1.1.3/library.properties @@ -0,0 +1,9 @@ +name=LiquidCrystal_I2C +version=1.1.2 +author=Frank de Brabander +maintainer=Marco Schwartz +sentence=A library for I2C LCD displays. +paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES. +category=Display +url=https://github.com/marcoschwartz/LiquidCrystal_I2C +architectures=* diff --git a/lib/TasmotaTFT-1.0.1/README.txt b/lib/TasmotaTFT-1.0.1/README.txt new file mode 100644 index 000000000..7c5905014 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/README.txt @@ -0,0 +1,21 @@ +This is a library for the Adafruit ILI9341 display products + +This library works with the Adafruit 2.8" Touch Shield V2 (SPI) + ----> 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 + +To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341. + +Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE + +Also requires the Adafruit_GFX library for Arduino. diff --git a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino new file mode 100644 index 000000000..e523a92d5 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino @@ -0,0 +1,360 @@ +/*************************************************** + This is our GFX example 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 "SPI.h" +#include "Adafruit_GFX.h" +#include "TasmotaTFT.h" + +#define TFT_DC 16 +#define TFT_CS 15 + +TasmotaTFT tft = TasmotaTFT(ILI9341, TFT_CS, TFT_DC); + +void setup() { + Serial.begin(115200); + Serial.println("ILI9341 Test!"); + + tft.begin(); + + // read diagnostics (optional but can help debug problems) + uint8_t x = tft.readcommand8(TFT_RDMODE); + Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDMADCTL); + Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDPIXFMT); + Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDIMGFMT); + Serial.print("Image Format: 0x"); Serial.println(x, HEX); + x = tft.readcommand8(TFT_RDSELFDIAG); + Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); + + Serial.println(F("Benchmark Time (microseconds)")); + delay(10); + Serial.print(F("Screen fill ")); + Serial.println(testFillScreen()); + delay(500); + + Serial.print(F("Text ")); + Serial.println(testText()); + delay(3000); + + Serial.print(F("Lines ")); + Serial.println(testLines(TFT_CYAN)); + delay(500); + + Serial.print(F("Horiz/Vert Lines ")); + Serial.println(testFastLines(TFT_RED, TFT_BLUE)); + delay(500); + + Serial.print(F("Rectangles (outline) ")); + Serial.println(testRects(TFT_GREEN)); + delay(500); + + Serial.print(F("Rectangles (filled) ")); + Serial.println(testFilledRects(TFT_YELLOW, TFT_MAGENTA)); + delay(500); + + Serial.print(F("Circles (filled) ")); + Serial.println(testFilledCircles(10, TFT_MAGENTA)); + + Serial.print(F("Circles (outline) ")); + Serial.println(testCircles(10, TFT_WHITE)); + delay(500); + + Serial.print(F("Triangles (outline) ")); + Serial.println(testTriangles()); + delay(500); + + Serial.print(F("Triangles (filled) ")); + Serial.println(testFilledTriangles()); + delay(500); + + Serial.print(F("Rounded rects (outline) ")); + Serial.println(testRoundRects()); + delay(500); + + Serial.print(F("Rounded rects (filled) ")); + Serial.println(testFilledRoundRects()); + delay(500); + + Serial.println(F("Done!")); + +} + + +void loop(void) { + for(uint8_t rotation=0; rotation<4; rotation++) { + tft.setRotation(rotation); + testText(); + delay(1000); + } +} + +unsigned long testFillScreen() { + unsigned long start = micros(); + tft.fillScreen(TFT_BLACK); + yield(); + tft.fillScreen(TFT_RED); + yield(); + tft.fillScreen(TFT_GREEN); + yield(); + tft.fillScreen(TFT_BLUE); + yield(); + tft.fillScreen(TFT_BLACK); + yield(); + return micros() - start; +} + +unsigned long testText() { + tft.fillScreen(TFT_BLACK); + unsigned long start = micros(); + tft.setCursor(0, 0); + tft.setTextColor(TFT_WHITE); tft.setTextSize(1); + tft.println("Hello World!"); + tft.setTextColor(TFT_YELLOW); tft.setTextSize(2); + tft.println(1234.56); + tft.setTextColor(TFT_RED); tft.setTextSize(3); + tft.println(0xDEADBEEF, HEX); + tft.println(); + tft.setTextColor(TFT_GREEN); + tft.setTextSize(5); + tft.println("Groop"); + tft.setTextSize(2); + tft.println("I implore thee,"); + tft.setTextSize(1); + tft.println("my foonting turlingdromes."); + tft.println("And hooptiously drangle me"); + tft.println("with crinkly bindlewurdles,"); + tft.println("Or I will rend thee"); + tft.println("in the gobberwarts"); + tft.println("with my blurglecruncheon,"); + tft.println("see if I don't!"); + return micros() - start; +} + +unsigned long testLines(uint16_t color) { + unsigned long start, t; + int x1, y1, x2, y2, + w = tft.width(), + h = tft.height(); + + tft.fillScreen(TFT_BLACK); + yield(); + + x1 = y1 = 0; + y2 = h - 1; + start = micros(); + for(x2=0; x20; i-=6) { + i2 = i / 2; + start = micros(); + tft.fillRect(cx-i2, cy-i2, i, i, color1); + t += micros() - start; + // Outlines are not included in timing results + tft.drawRect(cx-i2, cy-i2, i, i, color2); + yield(); + } + + return t; +} + +unsigned long testFilledCircles(uint8_t radius, uint16_t color) { + unsigned long start; + int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; + + tft.fillScreen(TFT_BLACK); + start = micros(); + for(x=radius; x10; i-=5) { + start = micros(); + tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(0, i*10, i*10)); + t += micros() - start; + tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, + tft.color565(i*10, i*10, 0)); + yield(); + } + + return t; +} + +unsigned long testRoundRects() { + unsigned long start; + int w, i, i2, + cx = tft.width() / 2 - 1, + cy = tft.height() / 2 - 1; + + tft.fillScreen(TFT_BLACK); + w = min(tft.width(), tft.height()); + start = micros(); + for(i=0; i20; i-=6) { + i2 = i / 2; + tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); + yield(); + } + + return micros() - start; +} \ No newline at end of file diff --git a/lib/TasmotaTFT-1.0.1/keywords.txt b/lib/TasmotaTFT-1.0.1/keywords.txt new file mode 100644 index 000000000..50ac35436 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/keywords.txt @@ -0,0 +1,41 @@ +####################################### +# Syntax Coloring Map for TasmotaTFT +# (esp8266) +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +TasmotaTFT KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +setScrollStart KEYWORD2 +setScrollMargins KEYWORD2 +setAddrWindow KEYWORD2 +pushColor KEYWORD2 +fillScreen KEYWORD2 +drawPixel KEYWORD2 +drawFastVLine KEYWORD2 +drawFastHLine KEYWORD2 +fillRect KEYWORD2 +setRotation KEYWORD2 +invertDisplay KEYWORD2 +showDisplay KEYWORD2 +color565 KEYWORD2 +readdata KEYWORD2 +readcommand8 KEYWORD2 +spiwrite KEYWORD2 +writecommand KEYWORD2 +writedata KEYWORD2 +commandList KEYWORD2 +spiread KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/lib/TasmotaTFT-1.0.1/library.json b/lib/TasmotaTFT-1.0.1/library.json new file mode 100644 index 000000000..f5cd5216f --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/library.json @@ -0,0 +1,15 @@ +{ + "name": "TasmotaTFT", + "version": "1.0.1", + "keywords": [ + "spi", "io", "tft", "TasmotaTFT" + ], + "description": "Library for ILI9341, ILI9481 and ILI9486 displays", + "repository": + { + "type": "git", + "url": "https://github.com/arendst/Sonoff-Tasmota/lib/TasmotaTFT" + }, + "frameworks": "arduino", + "platforms": "espressif8266" +} diff --git a/lib/TasmotaTFT-1.0.1/library.properties b/lib/TasmotaTFT-1.0.1/library.properties new file mode 100644 index 000000000..f012244b3 --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/library.properties @@ -0,0 +1,9 @@ +name=TasmotaTFT +version=1.0.1 +author=Theo Arends +maintainer=Theo Arends +sentence=Library for ILI9341, ILI9481 and ILI9486 displays +paragraph= +category=Display +url= +architectures=esp8266 diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp new file mode 100644 index 000000000..ad6ebc9be --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp @@ -0,0 +1,616 @@ +/* + TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota + + Copyright (C) 2018 Adafruit and Theo Arends + + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/*********************************************************************************************\ + * See original Adafruit ILI9341 license text below + * + * Based in Adafruit_ILI9341 v1.0.11 + * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD using hardware SPI only + * + * These displays use hardware SPI to communicate, 4 or 5 pins are required to interface (RST is optional) +\*********************************************************************************************/ + +#include "TasmotaTFT.h" +#include +#include "pins_arduino.h" +#include "wiring_private.h" +#include + +static inline void spi_begin(void) __attribute__((always_inline)); +static inline void spi_begin(void) { + SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0)); +} +static inline void spi_end(void) __attribute__((always_inline)); +static inline void spi_end(void) { + SPI.endTransaction(); +} + +struct _sSize +{ + int16_t width; + int16_t height; +}; +_sSize _size[TFT_MAX] = { + {240, 320}, // ILI9340 / ILI9341 + {320, 480}, // ILI9481 / HX8357B + {320, 480} // ILI9486 +}; + +TasmotaTFT::TasmotaTFT(int8_t m, int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(_size[m].width, _size[m].height) { + _mod = m; + _w = _size[m].width; + _h = _size[m].height; + _cs = cs; + _dc = dc; + _rst = rst; + _mosi = _sclk = 0; +} + +void TasmotaTFT::writecommand(uint8_t c) +{ + digitalWrite(_dc, LOW); + digitalWrite(_sclk, LOW); + digitalWrite(_cs, LOW); + SPI.transfer(c); + digitalWrite(_cs, HIGH); +} + +void TasmotaTFT::writedata(uint8_t c) +{ + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(c); + digitalWrite(_cs, HIGH); +} + +void TasmotaTFT::begin(void) +{ + pinMode(_dc, OUTPUT); + digitalWrite(_dc, LOW); + pinMode(_cs, OUTPUT); + digitalWrite(_cs, HIGH); + + SPI.begin(); + + // toggle RST low to reset + if (_rst > 0) { + pinMode(_rst, OUTPUT); + digitalWrite(_rst, HIGH); + delay(100); + digitalWrite(_rst, LOW); + delay(100); + digitalWrite(_rst, HIGH); + delay(200); + } + + spi_begin(); + + if (_mod == ILI9341) { // 320 x 240 + writecommand(0xEF); // Display Supplier dependant + writedata(0x03); + writedata(0x80); + writedata(0x02); + + writecommand(0xCF); // Display Supplier dependant + writedata(0x00); + writedata(0XC1); + writedata(0X30); + + writecommand(0xED); // Display Supplier dependant + writedata(0x64); + writedata(0x03); + writedata(0X12); + writedata(0X81); + + writecommand(0xE8); // Display Supplier dependant + writedata(0x85); + writedata(0x00); + writedata(0x78); + + writecommand(0xCB); // Display Supplier dependant + writedata(0x39); + writedata(0x2C); + writedata(0x00); + writedata(0x34); + writedata(0x02); + + writecommand(0xF7); // Display Supplier dependant + writedata(0x20); + + writecommand(0xEA); // Display Supplier dependant + writedata(0x00); + writedata(0x00); + + writecommand(0xC0); // Power control 1 + writedata(0x23); // VRH[5:0] + + writecommand(0xC1); // Power control 2 + writedata(0x10); // SAP[2:0];BT[3:0] + + writecommand(0xC5); // VCM control 1 + writedata(0x3e); // Contrast + writedata(0x28); + + writecommand(0xC7); // VCM control 2 + writedata(0x86); // -- + + writecommand(0x36); // Memory Access Control + writedata(0x48); + + writecommand(0x3A); // Pixel Format + writedata(0x55); + + writecommand(0xB1); // Frame Control in Normal Mode + writedata(0x00); + writedata(0x18); + + writecommand(0xB6); // Display Function Control + writedata(0x08); + writedata(0x82); + writedata(0x27); + + writecommand(0xF2); // 3Gamma Function Disable + writedata(0x00); + + writecommand(0x26); // Gamma curve selected + writedata(0x01); + + writecommand(0xE0); // Positive Gamma + writedata(0x0F); + writedata(0x31); + writedata(0x2B); + writedata(0x0C); + writedata(0x0E); + writedata(0x08); + writedata(0x4E); + writedata(0xF1); + writedata(0x37); + writedata(0x07); + writedata(0x10); + writedata(0x03); + writedata(0x0E); + writedata(0x09); + writedata(0x00); + + writecommand(0xE1); // Negative Gamma + writedata(0x00); + writedata(0x0E); + writedata(0x14); + writedata(0x03); + writedata(0x11); + writedata(0x07); + writedata(0x31); + writedata(0xC1); + writedata(0x48); + writedata(0x08); + writedata(0x0F); + writedata(0x0C); + writedata(0x31); + writedata(0x36); + writedata(0x0F); + + writecommand(0x11); // Exit Sleep + spi_end(); + delay(120); + spi_begin(); + writecommand(0x29); // Display on + } + + else if (_mod == ILI9481) { // 480 x 320 + writecommand(0x11); // Exit Sleep + + spi_end(); + delay(20); + spi_begin(); + + writecommand(0xD0); // Power Setting + writedata(0x07); + writedata(0x42); + writedata(0x18); + + writecommand(0xD1); // VCOM Control + writedata(0x00); + writedata(0x07); + writedata(0x10); + + writecommand(0xD2); // Power Setting for Normal Mode + writedata(0x01); + writedata(0x02); + + writecommand(0xC0); // Panel Driving Setting + writedata(0x10); + writedata(0x3B); + writedata(0x00); + writedata(0x02); + writedata(0x11); + + writecommand(0xC5); // Frame Rate and Inversion Control + writedata(0x08); // 0x03 + + writecommand(0xC8); // Gamma Setting + writedata(0x00); + writedata(0x32); + writedata(0x36); + writedata(0x45); + writedata(0x06); + writedata(0x16); + writedata(0x37); + writedata(0x75); + writedata(0x77); + writedata(0x54); + writedata(0x0C); + writedata(0x00); + + writecommand(0x36); // Address Mode + writedata(0x0A); + + writecommand(0x3A); // Pixel Format + writedata(0x55); + + writecommand(0x2A); // Column Address + writedata(0x00); + writedata(0x00); + writedata(0x01); + writedata(0x3F); + + writecommand(0x2B); // Page Address + writedata(0x00); + writedata(0x00); + writedata(0x01); + writedata(0xDF); // 0xE0 + + spi_end(); + delay(120); + spi_begin(); + writecommand(0x29); // Display on + } + + else if (_mod == ILI9486) { // 480 x 320 + writecommand(0x01); // Soft reset +// writedata(0x00); + + spi_end(); + delay(50); + spi_begin(); + + writecommand(0x28); // Display off +// writedata(0x00); + + writecommand(0xC0); // Power Control 1 + writedata(0x0d); + writedata(0x0d); + + writecommand(0xC1); // Power Control 2 + writedata(0x43); + writedata(0x00); + + writecommand(0xC2); // Power Control 3 + writedata(0x00); + + writecommand(0xC5); // VCOM Control + writedata(0x00); + writedata(0x48); + + writecommand(0xB6); // Display Function Control + writedata(0x00); + writedata(0x22); // 0x42 = Rotate display 180 deg. + writedata(0x3B); + + writecommand(0xE0); // PGAMCTRL (Positive Gamma Control) + writedata(0x0f); + writedata(0x24); + writedata(0x1c); + writedata(0x0a); + writedata(0x0f); + writedata(0x08); + writedata(0x43); + writedata(0x88); + writedata(0x32); + writedata(0x0f); + writedata(0x10); + writedata(0x06); + writedata(0x0f); + writedata(0x07); + writedata(0x00); + + writecommand(0xE1); // NGAMCTRL (Negative Gamma Control) + writedata(0x0F); + writedata(0x38); + writedata(0x30); + writedata(0x09); + writedata(0x0f); + writedata(0x0f); + writedata(0x4e); + writedata(0x77); + writedata(0x3c); + writedata(0x07); + writedata(0x10); + writedata(0x05); + writedata(0x23); + writedata(0x1b); + writedata(0x00); + + writecommand(0x20); // Display Inversion OFF, 0x21 = ON + + writecommand(0x36); // Memory Access Control + writedata(0x0A); + + writecommand(0x3A); // Interface Pixel Format + writedata(0x55); + + writecommand(0x11); // Exit Sleep + spi_end(); + delay(150); + spi_begin(); + writecommand(0x29); // Display on + } + + spi_end(); +} + +void TasmotaTFT::setScrollStart(uint16_t start) +{ + spi_begin(); + writecommand(0x37); + writedata(start>>8); + writedata(start); + spi_end(); +} + +void TasmotaTFT::setScrollMargins(uint16_t top, uint16_t bottom) +{ + uint16_t height = _height - (top + bottom); + + spi_begin(); + writecommand(0x33); + writedata(top>>8); + writedata(top); + writedata(height>>8); + writedata(height); + writedata(bottom>>8); + writedata(bottom); + spi_end(); +} + +void TasmotaTFT::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) +{ + writecommand(TFT_CASET); // Column addr set + writedata(x0 >> 8); + writedata(x0 & 0xFF); // XSTART + writedata(x1 >> 8); + writedata(x1 & 0xFF); // XEND + + writecommand(TFT_PASET); // Row addr set + writedata(y0>>8); + writedata(y0); // YSTART + writedata(y1>>8); + writedata(y1); // YEND + + writecommand(TFT_RAMWR); // write to RAM +} + +void TasmotaTFT::pushColor(uint16_t color) +{ + spi_begin(); + + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(color >> 8); + SPI.transfer(color); + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawPixel(int16_t x, int16_t y, uint16_t color) +{ + if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; + + spi_begin(); + + setAddrWindow(x,y,x+1,y+1); + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + SPI.transfer(color >> 8); + SPI.transfer(color); + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawFastVLine(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; + + spi_begin(); + + setAddrWindow(x, y, x, y+h-1); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + while (h--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) +{ + // Rudimentary clipping + if((x >= _width) || (y >= _height)) return; + if((x+w-1) >= _width) w = _width-x; + + spi_begin(); + + setAddrWindow(x, y, x+w-1, y); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + while (w--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +void TasmotaTFT::fillScreen(uint16_t color) +{ + fillRect(0, 0, _width, _height, color); +} + +// fill a rectangle +void TasmotaTFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) +{ + // rudimentary clipping (drawChar w/big text requires this) + if((x >= _width) || (y >= _height)) return; + if((x + w - 1) >= _width) w = _width - x; + if((y + h - 1) >= _height) h = _height - y; + + spi_begin(); + + setAddrWindow(x, y, x+w-1, y+h-1); + uint8_t hi = color >> 8, lo = color; + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + for(y=h; y>0; y--) { + for(x=w; x>0; x--) { + SPI.transfer(hi); + SPI.transfer(lo); + } + } + digitalWrite(_cs, HIGH); + + spi_end(); +} + +// Pass 8-bit (each) R,G,B, get back 16-bit packed color +uint16_t TasmotaTFT::color565(uint8_t r, uint8_t g, uint8_t b) +{ + return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); +} + +#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 TasmotaTFT::setRotation(uint8_t m) +{ + rotation = m % 4; // can't be higher than 3 + switch (rotation) { + case 0: + m = (MADCTL_MX | MADCTL_BGR); + _width = _w; + _height = _h; + break; + case 1: + m = (MADCTL_MV | MADCTL_BGR); + _width = _h; + _height = _w; + break; + case 2: + m = (MADCTL_MY | MADCTL_BGR); + _width = _w; + _height = _h; + break; + case 3: + m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); + _width = _h; + _height = _w; + break; + } + + spi_begin(); + writecommand(TFT_MADCTL); + writedata(m); + spi_end(); +} + +void TasmotaTFT::invertDisplay(boolean i) +{ + spi_begin(); + writecommand(i ? TFT_INVON : TFT_INVOFF); + spi_end(); +} + +void TasmotaTFT::showDisplay(boolean i) +{ + spi_begin(); + writecommand(i ? TFT_DISPON : TFT_DISPOFF); + spi_end(); +} + +uint8_t TasmotaTFT::readdata(void) +{ + digitalWrite(_dc, HIGH); + digitalWrite(_cs, LOW); + uint8_t r = SPI.transfer(0x00); + digitalWrite(_cs, HIGH); + + return r; +} + +uint8_t TasmotaTFT::readcommand8(uint8_t c, uint8_t index) +{ + spi_begin(); + + digitalWrite(_dc, LOW); // command + digitalWrite(_cs, LOW); + SPI.transfer(0xD9); // woo sekret command? + digitalWrite(_dc, HIGH); // data + SPI.transfer(0x10 + index); + digitalWrite(_cs, HIGH); + + digitalWrite(_dc, LOW); // command + digitalWrite(_sclk, LOW); + digitalWrite(_cs, LOW); + SPI.transfer(c); + + digitalWrite(_dc, HIGH); // data + uint8_t r = SPI.transfer(0x00); + digitalWrite(_cs, HIGH); + + spi_end(); + return r; +} + +/*************************************************** + 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 + ****************************************************/ diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h new file mode 100644 index 000000000..2577bb08d --- /dev/null +++ b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h @@ -0,0 +1,137 @@ +/* + TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota + + Copyright (C) 2018 Adafruit and Theo Arends + + This library is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _TasmotaTFT_h +#define _TasmotaTFT_h +/*********************************************************************************************\ + * See original Adafruit ILI9341 license text below + * + * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD + * + * These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional) +\*********************************************************************************************/ + +#include "Arduino.h" +#include "Print.h" +#include + +// Supported TFT LCD drivers +#define ILI9340 0 // 320 x 240 +#define ILI9341 0 // 320 x 240 +#define ILI9481 1 // 480 x 320 +#define HX8357B 1 // 480 x 320 +#define ILI9486 2 // 480 x 320 +#define TFT_MAX 3 + +// Common driver registers +#define TFT_RDMODE 0x0A // Get Power Mode +#define TFT_RDMADCTL 0x0B // Get Address Mode +#define TFT_RDPIXFMT 0x0C // Get Pixel Format +#define TFT_RDIMGFMT 0x0D // Get Display Mode +#define TFT_RDSELFDIAG 0x0F // Get Diagnostic Result + +#define TFT_INVOFF 0x20 // Exit Invert Mode +#define TFT_INVON 0x21 // Enter Invert Mode +#define TFT_DISPOFF 0x28 // Set Display Off +#define TFT_DISPON 0x29 // Set Display on + +#define TFT_CASET 0x2A // Set Column Address +#define TFT_PASET 0x2B // Set Page Address +#define TFT_RAMWR 0x2C // Write Memory Start + +#define TFT_MADCTL 0x36 // Set Address Mode + +// Color definitions +#define TFT_BLACK 0x0000 /* 0, 0, 0 */ +#define TFT_NAVY 0x000F /* 0, 0, 128 */ +#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ +#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ +#define TFT_MAROON 0x7800 /* 128, 0, 0 */ +#define TFT_PURPLE 0x780F /* 128, 0, 128 */ +#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ +#define TFT_LIGHTGREY 0xC618 /* 192, 192, 192 */ +#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ +#define TFT_BLUE 0x001F /* 0, 0, 255 */ +#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ +#define TFT_CYAN 0x07FF /* 0, 255, 255 */ +#define TFT_RED 0xF800 /* 255, 0, 0 */ +#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ +#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ +#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ +#define TFT_ORANGE 0xFD20 /* 255, 165, 0 */ +#define TFT_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ +#define TFT_PINK 0xF81F + +class TasmotaTFT : public Adafruit_GFX { + public: + TasmotaTFT(int8_t _MODEL, int8_t _CS, int8_t _DC, int8_t _RST = -1); + void begin(void); + void setScrollStart(uint16_t start); + void setScrollMargins(uint16_t top, uint16_t bottom); + void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); + void pushColor(uint16_t color); + void fillScreen(uint16_t color); + void drawPixel(int16_t x, int16_t y, uint16_t color); + void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); + void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); + void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); + void setRotation(uint8_t r); + void invertDisplay(boolean i); + void showDisplay(boolean i); + uint16_t color565(uint8_t r, uint8_t g, uint8_t b); + + /* These are not for current use, 8-bit protocol only! */ + uint8_t readdata(void); + uint8_t readcommand8(uint8_t reg, uint8_t index = 0); + + void spiwrite(uint8_t); + void writecommand(uint8_t c); + void writedata(uint8_t d); + void commandList(uint8_t *addr); + uint8_t spiread(void); + + private: + uint8_t tabcolor; + uint8_t _mod; + int16_t _w; + int16_t _h; + int32_t _cs; + int32_t _dc; + int32_t _rst; + int32_t _mosi; + int32_t _miso; + int32_t _sclk; +}; + +#endif // _TasmotaTFT_h + +/*************************************************** + 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 + ****************************************************/ diff --git a/lib/process-control-master/LICENSE b/lib/process-control-master/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/lib/process-control-master/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/process-control-master/PID.cpp b/lib/process-control-master/PID.cpp new file mode 100644 index 000000000..b19cfa64c --- /dev/null +++ b/lib/process-control-master/PID.cpp @@ -0,0 +1,168 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * See Timeprop.h for Usage + * + **/ + + +#include "PID.h" + +PID::PID() { + m_initialised = 0; + m_last_sample_time = 0; + m_last_pv_update_time = 0; +} + +void PID::initialise( double setpoint, double prop_band, double t_integral, double t_derivative, + double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ) { + + m_setpoint = setpoint; + m_prop_band = prop_band; + m_t_integral = t_integral; + m_t_derivative = t_derivative; + m_integral_default = integral_default; + m_max_interval = max_interval; + m_smooth_factor= smooth_factor; + m_mode_auto= mode_auto; + m_manual_op = manual_op; + + m_initialised = 1; + +} + + +/* called regularly to calculate and return new power value */ +double PID::tick( unsigned long nowSecs ) { + double power; + unsigned char integral_locked = 0; + double factor; + if (m_initialised && m_last_pv_update_time) { + // we have been initialised and have been given a pv value + // check whether too long has elapsed since pv was last updated + if (m_max_interval > 0 && nowSecs - m_last_pv_update_time > m_max_interval) { + // yes, too long has elapsed since last PV update so go to fallback power + power = m_manual_op; + } else { + // is this the first time through here? + if (m_last_sample_time) { + // not first time + unsigned long delta_t = nowSecs - m_last_sample_time; // seconds + if (delta_t <= 0 || delta_t > m_max_interval) { + // too long since last sample so leave integral as is and set deriv to zero + m_derivative = 0; + } else { + if (m_smooth_factor > 0) { + // A derivative smoothing factor has been supplied + // smoothing time constant is td/factor but with a min of delta_t to stop overflows + int ts = m_t_derivative/m_smooth_factor > delta_t ? m_t_derivative/m_smooth_factor : delta_t; + factor = 1.0/(ts/delta_t); + } else { + // no integral smoothing so factor is 1, this makes smoothed_value the previous pv + factor = 1.0; + } + double delta_v = (m_pv - m_smoothed_value) * factor; + m_smoothed_value = m_smoothed_value + delta_v; + m_derivative = m_t_derivative * delta_v/delta_t; + // lock the integral if abs(previous integral + error) > prop_band/2 + // as this means that P + I is outside the linear region so power will be 0 or full + // also lock if control is disabled + double error = m_pv - m_setpoint; + double pbo2 = m_prop_band/2.0; + double epi = error + m_integral; + if (epi < 0.0) epi = -epi; // abs value of error + m_integral + if (epi < pbo2 && m_mode_auto) { + integral_locked = 0; + m_integral = m_integral + error * delta_t/m_t_integral; + // clamp to +- 0.5 prop band widths so that it cannot push the zero power point outside the pb + if ( m_integral < -pbo2 ) { + m_integral = -pbo2; + } else if (m_integral > pbo2) { + m_integral = pbo2; + } + integral_locked = 1; + } + } + + } else { + // first time through, initialise context data + m_smoothed_value = m_pv; + // setup the integral term so that the power out would be integral_default if pv=setpoint + m_integral = (0.5 - m_integral_default)*m_prop_band; + m_derivative = 0.0; + } + + double proportional = m_pv - m_setpoint; + power = -1.0/m_prop_band * (proportional + m_integral + m_derivative) + 0.5; + if (power < 0.0) { + power = 0.0; + } else if (power > 1.0) { + power = 1.0; + } + // set power to disabled value if the loop is not enabled + if (!m_mode_auto) { + power = m_manual_op; + } + m_last_sample_time = nowSecs; + } + } else { + // not yet initialised or no pv value yet so set power to disabled value + power = m_manual_op; + } + return power; +} + +// call to pass in new process value +void PID::setPv( double pv, unsigned long nowSecs ){ + m_pv = pv; + m_last_pv_update_time = nowSecs; +} + +// methods to modify configuration data +void PID::setSp( double setpoint ) { + m_setpoint = setpoint; +} + +void PID::setPb( double prop_band ) { + m_prop_band = prop_band; +} + +void PID::setTi( double t_integral ) { + m_t_integral = t_integral; +} + +void PID::setTd( double t_derivative ) { + m_t_derivative = t_derivative; +} + +void PID::setInitialInt( double integral_default ) { + m_integral_default = integral_default; +} + +void PID::setDSmooth( double smooth_factor ) { + m_smooth_factor = smooth_factor; +} + +void PID::setAuto( unsigned char mode_auto ) { + m_mode_auto = mode_auto; +} + +void PID::setManualPower( double manual_op ) { + m_manual_op = manual_op; +} + +void PID::setMaxInterval( int max_interval ) { + m_max_interval = max_interval; +} diff --git a/lib/process-control-master/PID.h b/lib/process-control-master/PID.h new file mode 100644 index 000000000..782baa8ef --- /dev/null +++ b/lib/process-control-master/PID.h @@ -0,0 +1,89 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + + /** + * A PID control class + * + * Github repository https://github.com/colinl/process-control.git + * + * Given ... + * + * Usage: + * First call initialise(), see below for parameters then + * ... + * The functions require a parameter nowSecs which is a representation of the + * current time in seconds. The absolute value of this is immaterial, it is + * used for relative timing only. + * + **/ + + +#ifndef PID_h +#define PID_h + +class PID { +public: + + PID(); + + /* + Initialiser given + + current time in seconds + */ + void initialise( double setpoint, double prop_band, double t_integral, double t_derivative, + double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ); + + + /* called regularly to calculate and return new power value */ + double tick(unsigned long nowSecs); + + // call to pass in new process value + void setPv( double pv, unsigned long nowSecs ); + + // methods to modify configuration data + void setSp( double setpoint ); + void setPb( double prop_band ); + void setTi( double t_integral ); + void setTd( double t_derivative ); + void setInitialInt( double integral_default ); + void setDSmooth( double smooth_factor ); + void setAuto( unsigned char mode_auto ); + void setManualPower( double manual_op ); + void setMaxInterval( int max_interval ); + +private: + double m_pv; + double m_setpoint; + double m_prop_band; + double m_t_integral; + double m_t_derivative; + double m_integral_default; + double m_smooth_factor; + unsigned char m_mode_auto; + double m_manual_op; + int m_max_interval; + + + unsigned char m_initialised; + unsigned long m_last_pv_update_time; // the time of last pv update secs + unsigned long m_last_sample_time; // the time of the last tick() run + double m_smoothed_value; + double m_integral; + double m_derivative ; +}; + +#endif // Timeprop_h diff --git a/lib/process-control-master/README.md b/lib/process-control-master/README.md new file mode 100644 index 000000000..4682d2f3f --- /dev/null +++ b/lib/process-control-master/README.md @@ -0,0 +1,2 @@ +# process-control +A C++ library of process control algorithms diff --git a/lib/process-control-master/Timeprop.cpp b/lib/process-control-master/Timeprop.cpp new file mode 100644 index 000000000..c4d5e9eb8 --- /dev/null +++ b/lib/process-control-master/Timeprop.cpp @@ -0,0 +1,94 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * See Timeprop.h for Usage + * + **/ + + +#include "Timeprop.h" + +void Timeprop::initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, + unsigned long nowSecs) { + m_cycleTime = cycleTime; + m_deadTime = deadTime; + m_invert = invert; + m_fallbackPower = fallbackPower; + m_maxUpdateInterval = maxUpdateInterval; + + m_dtoc = (float)deadTime/cycleTime; + m_opState = 0; + setPower(m_fallbackPower, nowSecs); +} + +/* set current power required 0:1, given power and current time in seconds */ +void Timeprop::setPower( float power, unsigned long nowSecs ) { + if (power < 0.0) { + power = 0.0; + } else if (power >= 1.0) { + power = 1.0; + } + m_power = power; + m_lastPowerUpdateTime = nowSecs; +}; + +/* called regularly to provide new output value */ +/* returns new o/p state 0, 1 */ +int Timeprop::tick( unsigned long nowSecs) { + int newState; + float wave; + float direction; + float effectivePower; + + // check whether too long has elapsed since power was last updated + if (m_maxUpdateInterval > 0 && nowSecs - m_lastPowerUpdateTime > m_maxUpdateInterval) { + // yes, go to fallback power + setPower(m_fallbackPower, nowSecs); + } + + wave = (nowSecs % m_cycleTime)/(float)m_cycleTime; + // determine direction of travel and convert to triangular wave + if (wave < 0.5) { + direction = 1; // on the way up + wave = wave*2; + } else { + direction = -1; // on the way down + wave = (1 - wave)*2; + } + // if a dead_time has been supplied for this o/p then adjust power accordingly + if (m_deadTime > 0 && m_power > 0.0 && m_power < 1.0) { + effectivePower = (1.0-2.0*m_dtoc)*m_power + m_dtoc; + } else { + effectivePower = m_power; + } + // cope with end cases in case values outside 0..1 + if (effectivePower <= 0.0) { + newState = 0; // no heat + } else if (effectivePower >= 1.0) { + newState = 1; // full heat + } else { + // only allow power to come on on the way down and off on the way up, to reduce short pulses + if (effectivePower >= wave && direction == -1) { + newState = 1; + } else if (effectivePower <= wave && direction == 1) { + newState = 0; + } else { + // otherwise leave it as it is + newState = m_opState; + } + } + m_opState = newState; + return m_invert ? (1-m_opState) : m_opState; +} diff --git a/lib/process-control-master/Timeprop.h b/lib/process-control-master/Timeprop.h new file mode 100644 index 000000000..c6df45be0 --- /dev/null +++ b/lib/process-control-master/Timeprop.h @@ -0,0 +1,85 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + + /** + * A class to generate a time proportioned digital output from a linear input + * + * Github repository https://github.com/colinl/process-control.git + * + * Given a required power value in the range 0.0 to 1.0 this class generates + * a time proportioned 0/1 output (representing OFF/ON) which averages to the + * required power value. The cycle time is configurable. If, for example, this + * is set to 10 minutes and the power input is 0.2 then the output will be on + * for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * Usage: + * First call initialise(), see below for parameters then call setPower() to + * specify the current power required. + * Then regularly call tick() to determine the output state required. + * setPower may be called as often as required to change the power required. + * The functions require a parameter nowSecs which is a representation of the + * current time in seconds. The absolute value of this is immaterial, it is + * used for relative timing only. + * + **/ + + +#ifndef Timeprop_h +#define Timeprop_h + +class Timeprop { +public: + /* + Initialiser given + cycleTime seconds + actuator deadTime seconds + whether to invert the output + fallback power value if updates are not received within time below + max number of seconds to allow between power updates before falling back to default power (0 to disable) + current time in seconds + */ + void initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, + unsigned long nowSecs); + + /* set current power required 0:1, given power and current time in seconds */ + void setPower( float power, unsigned long nowSecs ); + + /* called regularly to provide new output value */ + /* returns new o/p state 0, 1 */ + int tick(unsigned long nowSecs); + +private: + int m_cycleTime; // cycle time seconds, float to force float calcs + int m_deadTime; // actuator action time seconds + unsigned char m_invert; // whether to invert the output + float m_dtoc; // deadTime/m_cycleTime + int m_opState; // current output state (before invert) + float m_power; // required power 0:1 + float m_fallbackPower; // falls back to this if updates not received with max allowed timezone + int m_maxUpdateInterval; // max time between updates + unsigned long m_lastPowerUpdateTime; // the time of last power update secs +}; + +#endif // Timeprop_h diff --git a/platformio.ini b/platformio.ini index cb5da39a9..587d8c55b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -env_default = sonoff +;env_default = sonoff-DE_4MB +;env_default = sonoff-EN_4MB +env_default = sonoff-ES_4MB ;env_default = sonoff-minimal -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE +;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -30,8 +30,8 @@ env_default = sonoff ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU -;env_default = sonoff-UK ;env_default = sonoff-TW +;env_default = sonoff-UK [common] ; ************************************************************ ; *** Esp8266 core for Arduino version 2.3.0 @@ -49,6 +49,10 @@ framework = arduino board = esp01_1m board_build.flash_mode = dout +; set CPU frequency to 80MHz or 160MHz +;board_build.f_cpu = 80000000L +board_build.f_cpu = 160000000L + ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall @@ -56,16 +60,45 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION +; VTABLES in Flash (default) + -DVTABLES_IN_FLASH +; VTABLES in Heap +; -DVTABLES_IN_DRAM +; VTABLES in IRAM +; -DVTABLES_IN_IRAM + +board_4MB = nodemcu +build_flags_4MB = + -Wl,-Tesp8266.flash.4m1m.ld +; -Wl,-Tesp8266.flash.4m2m.ld + -DVTABLES_IN_FLASH + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION +; VTABLES in Flash (default) + -DVTABLES_IN_FLASH +; VTABLES in Heap +; -DVTABLES_IN_DRAM +; VTABLES in IRAM +; -DVTABLES_IN_IRAM ; *** Serial Monitor options monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -;upload_speed = 115200 -upload_speed = 512000 +upload_speed = 115200 upload_resetmethod = nodemcu upload_port = COM5 + +;NOTE - command to erase flash from windows console: esptool.py --port COM31 erase_flash + + ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -79,13 +112,42 @@ extra_scripts = pio/strip-floats.py ; ********************************************************************* -[env:sonoff] +[env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} -board = ${common.board} +board = ${common.board_4MB} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-EN_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board_4MB} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-ES_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board_4MB} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -97,6 +159,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL monitor_speed = ${common.monitor_speed} @@ -104,47 +167,12 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-classic] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_CLASSIC -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-knx] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-allsensors] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_ALL_SENSORS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG monitor_speed = ${common.monitor_speed} @@ -157,6 +185,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR monitor_speed = ${common.monitor_speed} @@ -169,6 +198,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN monitor_speed = ${common.monitor_speed} @@ -181,6 +211,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ monitor_speed = ${common.monitor_speed} @@ -193,6 +224,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE monitor_speed = ${common.monitor_speed} @@ -200,11 +232,25 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-EN] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} @@ -217,6 +263,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR monitor_speed = ${common.monitor_speed} @@ -229,6 +276,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR monitor_speed = ${common.monitor_speed} @@ -241,6 +289,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU monitor_speed = ${common.monitor_speed} @@ -253,6 +302,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT monitor_speed = ${common.monitor_speed} @@ -265,6 +315,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL monitor_speed = ${common.monitor_speed} @@ -277,6 +328,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL monitor_speed = ${common.monitor_speed} @@ -289,6 +341,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT monitor_speed = ${common.monitor_speed} @@ -301,6 +354,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU monitor_speed = ${common.monitor_speed} @@ -308,26 +362,28 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-UK] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-TW] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} + +[env:sonoff-UK] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} diff --git a/sonoff/i18n.h b/sonoff/i18n.h index e0f1c2439..260c61adf 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -375,7 +375,7 @@ #define D_CMND_LATITUDE "Latitude" #define D_CMND_LONGITUDE "Longitude" -// Commands xdrv_98_display.ino +// Commands xdrv_14_display.ino #define D_CMND_DISPLAY "Display" #define D_CMND_DISP_ADDRESS "Address" #define D_CMND_DISP_COLS "Cols" diff --git a/sonoff/support.ino b/sonoff/support.ino index 4268f38d0..89c80bd44 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -20,6 +20,11 @@ IPAddress syslog_host_addr; // Syslog host IP address uint32_t syslog_host_hash = 0; // Syslog host name hash +#ifdef USE_CPU_LOAD +uint32_t CPU_loops = 0; // CPU Load +uint32_t CPU_last_millis = 0; // CPU Load +#endif // USE_CPU_LOAD + /*********************************************************************************************\ * Watchdog extension (https://github.com/esp8266/Arduino/issues/1532) \*********************************************************************************************/ @@ -63,12 +68,34 @@ void OsWatchInit() RtcSettings.oswatch_blocked_loop = 0; oswatch_last_loop_time = millis(); tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), OsWatchTicker); +#ifdef USE_CPU_LOAD + CPU_last_millis = millis(); +#endif // USE_CPU_LOAD } void OsWatchLoop() { oswatch_last_loop_time = millis(); // while(1) delay(1000); // this will trigger the os watch + +#ifdef USE_CPU_LOAD + CPU_loops ++; + if ((CPU_last_millis + (CPU_LOAD_CHECK*1000)) <= oswatch_last_loop_time ) { +#if defined(F_CPU) && (F_CPU == 160000000L) + int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*800) ); + CPU_loops = CPU_loops / CPU_LOAD_CHECK; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); +#else + int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*400) ); + CPU_loops = CPU_loops / CPU_LOAD_CHECK; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); +#endif + AddLog(LOG_LEVEL_DEBUG); + CPU_last_millis = oswatch_last_loop_time; + CPU_loops = 0; + } +#endif // USE_CPU_LOAD + } String GetResetReason() diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 6e51d8e3d..7944796e5 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,22 +48,23 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter -#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) +//#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) +//#define MODULE WEMOS // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -72,6 +73,8 @@ #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) +//#define USE_CPU_LOAD // CPU LOAD log + #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.bin" // [OtaUrl] @@ -204,9 +207,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -219,7 +222,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -236,7 +239,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -285,31 +288,212 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) +//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) -#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) +//#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) // -- Low level interface devices ----------------- -#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) - #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) +// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) + +//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) + +/*********************************************************************************************\ + * DISPLAY +\*********************************************************************************************/ + +//#define USE_DISPLAY // Add Display Support for LCD, Oled and up to eigth Matrices (+19k code) + // Required USE_I2C to be defined for I2C Display Support + // Required USE_SPI to be defined for SPI Display Support using library TasmotaTFT for 320x240 and 480x320 TFT +#ifdef USE_DISPLAY +#ifdef USE_I2C // For I2C Display Support. Not required if using SPI + #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module + #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module + #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module + #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module + #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module + #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module + #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module + #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module +#endif // USE_I2C +#endif // USE_DISPLAY + +/*********************************************************************************************\ + * TIME PROPORTIONAL CONTROLLER +\*********************************************************************************************/ + +/** + * Code to drive one or more relays in a time proportioned manner give a + * required power value. + * + * Given required power values in the range 0.0 to 1.0 the relays will be + * driven on/off in such that the average power suppled will represent + * the required power. + * The cycle time is configurable. If, for example, the + * period is set to 10 minutes and the power input is 0.2 then the output will + * be on for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * In the case where only one relay is being driven the power value is set by + * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than + * one relay is being driven (as might be the case for a heat/cool application + * where one relay drives the heater and the other the cooler) then the power + * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. + * + * To cope with the problem of temporary wifi failure etc a + * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max + * expected time between power updates and if this time is exceeded then the + * power will fallback to a given safe value until a new value is provided. Set + * the interval to 0 to disable this feature. + * + **/ + +//#define USE_TIMEPROP // include the timeprop feature (+1.2k) + +// Configuration for single output +/* + #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60 // cycle time seconds + #define TIMEPROP_DEADTIMES 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1 // which relay to control 1:8 +/* + +// Configuration for two outputs: +/* + #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds + #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false, false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 +*/ + +/*********************************************************************************************\ + * PID CONTROLLER +\*********************************************************************************************/ + +// Help with using the PID algorithm and with loop tuning can be found at +// http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html +// This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on +// the code there and the tuning techique described there should work just the same. + +//#define USE_PID // include the pid feature (+4.3k) + #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is + // aiming for. + // May be adjusted via MQTT using cmnd pid_sp + + #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls + // the gain of the loop and is the range of process value over which + // the power output will go from 0 to full power. The units are that + // of the process and setpoint, so for example in a heating + // application it might be set to 1.5 degrees. + // May be adjusted via MQTT using cmnd pid_pb + + #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, + // in seconds. It represents the time constant of the integration + // effect. The larger the value the slower the integral effect will be. + // Obviously the slower the process is the larger this should be. For + // example for a domestic room heated by convection radiators a setting + // of one hour might be appropriate (in seconds). To disable the + // integral effect set this to a large number. + // May be adjusted via MQTT using cmnd pid_ti + + #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, + // in seconds. It represents the time constant of the derivative effect. + // The larger the value the greater will be the derivative effect. + // Typically this will be set to somewhat less than 25% of the integral + // setting, once the integral has been adjusted to the optimum value. To + // disable the derivative effect set this to 0. When initially tuning a + // loop it is often sensible to start with derivative zero and wind it in + // once other parameters have been setup. + // May be adjusted via MQTT using cmnd pid_td + + #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used + // to preset the integrated error value when the flow is deployed in + // order to assist in homing in on the setpoint the first time. It should + // be set to an estimate of what the power requirement might be in order + // to maintain the process at the setpoint. For example for a domestic + // room heating application it might be set to 0.2 indicating that 20% of + // the available power might be required to maintain the setpoint. The + // value is of no consequence apart from device restart. + + #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. + // It is provided to cope with unusual situations such as a faulty sensor + // that might prevent the node from being supplied with a process value. + // If no new process value is received for this time then the power is set + // to the value defined for PID_MANUAL_POWER. + // May be adjusted via MQTT using cmnd pid_max_interval + + #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as + // the DS18B20), the use of deriviative can be problematic as when the + // process is changing only slowly the steps in the value cause spikes in + // the derivative. To reduce the effect of these this parameter can be + // set to apply a filter to the derivative term. I have found that with + // the DS18B20 that a value of 3 here can be beneficial, providing + // effectively a low pass filter on the derivative at 1/3 of the derivative + // time. This feature may also be useful if the process value is particularly + // noisy. The smaller the value the greater the filtering effect but the + // more it will reduce the effectiveness of the derivative. A value of zero + // disables this feature. + // May be adjusted via MQTT using cmnd pid_d_smooth + + #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable + // the control (1=enable, auto mode, 0=disabled, manual mode). When in + // manual mode the output is set the value definded for PID_MANUAL_POWER + // May be adjusted via MQTT using cmnd pid_auto + + #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses + // between process values + // May be adjusted via MQTT using cmnd pid_manual_power + + #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm + // each time a new pv value is received, for most applictions specify 0. + // Otherwise set this to a time + // that is short compared to the response of the process. For example, + // something like 15 seconds may well be appropriate for a domestic room + // heating application. + // May be adjusted via MQTT using cmnd pid_update_secs + + #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the + // process, set this to indicate which timeprop output to use. For a device + // with just one relay then this will be 1. + // It is then also necessary to define USE_TIMEPROP and set the output up as + // explained in xdrv_91_timeprop.ino + // To disable this feature leave this undefined (undefined, not defined to nothing). + + #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if + // this is not required. The rate that the sensor is read is defined by TELE_PERIOD + // If not using the sensor then you can supply process values via MQTT using + // cmnd pid_pv -#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) #define USE_RF_FLASH // Add support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB @@ -329,7 +513,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/xdrv_13_controller.ino b/sonoff/xdrv_13_controller.ino new file mode 100644 index 000000000..cb3a17198 --- /dev/null +++ b/sonoff/xdrv_13_controller.ino @@ -0,0 +1,603 @@ +/* + xdrv_13_controller.ino - Controller Support with TimeProp and PID for Sonoff-Tasmota + + Copyright (C) 2018 Colin Law, Thomas Herrmann and Adrian Scillato + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Code to + * + * Usage: + * Place this file in the sonoff folder. + * Clone the library https://github.com/colinl/process-control.git from Github + * into a subfolder of lib. + * If you want to use a time proportioned relay output with this then also get + * xdrv_91_timeprop.ino + * In user_config.h or user_config_override.h include code as follows: + + #define USE_PID // include the pid feature (+4.3k) + #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is + // aiming for. + // May be adjusted via MQTT using cmnd pid_sp + + #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls + // the gain of the loop and is the range of process value over which + // the power output will go from 0 to full power. The units are that + // of the process and setpoint, so for example in a heating + // application it might be set to 1.5 degrees. + // May be adjusted via MQTT using cmnd pid_pb + + #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, + // in seconds. It represents the time constant of the integration + // effect. The larger the value the slower the integral effect will be. + // Obviously the slower the process is the larger this should be. For + // example for a domestic room heated by convection radiators a setting + // of one hour might be appropriate (in seconds). To disable the + // integral effect set this to a large number. + // May be adjusted via MQTT using cmnd pid_ti + + #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, + // in seconds. It represents the time constant of the derivative effect. + // The larger the value the greater will be the derivative effect. + // Typically this will be set to somewhat less than 25% of the integral + // setting, once the integral has been adjusted to the optimum value. To + // disable the derivative effect set this to 0. When initially tuning a + // loop it is often sensible to start with derivative zero and wind it in + // once other parameters have been setup. + // May be adjusted via MQTT using cmnd pid_td + + #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used + // to preset the integrated error value when the flow is deployed in + // order to assist in homing in on the setpoint the first time. It should + // be set to an estimate of what the power requirement might be in order + // to maintain the process at the setpoint. For example for a domestic + // room heating application it might be set to 0.2 indicating that 20% of + // the available power might be required to maintain the setpoint. The + // value is of no consequence apart from device restart. + + #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. + // It is provided to cope with unusual situations such as a faulty sensor + // that might prevent the node from being supplied with a process value. + // If no new process value is received for this time then the power is set + // to the value defined for PID_MANUAL_POWER. + // May be adjusted via MQTT using cmnd pid_max_interval + + #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as + // the DS18B20), the use of deriviative can be problematic as when the + // process is changing only slowly the steps in the value cause spikes in + // the derivative. To reduce the effect of these this parameter can be + // set to apply a filter to the derivative term. I have found that with + // the DS18B20 that a value of 3 here can be beneficial, providing + // effectively a low pass filter on the derivative at 1/3 of the derivative + // time. This feature may also be useful if the process value is particularly + // noisy. The smaller the value the greater the filtering effect but the + // more it will reduce the effectiveness of the derivative. A value of zero + // disables this feature. + // May be adjusted via MQTT using cmnd pid_d_smooth + + #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable + // the control (1=enable, auto mode, 0=disabled, manual mode). When in + // manual mode the output is set the value definded for PID_MANUAL_POWER + // May be adjusted via MQTT using cmnd pid_auto + + #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses + // between process values + // May be adjusted via MQTT using cmnd pid_manual_power + + #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm + // each time a new pv value is received, for most applictions specify 0. + // Otherwise set this to a time + // that is short compared to the response of the process. For example, + // something like 15 seconds may well be appropriate for a domestic room + // heating application. + // May be adjusted via MQTT using cmnd pid_update_secs + + #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the + // process, set this to indicate which timeprop output to use. For a device + // with just one relay then this will be 1. + // It is then also necessary to define USE_TIMEPROP and set the output up as + // explained in xdrv_91_timeprop.ino + // To disable this feature leave this undefined (undefined, not defined to nothing). + + #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if + // this is not required. The rate that the sensor is read is defined by TELE_PERIOD + // If not using the sensor then you can supply process values via MQTT using + // cmnd pid_pv + + * Help with using the PID algorithm and with loop tuning can be found at + * http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html + * This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on + * the code there and the tuning techique described there should work just the same. + + * +**/ + + +#ifdef USE_PID + +# include "PID.h" + +#define D_CMND_PID "pid_" + +#define D_CMND_PID_SETPV "pv" +#define D_CMND_PID_SETSETPOINT "sp" +#define D_CMND_PID_SETPROPBAND "pb" +#define D_CMND_PID_SETINTEGRAL_TIME "ti" +#define D_CMND_PID_SETDERIVATIVE_TIME "td" +#define D_CMND_PID_SETINITIAL_INT "initint" +#define D_CMND_PID_SETDERIV_SMOOTH_FACTOR "d_smooth" +#define D_CMND_PID_SETAUTO "auto" +#define D_CMND_PID_SETMANUAL_POWER "manual_power" +#define D_CMND_PID_SETMAX_INTERVAL "max_interval" +#define D_CMND_PID_SETUPDATE_SECS "update_secs" + +enum PIDCommands { CMND_PID_SETPV, CMND_PID_SETSETPOINT, CMND_PID_SETPROPBAND, CMND_PID_SETINTEGRAL_TIME, + CMND_PID_SETDERIVATIVE_TIME, CMND_PID_SETINITIAL_INT, CMND_PID_SETDERIV_SMOOTH_FACTOR, CMND_PID_SETAUTO, + CMND_PID_SETMANUAL_POWER, CMND_PID_SETMAX_INTERVAL, CMND_PID_SETUPDATE_SECS }; +const char kPIDCommands[] PROGMEM = D_CMND_PID_SETPV "|" D_CMND_PID_SETSETPOINT "|" D_CMND_PID_SETPROPBAND "|" + D_CMND_PID_SETINTEGRAL_TIME "|" D_CMND_PID_SETDERIVATIVE_TIME "|" D_CMND_PID_SETINITIAL_INT "|" D_CMND_PID_SETDERIV_SMOOTH_FACTOR "|" + D_CMND_PID_SETAUTO "|" D_CMND_PID_SETMANUAL_POWER "|" D_CMND_PID_SETMAX_INTERVAL "|" D_CMND_PID_SETUPDATE_SECS; + +static PID pid; +static int update_secs = PID_UPDATE_SECS <= 0 ? 0 : PID_UPDATE_SECS; // how often (secs) the pid alogorithm is run +static int max_interval = PID_MAX_INTERVAL; +static unsigned long last_pv_update_secs = 0; +static boolean run_pid_now = false; // tells PID_Every_Second to run the pid algorithm + +void PID_Init() +{ + snprintf_P(log_data, sizeof(log_data), "PID Init"); + AddLog(LOG_LEVEL_INFO); + pid.initialise( PID_SETPOINT, PID_PROPBAND, PID_INTEGRAL_TIME, PID_DERIVATIVE_TIME, PID_INITIAL_INT, + PID_MAX_INTERVAL, PID_DERIV_SMOOTH_FACTOR, PID_AUTO, PID_MANUAL_POWER ); +} + +void PID_Every_Second() { + static int sec_counter = 0; + // run the pid algorithm if run_pid_now is true or if the right number of seconds has passed or if too long has + // elapsed since last pv update. If too long has elapsed the the algorithm will deal with that. + if (run_pid_now || utc_time - last_pv_update_secs > max_interval || (update_secs != 0 && sec_counter++ % update_secs == 0)) { + run_pid(); + run_pid_now = false; + } +} + +void PID_Show_Sensor() { + // Called each time new sensor data available, data in mqtt data in same format + // as published in tele/SENSOR + // Update period is specified in TELE_PERIOD + // e.g. "{"Time":"2018-03-13T16:48:05","DS18B20":{"Temperature":22.0},"TempUnit":"C"}" + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: mqtt_data: %s", mqtt_data); + AddLog(LOG_LEVEL_INFO); + StaticJsonBuffer<400> jsonBuffer; + // force mqtt_data to read only to stop parse from overwriting it + JsonObject& data_json = jsonBuffer.parseObject((const char*)mqtt_data); + if (data_json.success()) { + const char* value = data_json["DS18B20"]["Temperature"]; + // check that something was found and it contains a number + //if (value != NULL && strlen(value) > 0 && isdigit(value[0]) ) { + if (value != NULL && strlen(value) > 0 && (isdigit(value[0]) || (value[0] == '-' && isdigit(value[1])) ) ) { + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: Temperature: %s", value); + AddLog(LOG_LEVEL_INFO); + // pass the value to the pid alogorithm to use as current pv + last_pv_update_secs = utc_time; + pid.setPv(atof(value), last_pv_update_secs); + // also trigger running the pid algorithm if we have been told to run it each pv sample + if (update_secs == 0) { + // this runs it at the next second + run_pid_now = true; + } + } else { + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - no temperature found"); + AddLog(LOG_LEVEL_INFO); + } + } else { + // parse failed + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - json parse failed"); + AddLog(LOG_LEVEL_INFO); + } +} + + +/* struct XDRVMAILBOX { */ +/* uint16_t valid; */ +/* uint16_t index; */ +/* uint16_t data_len; */ +/* int16_t payload; */ +/* char *topic; */ +/* char *data; */ +/* } XdrvMailbox; */ + +boolean PID_Command() +{ + char command [CMDSZ]; + boolean serviced = true; + uint8_t ua_prefix_len = strlen(D_CMND_PID); // to detect prefix of command + + snprintf_P(log_data, sizeof(log_data), "Command called: " + "index: %d data_len: %d payload: %d topic: %s data: %s", + XdrvMailbox.index, + XdrvMailbox.data_len, + XdrvMailbox.payload, + (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + AddLog(LOG_LEVEL_INFO); + + if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_PID), ua_prefix_len)) { + // command starts with pid_ + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kPIDCommands); + serviced = true; + switch (command_code) { + case CMND_PID_SETPV: + snprintf_P(log_data, sizeof(log_data), "PID command setpv"); + AddLog(LOG_LEVEL_INFO); + last_pv_update_secs = utc_time; + pid.setPv(atof(XdrvMailbox.data), last_pv_update_secs); + // also trigger running the pid algorithm if we have been told to run it each pv sample + if (update_secs == 0) { + // this runs it at the next second + run_pid_now = true; + } + break; + + case CMND_PID_SETSETPOINT: + snprintf_P(log_data, sizeof(log_data), "PID command setsetpoint"); + AddLog(LOG_LEVEL_INFO); + pid.setSp(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETPROPBAND: + snprintf_P(log_data, sizeof(log_data), "PID command propband"); + AddLog(LOG_LEVEL_INFO); + pid.setPb(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETINTEGRAL_TIME: + snprintf_P(log_data, sizeof(log_data), "PID command Ti"); + AddLog(LOG_LEVEL_INFO); + pid.setTi(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETDERIVATIVE_TIME: + snprintf_P(log_data, sizeof(log_data), "PID command Td"); + AddLog(LOG_LEVEL_INFO); + pid.setTd(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETINITIAL_INT: + snprintf_P(log_data, sizeof(log_data), "PID command initial int"); + AddLog(LOG_LEVEL_INFO); + pid.setInitialInt(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETDERIV_SMOOTH_FACTOR: + snprintf_P(log_data, sizeof(log_data), "PID command deriv smooth"); + AddLog(LOG_LEVEL_INFO); + pid.setDSmooth(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETAUTO: + snprintf_P(log_data, sizeof(log_data), "PID command auto"); + AddLog(LOG_LEVEL_INFO); + pid.setAuto(atoi(XdrvMailbox.data)); + break; + + case CMND_PID_SETMANUAL_POWER: + snprintf_P(log_data, sizeof(log_data), "PID command manual power"); + AddLog(LOG_LEVEL_INFO); + pid.setManualPower(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETMAX_INTERVAL: + snprintf_P(log_data, sizeof(log_data), "PID command set max interval"); + AddLog(LOG_LEVEL_INFO); + max_interval = atoi(XdrvMailbox.data); + pid.setMaxInterval(max_interval); + break; + + case CMND_PID_SETUPDATE_SECS: + snprintf_P(log_data, sizeof(log_data), "PID command set update secs"); + AddLog(LOG_LEVEL_INFO); + update_secs = atoi(XdrvMailbox.data) ; + if (update_secs < 0) update_secs = 0; + break; + + default: + serviced = false; + } + + if (serviced) { + // set mqtt RESULT + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), XdrvMailbox.topic, XdrvMailbox.data); + } + + } else { + serviced = false; + } + return serviced; +} + +static void run_pid() +{ + double power = pid.tick(utc_time); + char buf[10]; + dtostrfd(power, 3, buf); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), "power", buf); + MqttPublishPrefixTopic_P(TELE, "PID", false); +#if defined PID_USE_TIMPROP + // send power to appropriate timeprop output + Timeprop_Set_Power( PID_USE_TIMPROP-1, power ); +#endif // PID_USE_TIMPROP +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_92 + +boolean Xdrv92(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + PID_Init(); + break; + case FUNC_EVERY_SECOND: + PID_Every_Second(); + break; + case FUNC_SHOW_SENSOR: + // only use this if the pid loop is to use the local sensor for pv + #if defined PID_USE_LOCAL_SENSOR + PID_Show_Sensor(); + #endif // PID_USE_LOCAL_SENSOR + break; + case FUNC_COMMAND: + result = PID_Command(); + break; + } + return result; +} + +#endif // USE_PID + + + + + + + +/* + xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota + Copyright (C) 2018 Colin Law and Thomas Herrmann + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Code to drive one or more relays in a time proportioned manner give a + * required power value. + * + * Given required power values in the range 0.0 to 1.0 the relays will be + * driven on/off in such that the average power suppled will represent + * the required power. + * The cycle time is configurable. If, for example, the + * period is set to 10 minutes and the power input is 0.2 then the output will + * be on for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * In the case where only one relay is being driven the power value is set by + * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than + * one relay is being driven (as might be the case for a heat/cool application + * where one relay drives the heater and the other the cooler) then the power + * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. + * + * To cope with the problem of temporary wifi failure etc a + * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max + * expected time between power updates and if this time is exceeded then the + * power will fallback to a given safe value until a new value is provided. Set + * the interval to 0 to disable this feature. + * + * Usage: + * Place this file in the sonoff folder. + * Clone the library https://github.com/colinl/process-control.git from Github + * into a subfolder of lib. + * In user_config.h or user_config_override.h for a single relay, include + * code as follows: + + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60 // cycle time seconds + #define TIMEPROP_DEADTIMES 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1 // which relay to control 1:8 + + * or for two relays: + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds + #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false, false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 + + * Publish values between 0 and 1 to the topic(s) described above + * +**/ + + +#ifdef USE_TIMEPROP + +# include "Timeprop.h" + +#define D_CMND_TIMEPROP "timeprop_" +#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 + +enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; +const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; + +static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; +static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; +static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay + +/* call this from elsewhere if required to set the power value for one of the timeprop instances */ +/* index specifies which one, 0 up */ +void Timeprop_Set_Power( int index, float power ) +{ + if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) + { + timeprops[index].setPower( power, utc_time); + } +} + +void Timeprop_Init() +{ + snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); + AddLog(LOG_LEVEL_INFO); + int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; + int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; + int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; + int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; + int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; + + for (int i=0; i= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + + AddLog(LOG_LEVEL_INFO); + */ + if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { + // command starts with timeprop_ + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); + if (CMND_TIMEPROP_SETPOWER == command_code) { + /* + snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " + "index: %d data_len: %d payload: %d topic: %s data: %s", + XdrvMailbox.index, + XdrvMailbox.data_len, + XdrvMailbox.payload, + (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + AddLog(LOG_LEVEL_INFO); + */ + if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { + timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), + XdrvMailbox.index, XdrvMailbox.data); + } + else { + serviced = false; + } + } else { + serviced = false; + } + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_91 + +boolean Xdrv91(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + Timeprop_Init(); + break; + case FUNC_EVERY_SECOND: + Timeprop_Every_Second(); + break; + case FUNC_COMMAND: + result = Timeprop_Command(); + break; + case FUNC_SET_POWER: + Timeprop_Xdrv_Power(); + break; + } + return result; +} + +#endif // USE_TIMEPROP diff --git a/sonoff/xdrv_14_display.ino b/sonoff/xdrv_14_display.ino new file mode 100644 index 000000000..8ddd07bc1 --- /dev/null +++ b/sonoff/xdrv_14_display.ino @@ -0,0 +1,1096 @@ +/* + xdrv_14_display.ino - display support for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#if defined(USE_I2C) || defined(USE_SPI) +#ifdef USE_DISPLAY +/*********************************************************************************************\ + * Display Libraries needed + * --------------- ---------------------------------------- + * I2C LCD LiquidCrystal_I2C + * I2C SSD 1306 Adafruit_SSD1306 and Adafruit_GFX + * I2C 8x8 Matrix Adafruit_LED_Backpack and Adafruit_GFX + * SPI TFT ILI9341 TasmotaTFT and Adafruit_GFX + * SPI TFT ILI9481 TasmotaTFT and Adafruit_GFX +\*********************************************************************************************/ + +#define LCD_ADDRESS1 0x27 // LCD I2C address option 1 +#define LCD_ADDRESS2 0x3F // LCD I2C address option 2 + +#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address +#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address + +#define DISPLAY_BUFFER_COLS 40 // Max number of columns in log buffer and display shadow buffer (needed for LCD and Oled) +#define DISPLAY_BUFFER_ROWS 8 // Max number of lines in display shadow buffer (needed for LCD and Oled) + +#define DISPLAY_LOG_ROWS 32 // Number of lines in display log buffer + +enum display_types { DISP_NONE, DISP_LCD, DISP_OLED, DISP_MATRIX, DISP_TFT, DISP_TFT4, DISP_MAX }; + +enum DisplayCommands { CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, + CMND_DISP_SIZE, CMND_DISP_TEXT, CMND_DISP_ADDRESS }; +const char kDisplayCommands[] PROGMEM = + D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" + D_CMND_DISP_SIZE "|" D_CMND_DISP_TEXT "|" D_CMND_DISP_ADDRESS ; + +const char S_JSON_DISPLAY_COMMAND_VALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":\"%s\"}"; +const char S_JSON_DISPLAY_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":%d}"; +const char S_JSON_DISPLAY_COMMAND_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s%d\":%d}"; + +#define DISPLAY_LOG_COLS DISPLAY_BUFFER_COLS +1 // Number of characters in display log buffer line +1 + +#ifdef USE_I2C // --------------------------------------------------------------------------- +#include // 8x8 Matrix +#include // LCD +#include // Oled + +LiquidCrystal_I2C *lcd; +Adafruit_SSD1306 *oled; + +//char disp_screen_buffer[Settings.display_rows][Settings.display_cols[0] +1]; +char disp_screen_buffer[DISPLAY_BUFFER_ROWS][DISPLAY_BUFFER_COLS +1]; + +Adafruit_8x8matrix *matrix[8]; +uint8_t mtx_matrices = 0; +uint8_t mtx_state = 0; +uint8_t mtx_counter = 0; +int16_t mtx_x = 0; +int16_t mtx_y = 0; + +#endif // USE_I2C --------------------------------------------------------------------------- + +#ifdef USE_SPI // --------------------------------------------------------------------------- +#define TFT_TOP 16 +#define TFT_BOTTOM 16 +#define TFT_FONT_WIDTH 6 +#define TFT_FONT_HEIGTH 8 // Adafruit minimal font heigth pixels + +#include // TFT 320x240 and 480x320 +TasmotaTFT *tft; + +//#include +//Adafruit_ILI9341 *tft; + +uint16_t tft_scroll; + +#endif // USE_SPI --------------------------------------------------------------------------- + +char disp_log_buffer[DISPLAY_LOG_ROWS][DISPLAY_LOG_COLS]; +char disp_temp[2]; // C or F +char disp_time[9]; // 13:45:43 +uint8_t disp_log_buffer_idx = 0; +uint8_t disp_log_buffer_ptr = 0; +bool disp_log_buffer_active = false; +uint8_t disp_model = DISP_NONE; +uint8_t disp_refresh = 1; +uint8_t disp_second = 0; +uint8_t disp_mode = 1; +uint8_t disp_power = 0; +uint8_t disp_device = 0; +uint8_t disp_subscribed = 0; + +void DisplayLogBufferIdxInc() +{ + char *pch = strchr(disp_log_buffer[disp_log_buffer_idx],'~'); // = 0x7E (~) Replace degrees character (276 octal) + if (pch != NULL) { + switch (disp_model) { + case DISP_LCD: + disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\337'; // = 0xDF + break; + case DISP_OLED: + case DISP_MATRIX: + case DISP_TFT: + case DISP_TFT4: + disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\370'; // = 0xF8 + break; + } + } + + disp_log_buffer_idx++; + if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { + disp_log_buffer_idx = 0; + } +} + +void DisplayLogBufferPtrInc() +{ + disp_log_buffer_ptr++; + if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { + disp_log_buffer_ptr = 0; + } +} + +#ifdef USE_I2C // --------------------------------------------------------------------------- +void DisplayScreenBuffer() +{ + uint8_t last_row = Settings.display_rows -1; + + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); + if (disp_log_buffer_active) { + if (DISP_OLED == disp_model) { + oled->clearDisplay(); + oled->setTextSize(Settings.display_size); + oled->setCursor(0,0); + } + for (byte i = 0; i < last_row; i++) { + strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], sizeof(disp_screen_buffer[i])); + if (DISP_LCD == disp_model) { + lcd->setCursor(0, i); // Col 0, Row i + lcd->print(disp_screen_buffer[i +1]); + } + else if (DISP_OLED == disp_model) { + oled->println(disp_screen_buffer[i]); + } + } + strlcpy(disp_screen_buffer[last_row], disp_log_buffer[disp_log_buffer_ptr], sizeof(disp_screen_buffer[last_row])); + + // Fill with spaces + byte len = sizeof(disp_screen_buffer[last_row]) - strlen(disp_screen_buffer[last_row]); + if (len) { + memset(disp_screen_buffer[last_row] + strlen(disp_screen_buffer[last_row]), 0x20, len); + disp_screen_buffer[last_row][sizeof(disp_screen_buffer[last_row])-1] = 0; + } + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); + AddLog(LOG_LEVEL_DEBUG); + + if (DISP_LCD == disp_model) { + lcd->setCursor(0, last_row); + lcd->print(disp_screen_buffer[last_row]); + } + else if (DISP_OLED == disp_model) { + oled->println(disp_screen_buffer[last_row]); + oled->display(); + } + DisplayLogBufferPtrInc(); + } + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayMatrixInit() +{ + mtx_state = 1; + for (mtx_matrices = 0; mtx_matrices < 8; mtx_matrices++) { + if (Settings.display_address[mtx_matrices]) { + matrix[mtx_matrices] = new Adafruit_8x8matrix(); + matrix[mtx_matrices]->begin(Settings.display_address[mtx_matrices]); + matrix[mtx_matrices]->setRotation(1); + matrix[mtx_matrices]->setBrightness(Settings.display_dimmer); + matrix[mtx_matrices]->blinkRate(0); // 0 - 3 + matrix[mtx_matrices]->setTextWrap(false); // Allow text to run off edges +// matrix[mtx_matrices]->setTextSize(Settings.display_size); +// matrix[mtx_matrices]->setTextColor(LED_RED); + matrix[mtx_matrices]->cp437(true); + } else { + break; + } + } + DisplayMatrixClear(); +} + +void DisplayMatrixWrite() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->writeDisplay(); + } +} + +void DisplayMatrixClear() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + } + DisplayMatrixWrite(); +} +/* +void DisplayMatrixAll() // On based on Text value (1 - 6) +{ + int value = atoi(Settings.text); + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + if (i < value) { + matrix[i]->fillRect(0,0, 8,8, LED_ON); + } + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixAllOn() +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->fillRect(0,0, 8,8, LED_ON); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} +*/ +void DisplayMatrixFixed(char* txt) +{ + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(-i *8, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixCenter(char* txt) +{ + int offset; + + int len = strlen(txt); + offset = (len < 8) ? offset = ((mtx_matrices *8) - (len *6)) / 2 : 0; + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(-(i *8)+offset, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); +} + +void DisplayMatrixScrollLeft(char* txt, int loop) +{ + switch (mtx_state) { + case 1: + mtx_state = 2; + // Horiz. position of text -- starts off right edge + mtx_x = 8 * mtx_matrices; + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), txt); + AddLog(LOG_LEVEL_DEBUG); + + disp_refresh = Settings.display_refresh; + case 2: + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + matrix[i]->setCursor(mtx_x - i *8, 0); + matrix[i]->print(txt); + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); + // Move text position left by 1 pixel. + mtx_x--; + int16_t len = strlen(txt); + if (mtx_x < -(len *6)) { + mtx_state = loop; + } + } + break; + } +} + +void DisplayMatrixScrollUp(char* txt, int loop) +{ + int wordcounter = 0; + char tmpbuf[200]; + char *words[100]; +// char separators[] = " ,.;:!?"; +// char separators[] = " "; +// char separators[] = " /|"; + char separators[] = " /"; + + switch (mtx_state) { + case 1: + mtx_state = 2; + // Vertical position of text -- starts off left bottom edge + mtx_y = 8; + mtx_counter = 0; + disp_refresh = Settings.display_refresh; + case 2: + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + strlcpy(tmpbuf, txt, sizeof(tmpbuf)); + char *p = strtok(tmpbuf, separators); + while (p != NULL && wordcounter < 40) { + words[wordcounter++] = p; + p = strtok(NULL, separators); + } + for (byte i = 0; i < mtx_matrices; i++) { + matrix[i]->clear(); + for (byte j = 0; j < wordcounter; j++) { + matrix[i]->setCursor(-i *8, mtx_y + (j *8)); + matrix[i]->println(words[j]); + } + matrix[i]->setBrightness(Settings.display_dimmer); + } + DisplayMatrixWrite(); + if (((mtx_y %8) == 0) && mtx_counter) { + mtx_counter--; + } else { + mtx_y--; // Move text position up by 1 pixel. + mtx_counter = STATES * 1; // Hold text for 1 seconds + } + if (mtx_y < -(wordcounter *8)) { + mtx_state = loop; + } + } + break; + } +} + +void DisplayMatrixBufferScroll(uint8_t direction) +{ + if (disp_log_buffer_idx != disp_log_buffer_ptr) { + if (!mtx_state) { + mtx_state = 1; + } + if (direction) { + DisplayMatrixScrollUp(disp_log_buffer[disp_log_buffer_ptr], 0); + } else { + DisplayMatrixScrollLeft(disp_log_buffer[disp_log_buffer_ptr], 0); + } + if (!mtx_state) { + DisplayLogBufferPtrInc(); + } + } else { + DisplayMatrixFixed(disp_time); + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayLcdInit() +{ + lcd = new LiquidCrystal_I2C(Settings.display_address[0], Settings.display_cols[0], Settings.display_rows); + lcd->init(); + lcd->clear(); + memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols[0]); + disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; +} + +void DisplayLcdCenter(byte row, char* txt) +{ + int offset; + int len; + char line[Settings.display_cols[0] +2]; + + memset(line, 0x20, Settings.display_cols[0]); + line[Settings.display_cols[0]] = 0; + len = strlen(txt); + offset = (len < Settings.display_cols[0]) ? offset = (Settings.display_cols[0] - len) / 2 : 0; + strncpy(line +offset, txt, len); + lcd->setCursor(0, row); + lcd->print(line); +} + +void DisplayLcdTime() +{ + char line[Settings.display_cols[0] +1]; + + snprintf_P(line, sizeof(line), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); + DisplayLcdCenter(0, line); + snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); + DisplayLcdCenter(1, line); +} + +void DisplayLcdBufferOrTime() +{ + DisplayScreenBuffer(); + if (!disp_log_buffer_active) { + DisplayLcdTime(); + } +} + +// ------------------------------------------------------------------------------------------- + +void DisplayOledInit() +{ + oled = new Adafruit_SSD1306(); + oled->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0]); + oled->invertDisplay(false); + oled->clearDisplay(); + oled->setTextWrap(false); // Allow text to run off edges + oled->cp437(true); + + oled->setTextSize(Settings.display_size); + oled->setTextColor(WHITE); + oled->setCursor(0,0); + oled->display(); + +// memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols); +// disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; +} + +void DisplayOledDisplayOnOff(byte state) +{ + if (state) { + oled->ssd1306_command(SSD1306_DISPLAYON); + } else { + oled->ssd1306_command(SSD1306_DISPLAYOFF); + } + oled->display(); +} + +void DisplayOledTime() +{ + char line[12]; + + oled->clearDisplay(); + oled->setTextSize(2); + oled->setCursor(0, 0); + snprintf_P(line, sizeof(line), PSTR(" %02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); // [ 12:34:56 ] + oled->println(line); + snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); // [01-02-2018] + oled->println(line); + oled->display(); +} + +#endif // USE_I2C --------------------------------------------------------------------------- +#ifdef USE_SPI // --------------------------------------------------------------------------- +void DisplayTftInit() +{ + if (DISP_TFT == disp_model) { + tft = new TasmotaTFT(ILI9341, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); +// tft = new Adafruit_ILI9341(pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); + } + else if (DISP_TFT4 == disp_model) { + tft = new TasmotaTFT(ILI9481, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); + } + tft->begin(); + tft->setRotation(0); + tft->invertDisplay(0); + tft->fillScreen(TFT_BLACK); + tft->setTextWrap(false); // Allow text to run off edges + tft->cp437(true); + + tft->setScrollMargins(TFT_TOP, TFT_BOTTOM); + tft->setCursor(0, 0); + tft->setTextColor(TFT_YELLOW, TFT_BLACK); + tft->setTextSize(2); + tft->println("HEADER"); + + tft_scroll = TFT_TOP; +} + +void DisplayTftDisplayOnOff(byte state) +{ +// tft->showDisplay(state); +// tft->invertDisplay(state); + if (pin[GPIO_BACKLIGHT] < 99) { + pinMode(pin[GPIO_BACKLIGHT], OUTPUT); + digitalWrite(pin[GPIO_BACKLIGHT], state); + } +} + +void DisplayTftPrint(byte size, char *txt) +{ + uint16_t theight; + + tft->setCursor(0, tft_scroll); + tft->setTextSize(size); + theight = size * TFT_FONT_HEIGTH; + tft->fillRect(0, tft_scroll, tft->width(), theight, TFT_BLACK); + + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), txt); + AddLog(LOG_LEVEL_DEBUG); + + tft->print(txt); + tft_scroll += theight; + if (tft_scroll >= (tft->height() - TFT_BOTTOM)) { + tft_scroll = TFT_TOP; + } + tft->setScrollStart(tft_scroll); +} + +void DisplayTftBuffer() +{ + disp_refresh--; + if (!disp_refresh) { + disp_refresh = Settings.display_refresh; + disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); + if (disp_log_buffer_active) { + DisplayTftPrint(Settings.display_size, disp_log_buffer[disp_log_buffer_ptr]); + DisplayLogBufferPtrInc(); + } + } +} +#endif // USE_SPI --------------------------------------------------------------------------- + +/*********************************************************************************************\ + * Sensors +\*********************************************************************************************/ + +enum SensorQuantity { + JSON_TEMPERATURE, + JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, + JSON_PRESSURE, JSON_PRESSUREATSEALEVEL, + JSON_ILLUMINANCE, + JSON_GAS, + JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY, + JSON_PERIOD, + JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, + JSON_CURRENT, + JSON_VOLTAGE, + JSON_POWERUSAGE, + JSON_CO2 }; +const char kSensorQuantity[] PROGMEM = + D_JSON_TEMPERATURE "|" // degrees + D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage + D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa + D_JSON_ILLUMINANCE "|" // lx + D_JSON_GAS "|" // kOhm + D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh + D_JSON_PERIOD "|" // Wh + D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit + D_JSON_CURRENT "|" // Ampere + D_JSON_VOLTAGE "|" // Volt + D_JSON_POWERUSAGE "|" // Watt + D_JSON_CO2 ; // ppm + +void DisplayJsonValue(const char *topic, const char* device, const char* mkey, const char* value) +{ + char quantity[TOPSZ]; + char spaces[Settings.display_cols[0]]; + char source[Settings.display_cols[0] - Settings.display_cols[1]]; + char svalue[Settings.display_cols[1] +1]; + + memset(spaces, 0x20, sizeof(spaces)); + spaces[sizeof(spaces) -1] = '\0'; + snprintf_P(source, sizeof(source), PSTR("%s/%s%s"), topic, mkey, (DISP_MATRIX == Settings.display_model) ? "" : spaces); // pow1/Voltage + + int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity); + if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER + return; + } + if (JSON_TEMPERATURE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); + } + else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value); + } + else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PRESSURE), value); + } + else if (JSON_ILLUMINANCE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value); + } + else if (JSON_GAS == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value); + } + else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value); + } + else if (JSON_PERIOD == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value); + } + else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value); + } + else if (JSON_CURRENT == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value); + } + else if (JSON_VOLTAGE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value); + } + else if (JSON_POWERUSAGE == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value); + } + else if (JSON_CO2 == quantity_code) { + snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); + } + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("%s %s"), source, svalue); + +// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, disp_log_buffer[disp_log_buffer_idx]); +// AddLog(LOG_LEVEL_DEBUG); + + DisplayLogBufferIdxInc(); +} + +void DisplayAnalyzeJson(char *topic, char *json) +{ +// //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}} +// //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102} + +// tele/pow1/SENSOR = {"Time":"2018-01-02T17:13:17","ENERGY":{"Total":13.091,"Yesterday":0.060,"Today":0.046,"Period":0.2,"Power":9.8,"Factor":0.49,"Voltage":206.8,"Current":0.096}} +// tele/dual/STATE {"Time":"2017-09-20T11:53:03","Uptime":25,"Vcc":3.178,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":2,"SSId":"indebuurt2","RSSI":100,"APMac":"00:22:6B:FE:8E:20"}} +// tele/sc/SENSOR {"Time":"2017-09-20T11:53:09","Temperature":24.0,"Humidity":16.0,"Light":30,"Noise":20,"AirQuality":100,"TempUnit":"C"} +// tele/rf1/SENSOR {"Time":"2017-09-20T11:53:23","BH1750":{"Illuminance":57}} +// tele/wemos5/SENSOR {"Time":"2017-09-20T11:53:53","SHT1X":{"Temperature":20.1,"Humidity":58.9},"HTU21":{"Temperature":20.7,"Humidity":58.5},"BMP280":{"Temperature":21.6,"Pressure":1020.3},"TempUnit":"C"} +// tele/th1/SENSOR {"Time":"2017-09-20T11:54:48","DS18B20":{"Temperature":49.7},"TempUnit":"C"} + + char jsonStr[MESSZ]; + const char *tempunit; + + strlcpy(jsonStr, json, sizeof(jsonStr)); // Save original before destruction by JsonObject + StaticJsonBuffer<400> jsonBuf; + JsonObject &root = jsonBuf.parseObject(jsonStr); + if (root.success()) { + + tempunit = root[D_JSON_TEMPERATURE_UNIT]; + if (tempunit) { + snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%s"), tempunit); +// snprintf_P(log_data, sizeof(log_data), disp_temp); +// AddLog(LOG_LEVEL_DEBUG); + } + + for (JsonObject::iterator it = root.begin(); it != root.end(); ++it) { + JsonVariant value = it->value; + if (value.is()) { + JsonObject& Object2 = value; + for (JsonObject::iterator it2 = Object2.begin(); it2 != Object2.end(); ++it2) { + JsonVariant value2 = it2->value; + if (value2.is()) { + JsonObject& Object3 = value2; + for (JsonObject::iterator it3 = Object3.begin(); it3 != Object3.end(); ++it3) { + DisplayJsonValue(topic, it->key, it3->key, it3->value.as()); // Sensor 56% + } + } else { + DisplayJsonValue(topic, it->key, it2->key, it2->value.as()); // Sensor 56% + } + } + } else { + DisplayJsonValue(topic, it->key, it->key, it->value.as()); // Topic 56% + } + } + } +} + +/*********************************************************************************************\ + * Public +\*********************************************************************************************/ + +void DisplayInit() +{ + if (!Settings.display_model) { +#ifdef USE_I2C + if (i2c_flg) { + if (I2cDevice(LCD_ADDRESS1)) { + Settings.display_address[0] = LCD_ADDRESS1; + Settings.display_model = DISP_LCD; + } + else if (I2cDevice(LCD_ADDRESS2)) { + Settings.display_address[0] = LCD_ADDRESS2; + Settings.display_model = DISP_LCD; + } + else if (I2cDevice(OLED_ADDRESS1)) { + Settings.display_address[0] = OLED_ADDRESS1; + Settings.display_model = DISP_OLED; + } + else if (I2cDevice(OLED_ADDRESS2)) { + Settings.display_address[0] = OLED_ADDRESS2; + Settings.display_model = DISP_OLED; + } + else if (I2cDevice(Settings.display_address[1])) { + Settings.display_model = DISP_MATRIX; + } + } +#endif // USE_I2C +#ifdef USE_SPI + if (spi_flg) { + Settings.display_model = DISP_TFT; + } +#endif // USE_SPI + } + disp_model = Settings.display_model; + +// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "Display model %d"), disp_model); +// AddLog(LOG_LEVEL_DEBUG); + + if (disp_model) { + devices_present++; + disp_device = devices_present; + snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%c"), TempUnit()); + disp_log_buffer_idx = 0; + disp_log_buffer_ptr = 0; + disp_log_buffer_active = false; + disp_refresh = Settings.display_refresh; + disp_mode = Settings.display_mode; + +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + DisplayLcdInit(); + } + else if (DISP_OLED == disp_model) { + DisplayOledInit(); + } + else if (DISP_MATRIX == disp_model) { + DisplayMatrixInit(); + } +#endif // USE_I2C +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftInit(); + } +#endif + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR(D_VERSION " %s"), my_version); + DisplayLogBufferIdxInc(); + snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("Display mode %d"), disp_mode); + DisplayLogBufferIdxInc(); + } +} + +void DisplaySetPower() +{ +// disp_power = XdrvMailbox.index; + disp_power = bitRead(XdrvMailbox.index, disp_device -1); + if (disp_model) { + if (disp_power) { +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + lcd->backlight(); + } + else if (DISP_OLED == disp_model) { + DisplayOledDisplayOnOff(1); + } +#endif +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftDisplayOnOff(1); + } +#endif + } else { +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + lcd->noBacklight(); + } + else if (DISP_OLED == disp_model) { + DisplayOledDisplayOnOff(0); + } +#endif +#ifdef USE_SPI + if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { + DisplayTftDisplayOnOff(0); + } +#endif + } + } +} + +void DisplayMqttSubscribe() +{ +/* Subscribe to tele messages only + * Supports the following FullTopic formats + * - %prefix%/%topic% + * - home/%prefix%/%topic% + * - home/level2/%prefix%/%topic% etc. + */ +// if (Settings.display_mode &0x04) { + if (Settings.display_model) { + + char stopic[TOPSZ]; + char ntopic[TOPSZ]; + + ntopic[0] = '\0'; + strlcpy(stopic, Settings.mqtt_fulltopic, sizeof(stopic)); + char *tp = strtok(stopic, "/"); + while (tp != NULL) { + if (!strcmp_P(tp, PSTR(MQTT_TOKEN_PREFIX))) { + break; + } + strncat_P(ntopic, PSTR("+/"), sizeof(ntopic)); // Add single-level wildcards + tp = strtok(NULL, "/"); + } + strncat(ntopic, Settings.mqtt_prefix[2], sizeof(ntopic)); // Subscribe to tele messages + strncat_P(ntopic, PSTR("/#"), sizeof(ntopic)); // Add multi-level wildcard + MqttSubscribe(ntopic); + disp_subscribed = 1; + } else { + disp_subscribed = 0; + } +} + +boolean DisplayMqttData() +{ + if (disp_subscribed) { + char stopic[TOPSZ]; + + snprintf_P(stopic, sizeof(stopic) , PSTR("%s/"), Settings.mqtt_prefix[2]); // tele/ + char *tp = strstr(XdrvMailbox.topic, stopic); + if (tp) { // tele/sonoff/SENSOR + if (Settings.display_mode &0x04) { + tp = tp + strlen(stopic); // sonoff/SENSOR + char *topic = strtok(tp, "/"); // sonoff + DisplayAnalyzeJson(topic, XdrvMailbox.data); + } + return true; + } + } + return false; +} + +void DisplayLocalSensor() +{ + if ((Settings.display_mode &0x02) && (0 == tele_period)) { + DisplayAnalyzeJson(mqtt_topic, mqtt_data); + } +} + +void DisplayRefresh() // Every 0.05 second +{ + snprintf_P(disp_time, sizeof(disp_time), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); + + disp_second++; + if (disp_second >= STATES) { + disp_second = 0; + +#ifdef USE_I2C + if (DISP_LCD == disp_model) { + switch (disp_mode) { + case 0: + lcd->clear(); + break; + case 1: + DisplayLcdTime(); + break; + case 2: + case 4: + DisplayScreenBuffer(); + break; + case 3: + case 5: + DisplayLcdBufferOrTime(); + break; + } + } + else if (DISP_OLED == disp_model) { + switch (disp_mode) { + // case 0: + // oled->clearDisplay(); + // oled->display(); + // break; + case 1: + DisplayOledTime(); + break; + case 0: // Text only + case 2: // Local + case 3: // Local + case 4: // Mqtt + case 5: // Mqtt + DisplayScreenBuffer(); + break; + } + } +#endif +#ifdef USE_SPI + if (DISP_TFT == disp_model) { + char tftdt[21]; + char disp_date4[11]; // 24-04-2017 + + snprintf_P(disp_date4, sizeof(disp_date4), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); + + tft->setTextSize(2); + tft->setTextColor(TFT_YELLOW, TFT_BLACK); // Add background color to solve flicker + tft->setCursor(0, 0); + snprintf_P(tftdt, sizeof(tftdt), PSTR("%s %s"), disp_date4, disp_time); + tft->print(tftdt); + switch (disp_mode) { + case 0: // Text + case 2: // Local + case 3: // Local + case 4: // Mqtt + case 5: // Mqtt + tft->setTextColor(TFT_CYAN, TFT_BLACK); // Add background color to solve flicker + DisplayTftBuffer(); + break; + } + } +#endif + } + +#ifdef USE_I2C + if (DISP_MATRIX == disp_model) { + if (!disp_power) { + DisplayMatrixClear(); + } else { + char disp_date[9]; // 24-04-17 + char disp_day[10]; // Mon + + snprintf_P(disp_date, sizeof(disp_date), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%02d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year -2000); + snprintf_P(disp_day, sizeof(disp_day), PSTR("%d %s"), RtcTime.day_of_month, RtcTime.name_of_month); + + switch (disp_mode) { + case 0: +// DisplayMatrixScrollLeft(Settings.text, Settings.loop); + case 2: + DisplayMatrixFixed(disp_date); + break; + case 3: + DisplayMatrixCenter(disp_day); + break; + case 4: + DisplayMatrixBufferScroll(0); + break; + case 1: // Time and user text + case 5: // Time, user text and MQTT + DisplayMatrixBufferScroll(1); + break; +// case 8: +// DisplayMatrixAllOn(); +// break; +// case 9: +// DisplayMatrixAll(); +// break; + } + } + } +#endif +} + +/*********************************************************************************************\ + * Commands +\*********************************************************************************************/ + +boolean DisplayCommand() +{ + char command [CMDSZ]; + boolean serviced = true; + uint8_t disp_len = strlen(D_CMND_DISPLAY); // Prep for string length change + + if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_DISPLAY), disp_len)) { // Prefix + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic +disp_len, kDisplayCommands); + if (CMND_DISP_MODEL == command_code) { + if ((XdrvMailbox.payload >= DISP_NONE) && (XdrvMailbox.payload < DISP_MAX)) { + Settings.display_model = XdrvMailbox.payload; + restart_flag = 2; // Restart to re-init interface and add/Remove MQTT subscribe + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model); + } + else if (CMND_DISP_MODE == command_code) { +/* + * Matrix LCD / Oled TFT + * 0 = Clear display + * 1 = Text up and time Time + * 2 = Date Local sensors Local sensors + * 3 = Day Local sensors and time Local sensors and time + * 4 = Mqtt left and time Mqtt (incl local) sensors Mqtt (incl local) sensors + * 5 = Mqtt up and time Mqtt (incl local) sensors and time Mqtt (incl local) sensors and time +*/ + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) { + Settings.display_mode = XdrvMailbox.payload; +// if ((disp_mode &0x04) != (Settings.display_mode &0x04)) { + if (!disp_subscribed) { + restart_flag = 2; // Restart to Add/Remove MQTT subscribe + } + disp_mode = Settings.display_mode; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode); + } + else if (CMND_DISP_REFRESH == command_code) { + if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) { + Settings.display_refresh = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh); + } + else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_COLS)) { + Settings.display_cols[XdrvMailbox.index -1] = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]); + } + else if (CMND_DISP_DIMMER == command_code) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { + Settings.display_dimmer = ((XdrvMailbox.payload +1) * 100) / 666; // Correction for Domoticz (0 - 15) + if (Settings.display_dimmer && !(disp_power)) { + ExecuteCommandPower(disp_device, POWER_ON); + } + else if (!Settings.display_dimmer && disp_power) { + ExecuteCommandPower(disp_device, POWER_OFF); + } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer); + } + else if (CMND_DISP_ROWS == command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_ROWS)) { + Settings.display_rows = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows); + } + else if (CMND_DISP_SIZE == command_code) { + if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) { + Settings.display_size = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size); + } + else if (CMND_DISP_TEXT == command_code) { + if (XdrvMailbox.data_len > 0) { + + // Here display command manipulation could take place like textsize, color, position etc. using intext parameters + // Currently just adds to the logbuffer + + strlcpy(disp_log_buffer[disp_log_buffer_idx], XdrvMailbox.data, sizeof(disp_log_buffer[disp_log_buffer_idx])); + DisplayLogBufferIdxInc(); + } else { + snprintf_P(XdrvMailbox.data, XdrvMailbox.data_len, PSTR("Text too long")); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data); + } + else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) { + if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) { + Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload; + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]); + } + else serviced = false; + } + else serviced = false; + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_14 + +boolean Xdrv14(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + if (i2c_flg || spi_flg) { + DisplayInit(); + } + break; + case FUNC_EVERY_50_MSECOND: + DisplayRefresh(); + break; + case FUNC_COMMAND: + result = DisplayCommand(); + break; + case FUNC_MQTT_SUBSCRIBE: + DisplayMqttSubscribe(); + break; + case FUNC_MQTT_DATA: + result = DisplayMqttData(); + break; + case FUNC_SET_POWER: + DisplaySetPower(); + break; + case FUNC_SHOW_SENSOR: + DisplayLocalSensor(); + break; + } + return result; +} + +#endif // USE_DISPLAY +#endif // USE_I2C or USE_SPI From b0e979673ad4314ff1d6b0e84a4e1b6204910759 Mon Sep 17 00:00:00 2001 From: ascillato Date: Tue, 5 Jun 2018 18:54:35 -0300 Subject: [PATCH 413/435] Revert "Merge branch 'development' into development" This reverts commit 3ca69e499b853f59e4a5cd3547ef5612bf394410, reversing changes made to 7d8495b26325be40ff662b6636d0579a3ed0bbaa. --- .github/1.jpg | Bin 68619 -> 0 bytes .github/2.jpg | Bin 78315 -> 0 bytes .github/3.jpg | Bin 82436 -> 0 bytes .github/4.jpg | Bin 80450 -> 0 bytes .github/5.jpg | Bin 69690 -> 0 bytes .github/6.jpg | Bin 68331 -> 0 bytes .github/7.jpg | Bin 93256 -> 0 bytes .github/Config_Menu.jpg | Bin 78164 -> 0 bytes .github/KNX_menu.jpg | Bin 77343 -> 0 bytes .github/donate.jpg | Bin 19598 -> 0 bytes .github/stale.yml | 20 +- COPYFILES.BAT | 37 - README.md | 163 -- lib/Adafruit_GFX-1.2.2.07/.gitignore | 2 - lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp | 1348 ----------------- lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h | 211 --- lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp | 336 ---- lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h | 80 - .../Adafruit_SPITFT_Macros.h | 114 -- .../Fonts/FreeMono12pt7b.h | 227 --- .../Fonts/FreeMono18pt7b.h | 363 ----- .../Fonts/FreeMono24pt7b.h | 577 ------- .../Fonts/FreeMono9pt7b.h | 176 --- .../Fonts/FreeMonoBold12pt7b.h | 250 --- .../Fonts/FreeMonoBold18pt7b.h | 423 ------ .../Fonts/FreeMonoBold24pt7b.h | 672 -------- .../Fonts/FreeMonoBold9pt7b.h | 189 --- .../Fonts/FreeMonoBoldOblique12pt7b.h | 269 ---- .../Fonts/FreeMonoBoldOblique18pt7b.h | 460 ------ .../Fonts/FreeMonoBoldOblique24pt7b.h | 742 --------- .../Fonts/FreeMonoBoldOblique9pt7b.h | 203 --- .../Fonts/FreeMonoOblique12pt7b.h | 248 --- .../Fonts/FreeMonoOblique18pt7b.h | 398 ----- .../Fonts/FreeMonoOblique24pt7b.h | 643 -------- .../Fonts/FreeMonoOblique9pt7b.h | 187 --- .../Fonts/FreeSans12pt7b.h | 270 ---- .../Fonts/FreeSans18pt7b.h | 452 ------ .../Fonts/FreeSans24pt7b.h | 727 --------- .../Fonts/FreeSans9pt7b.h | 201 --- .../Fonts/FreeSansBold12pt7b.h | 288 ---- .../Fonts/FreeSansBold18pt7b.h | 481 ------ .../Fonts/FreeSansBold24pt7b.h | 784 ---------- .../Fonts/FreeSansBold9pt7b.h | 208 --- .../Fonts/FreeSansBoldOblique12pt7b.h | 317 ---- .../Fonts/FreeSansBoldOblique18pt7b.h | 545 ------- .../Fonts/FreeSansBoldOblique24pt7b.h | 893 ----------- .../Fonts/FreeSansBoldOblique9pt7b.h | 227 --- .../Fonts/FreeSansOblique12pt7b.h | 302 ---- .../Fonts/FreeSansOblique18pt7b.h | 518 ------- .../Fonts/FreeSansOblique24pt7b.h | 840 ---------- .../Fonts/FreeSansOblique9pt7b.h | 220 --- .../Fonts/FreeSerif12pt7b.h | 259 ---- .../Fonts/FreeSerif18pt7b.h | 429 ------ .../Fonts/FreeSerif24pt7b.h | 690 --------- .../Fonts/FreeSerif9pt7b.h | 195 --- .../Fonts/FreeSerifBold12pt7b.h | 271 ---- .../Fonts/FreeSerifBold18pt7b.h | 462 ------ .../Fonts/FreeSerifBold24pt7b.h | 759 ---------- .../Fonts/FreeSerifBold9pt7b.h | 202 --- .../Fonts/FreeSerifBoldItalic12pt7b.h | 292 ---- .../Fonts/FreeSerifBoldItalic18pt7b.h | 500 ------ .../Fonts/FreeSerifBoldItalic24pt7b.h | 793 ---------- .../Fonts/FreeSerifBoldItalic9pt7b.h | 215 --- .../Fonts/FreeSerifItalic12pt7b.h | 271 ---- .../Fonts/FreeSerifItalic18pt7b.h | 450 ------ .../Fonts/FreeSerifItalic24pt7b.h | 737 --------- .../Fonts/FreeSerifItalic9pt7b.h | 202 --- lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h | 131 -- lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h | 123 -- lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b | 130 -- lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h | 474 ------ lib/Adafruit_GFX-1.2.2.07/README.md | 31 - .../fontconvert/Makefile | 12 - .../fontconvert/fontconvert.c | 284 ---- .../fontconvert/fontconvert_win.md | 88 -- .../fontconvert/makefonts.sh | 38 - lib/Adafruit_GFX-1.2.2.07/gfxfont.h | 24 - lib/Adafruit_GFX-1.2.2.07/glcdfont.c | 276 ---- lib/Adafruit_GFX-1.2.2.07/library.properties | 9 - lib/Adafruit_GFX-1.2.2.07/license.txt | 24 - .../Adafruit_LEDBackpack.cpp | 672 -------- .../Adafruit_LEDBackpack.h | 171 --- lib/Adafruit_LED_Backpack-1.1.6/README.md | 30 - lib/Adafruit_LED_Backpack-1.1.6/README.txt | 26 - .../examples/HT16K33/HT16K33.ino | 55 - .../examples/bargraph24/bargraph24.ino | 65 - .../examples/bicolor8x8/bicolor8x8.pde | 122 -- .../clock_sevenseg_ds1307.ino | 178 --- .../clock_sevenseg_gps/clock_sevenseg_gps.ino | 159 -- .../examples/matrix16x8/matrix16x8.ino | 133 -- .../examples/matrix8x8/matrix8x8.ino | 120 -- .../minimatrix16x8/minimatrix16x8.ino | 123 -- .../examples/quadalphanum/quadalphanum.ino | 73 - .../quadalphanum_mini/quadalphanum_mini.ino | 72 - .../examples/roboface/roboface.pde | 251 --- .../examples/sevenseg/sevenseg.ino | 81 - .../examples/wavface/wavface.pde | 336 ---- .../examples/wavface/wavs/beware_i.wav | Bin 20802 -> 0 bytes .../examples/wavface/wavs/ihunger.wav | Bin 10258 -> 0 bytes .../examples/wavface/wavs/run_cowd.wav | Bin 16096 -> 0 bytes .../library.properties | 9 - lib/Adafruit_LED_Backpack-1.1.6/license.txt | 21 - .../.github/ISSUE_TEMPLATE.md | 46 - .../.github/PULL_REQUEST_TEMPLATE.md | 26 - .../Adafruit_SSD1306.cpp | 729 --------- lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h | 186 --- lib/Adafruit_SSD1306-1.1.2/README.md | 32 - lib/Adafruit_SSD1306-1.1.2/README.txt | 24 - .../ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino | 375 ----- .../ssd1306_128x32_spi/ssd1306_128x32_spi.ino | 368 ----- .../ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino | 375 ----- .../ssd1306_128x64_spi/ssd1306_128x64_spi.ino | 368 ----- lib/Adafruit_SSD1306-1.1.2/library.properties | 9 - lib/Adafruit_SSD1306-1.1.2/license.txt | 26 - .../LiquidCrystal_I2C.cpp | 315 ---- .../LiquidCrystal_I2C.h | 126 -- .../LiquidCrystal_I2C.o | Bin 41564 -> 0 bytes lib/LiquidCrystal_I2C-1.1.3/README.md | 2 - .../examples/CustomChars/CustomChars.pde | 70 - .../examples/HelloWorld/HelloWorld.pde | 28 - .../examples/SerialDisplay/SerialDisplay.pde | 34 - lib/LiquidCrystal_I2C-1.1.3/keywords.txt | 46 - lib/LiquidCrystal_I2C-1.1.3/library.json | 15 - .../library.properties | 9 - lib/TasmotaTFT-1.0.1/README.txt | 21 - .../examples/graphicstest/graphicstest.ino | 360 ----- lib/TasmotaTFT-1.0.1/keywords.txt | 41 - lib/TasmotaTFT-1.0.1/library.json | 15 - lib/TasmotaTFT-1.0.1/library.properties | 9 - lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp | 616 -------- lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h | 137 -- lib/process-control-master/LICENSE | 201 --- lib/process-control-master/PID.cpp | 168 -- lib/process-control-master/PID.h | 89 -- lib/process-control-master/README.md | 2 - lib/process-control-master/Timeprop.cpp | 94 -- lib/process-control-master/Timeprop.h | 85 -- platformio.ini | 172 +-- sonoff/i18n.h | 2 +- sonoff/support.ino | 27 - sonoff/user_config.h | 224 +-- sonoff/xdrv_13_controller.ino | 603 -------- sonoff/xdrv_14_display.ino | 1096 -------------- 143 files changed, 80 insertions(+), 33770 deletions(-) delete mode 100644 .github/1.jpg delete mode 100644 .github/2.jpg delete mode 100644 .github/3.jpg delete mode 100644 .github/4.jpg delete mode 100644 .github/5.jpg delete mode 100644 .github/6.jpg delete mode 100644 .github/7.jpg delete mode 100644 .github/Config_Menu.jpg delete mode 100644 .github/KNX_menu.jpg delete mode 100644 .github/donate.jpg delete mode 100644 COPYFILES.BAT delete mode 100644 lib/Adafruit_GFX-1.2.2.07/.gitignore delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/README.md delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh delete mode 100644 lib/Adafruit_GFX-1.2.2.07/gfxfont.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/glcdfont.c delete mode 100644 lib/Adafruit_GFX-1.2.2.07/library.properties delete mode 100644 lib/Adafruit_GFX-1.2.2.07/license.txt delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.md delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.txt delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/roboface/roboface.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/ihunger.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/library.properties delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/license.txt delete mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp delete mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h delete mode 100644 lib/Adafruit_SSD1306-1.1.2/README.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/README.txt delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_spi/ssd1306_128x32_spi.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_spi/ssd1306_128x64_spi.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/library.properties delete mode 100644 lib/Adafruit_SSD1306-1.1.2/license.txt delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/README.md delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/keywords.txt delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.json delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.properties delete mode 100644 lib/TasmotaTFT-1.0.1/README.txt delete mode 100644 lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino delete mode 100644 lib/TasmotaTFT-1.0.1/keywords.txt delete mode 100644 lib/TasmotaTFT-1.0.1/library.json delete mode 100644 lib/TasmotaTFT-1.0.1/library.properties delete mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp delete mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h delete mode 100644 lib/process-control-master/LICENSE delete mode 100644 lib/process-control-master/PID.cpp delete mode 100644 lib/process-control-master/PID.h delete mode 100644 lib/process-control-master/README.md delete mode 100644 lib/process-control-master/Timeprop.cpp delete mode 100644 lib/process-control-master/Timeprop.h delete mode 100644 sonoff/xdrv_13_controller.ino delete mode 100644 sonoff/xdrv_14_display.ino diff --git a/.github/1.jpg b/.github/1.jpg deleted file mode 100644 index 757a10a96e69f3636fffd4faca69ebac735aec6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68619 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 R0(u9e{viLWT&Uf_{|%m~h93X` diff --git a/.github/2.jpg b/.github/2.jpg deleted file mode 100644 index 3ea4b4b47135953a2501d3b7b8c39ee526497608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78315 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 c6+M73KqVrn>g#<$!G8XSJM~3%ng4YMXqv%Tc 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 diff --git a/.github/4.jpg b/.github/4.jpg deleted file mode 100644 index d81e3854c3d408c40fb000b8f4a2e3942e81ebb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80450 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%0DLtB?ER!5`1lNl4>#-n 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 aByvN^vSRJaU*f6#RX*Fl_;>JcgZ~Tq04H_; diff --git a/.github/5.jpg b/.github/5.jpg deleted file mode 100644 index 503e613e5dc8433a647e0e8f33011fccfbab9688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69690 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⁡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 diff --git a/.github/6.jpg b/.github/6.jpg deleted file mode 100644 index b52221b9e4cdfdd0d8d55a5e4ed1ceeca4551d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68331 zcmeFYc~leI+b$SHMMOnFL_vtkCnZd{`AVg*n zLu8ChiOd2bGe{UhKtzT>!Vn5F&~@(pzT17yuUD_%{nonO{l~3juS#~+uJyiEyY_yb z=Y99~kL^jwK{I1hV+bD~ALJhRfozXLE<<+k@%{DvkBxs9|6kkgojdt=3G5aS_^a#@ z6cXICXYU>XfxY|p?iJbxZUTY_g!k_|@YnCZF7j9NzgmIceR~A<{B_3v+_wD%BC=

RR^XDZzN(B*y_NZLXw^y&2$O!XX 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�ht` zybTfg=kSD5xY0|WU~#^dUvyQ*zMT*1WOxJ6%?SaTYfYSFZBPeONdcjja{#D^$$M^- z@%Ka<=?r=um@+%P;)14f8Z<>QW%4L#Y$)R zhI4PVOOzMr<@_i3u$`&4`qt?B%pT`v($e1B&^qiA|fWQctCfir7$| z*i80Xo~J-k&YdiesQ@US6lM%d@n`%1*=0j-)E0mmD41MHKY=^Sv>aG~1@wCI53 z3g8MQH|Ya;Bq>mgwaK~=j#HprhW-z{1IBni$}hdt8&n)PAJ64*FwB%1EaNx39Wh%M zYasZeAiC?TG-hc1kGTqj(t~zL>maVHta-N^_m~RFU$jdsG_7u|m~uGvJe0#AW9)zs zTdr%9-wZ{N{}?gDwkuhAD&5=EGEP!!SO508==vH6V|dAu$=S&7X66mXj@8#pdiL3u zz?MX1qXj^P^nVLr1#GbZ^v){pY+Qu$1q(BvX`bs2$i7R{1GAThZx7zFtUJT6ouCPY zx<=poaO2(iUS9!yYOYZ`lx*UM-9NvivZ{Q5fFri6>+f^1#y}}BP_P~lN4X^|N{eLd z1of}g3N#I;L0vjTEme`_`7b)%L$jtd-f=)Q5ze9Ugkom_PPMam!uPRQT|?s5ZJ%acGk{WTKU<<>oLRL)kfDw{Dzq1)Ji;<=fYGT4eC zK&4?EijVM%+m(U{poz^uG+;H@nCo8y{MQWrYY+bGCHbFfW%S;1pwQ?R^DT`ipnmAx zQEsf%EgWrq=0geM+3{CrxkV;2`i5gdQV$Y)Pj4zB3^(pa-oeZ_tdJeO zAtnMa0g!_Qo6@hNV6acjz zD1HHb2>k;AJQLM7fE6UWp$~{tWDJdgm39$I&;%E5evhLag3_*|-v6R&`$9Vm zTo)1`r+e!Bn*`8bhXs2+Wd4heEl?cD0#&1lQs|8X0Dhf?f`2NbiNHVIXxr+di3AeW zXyI|x9CwiCiu>!RsIj2H{BfNEbswb2AAyI&vr^)~h14D3Jw5CLlyyiMl(>m~g#D?B zo)Y&=A_BfzB#y%6eQH1*y7eE`~LP>%zi#Vp`ijEDb23Ft4Q z!ipB;&`zv@6Bi0n#53SAbBAc6ooJvH1Wwu+;K$F0FUS3L5g>mZ7Wa;@E`-GB1KZiN z0a72}AtxXt5pdBAL@YqV-bKe_~*zlAD6(l5gG}<==#R76fWova33Q` z;QGEaD1{l^@8&M}8Gl`fzwZxys`g|m4Fz%rAHZsVWc=6m`1hCPU)w|9{9oJS->ure ztjE8s$G;Ajf9m0~Ok+iTLmx+7SjOa0EIO>yQgS11?mh!miN1SS@ronCkg*L3#`I@)J8=`Cs zck{Rar+uKC>hnd`xzN15Kd)O_Y{zo2GN8Y%8f}Tnq}qX`9f1N);u}y-^xE0q&C>pw z{7PO`p>Ckf|DHpG0YINS2dT8wLnNpObWU5Jh6P^0l>&q~P)!;L-?;w&%Wbt8fpKaI6T``-k6Ry@ zMriRYqb@jl7(X^kZQt;y6+o(m=~~Czb@8rEIWsr%SPMS9<-yG{ zw@sKA0yYCYK+_|=`Ab=qwJ}=?Tu2RU)%8{9`Vl$#!||U*gKlMx&$5fX>Gq!LYSKP2 zlh`mzDXN0^#8nlq%&t3aCQEgX*{Z)Ak@HG4Hgc4IzAePBXT=?85?+;HUR~H)MX0O3 zpL0PX%{tMpbFoxV%bz6qAz0xVPQ;anYk8@nAh1|#&QuIN%jvCB;mI&^C)wHRTbI}7 zQ;nqCiPsQ)WMN7^al2iBCA9=`%}5r*=@=4aA{XNRwNLBpsk0?v%05a}8q#-#Tn{&A z5f>gJnP$Dm^}AA>glpcBc;02QRU6@05Z+FSKz2?WWuo95d%fo|2PP$ev#L@RAKwnC zT1zE(KgGT4jZPI2BxXJGk74W}r;hBx!Xutny&vYgxNX|ho=RVoC~@V6h31@1pH8%* zIR?;VYa8D{rp3QZjwIB-vNsrC9~)c!oV(Io;lT8yREIaFEbSh-!l{S)oE+fABF|x- zXk#c}JzF0Y*+7|S#U7+u&BFLR9vn{3+ZnG7n|WV1girX+r~4{kwdRg%pykf>*-+mJ zl>w^yex#N((v}FJicLd^fIOT1&R2+rJX3|&BE_ot2Qiu*lkTQxj@J!g+A~{DQ+td$ zgoq-jhM!hkf>zNBAZ6*r55c>IP`=wXTyz=%vBiEuW(vZW_ zn3(qpK}Zg`;i3>l>)@xNTbcYrNjTYpB>ToU(&On4Nk!dSrYNVmsw9-4L00;9jRm|m z(SA}#ys4w%#eAf$4C&qfnuXSZPaMiDa#Lli)ZeB)`du&g@8UiEt82qOBi8HR?Ee;f zJND-82GLuVvndGz4ja@(O_%q3Aa`WWH z!};A}KK3k`vNkVew&(4o*R}zt{C4#zAZ`DEZ37`lulxNi1Xx}y{E-hFc%*<46|GM zk@H_Wc}2}W;0o*};QFwGR)11IHa}Lq4!kLscip;MM-0}!ZJF+wZ&Gwr>WCyyYrsMm zKW-)t8<~&4+*^096K0%!s^a7dw~#x*d8htdtlB%R^Ie_)V>R#IGn+Jm4_q!)<(fD- zFud&Ptc$vFo1&CIf9v|b|3{hnas6L{z%Jb8<-k3czw960m@l*c1+Wl1bq?4UIsW>W z^xw>r^)K|M|Kn-@IsbJ1tGxRE3=XFIKLCU8r|?0I_0_<>O;Sw}u-7FIoRhW!%E~YP zC)@e)^uLz+KWknB`*?NzUzY>Bjth3h|1gq&CO>MzXgG|fhtYg7T0V@HlcV*;2(LG_ z_x+t}|Kvp-a1i{)|K!I$;IQir{v-E) z_h3Iqv|e%ko#Wj#K0ho!3jdQ*dwo2P_39t-)Nl9sB3}eMue)*QZvD!gyXVdflT12R z^MzrWed&%D8UIfFU9|s2;t$~LZp$}d8|&njKnM13?r%kb!~XmS^Z%%Cwg2b4__y-6 zE?`nii57N72V2nSspRG>)_53aDtu@Jyd-D&Jm+ceXcqM1S_6u8X h@Ai~`+r)e3SmsjR=DZoq`8>zf8{;0kiZK4a2>{x6PEY^< diff --git a/.github/Config_Menu.jpg b/.github/Config_Menu.jpg deleted file mode 100644 index 3781adef6462a5646c9678b5cd3bfe560c750299..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78164 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¬GF@{I3+6GR!!8OrCq8NLd6$#qjA;sGw>(y;En({~=h z9Zlfxg$672@ng86vDydeqyR_4q?c?djWX)K@?bIlofPADH@1U`A7!wX6ed{As}rc)!rR^S$@6s-L`zYO=FN zH*Ih1@VS;>gi+mh);<6EWtqp>b3=-W<#x^^@S7{cc+Exi(d{2zP%`9VZIPlAeYT^a$n{fms01>H)WD#;&Z%!^+E;G2wm7NJLp( z1dX?6bRDoDvOK8^0OQ4FgaI`&*<(&Hj(2Ie6{~D`vDV^PS-!+_%SYwTZp#-7#hFjT zJV_tvX=k1r>REF~Io#RsbuCX)RUl^65hSEsbI>R**voxf#&|OrP)G4_8%9qaF z;XVAbXW3I(h28RrF&b1tg1h}oTJ6H~)9l<~jzrb>7x(GsKH9o$Z`5dZl&CwdE-lmH zR4+}6u;zMvZl3O z6OW&p{%ziaG^&J;>{CO9s#GtilUfu^@g9tgyj85YNM8Y1-K9}h7Rq+jiWY8aU$z7% zs~O*wfRPB!Ess^?e3Hil^ujv@mK)qTO$^@M-8vc?65+A-5`9ZM?CW@qWRVTWlg^nu z7EHNK0tzy1%kwgG$;}Leuq z?!kAU9gf(H75fLIF2?&OrH|Z2$(Bi!cE5tuWwIb+KoW z81+*Txi*H*u9BWE)0u<$$&jLU+3+Kze+vfT5f1R z@1?-#Bk49@RF1Kzf;|7!z}su@4W~1_X;<57*lA&F<6VGLdLMtobM%SB1SM^AU`5Ak zbvo&h*FLW|248R*1;%YfzD3bJRFP`DjgJ^#38`YuX!Xc-H)=4{O+5Qk^vHbiRW`4n zW3et|fKhMpiP>Fu8O;8bTG(e_Ga@$>o2f@Q;My@}gDHl!&zNU;*<<1-Wwqtc!0O*s zse?NIV+1b@WT=1aXVT!;{&F}!2&fWYLvJDd~}Vb7nNiNQsy;wwzF zm1i68YtZDW^i={ZnFs0ZtO_!cKCJh)LFu(TM?j-mio}yV!E$a2>zOt!=U>PKae=NY zQf3L68lJkHMD>Z ziNfMF{x$n4Ox1-_Ee#j-fF&>ArrXUgx7=PHx&Cta!HEk_rWQC&v_vI#Wz(oH;YuHZ zlEJn!5cO14(?Z7R11>_m)Ipoo`ZSH`$3t!a@PH}4C{vA+NlNvCgWlaXy$V;1U70K@ zkbybBsz9zoRcFB8jV(f{p5H2jicwQcGPG&o>g&k9~&d?O$%a`Q6 zbLGJC(C}380dKC|7{p2ljKbRrZF|w>(kT7vL54!>B4de+l^ z%c1aw)En;*VA0Q66Ye8|t{YId{wcDmGPILMsm1ELWKrl_wkZnSB5u>%P?uL*D=g8D zZ%o65(Rs7NN4uyRA@_lbZ2D8CCbdDilgULC>YWsycxv&@BKz6qQxaGOM6tW!m_irv z7W*b5vzD_l+wc&J)Mty6?K}Yt@QmUL?vCH!ZC3 z3RKyHZ}Bwn;Ik^$_&sADVYi4}`$)rOUhm`D)<8UcdRr;c@rmH5+km}M)91=2O2yW+ z9^duyv~I_neF9@CGn4OlD7lA?^ZR;K9yE1nySa5$>t&A@6A$4U5$V0%?m~@`wRh4p zBTGUazI~VyJe42F-Jga(rn>5%m`tR_y^BkJFxxL|`_?WO$+UXqa^ zueMFf5|@8geqYN(kDYB85n(@uRtn_L8?dNO&U8AcO2(>dVR7KVfmawaoqE~JAD@s`BwPye8fqf_!dyRjZPo>GYRX|%~q0`Q8^}^iiV8Ydjx~~YK z`}cl>>Xb~9##P|x`dXc0tp2CyN>w;WK9(S=pg=x;wY;U+rSXsEiA?F z<9u&}ilT(gih^rNFR`cb-U&{|XE!qapFGb`imEK~tn`48b(xg?nLTcgy+(5v_<>kq z#Qq`OX8>IVJQ5S~m56M$5+a%kM~;{sphw{|_F}RDkZ#X^^;ivur167gO_+ zG1`i5i;BardG~Wn(2=SWj0b|flg0Zju~nX&3l-6K3)N=QA5}aMM*-@)m(j`kt{e@%5?B1fPg=N(k zHH1}KDQd{h-d{7YM$kRC5oGCA6a-aW&9TnWjRlag0Aa0w;))DC6WfW4sr6=z-n!$} zXWocK(7HcSDYUe*^%79Ldxro0e$~`NTo3n6Cf+RAQ;UL~-;)ZGm{ZYu-_&9es6{{2 zxJAkbE-q+-aYyYg*=@)Y65vspA~!Xa_sh0QofJ`YB zed!Co9*jtByho7;D8J;nU|sTiq=ET>@ymKQC9=E%gjEriE389hDez5SkCv3B1p^sW zH-dl~+D^IbA3Fr#*C?FhDWaTsPmGY8(valBO~W|MGvck(#k4~)4g@h8pm~+uezaNx7O_A2~ z+MBew>h*|8JBd%c(^4JMH7L3TUI#Ckk(KZnLMetLJQx_^xHY)WO1fpR5iimWzk3p07N4;wUqFP#$cL zW(>0a2j)M`KN3M^lRmY;`J6JBF>jpLF{^w8sGJ@`8o=Z6w%a0Ve&RWE8kn+G%I=^pSZ}Lef`R|4TR#-?S0pUqZbV-0zwf!MryWvc{*AZ zMYb7Lce%?WCq>`Z#@&+fZaO$!7@dshf&orDr7ygQnnY?7Ko{ml6xG{f`Wux1K34WU zMJupm8V;t4r%g*HG~jG3wlT`*H0W7Wht%vx{p}NQ(Tyl*0IcX9AlOwi;c36?7b^X{ z)t)+tzeeBg1y^FIQ}nfBd?mUA+MwrIC4UZgP#UpwWZA*I*U~7&kBscprJ)zM^d4)D zoQeUdwZD@4fe8*AQ%X*Nm1usCWAFDYo0|PalxE@rZvE0@UZg`ln)0f=S28PYtpx-S zm4-{RR=AonCy$I_mE46W_19^R)~nUMeoNY-72<)j!hW(@#y_uTd*8zGG?<-?A6`U} zit`Y!ZaHic1_eX+6;@ikXts9^oy;ds2m6pcwm*mM%b$Xrf-#HL$x{$@88e1HeBc~E*)4gr!Wf~Jq>SE$(N{pQ(6u=n#DRu*?r5^ksC94 zY;|M4S+%XQIzhWC7L7LGd6)Dds-2U;gDElgwg*>ql)5Vn+X110&cWTs0B*D%Aou&i z?e?1)+*=*{*Ng8ZCsdy=>5m+b?o#yKUrGP|uq1=LW!B!v#j$4>_Ho7I+@A!Bj4h$&^}>cNHsh>j%Q5%IPRu;`Fz1VgvH7+yBRucM-So}5 zN=k=~(4UnMA7qKRtWhwfLnxBw0voVHzefrB^8e$N{vZ>c^N%c39n6^@TK*Z!R0GJM z`vaw((}n-{)&ILA@K=exz6A9Sdhh5pL$TWMp|}Qk@k(Gx0R>)O`JRhfyII-rn9BYS zU5X}=4C427xKgLy%I*tCYzkjv8<-IyGVm|&W~~DddjTA%mXg%nOomwCy)9id!nx0D z6}x(7bT3rE6Y;6>w~L6u>E2w4R?hh)){=Sfs{ugkV~N0=r2u?VdIK0P9y&3NWJS)o zM}zu`n`T7ID(+xX>@Q?D9yshA3IKtl77~bknTU?<9Lompg09I8kxm)mDoFuBP^_*6 zm@s=2>5q@Z?o|SOe*kpAc#ZVrJZxN(*y;MGFaLx0L;KhgNRMvq#S&JjHU?xt_I(>1 z4~_w%Bgh|G8-e!#h`~Fjz!tw&Hx9t~7aV;Zv7y8bZqbL0^AVryx^zP4L^4UhP=5fJ z5*~U@ojdGP-@cs=!D=JJUcp*`0i$?>#CN#sdIr=BeQrnVHEEL97q~mso1qNVYh8jT z30F`8A3}Bg2hZMQIvuV62$clc>XhL0iqAO_Q?FwPHjyKb(em6)nu8OzeTjKqyb_qv z)-v;qf7D?(D{RgkwDyqe-hdCF$KH=IcpvFMU5GOclZbS5gCrf^QZaw2M1C)_n3Fp4 z87n8}#g=@H+++3L(7=q`>nR#qUgC5;>(=_6^o?vP{@F{pXqzTA=V`8i9EYnTu!-p} zZ}=wCXP~>PBuQ#e+SUNapDzODO?<+olDuBdesZE}RM3bG?>S1ej&PghX}@ny3`pWWK?K?rD?hh*P z52QM`rxRvhl?p6ZdpdReZ|Kx{SRY#)EC(!1`^=`ycBc0*7A-W1M*#!XGT0y-;=`lH z)?`)oPN+g8QH@`l)J%+^fsN+?M?>gj)x zY6!5teL!`A$&dNWgG+pg_RJ0VFzkR4@RntlXr46KeWLS-M&mSNBv9DSCl->&z7E6Qv?V7|7~w$V=*zf#na2f0&WeCd^38(J4$vasu1zRnTVN9=11z7=ho%vN zuU+{^sV2UwXrX#L+X-l}WtaD5t4&G`rf!upU`%Y@9S?B6*WUKbb1NUV;S`WAt}4d6 zCNtm8I&V8~AE$?Lc7f%wDW_oMi}m8vYOE}L5J)4LQwWfuCV(FS_^{vR832@R_mzZw z`pv$m)Ax|FrjYB$s6aYHWCy9j3c1dx12$W*8LzS*1`%wnet4Yt#9qnNchhRNnC}5< zv|^xG9+Fk%5ATBfFvO;`08}qr{Wp=2?<^+6ew#vnK_E&ysnM`c{7?`izD%l^g|9RJ zorY_XvhIBC_cK`j%az?jy+AYI+sSjV@pKq#5O7_6Taz{%K7;a83WLdA^GW|FDegVm zA*S6fiw$o_HkIwBOJlWZBy?C_ae7?8dZ6~=lwK2Ji1eZP_q@kd;B@}9$S-yvMpl+q zD>jE$+@iwTqj0a50td*~ef7ly_x1NdcJ;mD-C7Vl{GMr?0MK0i$@K&ERND}pby(!KW+;4B zqm!rwAiqEW7C?T5UHSd9Ysz|LnJ0vp!L#Lv2N*+StwDIwq(r)JvDR@nQa*JvV2%5b z#7~z^MIN}LYm^HffFQBKge}#>9id0E2G}Y0iq5O$@e89c%=VJJ2XpK8?Fd=&W_~4a z3jFAW_W&z8t4i$7uw~k|heuSgo-xYB2yR{L;m>%?w4i^Qp80a46R$yOkIL$z-Kne< zd4Bx<_D1-Tn&WtfdPY=4ge>ccTqg^`yv+KkF*PTCKh%i84BwPpm_bb1?RVSZblxMe zRwhI6B&%AhrmXCfC`Js@Zr;qoE*5APVN1EBcFaDvxkwp zi%`)B1&~gDo?CM->PGiym9r3wuhm_Dzip`;7tJip`C}Nyd^5Y>Xx193Xk_^=7FCtxqts6_C!txl<)2Rz6-!vWk)d}c(p@385 z5lyBH{jz#F_#qYP5kM)OEthL8tSU@#`3Q#;^L>@IBdq=pE`P2bSW3rI^lS$0MjgDYDcDQP#9;)R;H!BmRb{l~x*uX6G6esn3>qGIK4Q_Cj18%{$oSRIxof z)nlj)7z{=d1(v~Y+zU!^w-7&|(VJJ5q^g#AO*LncPq{M9)z!S}Eh^=tP{Un8Pa8vD^q>5vbZ04Zw2E1 z#9%jDR-HS=(Zfn2C|j;HiRtCTqF~NIQ)>9gwC6clYS5L_c* zw9uZ0cdLgCJ>Zuxvq&&5Db*_BJXzWBFsj?Wb)4@UO8X766#A6tC;`uL-JyXR+hDZ;wXvC)8wb4o}PyJW~><|J;>kh4RGo|SBruVYmB+%w`WDPC2#)%wx z;t+Q{{0-BDqQsM}5X$8A9B(E(j|)M2)EiQUJ(ca?<7m?sk6P4$7Y?&tz0Yv*Wn0lx zvgHRFtCzLkiBHss@8*bE%d@FWKo8XuSLT0gB+26i|T&zOk8HYE)Mqx>I<_(X7HB(kconS`J z&4}~S+5@`W`6xBT9d`K8OY!qT@+vCtcvUVNG_B59i{;%xC#Xnl$n26g)G&7=$Kxv+ z^JbqA7hAlq?RX(K(?UqecE#+=WX&z3rHn0kTU0Zb?+3F?^DXW@i^!yA~;BS#yvt7y{(7~>e?~ zmYgEV4OVADNX44wpl3Un+O!{RVVtKala>;UTjd1$@~HHVB}}`oSUe8k zPp5nCz`9UgR@BGShUzC-_$W<~*C7MJx}u4OoN&J~c{!l5hQ~xyrzlRR{2eN!+*JI* zHcEBsBE^`b{gVK^E>@{t{w#hM=XJHJ#~UM5hcYd5%BY=fLs~_lT$GLO-|s}IFg>`u z62A@-hgQ(npa*@Kyal?Q0fvXQ{0SUSfVfpZCw9rLUfYN%m5Vpo;&icUL#b2LG4Da+ zfdi75!HHd&>p0!b0Bo6N*9y`4mWy4kNtmTUM!Z1)4foup;;Z6fj&q}`7XBZv)kyVo z9$)ymPeswYO`uaB<)&UH;4?z2hxDS2S2~*#5-J={{oKPyl|j48<))gF&ppiCW%SB% zZz(+BJ939ye}|Ptfsnl8EtjIDg#iZKpbA?8jTx_g5UU`Zr!CW}ytBw#Y&V>EAbY{k zEWl+YK=kebJp}YtA7YHj2X54x&}QZ4Uw1f41V>Y@$A?gjI(i(j8WB+=-7#qvFuL#4 zWKT^!&!b!K!ublI9RwXU4rNx$+G2a*&{CfYy#i}EpkF^RZ$^!rxEL`ZA3G}jF8tgw zLa#s5eT*V-<{XR2vto{zo6LOgW_|S~E$t#_YwDnSo8k64cG=Ys$#Mq|uDmX@4l{fH zIN6pM*k;V3BTYw5kD1632zg~bNdwv0leq=Q@O+y`tGe!BE6o58p-4sdnF>2q{gx`_ zjAP!{k3%9|x1ml+gB?cr5P}F%3U7cT-&15tmYuaa(?i8QRbl%_ca%wEj-HPcw+BOm zm>w`;?ybE)<0=_t13{cfC;$|9R(>0rWxJTxTOl&5z?=!pJ;DJ?E0sX8NfVlknK!;D)lQaL*30BbH~?PE6A?Z*|f znjD?HYwr}TTU*=5Ot(az6b&eLM`^0b=Q?@JZnGlPk2a z+uOipo@ihrVP+-i<=ePf{!_x%w$+EhQ1fGzy*F_!YlEiNy%FcDIA(La2UIoVyS>Xs z5O#utb!%^;Xm6mNmM3MNJ!JW&$5EXdQQ9iA*t^;WvinRjJKD-4S{ELy)tG>Najq!H zU4QuH2hbz^v8>Nge8{&0y7~YD@DP^n^uX40&g1Y;ND47vdn?qM+zc+ad-p$kkmGu>+j*TdWxwkR|>>?w?vp%UBL- zDeyx0DvXU8ulrnz1a1L$&w=?^U(ZRBfcG&hyjg(Wd5qz1X?$Z&lupN?JAuhZm9*K9 zF5d{=5v1)r^W5@6Q*X#~-5xbBIk9pa(XrmCQzU!bT18PkBLOwPQJRUCqu&_>Rt1R% z5u__m;dsd!;7I9()dPe`*rya866MMs&kgtrbp$VnG3gLeL2v-l3F3tNMd8~7P2j8J zT-6BP1;ir(0J{qK;I3#AS;t_w1?U8btQ{k3dMuQ1n47 zv$ak5BuQy1>01-d{);9+aLgj`?G0!Jln9WDj(kMUVxYhe(kjijQA}b7*#RWKqfo2^ zfIn=``g2pz!qd>T1(-8z8=ScVsgq!xC|JZcB+6ND(TXTd08soC;E+GM1)%t~z-ZLq zdA>HK`palE+yOubvwfPszWnG%@Bsq_e~R4ZQSb$9DFrn^GQW-%48H-vF0MR=t)Ei? zR2g1lBsnFb;>BPU);Tp{`P5XSz->&@F>v%Ms+F$KWdFP?N_Yps zEV%Hs?Ys)Uz_amHbg6ra4sI7Bf-1i8xL=7GzGwr4>A{O!#n3NLur$1q$hSLd$_ zug?tVEfSE}d>K3;{3EHo)^8zKpzvUh>w zWaD=MBL%qjuNB~b!fdR7t*#08q|t7M>^{mg5#wtWyU!c1-+3DD962+1H|o36<*gOcUFZ-u`#X^D*H<+Uu3eLmPV!bze$b>+DKQdV z6O@Le?Ljj=f{oD4&A-Pf_#TF7C>ZF2TB#qh*)Lywb@)ItRDdj6kw~!$C}KCO0S0(+ zy5X>UxNW&0Vt*Z~?W6G7hFZsW4-IbYi)_EJ*kpT8kRhMrb?OyCZLhPrQo^4Xm{c`t zxK%HNV=B2kKi=)|_5#a&65b7%yMM*rK)>>hzCqrc#6kX*xq`nd{(l7EU(B*b4#?(D z3=@B1N9ZMfqj)%V3izM1c4t2u{B3f8{|42@S9t$ThTjI-L{Bnd?yP5&)(pOp#s{amu%cbA=TmC)`3*&!BnJ@m^Y!!cdn4#a5 z`NZE-jNfQI{xiHWe?ytS84Vy@SukV&J#wCJ!u3w2x(e+ugGAu@2kPIBtqOgix3L5C zHkF-&izEuEaR`dDDH8A5=n@9GS#jJB-D}q^?0kt|mzlk3eBVVbD{|&HeApUW#l)Qc z`c_5hGP^h@Zz0w@FX9VRm1r4xWzPBl+=#hH3S?7Srqmlh!m573u!2F^fV_ zZYqlAh2ByJ4t0_xB)oxt^3~mO^~Dx^5W@4D5t9U?e<8a)jRX)^19PW<|DyG>S{F%a z+E*CXDg)Ks{*^^tAI9wW2QDSOAy^4}cp7v34qD@+=l;Z^tj!2Om7W?^KrBI&g z^IVlHx)LFtD|Y>{4pzl;vQ|ed>1=NJF_kwl*sI9JYg*-Xd*%)3w9FOQU3!g`~n|hq@m`q44H{;BMb>H>yJyE5d@orc{>LAl9Xyo%XuPLI><0^dj)*ra;6Pu#Y3=_NvVf;fvA3nohX9`$uyIB{Hm=-Ck{ z?9|glidhniZ%h1aLqveKdp2U_2;NQ6AG35P!Kjy|=gxfD6!Z+U)cAqulBpA-Wjlj0 z()Kwy@#;b~n;X?h@m)h#dG9A%GoMopQP1dGM-8ka`g(d-XBE6g zs4LY&izMrXj@H#seUiO3smVAWX&YB2&ru@DP~l7yJ$;oll)K#yS|&@6ElpZ@Kq=&%NLK{eI8+o%8)e zXU?n7In3wvdB5ME_xtsHJs%I!4jU`-&eworGE|R#?h>uXd0ZXw#t-A44-A*MR&U+ zX3cyjU~+})gb{kU5sx#HU5ycr86JD+#d!VoC*&U3EwXIXXS$v?xH&_C&*g-tyKct5 z!{0cSRBH?o;ubrlc7qtqlT%?FQnXLEIWIEDxxF~IZ#HVjF!BD^Y|WY9VQ5y<*uSnxjCyMyC|L_i^>L6O(O4 zu@*~rx@Gkr(zr>bQ3p+J`NRqeN^-}@QXE>& zKh@0EBM6UWCl7Hl->9vD#NXLct3AIJ+1{nz`AjPr_im7hlKkx`oDw3!w(p6I>m< zITlo016S`4IZR2hO!0Hb;tup%%PB4U!VWT>zLTCO_2I|Xl>oP6gDclAJ@&gDTDtqD zQ}qNCJr<;bOrV}bSx>8dwyP6>>@o`Z>St>=#@P*l^r@ClKns8pXrrRq3pUkA{tUvNnCr!S^ zAOtX7Dni33fgfL(PVD=1Fsc`ce({)Hd-w6HVT=dryqwJBo`Ajc1Q~&XC7|I!Z(ZH^ zj$qdGqAgw0wKzH_ruI}RP&3iO0tg&&KPYkGdP5t+*@GPV1NG3s~geq92ViF8GD z##98Cr#b%iLfI^AVbGhEE&*lt{AjnIOJlR#DkrA2eazGJ*=3&_Pq;IV*YWJtJ_pGaMnDyoEWf&Tixf{`uKx!3;N5r))}VGv6jv(4{8W-tpL}vM891 z;-l`^*^6ib2Mf*+*00XA?jfsw?zqUu;%MwZ?C?*W$WM*`ffM9Ssyjk|nfH?d$Saoe2?^4Vd&Skf}VEyPINZV8E@;d7&O^871{ z&+4R3?2;fC=!U0a=yt%GKMG%ebng7%K?A5H6gzRr)*wwJcX^*l(ky##V0U_1%w)NL zrvZ6)zKDy(ROf_Te~b}K5U-6_Ht&AFW=Ft;EX41HvsUH6vumM@Ua+A?rhRD5VI2dT zVclcmF@hMMlM*_@Atyf5ArgoXh|vVKiXe?15Q!@SH{D1HM%=(c=Of`hwv zO4Wnf#~JokPkk~%FWr7Ygh;ktslyiAUbIDbX&dE&%8t0iOlPN$`S*rTZR&a?UB%4` z2GYb2m1td2mcyZswyNw0ec+dbYL8K}3D2m~ZNME?{Ds?Xe5(aF6dmIz?>mw<;p&vP zNAoGwn39-G8C){xW$AnYyzPh?%~$d|3(u;s>F^|9eyQv;THseJZC7QT)d$&LyZ=FY zm$TETL9upg$W&hcWX6J`Q>l|uYgmewddqYV#&y~)qtzxsv;Vvolr&b;yuGp*6|($R z*$CY}J?(OtYL*f|t*Ug{Cz5lhcqJz|>?ha(ZkGDqIp{POc^l%m7mUnV!rNK?igz7X z@8WQC$>3^w`pYNR-39NmU=*x`;vC^Tx*VO49bsbV{VG2k8rUMcYuWh0Rtt&c`3i}KsEVhqq z7f^i10vbUXn`zQ;oK7cg7nL;!(=lZ)A#3MZQ|6=m;1>E;VaQKUPB-05eb*m+&zxUf zgX_MbNNv7t7VIP{tW~{6RMHgFA=PIolJgWa-(Ap^jqxZ_$G8s8B}M(8zol-Ce7+prdg`g#EDVO6Ik#gE~vxQH=rjuMaxE!51kqwuSlv9ln>)OZZuWUTEqh z-ut<&IaimLYO0xFhRmm2GcC42Ed#xgdV}Qxl9nKyu9v5oX60>N=Q zbuKBXe;O4Y7M@#NhJxW<5hwySB;?W|O2sG~S49&otSD-8JLd1X^bTgBllP&8a_FWr zZjN}5TTzi{G{DLL4kCxGs^T9ygGJ&|RI;^_eY_3wy2~B(#lT@M%ia;^ z?Ah0QEH2)PhGmxUIp7?7E&Xp-xRYD!lsiL6YO zFk&{VDfacmoe2X}P;sxASg5cd12f`NeN~)7jir|)Wsm^bW&_=Iw@e3`^XRyWawY|N zzBsq&im6tZd&1nP%LVQGd3*H~VEx;&LxdC5_}Ux|$1cq!bL0XG_ln_om`X#`!%MMN z=Im|Zuo--pwytTXspo{ZR1yV=jnA#9gg!LrgRfQ5#5+qZudj!v*x*@~@rlBwALA^7 zH5#}h7(+|9OR31$A=zY=2l3g2J;{9e$&D%FN*duT{SEzzXRY7Ov}CQl@xAlzhSWg0 zO+s-R=}bwiZPvx8ll@`+M-xo1NX8Ul9}*P}wb_pg*UIIVcq(JuGD_B-ba}aTpca86 zoOCJrxpI&)%5};5SOB(8EdKR#$?qXP34p<@fL z0U$cIM1CeXfCAcAjE=uZaQNk0ZxT8NN1|xo{Y6BF@m53!0svSpRw5~104(1GegUw| ze~ah4SoC**AqWFc?O&hSmWp3VJKyAW0g!gS34E34)i0!-zn15Czz_Js+Nr3Qr0)9j zu$|3B|LZgsE0E@YjmGl(Nv`-atetPiF_8L3uRMSZJ&I=s&b9Bp45`Hl{#<|RzL?7t zE3&CJSspYg9vN2MH)=nfxd5Cf4aCwKWZq50oO#3YQ_4}zBjw{l&wsoLtSCR$!UJN5 zQ*~G`B#efkbG3SA(|Ud)rTCMcJ-cDk?)Ba#qoA`Zh{Ni5NHE+ZK8qv`0;p+Qxe90r~VLrER`=Q(c-6Z9}G?66GR_1sD zdx*u&vdCWGM71W9Z>a3(T(7sjkV4CwB6H5mO*f0K^T(9*9R296d0(e_6DKsR2IeYJ z0E^mj2OOfZBeCBGIF_JfW*IP3Eme>NH+V#B;r_@tD1`~4pPCIoMqZj=`0Rj#QXXB_ z1_=GP0Y61BYS*A1td!sviqyHaXn>#kGrt+2M5H!WBmCNXWc5t~ZY-(~2gp}oisWYl zfUJAwK;ZvYG=7s>zcq095%^2hx(5J%L}(9ErTin9`8EuxD4_syvl~FFwp|5Va&`XS z1jx+bF03q-F911&!kv}TWf?%8+FSsuy)J+Xmob1;?FRGTCV~C8p@$Y5!!>{TB@jW> zW8-m>Me!*e#sE{LCIB#1^raj?R0p~+pJ@IzaFz#5%ih^#j8qLh9-6y%6IjU`UdkNlHaR2oL*Zl_){Ld$izcqCIkXwds zEXR&i#vOKmjK|MG)`86J{*q!3|EX7?hwDnW+EJ=m8&#gDDyojbbd7;K}eFxqYeRu7RN+6j1-C_x;I&2r>p6Hgy_D8PrK4ax5L~=d! zuN4P!U?i;nh%&X;o47HRTtD;)p^gF+w+nH^+?hED5Pw}Y; zT0hwWnGWiHgJ|PtAg;fH*f`Knns|wIshtcnb_hv<^T+0SNs!mY;XtHJp z8j{upEg5nCIPts$(-+_89cf%O%NwZz<6PGbXT@}mCC%wFwHQDwi5cn$ahHfnrUbT)CO$v3%RV`f zGg{^4n;$Z#*634rE8dW~7bZ=$T4R8_jtxl$P|aTAz0Q%S<@^{=pbR01JnA~xu}^j2 zMyAv-yoKTHx%536fD9h(OWw|M&@fI;LM9bofD+ZJvFnDxC;}ZdaPPp#Bbg_}_4Wq3 z73&U&=+&F|j^7!LgclcGdThk<1j$OXRHNCDlVecAWIYiNC0{x;=l6 z4KWWprN?;Zk*HcZF#q$pHBg^Sd%xUmz+CS@nC#gvkSKfxVqm6`LmJd6UC%>NT?=wG zhobXx$egDVZO%nPWK&*QIKKo-k$v3tn!$@rwgizH=USfnWskM;EWFpd#zM`>BA6IV zajh+0)TmWc*PCOp;>kQ~fR|7@MgF|08C17JHskfBC)Z0cp6&D(hRk@ACFe zUi*Q{io`oCRr)D6#$@O!)m6C`XQdns$+&t|hg<0G`5#_JM$}i4oVr;;QW|J-w1$Iv z_el1WwTJ_`6yGG%Pu)2twnluC?M7XMwyQhGd>@NQ&mP`A_x8mLW_zq8v58k*BT}G0 zO*Sh6uRE1JMl)8D*|V+ojEj}u@+$`5S(g`9f{DOwODHez{7h%TdVkfeP88~wF|5xU z&u&}r(a!yX@+~ylVpjyG#i*aNYvc+Yx8;S?J2J3TGm=Dm6%t*oCj8tEH;toc-Flz( z{ZT|qfX$A#W7?5}qbD+nJe+4>Y@5FRDzr?I4ogkHw4T&o;E9 zjbLgm&3qQ>9`e(NNdEd1<#f0aubSO>xEX0Q3oTXb;vCl0#&8Lr;d_W-Tm591U5nkP zxv8p1IiG3+3Y01}5AWmsQQTM~Yho}^7r_kPK4%oa?j-y2`A>N}A;3cQ=e(V+{4;N- z!;lldQ+FR9U#qH+f(+$2Nz>Z#I@2%|;T^l2g5cHun~21Dj#WlK$Q&dYs44~KD!3~~ zV&l`PxbRP#O>DtcUpKLR^?6V4k~1aBlH>-o=~UfRtcz+~xU!CzYXeI3{vpY2(S~uF zMjR7-`_}V75ppN>2qofW-Rp^cwg}-42Z=nLguP7MGjAWk>JTFil7hFHnfMaZRz3!< z^x^y*;j87nY#GZQpXo$l2$()Z$I7uSbSaHuMR4$^skGr#9!#+-|X#ySSDs zCW_}A2dBEX56wPOg8CyZ`MKbG>^zq`y-ug~n)l*(tYNJ;q&S&tuna4EP9%8-&J~Mh zGgVS{@9vl-YnUzuIYWaKop`Q?W`@O>PhB;N6?_UE%2QQd(x-I4_S!)Sch9u#T3(jJ z9K6)&lbmEdx9cd~@xwhDt&iMsIaz`F__hy-S~jXesD3f6Z@w8l!OZ3GL1o@))UUt7 zE&5(wR)5i0KHQt5{ShIUQ-*EvIlh7Hxfn9NQnIY*OcScRmg;SOUt2D$$Gk27Gu=^( z@w5v2eu=uJ2maMv9`M@O?1$Z0TULz0J zR=!tj#$NWVXaV>89cACpQef)?!Dwy#+Z$VDwQFV83cH^>$ z(S|L|A$w1*M{V+xryUnR z)8+kAw!~BZ0HFMbWy|m2RozkGr6gDX0mN4I2)?^I5<@>+hwPDrS6kMy!#3iY?!(F)`b2e}(0{Ems7j~vfP_RqojZQf)uM_kXr3u!_p2f z18tiaf=C4ZW?L=>2dqJav2|v1S+L28fzmXy-^i`CVg^DNu|PlkGGLtmjyc!-D?V{T zoXB8DeXb$R)BGe4B8POd!3^5{;gI*I-dW96LM-zA4>S_ke|TdD7nt}9L4joJ z#X!jnZiqX$AzZ)SkjW{Q@&)ksuRFF>d^&=JBdgVbrf)}RpBH%D-g@!x-aUpv5AY3W zg;vl7Hb^OCm>=ji>FZ|Hz|*t!R)d4EXXSjz_ccV|v;fBUh{xJ?hcfU5zTA6$GHanH z?ViOlKR?ijZ@CykXo9jrKHVS#0}edcr>lD3!wiI!FCeoHbgzG>Kg&w-?*nSLQ#os) zq2T3k%f(?H ziNGOAdJg`BXk3s*_iYALh8^cxNPbJQW9}i{2E(b#om>inH+?kVN6LNH$`=MwX1dh` z0%dF$`bF|bh~fv!Cv#dK47~_vF*=!gJt3Lv?lgL)w4PC0IH6Q#0yJ!WV`Q-L`nml; S!Z&8^UmLgoTR(6A-1C1M_q1OC diff --git a/.github/KNX_menu.jpg b/.github/KNX_menu.jpg deleted file mode 100644 index 1fea0abf6b3cbd49f4d8487e5497311527f46991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77343 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%0Dc= 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 diff --git a/.github/stale.yml b/.github/stale.yml index 9a3b438ac..88c5f7c21 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,7 +1,3 @@ -# Configuration for probot-stale - Activate from https://github.com/apps/stale -# -# Probot-stale Repository: https://github.com/probot/stale - # Number of days of inactivity before an Issue or Pull Request becomes stale daysUntilStale: 45 @@ -30,7 +26,6 @@ markComment: > This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. - # Comment to post when removing the stale label. # unmarkComment: > # Your comment here. @@ -38,21 +33,8 @@ markComment: > # Comment to post when closing a stale Issue or Pull Request. closeComment: > This issue will be auto-closed because there hasn't been any activity for a few months. Feel free to open a new one if you still experience this problem. - # Limit the number of actions per hour, from 1-30. Default is 30 limitPerRun: 30 # Limit to only `issues` or `pulls` -#only: issues - -# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls': -# pulls: -# daysUntilStale: 30 -# markComment: > -# This pull request has been automatically marked as stale because it has not had -# recent activity. It will be closed if no further activity occurs. Thank you -# for your contributions. - -# issues: -# exemptLabels: -# - confirmed +only: issues diff --git a/COPYFILES.BAT b/COPYFILES.BAT deleted file mode 100644 index 8d7cf75f5..000000000 --- a/COPYFILES.BAT +++ /dev/null @@ -1,37 +0,0 @@ -@echo off - -echo *************************************************************** -echo: -echo Copying Firmwares for Release -echo: -echo *************************************************************** - -cd %USERPROFILE%\Documents\GitHub\Sonoff-Tasmota_KNX\.pioenvs - -copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin -copy sonoff-BR\firmware.bin sonoff_KNX-BR.bin -copy sonoff-CN\firmware.bin sonoff_KNX-CN.bin -copy sonoff-CZ\firmware.bin sonoff_KNX-CZ.bin -copy sonoff-DE\firmware.bin sonoff_KNX-DE.bin -copy sonoff-DE_4MB\firmware.bin sonoff_KNX-DE-4MB.bin -copy sonoff-EN\firmware.bin sonoff_KNX-EN.bin -copy sonoff-EN_4MB\firmware.bin sonoff_KNX-EN-4MB.bin -copy sonoff-ES\firmware.bin sonoff_KNX-ES.bin -copy sonoff-ES_4MB\firmware.bin sonoff_KNX-ES-4MB.bin -copy sonoff-FR\firmware.bin sonoff_KNX-FR.bin -copy sonoff-GR\firmware.bin sonoff_KNX-GR.bin -copy sonoff-HU\firmware.bin sonoff_KNX-HU.bin -copy sonoff-IT\firmware.bin sonoff_KNX-IT.bin -copy sonoff-minimal\firmware.bin sonoff_minimal.bin -copy sonoff-NL\firmware.bin sonoff_KNX-NL.bin -copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin -copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin -copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin -copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin -copy sonoff-UK\firmware.bin sonoff_KNX-UK.bin - -echo: -echo: -echo DONE... -echo: -pause diff --git a/README.md b/README.md index e9848b800..6c1bf4e3d 100644 --- a/README.md +++ b/README.md @@ -1,166 +1,3 @@ -# Sonoff-Tasmota KNX (Development Repository) -## Now integrated in [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota)! - -[Sonoff-Tasmota_KNX](https://github.com/ascillato/Sonoff-Tasmota_KNX) is a modification for [Sonoff-Tasmota](https://github.com/arendst/Sonoff-Tasmota) to add a basic functionality of the [KNX IP Protocol](https://www.knx.org/knx-en/index.php). - -[![GitHub version](https://img.shields.io/github/release/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![GitHub download](https://img.shields.io/github/downloads/ascillato/Sonoff-Tasmota_KNX/total.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/releases/latest) [![License](https://img.shields.io/github/license/ascillato/Sonoff-Tasmota_KNX.svg)](https://github.com/ascillato/Sonoff-Tasmota_KNX/blob/development/LICENSE.txt) - -If you like **Sonoff Tasmota KNX**, give it a star, or fork it and contribute! -[![GitHub stars](https://img.shields.io/github/stars/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Star)](https://github.com/ascillato/Sonoff-Tasmota_KNX/stargazers) -[![GitHub forks](https://img.shields.io/github/forks/ascillato/Sonoff-Tasmota_KNX.svg?style=social&label=Fork)](https://github.com/ascillato/Sonoff-Tasmota_KNX/network) - -Any help or comment is very welcome. - -## Table of Contents - -* [KNX Explanation](#knx-explanation) -* [Integration](#integration) -* [Requirement](#requirement) -* [Usage Examples](#usage-examples) -* [Development Road Map](#development-road-map) -* [Modifications to Sonoff-Tasmota](#modifications-to-sonoff-tasmota) -* [Contributors](#contributors) -* [Sonoff-Tasmota](#sonoff-tasmota) - -## KNX Explanation ## - -[](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) - -The [KNX IP Protocol](https://www.knx.org/knx-en/knx/association/what-is-knx/index.php) is an _international open standard_ for smart homes and smart buildings automation. It is a decentralized system. Each device can talk directly to each other without the need of a central controller or server. Any panel or server is just for telesupervision and for sending requests. KNX IP Protocol uses a UDP multicast on _224.0.23.12 : 3671_, so there is no need for a KNX Router unless you want to communicate to KNX Devices that are not in the WIFI Network (Twisted Pair, RF, Powerline). - -Each device has a physical address (like a fixed IP) as **1 . 1 . 0** and that address is used for configuration purposes. - -Each device can be configured with group addresses as **2 / 2 / 1** and that address can be used for sending/receiving commands. -So, for example, if 2 devices that are configured with the **2 / 2 / 1** for turning on/off their outputs, and other device send _Turn ON_ command to **2 / 2 / 1**, both devices will turn on their outputs. - -## Integration ## - -Several home automation systems have KNX support. For example, [Home Assistant](https://github.com/home-assistant/home-assistant) has a [XKNX Python Library](https://github.com/XKNX/xknx) to connect to KNX devices using a KNX Router. If you don't have a **KNX Router**, you can use a **Software KNX Router** like [KNXd](https://github.com/knxd/knxd) on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF. - -If you use the ETS (KNX Configurator Software) you can add any Sonoff-Tasmota_KNX as a dummy device. - -## Requirement ## - -* [ESP KNX IP Library](https://github.com/envy/esp-knx-ip). A copy of the library is also available [here](https://github.com/ascillato/Sonoff-Tasmota_KNX/tree/development/lib/esp-knx-ip-0.5.0). - -It is recommended to compile with version 2.3.0 of the esp8266 board libraries. With v2.4.0 and v2.4.1 there are some issues related to sleep command. - -## Usage Examples ## - -There are multiple possible configurations. Here are explained just a few as example. The options for selecting relays, buttons, sensors, etc. are only available if were configured on _Configure Module Menu_. - -To configure KNX, enter on the Configuration Menu of Sonoff-Tasmota and select Configure KNX. - - - - -**1) Setting Several Sonoff to be controlled as one by a Home Automation System:** - -We can set one of the group address to be the same in all the devices so as to turn them on or off at the same time. -In this case, so as to inform the status of all the relays to the Automation System, just one of the devices have to be configured as the responder. If you use the same Group Address for sending and receiving, you have to take into account not to make loops. - -DEVICE 1 - - - -DEVICE 2 - - - -**2) Setting 2 Sonoff to be linked as stair lights:** - -We can set one device to send the status of its output and another to read that and follow. And the second device can send the status of its button and the first device will toggle. With this configuration we can avoid to make a loop. - -DEVICE 1 - - - -DEVICE 2 - - - -**3) Setting a button as initiator of a scene:** - -Just setting one device to send the push of a button, and the rest just use that value to turn them on. In this case, there is no toggle. Every time the button is pushed, the turn on command is sent. - -DEVICE 1 - - - -DEVICE 2 - - - -**4) Setting a Temperature sensor:** - -We can configure to send the value of temperature or humidity every teleperiod. This teleperiod can be configured. See Sonoff Tasmota [wiki](https://github.com/arendst/Sonoff-Tasmota/wiki/Commands). It is recommended also to set the reply temperature address. - - - -## Development Road Map ## - -**For Sonoff-Tasmota_KNX:** -- [x] Add Web Menu -- [x] Add Feature to Receive telegrams and modify Relay Status -- [x] Add Feature to Receive telegrams from multiple Group Addresses to modify just one relay status (useful for scenes) -- [x] Add Feature to Send telegrams of relay status change -- [x] Add Feature to Send telegrams of one relay status to multiple Group Addresses (useful for scenes) -- [x] Add Feature to Send telegrams of button pressed -- [x] Add Feature to receive telegrams to toggle relay status -- [x] Add Feature to read Temperature, Humidity from Tasmota -- [x] Add Feature to send Temperature, Humidity by a set interval (tasmota teleperiod) -- [x] Add Feature to receive command to read temperature, Humidity -- [x] Add Feature to recognize Tasmota config to show the same number of relays, buttons, etc. -- [x] Add Feature to Save Config -- [x] Add Feature to Load Config -- [x] Add Log Info -- [x] Complete all the language files with keys -- [x] Add support for other output devices supported by Tasmota -- [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) -- [x] Add command for rules to send values and commands by KNX -- [x] Add events for rules when receiving data from KNX and read requests -- [x] Add option for increase communication reliability (re send telegrams) -- [ ] Add option for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) -- [ ] Add option to support KNX Snooping to debug KNX Network -- [ ] Add option for KNXnet/IP Tunneling -- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling -- [ ] Add option to support ETS Programming -- [ ] Optimize code to reduce Flash and RAM - -## Modifications to Sonoff-Tasmota ## - -* Added the file _/sonoff/xdrv_11_KNX.ino_ -* Added the entry `#define USE_KNX` on _/sonoff/user_config.h_ -* Added entries to the file _/sonoff/webserver.ino_ -* Added entries to the file _/sonoff/sonoff.ino_ -* Added entries to the file _/sonoff/sonoff.h_ -* Added entries to the file _/sonoff/settings.h_ -* Added entries to the file _/sonoff/support.ino_ -* Added entries to sensor files -* Added entries to language files - -Up to now, enabling KNX uses +23k of code and +3k3 of memory. - -There is **NO CONFLICT** with MQTT, Home Assistant, Web, etc. Tests show fast response of all features running at same time. - -## Contributors ## - -* [ascillato](https://github.com/ascillato) ( Adrian Scillato ) -* [sisamiwe](https://github.com/sisamiwe) - Thanks for the guide on using KNX. -* [envy](https://github.com/envy) ( Nico Weichbrodt ) - Thanks for the patience and help with the modifications to ESP_KNX_IP. -* [arendst](https://github.com/arendst) ( Theo Arends ) - Thanks for the guide on Tasmota and for the ideas. -* [johannesbonn](https://github.com/johannesbonn) - Thanks for the patience on bug resolutions -* [RocketSience](https://github.com/RocketSience) - Thanks for the patience on bug resolutions -* [jeylites](https://github.com/jeylites) - Thanks for the patience on bug resolutions -* [smurfix](https://github.com/smurfix) ( Matthias Urlichs ) - Thanks for the KNX guiding and [KNXd](https://github.com/knxd/knxd) use. -* And many others providing testing, bug reporting and feature requests. - ------------------------------------------------------------------------------------------------------------------------------------ - -[](https://www.paypal.me/ascillato) - ------------------------------------------------------------------------------------------------------------------------------------ - ## Sonoff-Tasmota Alternative firmware for _ESP8266 based devices_ like [iTead](https://www.itead.cc/) _**Sonoff**_ with **web**, **timers**, 'Over The Air' (**OTA**) firmware updates and **sensors support**, allowing control under **Serial**, **HTTP**, **MQTT** and **KNX**, so as to be used on **Smart Home Systems**. Written for Arduino IDE and PlatformIO. diff --git a/lib/Adafruit_GFX-1.2.2.07/.gitignore b/lib/Adafruit_GFX-1.2.2.07/.gitignore deleted file mode 100644 index 7b2fd3a2f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -default.vim -fontconvert/fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp deleted file mode 100644 index 53c7ad35c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp +++ /dev/null @@ -1,1348 +0,0 @@ -/* -This is the core graphics library for all our displays, providing a common -set of graphics primitives (points, lines, circles, etc.). It needs to be -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. - */ - -#include "Adafruit_GFX.h" -#include "glcdfont.c" -#ifdef __AVR__ - #include -#elif defined(ESP8266) || defined(ESP32) - #include -#endif - -// Many (but maybe not all) non-AVR board installs define macros -// for compatibility with existing PROGMEM-reading AVR code. -// Do our own checks and defines here for good measure... - -#ifndef pgm_read_byte - #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#endif -#ifndef pgm_read_word - #define pgm_read_word(addr) (*(const unsigned short *)(addr)) -#endif -#ifndef pgm_read_dword - #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) -#endif - -// Pointers are a peculiar case...typically 16-bit on AVR boards, -// 32 bits elsewhere. Try to accommodate both... - -#if !defined(__INT_MAX__) || (__INT_MAX__ > 0xFFFF) - #define pgm_read_pointer(addr) ((void *)pgm_read_dword(addr)) -#else - #define pgm_read_pointer(addr) ((void *)pgm_read_word(addr)) -#endif - -#ifndef min -#define min(a,b) (((a) < (b)) ? (a) : (b)) -#endif - -#ifndef _swap_int16_t -#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } -#endif - -Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): -WIDTH(w), HEIGHT(h) -{ - _width = WIDTH; - _height = HEIGHT; - rotation = 0; - cursor_y = cursor_x = 0; - textsize = 1; - textcolor = textbgcolor = 0xFFFF; - wrap = true; - _cp437 = false; - gfxFont = NULL; -} - -// Bresenham's algorithm - thx wikpedia -void Adafruit_GFX::writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - uint16_t color) { - int16_t steep = abs(y1 - y0) > abs(x1 - x0); - if (steep) { - _swap_int16_t(x0, y0); - _swap_int16_t(x1, y1); - } - - if (x0 > x1) { - _swap_int16_t(x0, x1); - _swap_int16_t(y0, y1); - } - - int16_t dx, dy; - dx = x1 - x0; - dy = abs(y1 - y0); - - int16_t err = dx / 2; - int16_t ystep; - - if (y0 < y1) { - ystep = 1; - } else { - ystep = -1; - } - - for (; x0<=x1; x0++) { - if (steep) { - writePixel(y0, x0, color); - } else { - writePixel(x0, y0, color); - } - err -= dy; - if (err < 0) { - y0 += ystep; - err += dx; - } - } -} - -void Adafruit_GFX::startWrite(){ - // Overwrite in subclasses if desired! -} - -void Adafruit_GFX::writePixel(int16_t x, int16_t y, uint16_t color){ - // Overwrite in subclasses if startWrite is defined! - drawPixel(x, y, color); -} - -// (x,y) is topmost point; if unsure, calling function -// should sort endpoints or call writeLine() instead -void Adafruit_GFX::writeFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // Overwrite in subclasses if startWrite is defined! - // Can be just writeLine(x, y, x, y+h-1, color); - // or writeFillRect(x, y, 1, h, color); - drawFastVLine(x, y, h, color); -} - -// (x,y) is leftmost point; if unsure, calling function -// should sort endpoints or call writeLine() instead -void Adafruit_GFX::writeFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // Overwrite in subclasses if startWrite is defined! - // Example: writeLine(x, y, x+w-1, y, color); - // or writeFillRect(x, y, w, 1, color); - drawFastHLine(x, y, w, color); -} - -void Adafruit_GFX::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // Overwrite in subclasses if desired! - fillRect(x,y,w,h,color); -} - -void Adafruit_GFX::endWrite(){ - // Overwrite in subclasses if startWrite is defined! -} - -// (x,y) is topmost point; if unsure, calling function -// should sort endpoints or call drawLine() instead -void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // Update in subclasses if desired! - startWrite(); - writeLine(x, y, x, y+h-1, color); - endWrite(); -} - -// (x,y) is leftmost point; if unsure, calling function -// should sort endpoints or call drawLine() instead -void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // Update in subclasses if desired! - startWrite(); - writeLine(x, y, x+w-1, y, color); - endWrite(); -} - -void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // Update in subclasses if desired! - startWrite(); - for (int16_t i=x; i y1) _swap_int16_t(y0, y1); - drawFastVLine(x0, y0, y1 - y0 + 1, color); - } else if(y0 == y1){ - if(x0 > x1) _swap_int16_t(x0, x1); - drawFastHLine(x0, y0, x1 - x0 + 1, color); - } else { - startWrite(); - writeLine(x0, y0, x1, y1, color); - endWrite(); - } -} - -// Draw a circle outline -void Adafruit_GFX::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; - - startWrite(); - writePixel(x0 , y0+r, color); - writePixel(x0 , y0-r, color); - writePixel(x0+r, y0 , color); - writePixel(x0-r, y0 , color); - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - writePixel(x0 + x, y0 + y, color); - writePixel(x0 - x, y0 + y, color); - writePixel(x0 + x, y0 - y, color); - writePixel(x0 - x, y0 - y, color); - writePixel(x0 + y, y0 + x, color); - writePixel(x0 - y, y0 + x, color); - writePixel(x0 + y, y0 - x, color); - writePixel(x0 - y, y0 - x, color); - } - endWrite(); -} - -void Adafruit_GFX::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; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - if (cornername & 0x4) { - writePixel(x0 + x, y0 + y, color); - writePixel(x0 + y, y0 + x, color); - } - if (cornername & 0x2) { - writePixel(x0 + x, y0 - y, color); - writePixel(x0 + y, y0 - x, color); - } - if (cornername & 0x8) { - writePixel(x0 - y, y0 + x, color); - writePixel(x0 - x, y0 + y, color); - } - if (cornername & 0x1) { - writePixel(x0 - y, y0 - x, color); - writePixel(x0 - x, y0 - y, color); - } - } -} - -void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { - startWrite(); - writeFastVLine(x0, y0-r, 2*r+1, color); - fillCircleHelper(x0, y0, r, 3, 0, color); - endWrite(); -} - -// Used to do circles and roundrects -void Adafruit_GFX::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; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - if (cornername & 0x1) { - writeFastVLine(x0+x, y0-y, 2*y+1+delta, color); - writeFastVLine(x0+y, y0-x, 2*x+1+delta, color); - } - if (cornername & 0x2) { - writeFastVLine(x0-x, y0-y, 2*y+1+delta, color); - writeFastVLine(x0-y, y0-x, 2*x+1+delta, color); - } - } -} - -// Draw a rectangle -void Adafruit_GFX::drawRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - startWrite(); - writeFastHLine(x, y, w, color); - writeFastHLine(x, y+h-1, w, color); - writeFastVLine(x, y, h, color); - writeFastVLine(x+w-1, y, h, color); - endWrite(); -} - -// Draw a rounded rectangle -void Adafruit_GFX::drawRoundRect(int16_t x, int16_t y, int16_t w, - int16_t h, int16_t r, uint16_t color) { - // smarter version - startWrite(); - writeFastHLine(x+r , y , w-2*r, color); // Top - writeFastHLine(x+r , y+h-1, w-2*r, color); // Bottom - writeFastVLine(x , y+r , h-2*r, color); // Left - writeFastVLine(x+w-1, y+r , h-2*r, color); // Right - // 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); - endWrite(); -} - -// Fill a rounded rectangle -void Adafruit_GFX::fillRoundRect(int16_t x, int16_t y, int16_t w, - int16_t h, int16_t r, uint16_t color) { - // smarter version - startWrite(); - writeFillRect(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); - endWrite(); -} - -// Draw a triangle -void Adafruit_GFX::drawTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { - drawLine(x0, y0, x1, y1, color); - drawLine(x1, y1, x2, y2, color); - drawLine(x2, y2, x0, y0, color); -} - -// Fill a triangle -void Adafruit_GFX::fillTriangle(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) { - - int16_t a, b, y, last; - - // Sort coordinates by Y order (y2 >= y1 >= y0) - if (y0 > y1) { - _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); - } - if (y1 > y2) { - _swap_int16_t(y2, y1); _swap_int16_t(x2, x1); - } - if (y0 > y1) { - _swap_int16_t(y0, y1); _swap_int16_t(x0, x1); - } - - startWrite(); - 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; - writeFastHLine(a, y0, b-a+1, color); - endWrite(); - return; - } - - int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1; - int32_t - 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 - - 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_int16_t(a,b); - writeFastHLine(a, y, b-a+1, color); - } - - // 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_int16_t(a,b); - writeFastHLine(a, y, b-a+1, color); - } - endWrite(); -} - -// BITMAP / XBITMAP / GRAYSCALE / RGB BITMAP FUNCTIONS --------------------- - -// Draw a PROGMEM-resident 1-bit image at the specified (x,y) position, -// using the specified foreground color (unset bits are transparent). -void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color) { - - int16_t byteWidth = (w + 7) / 8; // Bitmap scanline pad = whole byte - uint8_t byte = 0; - - startWrite(); - for(int16_t j=0; j>= 1; - else byte = pgm_read_byte(&bitmap[j * byteWidth + i / 8]); - // Nearly identical to drawBitmap(), only the bit order - // is reversed here (left-to-right = LSB to MSB): - if(byte & 0x01) writePixel(x+i, y, color); - } - } - endWrite(); -} - -// Draw a PROGMEM-resident 8-bit image (grayscale) at the specified (x,y) -// pos. Specifically for 8-bit display devices such as IS31FL3731; -// no color reduction/expansion is performed. -void Adafruit_GFX::drawGrayscaleBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], int16_t w, int16_t h) { - startWrite(); - for(int16_t j=0; j= _width) || // Clip right - (y >= _height) || // Clip bottom - ((x + 6 * size - 1) < 0) || // Clip left - ((y + 8 * size - 1) < 0)) // Clip top - return; - - if(!_cp437 && (c >= 176)) c++; // Handle 'classic' charset behavior - - startWrite(); - for(int8_t i=0; i<5; i++ ) { // Char bitmap = 5 columns - uint8_t line = pgm_read_byte(&font[c * 5 + i]); - for(int8_t j=0; j<8; j++, line >>= 1) { - if(line & 1) { - if(size == 1) - writePixel(x+i, y+j, color); - else - writeFillRect(x+i*size, y+j*size, size, size, color); - } else if(bg != color) { - if(size == 1) - writePixel(x+i, y+j, bg); - else - writeFillRect(x+i*size, y+j*size, size, size, bg); - } - } - } - if(bg != color) { // If opaque, draw vertical line for last column - if(size == 1) writeFastVLine(x+5, y, 8, bg); - else writeFillRect(x+5*size, y, size, 8*size, bg); - } - endWrite(); - - } else { // Custom font - - // Character is assumed previously filtered by write() to eliminate - // newlines, returns, non-printable characters, etc. Calling - // drawChar() directly with 'bad' characters of font may cause mayhem! - - c -= (uint8_t)pgm_read_byte(&gfxFont->first); - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer(&gfxFont->glyph))[c]); - uint8_t *bitmap = (uint8_t *)pgm_read_pointer(&gfxFont->bitmap); - - uint16_t bo = pgm_read_word(&glyph->bitmapOffset); - uint8_t w = pgm_read_byte(&glyph->width), - h = pgm_read_byte(&glyph->height); - int8_t xo = pgm_read_byte(&glyph->xOffset), - yo = pgm_read_byte(&glyph->yOffset); - uint8_t xx, yy, bits = 0, bit = 0; - int16_t xo16 = 0, yo16 = 0; - - if(size > 1) { - xo16 = xo; - yo16 = yo; - } - - // Todo: Add character clipping here - - // NOTE: THERE IS NO 'BACKGROUND' COLOR OPTION ON CUSTOM FONTS. - // THIS IS ON PURPOSE AND BY DESIGN. The background color feature - // has typically been used with the 'classic' font to overwrite old - // screen contents with new data. This ONLY works because the - // characters are a uniform size; it's not a sensible thing to do with - // proportionally-spaced fonts with glyphs of varying sizes (and that - // may overlap). To replace previously-drawn text when using a custom - // font, use the getTextBounds() function to determine the smallest - // rectangle encompassing a string, erase the area with fillRect(), - // then draw new text. This WILL infortunately 'blink' the text, but - // is unavoidable. Drawing 'background' pixels will NOT fix this, - // only creates a new set of problems. Have an idea to work around - // this (a canvas object type for MCUs that can afford the RAM and - // displays supporting setAddrWindow() and pushColors()), but haven't - // implemented this yet. - - startWrite(); - for(yy=0; yy= 100 -size_t Adafruit_GFX::write(uint8_t c) { -#else -void Adafruit_GFX::write(uint8_t c) { -#endif - if(!gfxFont) { // 'Classic' built-in font - - if(c == '\n') { // Newline? - cursor_x = 0; // Reset x to zero, - cursor_y += textsize * 8; // advance y one line - } else if(c != '\r') { // Ignore carriage returns - if(wrap && ((cursor_x + textsize * 6) > _width)) { // Off right? - cursor_x = 0; // Reset x to zero, - cursor_y += textsize * 8; // advance y one line - } - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - cursor_x += textsize * 6; // Advance x one char - } - - } else { // Custom font - - if(c == '\n') { - cursor_x = 0; - cursor_y += (int16_t)textsize * - (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } else if(c != '\r') { - uint8_t first = pgm_read_byte(&gfxFont->first); - if((c >= first) && (c <= (uint8_t)pgm_read_byte(&gfxFont->last))) { - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( - &gfxFont->glyph))[c - first]); - uint8_t w = pgm_read_byte(&glyph->width), - h = pgm_read_byte(&glyph->height); - if((w > 0) && (h > 0)) { // Is there an associated bitmap? - int16_t xo = (int8_t)pgm_read_byte(&glyph->xOffset); // sic - if(wrap && ((cursor_x + textsize * (xo + w)) > _width)) { - cursor_x = 0; - cursor_y += (int16_t)textsize * - (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - } - cursor_x += (uint8_t)pgm_read_byte(&glyph->xAdvance) * (int16_t)textsize; - } - } - - } -#if ARDUINO >= 100 - return 1; -#endif -} - -void Adafruit_GFX::setCursor(int16_t x, int16_t y) { - cursor_x = x; - cursor_y = y; -} - -int16_t Adafruit_GFX::getCursorX(void) const { - return cursor_x; -} - -int16_t Adafruit_GFX::getCursorY(void) const { - return cursor_y; -} - -void Adafruit_GFX::setTextSize(uint8_t s) { - textsize = (s > 0) ? s : 1; -} - -void Adafruit_GFX::setTextColor(uint16_t c) { - // For 'transparent' background, we'll set the bg - // to the same as fg instead of using a flag - textcolor = textbgcolor = c; -} - -void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { - textcolor = c; - textbgcolor = b; -} - -void Adafruit_GFX::setTextWrap(boolean w) { - wrap = w; -} - -uint8_t Adafruit_GFX::getRotation(void) const { - return rotation; -} - -void Adafruit_GFX::setRotation(uint8_t x) { - rotation = (x & 3); - switch(rotation) { - case 0: - case 2: - _width = WIDTH; - _height = HEIGHT; - break; - case 1: - case 3: - _width = HEIGHT; - _height = WIDTH; - break; - } -} - -// Enable (or disable) Code Page 437-compatible charset. -// There was an error in glcdfont.c for the longest time -- one character -// (#176, the 'light shade' block) was missing -- this threw off the index -// of every character that followed it. But a TON of code has been written -// with the erroneous character indices. By default, the library uses the -// original 'wrong' behavior and old sketches will still work. Pass 'true' -// to this function to use correct CP437 character values in your code. -void Adafruit_GFX::cp437(boolean x) { - _cp437 = x; -} - -void Adafruit_GFX::setFont(const GFXfont *f) { - if(f) { // Font struct pointer passed in? - if(!gfxFont) { // And no current font struct? - // Switching from classic to new font behavior. - // Move cursor pos down 6 pixels so it's on baseline. - cursor_y += 6; - } - } else if(gfxFont) { // NULL passed. Current font struct defined? - // Switching from new to classic font behavior. - // Move cursor pos up 6 pixels so it's at top-left of char. - cursor_y -= 6; - } - gfxFont = (GFXfont *)f; -} - -// Broke this out as it's used by both the PROGMEM- and RAM-resident -// getTextBounds() functions. -void Adafruit_GFX::charBounds(char c, int16_t *x, int16_t *y, - int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy) { - - if(gfxFont) { - - if(c == '\n') { // Newline? - *x = 0; // Reset x to zero, advance y by one line - *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } else if(c != '\r') { // Not a carriage return; is normal char - uint8_t first = pgm_read_byte(&gfxFont->first), - last = pgm_read_byte(&gfxFont->last); - if((c >= first) && (c <= last)) { // Char present in this font? - GFXglyph *glyph = &(((GFXglyph *)pgm_read_pointer( - &gfxFont->glyph))[c - first]); - uint8_t gw = pgm_read_byte(&glyph->width), - gh = pgm_read_byte(&glyph->height), - xa = pgm_read_byte(&glyph->xAdvance); - int8_t xo = pgm_read_byte(&glyph->xOffset), - yo = pgm_read_byte(&glyph->yOffset); - if(wrap && ((*x+(((int16_t)xo+gw)*textsize)) > _width)) { - *x = 0; // Reset x to zero, advance y by one line - *y += textsize * (uint8_t)pgm_read_byte(&gfxFont->yAdvance); - } - int16_t ts = (int16_t)textsize, - x1 = *x + xo * ts, - y1 = *y + yo * ts, - x2 = x1 + gw * ts - 1, - y2 = y1 + gh * ts - 1; - if(x1 < *minx) *minx = x1; - if(y1 < *miny) *miny = y1; - if(x2 > *maxx) *maxx = x2; - if(y2 > *maxy) *maxy = y2; - *x += xa * ts; - } - } - - } else { // Default font - - if(c == '\n') { // Newline? - *x = 0; // Reset x to zero, - *y += textsize * 8; // advance y one line - // min/max x/y unchaged -- that waits for next 'normal' character - } else if(c != '\r') { // Normal char; ignore carriage returns - if(wrap && ((*x + textsize * 6) > _width)) { // Off right? - *x = 0; // Reset x to zero, - *y += textsize * 8; // advance y one line - } - int x2 = *x + textsize * 6 - 1, // Lower-right pixel of char - y2 = *y + textsize * 8 - 1; - if(x2 > *maxx) *maxx = x2; // Track max x, y - if(y2 > *maxy) *maxy = y2; - if(*x < *minx) *minx = *x; // Track min x, y - if(*y < *miny) *miny = *y; - *x += textsize * 6; // Advance x one char - } - } -} - -// Pass string and a cursor position, returns UL corner and W,H. -void Adafruit_GFX::getTextBounds(char *str, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { - uint8_t c; // Current character - - *x1 = x; - *y1 = y; - *w = *h = 0; - - int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; - - while((c = *str++)) - charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); - - if(maxx >= minx) { - *x1 = minx; - *w = maxx - minx + 1; - } - if(maxy >= miny) { - *y1 = miny; - *h = maxy - miny + 1; - } -} - -// Same as above, but for PROGMEM strings -void Adafruit_GFX::getTextBounds(const __FlashStringHelper *str, - int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h) { - uint8_t *s = (uint8_t *)str, c; - - *x1 = x; - *y1 = y; - *w = *h = 0; - - int16_t minx = _width, miny = _height, maxx = -1, maxy = -1; - - while((c = pgm_read_byte(s++))) - charBounds(c, &x, &y, &minx, &miny, &maxx, &maxy); - - if(maxx >= minx) { - *x1 = minx; - *w = maxx - minx + 1; - } - if(maxy >= miny) { - *y1 = miny; - *h = maxy - miny + 1; - } -} - -// Return the size of the display (per current rotation) -int16_t Adafruit_GFX::width(void) const { - return _width; -} - -int16_t Adafruit_GFX::height(void) const { - return _height; -} - -void Adafruit_GFX::invertDisplay(boolean i) { - // Do nothing, must be subclassed if supported by hardware -} - -/***************************************************************************/ -// code for the GFX button UI element - -Adafruit_GFX_Button::Adafruit_GFX_Button(void) { - _gfx = 0; -} - -// Classic initButton() function: pass center & size -void Adafruit_GFX_Button::initButton( - Adafruit_GFX *gfx, int16_t x, int16_t y, uint16_t w, uint16_t h, - uint16_t outline, uint16_t fill, uint16_t textcolor, - char *label, uint8_t textsize) -{ - // Tweak arguments and pass to the newer initButtonUL() function... - initButtonUL(gfx, x - (w / 2), y - (h / 2), w, h, outline, fill, - textcolor, label, textsize); -} - -// Newer function instead accepts upper-left corner & size -void Adafruit_GFX_Button::initButtonUL( - Adafruit_GFX *gfx, int16_t x1, int16_t y1, uint16_t w, uint16_t h, - uint16_t outline, uint16_t fill, uint16_t textcolor, - char *label, uint8_t textsize) -{ - _x1 = x1; - _y1 = y1; - _w = w; - _h = h; - _outlinecolor = outline; - _fillcolor = fill; - _textcolor = textcolor; - _textsize = textsize; - _gfx = gfx; - strncpy(_label, label, 9); -} - -void Adafruit_GFX_Button::drawButton(boolean inverted) { - uint16_t fill, outline, text; - - if(!inverted) { - fill = _fillcolor; - outline = _outlinecolor; - text = _textcolor; - } else { - fill = _textcolor; - outline = _outlinecolor; - text = _fillcolor; - } - - uint8_t r = min(_w, _h) / 4; // Corner radius - _gfx->fillRoundRect(_x1, _y1, _w, _h, r, fill); - _gfx->drawRoundRect(_x1, _y1, _w, _h, r, outline); - - _gfx->setCursor(_x1 + (_w/2) - (strlen(_label) * 3 * _textsize), - _y1 + (_h/2) - (4 * _textsize)); - _gfx->setTextColor(text); - _gfx->setTextSize(_textsize); - _gfx->print(_label); -} - -boolean Adafruit_GFX_Button::contains(int16_t x, int16_t y) { - return ((x >= _x1) && (x < (_x1 + _w)) && - (y >= _y1) && (y < (_y1 + _h))); -} - -void Adafruit_GFX_Button::press(boolean p) { - laststate = currstate; - currstate = p; -} - -boolean Adafruit_GFX_Button::isPressed() { return currstate; } -boolean Adafruit_GFX_Button::justPressed() { return (currstate && !laststate); } -boolean Adafruit_GFX_Button::justReleased() { return (!currstate && laststate); } - -// ------------------------------------------------------------------------- - -// GFXcanvas1, GFXcanvas8 and GFXcanvas16 (currently a WIP, don't get too -// comfy with the implementation) provide 1-, 8- and 16-bit offscreen -// canvases, the address of which can be passed to drawBitmap() or -// pushColors() (the latter appears only in a couple of GFX-subclassed TFT -// libraries at this time). This is here mostly to help with the recently- -// added proportionally-spaced fonts; adds a way to refresh a section of the -// screen without a massive flickering clear-and-redraw...but maybe you'll -// find other uses too. VERY RAM-intensive, since the buffer is in MCU -// memory and not the display driver...GXFcanvas1 might be minimally useful -// on an Uno-class board, but this and the others are much more likely to -// require at least a Mega or various recent ARM-type boards (recommended, -// as the text+bitmap draw can be pokey). GFXcanvas1 requires 1 bit per -// pixel (rounded up to nearest byte per scanline), GFXcanvas8 is 1 byte -// per pixel (no scanline pad), and GFXcanvas16 uses 2 bytes per pixel (no -// scanline pad). -// NOT EXTENSIVELY TESTED YET. MAY CONTAIN WORST BUGS KNOWN TO HUMANKIND. - -GFXcanvas1::GFXcanvas1(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint16_t bytes = ((w + 7) / 8) * h; - if((buffer = (uint8_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas1::~GFXcanvas1(void) { - if(buffer) free(buffer); -} - -uint8_t* GFXcanvas1::getBuffer(void) { - return buffer; -} - -void GFXcanvas1::drawPixel(int16_t x, int16_t y, uint16_t color) { -#ifdef __AVR__ - // Bitmask tables of 0x80>>X and ~(0x80>>X), because X>>Y is slow on AVR - static const uint8_t PROGMEM - GFXsetBit[] = { 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 }, - GFXclrBit[] = { 0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE }; -#endif - - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - uint8_t *ptr = &buffer[(x / 8) + y * ((WIDTH + 7) / 8)]; -#ifdef __AVR__ - if(color) *ptr |= pgm_read_byte(&GFXsetBit[x & 7]); - else *ptr &= pgm_read_byte(&GFXclrBit[x & 7]); -#else - if(color) *ptr |= 0x80 >> (x & 7); - else *ptr &= ~(0x80 >> (x & 7)); -#endif - } -} - -void GFXcanvas1::fillScreen(uint16_t color) { - if(buffer) { - uint16_t bytes = ((WIDTH + 7) / 8) * HEIGHT; - memset(buffer, color ? 0xFF : 0x00, bytes); - } -} - -GFXcanvas8::GFXcanvas8(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint32_t bytes = w * h; - if((buffer = (uint8_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas8::~GFXcanvas8(void) { - if(buffer) free(buffer); -} - -uint8_t* GFXcanvas8::getBuffer(void) { - return buffer; -} - -void GFXcanvas8::drawPixel(int16_t x, int16_t y, uint16_t color) { - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - buffer[x + y * WIDTH] = color; - } -} - -void GFXcanvas8::fillScreen(uint16_t color) { - if(buffer) { - memset(buffer, color, WIDTH * HEIGHT); - } -} - -void GFXcanvas8::writeFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - - if((x >= _width) || (y < 0) || (y >= _height)) return; - int16_t x2 = x + w - 1; - if(x2 < 0) return; - - // Clip left/right - if(x < 0) { - x = 0; - w = x2 + 1; - } - if(x2 >= _width) w = _width - x; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - memset(buffer + y * WIDTH + x, color, w); -} - -GFXcanvas16::GFXcanvas16(uint16_t w, uint16_t h) : Adafruit_GFX(w, h) { - uint32_t bytes = w * h * 2; - if((buffer = (uint16_t *)malloc(bytes))) { - memset(buffer, 0, bytes); - } -} - -GFXcanvas16::~GFXcanvas16(void) { - if(buffer) free(buffer); -} - -uint16_t* GFXcanvas16::getBuffer(void) { - return buffer; -} - -void GFXcanvas16::drawPixel(int16_t x, int16_t y, uint16_t color) { - if(buffer) { - if((x < 0) || (y < 0) || (x >= _width) || (y >= _height)) return; - - int16_t t; - switch(rotation) { - case 1: - t = x; - x = WIDTH - 1 - y; - y = t; - break; - case 2: - x = WIDTH - 1 - x; - y = HEIGHT - 1 - y; - break; - case 3: - t = x; - x = y; - y = HEIGHT - 1 - t; - break; - } - - buffer[x + y * WIDTH] = color; - } -} - -void GFXcanvas16::fillScreen(uint16_t color) { - if(buffer) { - uint8_t hi = color >> 8, lo = color & 0xFF; - if(hi == lo) { - memset(buffer, lo, WIDTH * HEIGHT * 2); - } else { - uint32_t i, pixels = WIDTH * HEIGHT; - for(i=0; i= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif -#include "gfxfont.h" - -class Adafruit_GFX : public Print { - - public: - - Adafruit_GFX(int16_t w, int16_t h); // Constructor - - // This MUST be defined by the subclass: - virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - - // TRANSACTION API / CORE DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void startWrite(void); - virtual void writePixel(int16_t x, int16_t y, uint16_t color); - virtual void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - virtual void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - virtual void writeLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color); - virtual void endWrite(void); - - // CONTROL API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void setRotation(uint8_t r); - virtual void invertDisplay(boolean i); - - // BASIC DRAW API - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void - // It's good to implement those, even if using transaction API - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), - fillScreen(uint16_t color), - // Optional and probably not necessary to change - drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), - drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - - // These exist only with Adafruit_GFX (no subclass overrides) - void - drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - uint16_t color), - fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - int16_t delta, uint16_t color), - drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color), - drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color, uint16_t bg), - drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h, uint16_t color), - drawBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h, uint16_t color, uint16_t bg), - drawXBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h, uint16_t color), - drawGrayscaleBitmap(int16_t x, int16_t y, const uint8_t bitmap[], - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, uint8_t *bitmap, - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, - const uint8_t bitmap[], const uint8_t mask[], - int16_t w, int16_t h), - drawGrayscaleBitmap(int16_t x, int16_t y, - uint8_t *bitmap, uint8_t *mask, int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, const uint16_t bitmap[], - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, uint16_t *bitmap, - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, - const uint16_t bitmap[], const uint8_t mask[], - int16_t w, int16_t h), - drawRGBBitmap(int16_t x, int16_t y, - uint16_t *bitmap, uint8_t *mask, int16_t w, int16_t h), - drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, - uint16_t bg, uint8_t size), - setCursor(int16_t x, int16_t y), - setTextColor(uint16_t c), - setTextColor(uint16_t c, uint16_t bg), - setTextSize(uint8_t s), - setTextWrap(boolean w), - cp437(boolean x=true), - setFont(const GFXfont *f = NULL), - getTextBounds(char *string, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h), - getTextBounds(const __FlashStringHelper *s, int16_t x, int16_t y, - int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h); - -#if ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - - int16_t height(void) const; - int16_t width(void) const; - - uint8_t getRotation(void) const; - - // get current cursor position (get rotation safe maximum values, using: width() for x, height() for y) - int16_t getCursorX(void) const; - int16_t getCursorY(void) const; - - protected: - void - charBounds(char c, int16_t *x, int16_t *y, - int16_t *minx, int16_t *miny, int16_t *maxx, int16_t *maxy); - const int16_t - WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes - int16_t - _width, _height, // Display w/h as modified by current rotation - cursor_x, cursor_y; - uint16_t - textcolor, textbgcolor; - uint8_t - textsize, - rotation; - boolean - wrap, // If set, 'wrap' text at right edge of display - _cp437; // If set, use correct CP437 charset (default is off) - GFXfont - *gfxFont; -}; - -class Adafruit_GFX_Button { - - public: - Adafruit_GFX_Button(void); - // "Classic" initButton() uses center & size - void initButton(Adafruit_GFX *gfx, int16_t x, int16_t y, - uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - // New/alt initButton() uses upper-left corner & size - void initButtonUL(Adafruit_GFX *gfx, int16_t x1, int16_t y1, - uint16_t w, uint16_t h, uint16_t outline, uint16_t fill, - uint16_t textcolor, char *label, uint8_t textsize); - void drawButton(boolean inverted = false); - boolean contains(int16_t x, int16_t y); - - void press(boolean p); - boolean isPressed(); - boolean justPressed(); - boolean justReleased(); - - private: - Adafruit_GFX *_gfx; - int16_t _x1, _y1; // Coordinates of top-left corner - uint16_t _w, _h; - uint8_t _textsize; - uint16_t _outlinecolor, _fillcolor, _textcolor; - char _label[10]; - - boolean currstate, laststate; -}; - -class GFXcanvas1 : public Adafruit_GFX { - public: - GFXcanvas1(uint16_t w, uint16_t h); - ~GFXcanvas1(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color); - uint8_t *getBuffer(void); - private: - uint8_t *buffer; -}; - -class GFXcanvas8 : public Adafruit_GFX { - public: - GFXcanvas8(uint16_t w, uint16_t h); - ~GFXcanvas8(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color), - writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - uint8_t *getBuffer(void); - private: - uint8_t *buffer; -}; - -class GFXcanvas16 : public Adafruit_GFX { - public: - GFXcanvas16(uint16_t w, uint16_t h); - ~GFXcanvas16(void); - void drawPixel(int16_t x, int16_t y, uint16_t color), - fillScreen(uint16_t color); - uint16_t *getBuffer(void); - private: - uint16_t *buffer; -}; - -#endif // _ADAFRUIT_GFX_H diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp deleted file mode 100644 index 9b6c8bbb6..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp +++ /dev/null @@ -1,336 +0,0 @@ -/*************************************************** - This is our library for generic SPI TFT Displays with - address windows and 16 bit color (e.g. ILI9341, HX8357D, ST7735...) - - 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 "Adafruit_SPITFT.h" -#ifndef ARDUINO_STM32_FEATHER - #include "pins_arduino.h" -#ifndef RASPI - #include "wiring_private.h" -#endif -#endif -#include - -#include "Adafruit_SPITFT_Macros.h" - - - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t Adafruit_SPITFT::color565(uint8_t r, uint8_t g, uint8_t b) { - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3); -} - -Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, - int8_t cs, int8_t dc, int8_t mosi, - int8_t sclk, int8_t rst, int8_t miso) - : Adafruit_GFX(w, h) { - _cs = cs; - _dc = dc; - _rst = rst; - _sclk = sclk; - _mosi = mosi; - _miso = miso; - _freq = 0; -#ifdef USE_FAST_PINIO - csport = portOutputRegister(digitalPinToPort(_cs)); - cspinmask = digitalPinToBitMask(_cs); - dcport = portOutputRegister(digitalPinToPort(_dc)); - dcpinmask = digitalPinToBitMask(_dc); - clkport = portOutputRegister(digitalPinToPort(_sclk)); - clkpinmask = digitalPinToBitMask(_sclk); - mosiport = portOutputRegister(digitalPinToPort(_mosi)); - mosipinmask = digitalPinToBitMask(_mosi); - if(miso >= 0){ - misoport = portInputRegister(digitalPinToPort(_miso)); - misopinmask = digitalPinToBitMask(_miso); - } else { - misoport = 0; - misopinmask = 0; - } -#endif -} - -Adafruit_SPITFT::Adafruit_SPITFT(uint16_t w, uint16_t h, - int8_t cs, int8_t dc, int8_t rst) - : Adafruit_GFX(w, h) { - _cs = cs; - _dc = dc; - _rst = rst; - _sclk = -1; - _mosi = -1; - _miso = -1; - _freq = 0; -#ifdef USE_FAST_PINIO - csport = portOutputRegister(digitalPinToPort(_cs)); - cspinmask = digitalPinToBitMask(_cs); - dcport = portOutputRegister(digitalPinToPort(_dc)); - dcpinmask = digitalPinToBitMask(_dc); - clkport = 0; - clkpinmask = 0; - mosiport = 0; - mosipinmask = 0; - misoport = 0; - misopinmask = 0; -#endif -} - - -void Adafruit_SPITFT::initSPI(uint32_t freq) -{ - _freq = freq; - - // Control Pins - pinMode(_dc, OUTPUT); - digitalWrite(_dc, LOW); - pinMode(_cs, OUTPUT); - digitalWrite(_cs, HIGH); - - // Software SPI - if(_sclk >= 0){ - pinMode(_mosi, OUTPUT); - digitalWrite(_mosi, LOW); - pinMode(_sclk, OUTPUT); - digitalWrite(_sclk, HIGH); - if(_miso >= 0){ - pinMode(_miso, INPUT); - } - } - - // Hardware SPI - SPI_BEGIN(); - - // toggle RST low to reset - if (_rst >= 0) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(100); - digitalWrite(_rst, LOW); - delay(100); - digitalWrite(_rst, HIGH); - delay(200); - } -} - -uint8_t Adafruit_SPITFT::spiRead() { - if(_sclk < 0){ - return HSPI_READ(); - } - if(_miso < 0){ - return 0; - } - uint8_t r = 0; - for (uint8_t i=0; i<8; i++) { - SSPI_SCK_LOW(); - SSPI_SCK_HIGH(); - r <<= 1; - if (SSPI_MISO_READ()){ - r |= 0x1; - } - } - return r; -} - -void Adafruit_SPITFT::spiWrite(uint8_t b) { - if(_sclk < 0){ - HSPI_WRITE(b); - return; - } - for(uint8_t bit = 0x80; bit; bit >>= 1){ - if((b) & bit){ - SSPI_MOSI_HIGH(); - } else { - SSPI_MOSI_LOW(); - } - SSPI_SCK_LOW(); - SSPI_SCK_HIGH(); - } -} - - -/* - * Transaction API - * */ - -void Adafruit_SPITFT::startWrite(void){ - SPI_BEGIN_TRANSACTION(); - SPI_CS_LOW(); -} - -void Adafruit_SPITFT::endWrite(void){ - SPI_CS_HIGH(); - SPI_END_TRANSACTION(); -} - -void Adafruit_SPITFT::writeCommand(uint8_t cmd){ - SPI_DC_LOW(); - spiWrite(cmd); - SPI_DC_HIGH(); -} - -void Adafruit_SPITFT::pushColor(uint16_t color) { - startWrite(); - SPI_WRITE16(color); - endWrite(); -} - - -void Adafruit_SPITFT::writePixel(uint16_t color){ - SPI_WRITE16(color); -} - -void Adafruit_SPITFT::writePixels(uint16_t * colors, uint32_t len){ - SPI_WRITE_PIXELS((uint8_t*)colors , len * 2); -} - -void Adafruit_SPITFT::writeColor(uint16_t color, uint32_t len){ -#ifdef SPI_HAS_WRITE_PIXELS - if(_sclk >= 0){ - for (uint32_t t=0; t SPI_MAX_PIXELS_AT_ONCE)?SPI_MAX_PIXELS_AT_ONCE:len; - uint16_t tlen = 0; - - for (uint32_t t=0; tblen)?blen:len; - writePixels(temp, tlen); - len -= tlen; - } -#else - uint8_t hi = color >> 8, lo = color; - if(_sclk < 0){ //AVR Optimization - for (uint32_t t=len; t; t--){ - HSPI_WRITE(hi); - HSPI_WRITE(lo); - } - return; - } - for (uint32_t t=len; t; t--){ - spiWrite(hi); - spiWrite(lo); - } -#endif -} - -void Adafruit_SPITFT::writePixel(int16_t x, int16_t y, uint16_t color) { - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - setAddrWindow(x,y,1,1); - writePixel(color); -} - -void Adafruit_SPITFT::writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color){ - if((x >= _width) || (y >= _height)) return; - int16_t x2 = x + w - 1, y2 = y + h - 1; - if((x2 < 0) || (y2 < 0)) return; - - // Clip left/top - if(x < 0) { - x = 0; - w = x2 + 1; - } - if(y < 0) { - y = 0; - h = y2 + 1; - } - - // Clip right/bottom - if(x2 >= _width) w = _width - x; - if(y2 >= _height) h = _height - y; - - int32_t len = (int32_t)w * h; - setAddrWindow(x, y, w, h); - writeColor(color, len); -} - -void Adafruit_SPITFT::writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color){ - writeFillRect(x, y, 1, h, color); -} - -void Adafruit_SPITFT::writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color){ - writeFillRect(x, y, w, 1, color); -} - -void Adafruit_SPITFT::drawPixel(int16_t x, int16_t y, uint16_t color){ - startWrite(); - writePixel(x, y, color); - endWrite(); -} - -void Adafruit_SPITFT::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - startWrite(); - writeFastVLine(x, y, h, color); - endWrite(); -} - -void Adafruit_SPITFT::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - startWrite(); - writeFastHLine(x, y, w, color); - endWrite(); -} - -void Adafruit_SPITFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - startWrite(); - writeFillRect(x,y,w,h,color); - endWrite(); -} - -// Adapted from https://github.com/PaulStoffregen/ILI9341_t3 -// by Marc MERLIN. See examples/pictureEmbed to use this. -// 5/6/2017: function name and arguments have changed for compatibility -// with current GFX library and to avoid naming problems in prior -// implementation. Formerly drawBitmap() with arguments in different order. -void Adafruit_SPITFT::drawRGBBitmap(int16_t x, int16_t y, - uint16_t *pcolors, int16_t w, int16_t h) { - - int16_t x2, y2; // Lower-right coord - if(( x >= _width ) || // Off-edge right - ( y >= _height) || // " top - ((x2 = (x+w-1)) < 0 ) || // " left - ((y2 = (y+h-1)) < 0) ) return; // " bottom - - int16_t bx1=0, by1=0, // Clipped top-left within bitmap - saveW=w; // Save original bitmap width value - if(x < 0) { // Clip left - w += x; - bx1 = -x; - x = 0; - } - if(y < 0) { // Clip top - h += y; - by1 = -y; - y = 0; - } - if(x2 >= _width ) w = _width - x; // Clip right - if(y2 >= _height) h = _height - y; // Clip bottom - - pcolors += by1 * saveW + bx1; // Offset bitmap ptr to clipped top-left - startWrite(); - setAddrWindow(x, y, w, h); // Clipped area - while(h--) { // For each (clipped) scanline... - writePixels(pcolors, w); // Push one (clipped) row - pcolors += saveW; // Advance pointer by one full (unclipped) line - } - endWrite(); -} diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h deleted file mode 100644 index 0024a0193..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h +++ /dev/null @@ -1,80 +0,0 @@ - -#ifndef _ADAFRUIT_SPITFT_ -#define _ADAFRUIT_SPITFT_ - - -#if ARDUINO >= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif -#include -#include "Adafruit_GFX.h" - - -#if defined(ARDUINO_STM32_FEATHER) -typedef volatile uint32 RwReg; -#endif -#if defined(ARDUINO_FEATHER52) -typedef volatile uint32_t RwReg; -#endif - -class Adafruit_SPITFT : public Adafruit_GFX { - protected: - - public: - Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _MOSI, int8_t _SCLK, int8_t _RST = -1, int8_t _MISO = -1); - Adafruit_SPITFT(uint16_t w, uint16_t h, int8_t _CS, int8_t _DC, int8_t _RST = -1); - - virtual void begin(uint32_t freq) = 0; - void initSPI(uint32_t freq); - - // Required Non-Transaction - void drawPixel(int16_t x, int16_t y, uint16_t color); - - // Transaction API - void startWrite(void); - void endWrite(void); - void writePixel(int16_t x, int16_t y, uint16_t color); - void writeFillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - void writeFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void writeFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - // Transaction API not used by GFX - virtual void setAddrWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h) = 0; - void writePixel(uint16_t color); - void writePixels(uint16_t * colors, uint32_t len); - void writeColor(uint16_t color, uint32_t len); - void pushColor(uint16_t color); - - // Recommended Non-Transaction - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - - using Adafruit_GFX::drawRGBBitmap; // Check base class first - void drawRGBBitmap(int16_t x, int16_t y, - uint16_t *pcolors, int16_t w, int16_t h); - - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); - - protected: - uint32_t _freq; -#if defined (__AVR__) || defined(TEENSYDUINO) || defined (ESP8266) || defined (ESP32) - int8_t _cs, _dc, _rst, _sclk, _mosi, _miso; -#else - int32_t _cs, _dc, _rst, _sclk, _mosi, _miso; -#endif - -#ifdef USE_FAST_PINIO - volatile RwReg *mosiport, *misoport, *clkport, *dcport, *csport; - RwReg mosipinmask, misopinmask, clkpinmask, cspinmask, dcpinmask; -#endif - - void writeCommand(uint8_t cmd); - void spiWrite(uint8_t v); - uint8_t spiRead(void); -}; - -#endif diff --git a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h b/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h deleted file mode 100644 index 74391daa7..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h +++ /dev/null @@ -1,114 +0,0 @@ - -/* - * Control Pins - * */ - -#ifdef USE_FAST_PINIO -#define SPI_DC_HIGH() *dcport |= dcpinmask -#define SPI_DC_LOW() *dcport &= ~dcpinmask -#define SPI_CS_HIGH() *csport |= cspinmask -#define SPI_CS_LOW() *csport &= ~cspinmask -#else -#define SPI_DC_HIGH() digitalWrite(_dc, HIGH) -#define SPI_DC_LOW() digitalWrite(_dc, LOW) -#define SPI_CS_HIGH() digitalWrite(_cs, HIGH) -#define SPI_CS_LOW() digitalWrite(_cs, LOW) -#endif - -/* - * Software SPI Macros - * */ - -#ifdef USE_FAST_PINIO -#define SSPI_MOSI_HIGH() *mosiport |= mosipinmask -#define SSPI_MOSI_LOW() *mosiport &= ~mosipinmask -#define SSPI_SCK_HIGH() *clkport |= clkpinmask -#define SSPI_SCK_LOW() *clkport &= ~clkpinmask -#define SSPI_MISO_READ() ((*misoport & misopinmask) != 0) -#else -#define SSPI_MOSI_HIGH() digitalWrite(_mosi, HIGH) -#define SSPI_MOSI_LOW() digitalWrite(_mosi, LOW) -#define SSPI_SCK_HIGH() digitalWrite(_sclk, HIGH) -#define SSPI_SCK_LOW() digitalWrite(_sclk, LOW) -#define SSPI_MISO_READ() digitalRead(_miso) -#endif - -#define SSPI_BEGIN_TRANSACTION() -#define SSPI_END_TRANSACTION() -#define SSPI_WRITE(v) spiWrite(v) -#define SSPI_WRITE16(s) SSPI_WRITE((s) >> 8); SSPI_WRITE(s) -#define SSPI_WRITE32(l) SSPI_WRITE((l) >> 24); SSPI_WRITE((l) >> 16); SSPI_WRITE((l) >> 8); SSPI_WRITE(l) -#define SSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ SSPI_WRITE(((uint8_t*)(c))[i+1]); SSPI_WRITE(((uint8_t*)(c))[i]); } - -/* - * Hardware SPI Macros - * */ - -#define SPI_OBJECT SPI - -#if defined (__AVR__) || defined(TEENSYDUINO) || defined(ARDUINO_ARCH_STM32F1) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(SPI_CLOCK_DIV2); -#elif defined (__arm__) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClockDivider(11); -#elif defined(ESP8266) || defined(ESP32) - #define HSPI_SET_CLOCK() SPI_OBJECT.setFrequency(_freq); -#elif defined(RASPI) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); -#elif defined(ARDUINO_ARCH_STM32F1) - #define HSPI_SET_CLOCK() SPI_OBJECT.setClock(_freq); -#else - #define HSPI_SET_CLOCK() -#endif - -#ifdef SPI_HAS_TRANSACTION - #define HSPI_BEGIN_TRANSACTION() SPI_OBJECT.beginTransaction(SPISettings(_freq, MSBFIRST, SPI_MODE0)) - #define HSPI_END_TRANSACTION() SPI_OBJECT.endTransaction() -#else - #define HSPI_BEGIN_TRANSACTION() HSPI_SET_CLOCK(); SPI_OBJECT.setBitOrder(MSBFIRST); SPI_OBJECT.setDataMode(SPI_MODE0) - #define HSPI_END_TRANSACTION() -#endif - -#ifdef ESP32 - #define SPI_HAS_WRITE_PIXELS -#endif -#if defined(ESP8266) || defined(ESP32) - // Optimized SPI (ESP8266 and ESP32) - #define HSPI_READ() SPI_OBJECT.transfer(0) - #define HSPI_WRITE(b) SPI_OBJECT.write(b) - #define HSPI_WRITE16(s) SPI_OBJECT.write16(s) - #define HSPI_WRITE32(l) SPI_OBJECT.write32(l) - #ifdef SPI_HAS_WRITE_PIXELS - #define SPI_MAX_PIXELS_AT_ONCE 32 - #define HSPI_WRITE_PIXELS(c,l) SPI_OBJECT.writePixels(c,l) - #else - #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<((l)/2); i++){ SPI_WRITE16(((uint16_t*)(c))[i]); } - #endif -#else - // Standard Byte-by-Byte SPI - - #if defined (__AVR__) || defined(TEENSYDUINO) -static inline uint8_t _avr_spi_read(void) __attribute__((always_inline)); -static inline uint8_t _avr_spi_read(void) { - uint8_t r = 0; - SPDR = r; - while(!(SPSR & _BV(SPIF))); - r = SPDR; - return r; -} - #define HSPI_WRITE(b) {SPDR = (b); while(!(SPSR & _BV(SPIF)));} - #define HSPI_READ() _avr_spi_read() - #else - #define HSPI_WRITE(b) SPI_OBJECT.transfer((uint8_t)(b)) - #define HSPI_READ() HSPI_WRITE(0) - #endif - #define HSPI_WRITE16(s) HSPI_WRITE((s) >> 8); HSPI_WRITE(s) - #define HSPI_WRITE32(l) HSPI_WRITE((l) >> 24); HSPI_WRITE((l) >> 16); HSPI_WRITE((l) >> 8); HSPI_WRITE(l) - #define HSPI_WRITE_PIXELS(c,l) for(uint32_t i=0; i<(l); i+=2){ HSPI_WRITE(((uint8_t*)(c))[i+1]); HSPI_WRITE(((uint8_t*)(c))[i]); } -#endif - -#define SPI_BEGIN() if(_sclk < 0){SPI_OBJECT.begin();} -#define SPI_BEGIN_TRANSACTION() if(_sclk < 0){HSPI_BEGIN_TRANSACTION();} -#define SPI_END_TRANSACTION() if(_sclk < 0){HSPI_END_TRANSACTION();} -#define SPI_WRITE16(s) if(_sclk < 0){HSPI_WRITE16(s);}else{SSPI_WRITE16(s);} -#define SPI_WRITE32(l) if(_sclk < 0){HSPI_WRITE32(l);}else{SSPI_WRITE32(l);} -#define SPI_WRITE_PIXELS(c,l) if(_sclk < 0){HSPI_WRITE_PIXELS(c,l);}else{SSPI_WRITE_PIXELS(c,l);} diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h deleted file mode 100644 index 94ecb883a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h +++ /dev/null @@ -1,227 +0,0 @@ -const uint8_t FreeMono12pt7bBitmaps[] PROGMEM = { - 0x49, 0x24, 0x92, 0x48, 0x01, 0xF8, 0xE7, 0xE7, 0x67, 0x42, 0x42, 0x42, - 0x42, 0x09, 0x02, 0x41, 0x10, 0x44, 0x11, 0x1F, 0xF1, 0x10, 0x4C, 0x12, - 0x3F, 0xE1, 0x20, 0x48, 0x12, 0x04, 0x81, 0x20, 0x48, 0x04, 0x07, 0xA2, - 0x19, 0x02, 0x40, 0x10, 0x03, 0x00, 0x3C, 0x00, 0x80, 0x10, 0x06, 0x01, - 0xE0, 0xA7, 0xC0, 0x40, 0x10, 0x04, 0x00, 0x3C, 0x19, 0x84, 0x21, 0x08, - 0x66, 0x0F, 0x00, 0x0C, 0x1C, 0x78, 0x01, 0xE0, 0xCC, 0x21, 0x08, 0x43, - 0x30, 0x78, 0x3E, 0x30, 0x10, 0x08, 0x02, 0x03, 0x03, 0x47, 0x14, 0x8A, - 0x43, 0x11, 0x8F, 0x60, 0xFD, 0xA4, 0x90, 0x05, 0x25, 0x24, 0x92, 0x48, - 0x92, 0x24, 0x11, 0x24, 0x89, 0x24, 0x92, 0x92, 0x90, 0x00, 0x04, 0x02, - 0x11, 0x07, 0xF0, 0xC0, 0x50, 0x48, 0x42, 0x00, 0x08, 0x04, 0x02, 0x01, - 0x00, 0x87, 0xFC, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3B, 0x9C, 0xCE, - 0x62, 0x00, 0xFF, 0xE0, 0xFF, 0x80, 0x00, 0x80, 0xC0, 0x40, 0x20, 0x20, - 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x00, 0x80, - 0x80, 0x40, 0x00, 0x1C, 0x31, 0x90, 0x58, 0x38, 0x0C, 0x06, 0x03, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x34, 0x13, 0x18, 0x70, 0x30, 0xE1, 0x44, 0x81, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x81, 0x1F, 0xC0, 0x1E, 0x10, 0x90, - 0x68, 0x10, 0x08, 0x0C, 0x04, 0x04, 0x04, 0x06, 0x06, 0x06, 0x06, 0x0E, - 0x07, 0xFE, 0x3E, 0x10, 0x40, 0x08, 0x02, 0x00, 0x80, 0x40, 0xE0, 0x04, - 0x00, 0x80, 0x10, 0x04, 0x01, 0x00, 0xD8, 0x63, 0xE0, 0x06, 0x0A, 0x0A, - 0x12, 0x22, 0x22, 0x42, 0x42, 0x82, 0x82, 0xFF, 0x02, 0x02, 0x02, 0x0F, - 0x7F, 0x20, 0x10, 0x08, 0x04, 0x02, 0xF1, 0x8C, 0x03, 0x00, 0x80, 0x40, - 0x20, 0x18, 0x16, 0x18, 0xF0, 0x0F, 0x8C, 0x08, 0x08, 0x04, 0x04, 0x02, - 0x79, 0x46, 0xC1, 0xE0, 0x60, 0x28, 0x14, 0x19, 0x08, 0x78, 0xFF, 0x81, - 0x81, 0x02, 0x02, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, - 0x08, 0x3E, 0x31, 0xB0, 0x70, 0x18, 0x0C, 0x05, 0x8C, 0x38, 0x63, 0x40, - 0x60, 0x30, 0x18, 0x1B, 0x18, 0xF8, 0x3C, 0x31, 0x30, 0x50, 0x28, 0x0C, - 0x0F, 0x06, 0x85, 0x3C, 0x80, 0x40, 0x40, 0x20, 0x20, 0x63, 0xE0, 0xFF, - 0x80, 0x07, 0xFC, 0x39, 0xCE, 0x00, 0x00, 0x06, 0x33, 0x98, 0xC4, 0x00, - 0x00, 0xC0, 0x60, 0x18, 0x0C, 0x06, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, - 0x00, 0x30, 0x01, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x06, - 0x00, 0x30, 0x01, 0x80, 0x18, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x0C, 0x02, - 0x00, 0x00, 0x3E, 0x60, 0xA0, 0x20, 0x10, 0x08, 0x08, 0x18, 0x10, 0x08, - 0x00, 0x00, 0x00, 0x01, 0xC0, 0xE0, 0x1C, 0x31, 0x10, 0x50, 0x28, 0x14, - 0x3A, 0x25, 0x22, 0x91, 0x4C, 0xA3, 0xF0, 0x08, 0x02, 0x01, 0x80, 0x7C, - 0x3F, 0x00, 0x0C, 0x00, 0x48, 0x01, 0x20, 0x04, 0x40, 0x21, 0x00, 0x84, - 0x04, 0x08, 0x1F, 0xE0, 0x40, 0x82, 0x01, 0x08, 0x04, 0x20, 0x13, 0xE1, - 0xF0, 0xFF, 0x08, 0x11, 0x01, 0x20, 0x24, 0x04, 0x81, 0x1F, 0xC2, 0x06, - 0x40, 0x68, 0x05, 0x00, 0xA0, 0x14, 0x05, 0xFF, 0x00, 0x1E, 0x48, 0x74, - 0x05, 0x01, 0x80, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x04, 0x01, 0x01, - 0x30, 0x87, 0xC0, 0xFE, 0x10, 0x44, 0x09, 0x02, 0x40, 0x50, 0x14, 0x05, - 0x01, 0x40, 0x50, 0x14, 0x0D, 0x02, 0x41, 0x3F, 0x80, 0xFF, 0xC8, 0x09, - 0x01, 0x20, 0x04, 0x00, 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, - 0xA0, 0x14, 0x03, 0xFF, 0xC0, 0xFF, 0xE8, 0x05, 0x00, 0xA0, 0x04, 0x00, - 0x88, 0x1F, 0x02, 0x20, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0xF0, - 0x00, 0x1F, 0x46, 0x19, 0x01, 0x60, 0x28, 0x01, 0x00, 0x20, 0x04, 0x00, - 0x83, 0xF0, 0x0B, 0x01, 0x20, 0x23, 0x0C, 0x3E, 0x00, 0xE1, 0xD0, 0x24, - 0x09, 0x02, 0x40, 0x90, 0x27, 0xF9, 0x02, 0x40, 0x90, 0x24, 0x09, 0x02, - 0x40, 0xB8, 0x70, 0xFE, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x20, - 0x40, 0x81, 0x1F, 0xC0, 0x0F, 0xE0, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, - 0x00, 0x20, 0x04, 0x80, 0x90, 0x12, 0x02, 0x40, 0xC6, 0x30, 0x7C, 0x00, - 0xF1, 0xE4, 0x0C, 0x41, 0x04, 0x20, 0x44, 0x04, 0x80, 0x5C, 0x06, 0x60, - 0x43, 0x04, 0x10, 0x40, 0x84, 0x08, 0x40, 0xCF, 0x07, 0xF8, 0x04, 0x00, - 0x80, 0x10, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x04, 0x80, - 0x90, 0x12, 0x03, 0xFF, 0xC0, 0xE0, 0x3B, 0x01, 0x94, 0x14, 0xA0, 0xA4, - 0x89, 0x24, 0x49, 0x14, 0x48, 0xA2, 0x45, 0x12, 0x10, 0x90, 0x04, 0x80, - 0x24, 0x01, 0x78, 0x3C, 0xE0, 0xF6, 0x02, 0x50, 0x25, 0x02, 0x48, 0x24, - 0xC2, 0x44, 0x24, 0x22, 0x43, 0x24, 0x12, 0x40, 0xA4, 0x0A, 0x40, 0x6F, - 0x06, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, 0x01, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC0, 0xF0, 0xFF, 0x10, - 0x64, 0x05, 0x01, 0x40, 0x50, 0x34, 0x19, 0xFC, 0x40, 0x10, 0x04, 0x01, - 0x00, 0x40, 0x3E, 0x00, 0x0F, 0x03, 0x0C, 0x60, 0x64, 0x02, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x40, 0x26, 0x06, 0x30, 0xC1, - 0xF0, 0x0C, 0x01, 0xF1, 0x30, 0xE0, 0xFF, 0x04, 0x18, 0x40, 0xC4, 0x04, - 0x40, 0x44, 0x0C, 0x41, 0x87, 0xE0, 0x43, 0x04, 0x10, 0x40, 0x84, 0x04, - 0x40, 0x4F, 0x03, 0x1F, 0x48, 0x34, 0x05, 0x01, 0x40, 0x08, 0x01, 0xC0, - 0x0E, 0x00, 0x40, 0x18, 0x06, 0x01, 0xE1, 0xA7, 0xC0, 0xFF, 0xF0, 0x86, - 0x10, 0x82, 0x00, 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, - 0x02, 0x00, 0x40, 0x7F, 0x00, 0xF0, 0xF4, 0x02, 0x40, 0x24, 0x02, 0x40, - 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x24, 0x02, 0x40, 0x22, 0x04, 0x30, - 0xC0, 0xF0, 0xF8, 0x7C, 0x80, 0x22, 0x01, 0x04, 0x04, 0x10, 0x20, 0x40, - 0x80, 0x82, 0x02, 0x10, 0x08, 0x40, 0x11, 0x00, 0x48, 0x01, 0xA0, 0x03, - 0x00, 0x0C, 0x00, 0xF8, 0x7C, 0x80, 0x22, 0x00, 0x88, 0xC2, 0x23, 0x10, - 0x8E, 0x42, 0x29, 0x09, 0x24, 0x24, 0x90, 0x91, 0x41, 0x85, 0x06, 0x14, - 0x18, 0x70, 0x60, 0x80, 0xF0, 0xF2, 0x06, 0x30, 0x41, 0x08, 0x09, 0x80, - 0x50, 0x06, 0x00, 0x60, 0x0D, 0x00, 0x88, 0x10, 0xC2, 0x04, 0x60, 0x2F, - 0x0F, 0xF0, 0xF2, 0x02, 0x10, 0x41, 0x04, 0x08, 0x80, 0x50, 0x05, 0x00, - 0x20, 0x02, 0x00, 0x20, 0x02, 0x00, 0x20, 0x02, 0x01, 0xFC, 0xFF, 0x40, - 0xA0, 0x90, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x50, 0x30, 0x18, - 0x0F, 0xFC, 0xF2, 0x49, 0x24, 0x92, 0x49, 0x24, 0x9C, 0x80, 0x60, 0x10, - 0x08, 0x02, 0x01, 0x00, 0x40, 0x20, 0x08, 0x04, 0x01, 0x00, 0x80, 0x20, - 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0xE4, 0x92, 0x49, 0x24, 0x92, 0x49, - 0x3C, 0x08, 0x0C, 0x09, 0x0C, 0x4C, 0x14, 0x04, 0xFF, 0xFC, 0x84, 0x21, - 0x3E, 0x00, 0x60, 0x08, 0x02, 0x3F, 0x98, 0x28, 0x0A, 0x02, 0xC3, 0x9F, - 0x30, 0xE0, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x13, 0xE0, 0xA0, - 0x86, 0x02, 0x20, 0x09, 0x00, 0x48, 0x02, 0x40, 0x13, 0x01, 0x14, 0x1B, - 0x9F, 0x00, 0x1F, 0x4C, 0x19, 0x01, 0x40, 0x28, 0x01, 0x00, 0x20, 0x02, - 0x00, 0x60, 0x43, 0xF0, 0x00, 0xC0, 0x08, 0x01, 0x00, 0x20, 0x04, 0x3C, - 0x98, 0x52, 0x06, 0x80, 0x50, 0x0A, 0x01, 0x40, 0x24, 0x0C, 0xC2, 0x87, - 0x98, 0x3F, 0x18, 0x68, 0x06, 0x01, 0xFF, 0xE0, 0x08, 0x03, 0x00, 0x60, - 0xC7, 0xC0, 0x0F, 0x98, 0x08, 0x04, 0x02, 0x07, 0xF8, 0x80, 0x40, 0x20, - 0x10, 0x08, 0x04, 0x02, 0x01, 0x03, 0xF8, 0x1E, 0x6C, 0x39, 0x03, 0x40, - 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, - 0x08, 0x3E, 0x00, 0xC0, 0x10, 0x04, 0x01, 0x00, 0x40, 0x13, 0x87, 0x11, - 0x82, 0x40, 0x90, 0x24, 0x09, 0x02, 0x40, 0x90, 0x2E, 0x1C, 0x08, 0x04, - 0x02, 0x00, 0x00, 0x03, 0xC0, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, - 0x80, 0x43, 0xFE, 0x04, 0x08, 0x10, 0x00, 0x1F, 0xC0, 0x81, 0x02, 0x04, - 0x08, 0x10, 0x20, 0x40, 0x81, 0x02, 0x0B, 0xE0, 0xE0, 0x02, 0x00, 0x20, - 0x02, 0x00, 0x20, 0x02, 0x3C, 0x21, 0x02, 0x60, 0x2C, 0x03, 0x80, 0x24, - 0x02, 0x20, 0x21, 0x02, 0x08, 0xE1, 0xF0, 0x78, 0x04, 0x02, 0x01, 0x00, - 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x80, 0x43, 0xFE, - 0xDC, 0xE3, 0x19, 0x90, 0x84, 0x84, 0x24, 0x21, 0x21, 0x09, 0x08, 0x48, - 0x42, 0x42, 0x17, 0x18, 0xC0, 0x67, 0x83, 0x84, 0x20, 0x22, 0x02, 0x20, - 0x22, 0x02, 0x20, 0x22, 0x02, 0x20, 0x2F, 0x07, 0x1F, 0x04, 0x11, 0x01, - 0x40, 0x18, 0x03, 0x00, 0x60, 0x0A, 0x02, 0x20, 0x83, 0xE0, 0xCF, 0x85, - 0x06, 0x60, 0x24, 0x01, 0x40, 0x14, 0x01, 0x40, 0x16, 0x02, 0x50, 0x44, - 0xF8, 0x40, 0x04, 0x00, 0x40, 0x0F, 0x00, 0x1E, 0x6C, 0x3B, 0x03, 0x40, - 0x28, 0x05, 0x00, 0xA0, 0x12, 0x06, 0x61, 0x43, 0xC8, 0x01, 0x00, 0x20, - 0x04, 0x03, 0xC0, 0xE3, 0x8B, 0x13, 0x80, 0x80, 0x20, 0x08, 0x02, 0x00, - 0x80, 0x20, 0x3F, 0x80, 0x1F, 0x58, 0x34, 0x05, 0x80, 0x1E, 0x00, 0x60, - 0x06, 0x01, 0xC0, 0xAF, 0xC0, 0x20, 0x04, 0x00, 0x80, 0x10, 0x0F, 0xF0, - 0x40, 0x08, 0x01, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x03, 0x04, 0x3F, - 0x00, 0xC1, 0xC8, 0x09, 0x01, 0x20, 0x24, 0x04, 0x80, 0x90, 0x12, 0x02, - 0x61, 0xC7, 0xCC, 0xF8, 0xF9, 0x01, 0x08, 0x10, 0x60, 0x81, 0x08, 0x08, - 0x40, 0x22, 0x01, 0x20, 0x05, 0x00, 0x30, 0x00, 0xF0, 0x7A, 0x01, 0x10, - 0x08, 0x8C, 0x42, 0x62, 0x12, 0x90, 0xA5, 0x05, 0x18, 0x28, 0xC0, 0x86, - 0x00, 0x78, 0xF3, 0x04, 0x18, 0x80, 0xD0, 0x06, 0x00, 0x70, 0x09, 0x81, - 0x0C, 0x20, 0x6F, 0x8F, 0xF0, 0xF2, 0x02, 0x20, 0x41, 0x04, 0x10, 0x80, - 0x88, 0x09, 0x00, 0x50, 0x06, 0x00, 0x20, 0x04, 0x00, 0x40, 0x08, 0x0F, - 0xE0, 0xFF, 0x41, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0xBF, - 0xC0, 0x19, 0x08, 0x42, 0x10, 0x84, 0x64, 0x18, 0x42, 0x10, 0x84, 0x20, - 0xC0, 0xFF, 0xFF, 0xC0, 0xC1, 0x08, 0x42, 0x10, 0x84, 0x10, 0x4C, 0x42, - 0x10, 0x84, 0x26, 0x00, 0x38, 0x13, 0x38, 0x38 }; - -const GFXglyph FreeMono12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 3, 15, 14, 6, -14 }, // 0x21 '!' - { 6, 8, 7, 14, 3, -14 }, // 0x22 '"' - { 13, 10, 16, 14, 2, -14 }, // 0x23 '#' - { 33, 10, 17, 14, 2, -14 }, // 0x24 '$' - { 55, 10, 15, 14, 2, -14 }, // 0x25 '%' - { 74, 9, 12, 14, 3, -11 }, // 0x26 '&' - { 88, 3, 7, 14, 5, -14 }, // 0x27 ''' - { 91, 3, 18, 14, 7, -14 }, // 0x28 '(' - { 98, 3, 18, 14, 4, -14 }, // 0x29 ')' - { 105, 9, 9, 14, 3, -14 }, // 0x2A '*' - { 116, 9, 11, 14, 3, -11 }, // 0x2B '+' - { 129, 5, 7, 14, 3, -3 }, // 0x2C ',' - { 134, 11, 1, 14, 2, -6 }, // 0x2D '-' - { 136, 3, 3, 14, 5, -2 }, // 0x2E '.' - { 138, 9, 18, 14, 3, -15 }, // 0x2F '/' - { 159, 9, 15, 14, 3, -14 }, // 0x30 '0' - { 176, 7, 14, 14, 4, -13 }, // 0x31 '1' - { 189, 9, 15, 14, 2, -14 }, // 0x32 '2' - { 206, 10, 15, 14, 2, -14 }, // 0x33 '3' - { 225, 8, 15, 14, 3, -14 }, // 0x34 '4' - { 240, 9, 15, 14, 3, -14 }, // 0x35 '5' - { 257, 9, 15, 14, 3, -14 }, // 0x36 '6' - { 274, 8, 15, 14, 3, -14 }, // 0x37 '7' - { 289, 9, 15, 14, 3, -14 }, // 0x38 '8' - { 306, 9, 15, 14, 3, -14 }, // 0x39 '9' - { 323, 3, 10, 14, 5, -9 }, // 0x3A ':' - { 327, 5, 13, 14, 3, -9 }, // 0x3B ';' - { 336, 11, 11, 14, 2, -11 }, // 0x3C '<' - { 352, 12, 4, 14, 1, -8 }, // 0x3D '=' - { 358, 11, 11, 14, 2, -11 }, // 0x3E '>' - { 374, 9, 14, 14, 3, -13 }, // 0x3F '?' - { 390, 9, 16, 14, 3, -14 }, // 0x40 '@' - { 408, 14, 14, 14, 0, -13 }, // 0x41 'A' - { 433, 11, 14, 14, 2, -13 }, // 0x42 'B' - { 453, 10, 14, 14, 2, -13 }, // 0x43 'C' - { 471, 10, 14, 14, 2, -13 }, // 0x44 'D' - { 489, 11, 14, 14, 2, -13 }, // 0x45 'E' - { 509, 11, 14, 14, 2, -13 }, // 0x46 'F' - { 529, 11, 14, 14, 2, -13 }, // 0x47 'G' - { 549, 10, 14, 14, 2, -13 }, // 0x48 'H' - { 567, 7, 14, 14, 4, -13 }, // 0x49 'I' - { 580, 11, 14, 14, 2, -13 }, // 0x4A 'J' - { 600, 12, 14, 14, 2, -13 }, // 0x4B 'K' - { 621, 11, 14, 14, 2, -13 }, // 0x4C 'L' - { 641, 13, 14, 14, 1, -13 }, // 0x4D 'M' - { 664, 12, 14, 14, 1, -13 }, // 0x4E 'N' - { 685, 12, 14, 14, 1, -13 }, // 0x4F 'O' - { 706, 10, 14, 14, 2, -13 }, // 0x50 'P' - { 724, 12, 17, 14, 1, -13 }, // 0x51 'Q' - { 750, 12, 14, 14, 2, -13 }, // 0x52 'R' - { 771, 10, 14, 14, 2, -13 }, // 0x53 'S' - { 789, 11, 14, 14, 2, -13 }, // 0x54 'T' - { 809, 12, 14, 14, 1, -13 }, // 0x55 'U' - { 830, 14, 14, 14, 0, -13 }, // 0x56 'V' - { 855, 14, 14, 14, 0, -13 }, // 0x57 'W' - { 880, 12, 14, 14, 1, -13 }, // 0x58 'X' - { 901, 12, 14, 14, 1, -13 }, // 0x59 'Y' - { 922, 9, 14, 14, 3, -13 }, // 0x5A 'Z' - { 938, 3, 18, 14, 7, -14 }, // 0x5B '[' - { 945, 9, 18, 14, 3, -15 }, // 0x5C '\' - { 966, 3, 18, 14, 5, -14 }, // 0x5D ']' - { 973, 9, 6, 14, 3, -14 }, // 0x5E '^' - { 980, 14, 1, 14, 0, 3 }, // 0x5F '_' - { 982, 4, 4, 14, 4, -15 }, // 0x60 '`' - { 984, 10, 10, 14, 2, -9 }, // 0x61 'a' - { 997, 13, 15, 14, 0, -14 }, // 0x62 'b' - { 1022, 11, 10, 14, 2, -9 }, // 0x63 'c' - { 1036, 11, 15, 14, 2, -14 }, // 0x64 'd' - { 1057, 10, 10, 14, 2, -9 }, // 0x65 'e' - { 1070, 9, 15, 14, 4, -14 }, // 0x66 'f' - { 1087, 11, 14, 14, 2, -9 }, // 0x67 'g' - { 1107, 10, 15, 14, 2, -14 }, // 0x68 'h' - { 1126, 9, 15, 14, 3, -14 }, // 0x69 'i' - { 1143, 7, 19, 14, 3, -14 }, // 0x6A 'j' - { 1160, 12, 15, 14, 1, -14 }, // 0x6B 'k' - { 1183, 9, 15, 14, 3, -14 }, // 0x6C 'l' - { 1200, 13, 10, 14, 1, -9 }, // 0x6D 'm' - { 1217, 12, 10, 14, 1, -9 }, // 0x6E 'n' - { 1232, 11, 10, 14, 2, -9 }, // 0x6F 'o' - { 1246, 12, 14, 14, 1, -9 }, // 0x70 'p' - { 1267, 11, 14, 14, 2, -9 }, // 0x71 'q' - { 1287, 10, 10, 14, 3, -9 }, // 0x72 'r' - { 1300, 10, 10, 14, 2, -9 }, // 0x73 's' - { 1313, 11, 14, 14, 1, -13 }, // 0x74 't' - { 1333, 11, 10, 14, 2, -9 }, // 0x75 'u' - { 1347, 13, 10, 14, 1, -9 }, // 0x76 'v' - { 1364, 13, 10, 14, 1, -9 }, // 0x77 'w' - { 1381, 12, 10, 14, 1, -9 }, // 0x78 'x' - { 1396, 12, 14, 14, 1, -9 }, // 0x79 'y' - { 1417, 9, 10, 14, 3, -9 }, // 0x7A 'z' - { 1429, 5, 18, 14, 5, -14 }, // 0x7B '{' - { 1441, 1, 18, 14, 7, -14 }, // 0x7C '|' - { 1444, 5, 18, 14, 5, -14 }, // 0x7D '}' - { 1456, 10, 3, 14, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeMono12pt7b PROGMEM = { - (uint8_t *)FreeMono12pt7bBitmaps, - (GFXglyph *)FreeMono12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2132 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h deleted file mode 100644 index c605d296b..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h +++ /dev/null @@ -1,363 +0,0 @@ -const uint8_t FreeMono18pt7bBitmaps[] PROGMEM = { - 0x27, 0x77, 0x77, 0x77, 0x77, 0x22, 0x22, 0x20, 0x00, 0x6F, 0xF6, 0xF1, - 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC3, 0x98, 0x33, 0x06, 0x60, 0xCC, - 0x18, 0x04, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x04, 0x20, 0x10, 0x80, - 0x42, 0x01, 0x10, 0x04, 0x41, 0xFF, 0xF0, 0x44, 0x02, 0x10, 0x08, 0x40, - 0x21, 0x0F, 0xFF, 0xC2, 0x10, 0x08, 0x40, 0x21, 0x00, 0x84, 0x02, 0x10, - 0x08, 0x40, 0x23, 0x00, 0x88, 0x02, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, - 0x1F, 0xA3, 0x07, 0x10, 0x09, 0x00, 0x48, 0x00, 0x40, 0x03, 0x00, 0x0C, - 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x18, 0x00, 0x20, 0x01, 0x80, 0x0C, 0x00, - 0x70, 0x05, 0xE0, 0xC9, 0xF8, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, - 0x10, 0x00, 0x1E, 0x00, 0x42, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x08, 0x40, 0x0F, 0x00, 0x00, 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xE0, - 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x86, 0x02, 0x06, 0x04, 0x04, 0x08, 0x08, - 0x10, 0x30, 0x10, 0xC0, 0x1E, 0x00, 0x0F, 0xC1, 0x00, 0x20, 0x02, 0x00, - 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x03, 0xC0, 0x6C, 0x3C, 0x62, - 0x82, 0x68, 0x34, 0x81, 0xCC, 0x08, 0x61, 0xC3, 0xE7, 0xFF, 0xFF, 0xF6, - 0x66, 0x66, 0x08, 0xC4, 0x62, 0x31, 0x8C, 0xC6, 0x31, 0x8C, 0x63, 0x18, - 0xC3, 0x18, 0xC2, 0x18, 0xC3, 0x18, 0x86, 0x10, 0xC2, 0x18, 0xC6, 0x10, - 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x8C, 0x62, 0x31, 0x98, 0x80, 0x02, 0x00, - 0x10, 0x00, 0x80, 0x04, 0x0C, 0x21, 0x9D, 0x70, 0x1C, 0x00, 0xA0, 0x0D, - 0x80, 0xC6, 0x04, 0x10, 0x40, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, - 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, 0x02, - 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, - 0x01, 0x00, 0x3E, 0x78, 0xF3, 0xC7, 0x8E, 0x18, 0x70, 0xC1, 0x80, 0xFF, - 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x08, 0x00, 0xC0, 0x04, 0x00, 0x60, - 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, 0x02, - 0x00, 0x20, 0x01, 0x00, 0x10, 0x00, 0x80, 0x08, 0x00, 0x40, 0x04, 0x00, - 0x20, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x00, - 0x0F, 0x81, 0x82, 0x08, 0x08, 0x80, 0x24, 0x01, 0x60, 0x0E, 0x00, 0x30, - 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, - 0x30, 0x03, 0x40, 0x12, 0x00, 0x88, 0x08, 0x60, 0xC0, 0xF8, 0x00, 0x06, - 0x00, 0x70, 0x06, 0x80, 0x64, 0x06, 0x20, 0x31, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, - 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x0F, 0x80, - 0xC3, 0x08, 0x04, 0x80, 0x24, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, - 0x10, 0x01, 0x00, 0x10, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x18, 0x01, 0x80, 0x58, 0x03, 0x80, 0x1F, 0xFF, 0x80, 0x0F, 0xC0, 0xC0, - 0x86, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x04, 0x00, - 0x20, 0x0F, 0x00, 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x40, - 0x01, 0x00, 0x04, 0x00, 0x2C, 0x01, 0x9C, 0x0C, 0x0F, 0xC0, 0x01, 0xC0, - 0x14, 0x02, 0x40, 0x64, 0x04, 0x40, 0xC4, 0x08, 0x41, 0x84, 0x10, 0x42, - 0x04, 0x20, 0x44, 0x04, 0x40, 0x48, 0x04, 0xFF, 0xF0, 0x04, 0x00, 0x40, - 0x04, 0x00, 0x40, 0x04, 0x07, 0xF0, 0x3F, 0xF0, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x0B, 0xF0, 0x30, 0x30, 0x00, 0x60, - 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0E, - 0x00, 0x2C, 0x01, 0x0C, 0x18, 0x0F, 0xC0, 0x01, 0xF0, 0x60, 0x18, 0x03, - 0x00, 0x20, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0xF8, 0x98, 0x4A, - 0x02, 0xE0, 0x3C, 0x01, 0x80, 0x14, 0x01, 0x40, 0x14, 0x03, 0x20, 0x21, - 0x0C, 0x0F, 0x80, 0xFF, 0xF8, 0x01, 0x80, 0x18, 0x03, 0x00, 0x20, 0x02, - 0x00, 0x20, 0x04, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x08, 0x00, 0x80, 0x18, - 0x01, 0x00, 0x10, 0x01, 0x00, 0x30, 0x02, 0x00, 0x20, 0x02, 0x00, 0x0F, - 0x81, 0x83, 0x10, 0x05, 0x80, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, - 0x40, 0x11, 0x83, 0x07, 0xF0, 0x60, 0xC4, 0x01, 0x60, 0x0E, 0x00, 0x30, - 0x01, 0x80, 0x0E, 0x00, 0xD0, 0x04, 0x60, 0xC1, 0xFC, 0x00, 0x1F, 0x03, - 0x08, 0x40, 0x4C, 0x02, 0x80, 0x28, 0x02, 0x80, 0x18, 0x03, 0xC0, 0x74, - 0x05, 0x21, 0x91, 0xF1, 0x00, 0x10, 0x03, 0x00, 0x20, 0x02, 0x00, 0x40, - 0x0C, 0x01, 0x80, 0x60, 0xF8, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, - 0x1D, 0xFF, 0xFD, 0xC0, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, - 0x00, 0xF1, 0xE3, 0x8F, 0x1C, 0x38, 0xE1, 0xC3, 0x06, 0x00, 0x00, 0x06, - 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x38, - 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x18, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xFF, 0xFC, 0xC0, 0x00, 0xC0, 0x00, 0xE0, 0x00, 0x70, - 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x70, - 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0x60, 0x00, 0x3F, - 0x8E, 0x0C, 0x80, 0x28, 0x01, 0x80, 0x10, 0x01, 0x00, 0x10, 0x02, 0x00, - 0xC0, 0x38, 0x06, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, - 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x0F, 0x01, 0x86, 0x08, 0x08, 0x80, 0x24, - 0x01, 0x40, 0x0A, 0x00, 0x50, 0x1E, 0x83, 0x14, 0x20, 0xA2, 0x05, 0x10, - 0x28, 0x81, 0x46, 0x0A, 0x18, 0x50, 0x3F, 0x80, 0x04, 0x00, 0x10, 0x00, - 0x80, 0x02, 0x00, 0x18, 0x18, 0x3F, 0x00, 0x1F, 0xF0, 0x00, 0x06, 0x80, - 0x00, 0x34, 0x00, 0x01, 0x30, 0x00, 0x18, 0x80, 0x00, 0x86, 0x00, 0x04, - 0x30, 0x00, 0x60, 0x80, 0x02, 0x06, 0x00, 0x10, 0x10, 0x01, 0x80, 0x80, - 0x08, 0x06, 0x00, 0x7F, 0xF0, 0x06, 0x00, 0x80, 0x20, 0x06, 0x01, 0x00, - 0x10, 0x18, 0x00, 0xC0, 0x80, 0x06, 0x04, 0x00, 0x11, 0xFC, 0x0F, 0xF0, - 0xFF, 0xF8, 0x04, 0x01, 0x01, 0x00, 0x20, 0x40, 0x04, 0x10, 0x01, 0x04, - 0x00, 0x41, 0x00, 0x10, 0x40, 0x08, 0x10, 0x0C, 0x07, 0xFF, 0x01, 0x00, - 0x70, 0x40, 0x06, 0x10, 0x00, 0x84, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, - 0x10, 0x00, 0x44, 0x00, 0x21, 0x00, 0x33, 0xFF, 0xF8, 0x03, 0xF1, 0x06, - 0x0E, 0x8C, 0x01, 0xC4, 0x00, 0x64, 0x00, 0x12, 0x00, 0x0A, 0x00, 0x01, - 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x01, 0x88, 0x01, 0x83, - 0x03, 0x80, 0x7E, 0x00, 0xFF, 0xE0, 0x20, 0x18, 0x20, 0x0C, 0x20, 0x04, - 0x20, 0x02, 0x20, 0x02, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, - 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x02, 0x20, 0x02, - 0x20, 0x04, 0x20, 0x0C, 0x20, 0x18, 0xFF, 0xE0, 0xFF, 0xFF, 0x08, 0x00, - 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x00, 0x40, 0x00, 0x20, - 0x40, 0x10, 0x20, 0x0F, 0xF0, 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, - 0x80, 0x00, 0x40, 0x02, 0x20, 0x01, 0x10, 0x00, 0x88, 0x00, 0x44, 0x00, - 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0x88, 0x00, 0x44, 0x00, 0x22, 0x00, 0x11, - 0x00, 0x08, 0x80, 0x00, 0x40, 0x00, 0x20, 0x40, 0x10, 0x20, 0x0F, 0xF0, - 0x04, 0x08, 0x02, 0x04, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, - 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF9, - 0x06, 0x07, 0x84, 0x00, 0xC4, 0x00, 0x24, 0x00, 0x12, 0x00, 0x02, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x0F, 0xF8, - 0x00, 0x14, 0x00, 0x09, 0x00, 0x04, 0x80, 0x02, 0x20, 0x01, 0x18, 0x00, - 0x83, 0x01, 0xC0, 0x7F, 0x00, 0xFC, 0x3F, 0x20, 0x04, 0x20, 0x04, 0x20, - 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x3F, - 0xFC, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, - 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0xFC, 0x3F, 0xFF, 0xF8, 0x10, - 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, - 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, 0x02, - 0x00, 0x10, 0x00, 0x81, 0xFF, 0xF0, 0x03, 0xFF, 0x80, 0x04, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, - 0x00, 0x21, 0x00, 0x10, 0x80, 0x10, 0x20, 0x18, 0x0C, 0x18, 0x01, 0xF0, - 0x00, 0xFF, 0x1F, 0x84, 0x01, 0x81, 0x00, 0xC0, 0x40, 0x60, 0x10, 0x30, - 0x04, 0x18, 0x01, 0x0C, 0x00, 0x46, 0x00, 0x13, 0x00, 0x05, 0xF0, 0x01, - 0xC6, 0x00, 0x60, 0xC0, 0x10, 0x18, 0x04, 0x06, 0x01, 0x00, 0xC0, 0x40, - 0x30, 0x10, 0x04, 0x04, 0x01, 0x81, 0x00, 0x23, 0xFC, 0x0F, 0xFF, 0x80, - 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, - 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, - 0x42, 0x00, 0x84, 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x0F, 0xFF, 0xF0, - 0xF0, 0x01, 0xE7, 0x00, 0x70, 0xA0, 0x0A, 0x16, 0x03, 0x42, 0x40, 0x48, - 0x4C, 0x19, 0x08, 0x82, 0x21, 0x10, 0x44, 0x23, 0x18, 0x84, 0x22, 0x10, - 0x86, 0xC2, 0x10, 0x50, 0x42, 0x0E, 0x08, 0x41, 0xC1, 0x08, 0x00, 0x21, - 0x00, 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x02, 0x7F, 0x03, 0xF0, - 0xF8, 0x1F, 0xC6, 0x00, 0x41, 0xC0, 0x10, 0x50, 0x04, 0x12, 0x01, 0x04, - 0xC0, 0x41, 0x10, 0x10, 0x46, 0x04, 0x10, 0x81, 0x04, 0x10, 0x41, 0x04, - 0x10, 0x40, 0x84, 0x10, 0x31, 0x04, 0x04, 0x41, 0x01, 0x90, 0x40, 0x24, - 0x10, 0x05, 0x04, 0x01, 0xC1, 0x00, 0x31, 0xFC, 0x0C, 0x03, 0xE0, 0x06, - 0x0C, 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x05, - 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x0E, 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, - 0x06, 0x00, 0x7C, 0x00, 0xFF, 0xF0, 0x10, 0x0C, 0x10, 0x02, 0x10, 0x03, - 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x03, 0x10, 0x06, 0x10, 0x0C, - 0x1F, 0xF0, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, - 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0xC0, 0x03, 0xE0, 0x06, 0x0C, - 0x04, 0x01, 0x04, 0x00, 0x46, 0x00, 0x32, 0x00, 0x0B, 0x00, 0x07, 0x00, - 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0E, - 0x00, 0x0D, 0x00, 0x04, 0xC0, 0x06, 0x20, 0x02, 0x08, 0x02, 0x03, 0x06, - 0x00, 0xFC, 0x00, 0x30, 0x00, 0x30, 0x00, 0x7F, 0xC6, 0x38, 0x1E, 0xFF, - 0xF0, 0x02, 0x01, 0x80, 0x40, 0x08, 0x08, 0x01, 0x81, 0x00, 0x10, 0x20, - 0x02, 0x04, 0x00, 0x40, 0x80, 0x18, 0x10, 0x06, 0x02, 0x03, 0x80, 0x7F, - 0xC0, 0x08, 0x18, 0x01, 0x01, 0x80, 0x20, 0x18, 0x04, 0x01, 0x80, 0x80, - 0x10, 0x10, 0x03, 0x02, 0x00, 0x20, 0x40, 0x06, 0x7F, 0x80, 0x70, 0x0F, - 0xC8, 0x61, 0xE2, 0x01, 0x90, 0x02, 0x40, 0x09, 0x00, 0x04, 0x00, 0x08, - 0x00, 0x38, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, - 0x00, 0x60, 0x01, 0x80, 0x0F, 0x00, 0x2B, 0x03, 0x23, 0xF0, 0xFF, 0xFF, - 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x20, 0x20, 0x00, 0x40, 0x00, - 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x01, 0xFF, 0xC0, - 0xFC, 0x1F, 0x90, 0x01, 0x08, 0x00, 0x84, 0x00, 0x42, 0x00, 0x21, 0x00, - 0x10, 0x80, 0x08, 0x40, 0x04, 0x20, 0x02, 0x10, 0x01, 0x08, 0x00, 0x84, - 0x00, 0x42, 0x00, 0x21, 0x00, 0x10, 0x80, 0x08, 0x40, 0x04, 0x10, 0x04, - 0x0C, 0x06, 0x03, 0x06, 0x00, 0x7C, 0x00, 0xFE, 0x03, 0xF8, 0x80, 0x02, - 0x04, 0x00, 0x10, 0x30, 0x01, 0x80, 0x80, 0x08, 0x06, 0x00, 0xC0, 0x30, - 0x06, 0x00, 0x80, 0x20, 0x06, 0x03, 0x00, 0x30, 0x10, 0x00, 0x80, 0x80, - 0x06, 0x0C, 0x00, 0x10, 0x40, 0x00, 0x86, 0x00, 0x06, 0x20, 0x00, 0x11, - 0x00, 0x00, 0xD8, 0x00, 0x06, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, - 0xFC, 0x0F, 0xE8, 0x00, 0x19, 0x00, 0x03, 0x10, 0x00, 0x62, 0x00, 0x08, - 0x41, 0x81, 0x08, 0x28, 0x21, 0x05, 0x04, 0x21, 0xA0, 0x84, 0x36, 0x30, - 0x84, 0x46, 0x08, 0x88, 0xC1, 0x31, 0x18, 0x24, 0x12, 0x04, 0x82, 0x40, - 0xB0, 0x48, 0x14, 0x09, 0x02, 0x80, 0xA0, 0x30, 0x1C, 0x06, 0x03, 0x80, - 0x7E, 0x0F, 0xC2, 0x00, 0x60, 0x60, 0x0C, 0x06, 0x03, 0x00, 0x60, 0xC0, - 0x0C, 0x10, 0x00, 0xC6, 0x00, 0x0D, 0x80, 0x00, 0xA0, 0x00, 0x1C, 0x00, - 0x03, 0x80, 0x00, 0xD8, 0x00, 0x11, 0x00, 0x06, 0x30, 0x01, 0x83, 0x00, - 0x60, 0x30, 0x08, 0x06, 0x03, 0x00, 0x60, 0xC0, 0x06, 0x7F, 0x07, 0xF0, - 0xFC, 0x1F, 0x98, 0x03, 0x04, 0x01, 0x03, 0x01, 0x80, 0xC1, 0x80, 0x20, - 0x80, 0x18, 0xC0, 0x04, 0x40, 0x03, 0x60, 0x00, 0xE0, 0x00, 0x20, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, - 0x00, 0x40, 0x00, 0x20, 0x03, 0xFF, 0x80, 0xFF, 0xF4, 0x00, 0xA0, 0x09, - 0x00, 0x48, 0x04, 0x40, 0x40, 0x02, 0x00, 0x20, 0x02, 0x00, 0x10, 0x01, - 0x00, 0x10, 0x00, 0x80, 0x08, 0x04, 0x80, 0x24, 0x01, 0x40, 0x0C, 0x00, - 0x60, 0x03, 0xFF, 0xF0, 0xFC, 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0x08, - 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0xF8, 0x80, 0x02, 0x00, 0x10, - 0x00, 0xC0, 0x02, 0x00, 0x18, 0x00, 0x40, 0x03, 0x00, 0x08, 0x00, 0x40, - 0x01, 0x00, 0x08, 0x00, 0x20, 0x01, 0x00, 0x04, 0x00, 0x20, 0x00, 0x80, - 0x04, 0x00, 0x10, 0x00, 0x80, 0x02, 0x00, 0x10, 0x00, 0x40, 0x02, 0x00, - 0x08, 0x00, 0x40, 0xF8, 0x42, 0x10, 0x84, 0x21, 0x08, 0x42, 0x10, 0x84, - 0x21, 0x08, 0x42, 0x10, 0x84, 0x21, 0xF8, 0x02, 0x00, 0x38, 0x03, 0x60, - 0x11, 0x01, 0x8C, 0x18, 0x31, 0x80, 0xD8, 0x03, 0x80, 0x08, 0xFF, 0xFF, - 0xF8, 0xC1, 0x83, 0x06, 0x0C, 0x0F, 0xC0, 0x70, 0x30, 0x00, 0x10, 0x00, - 0x08, 0x00, 0x08, 0x00, 0x08, 0x0F, 0xF8, 0x30, 0x08, 0x40, 0x08, 0x80, - 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x38, 0x60, 0xE8, 0x3F, 0x8F, 0xF0, - 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, - 0x01, 0x0F, 0x80, 0x4C, 0x18, 0x14, 0x01, 0x06, 0x00, 0x21, 0x80, 0x08, - 0x40, 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x01, 0x18, - 0x00, 0x86, 0x00, 0x21, 0xC0, 0x10, 0x5C, 0x18, 0xF1, 0xF8, 0x00, 0x07, - 0xE4, 0x30, 0x78, 0x80, 0x32, 0x00, 0x24, 0x00, 0x50, 0x00, 0x20, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x12, 0x00, 0xC3, - 0x07, 0x01, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, - 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x7C, 0x20, 0x60, 0xC8, 0x20, 0x0A, - 0x10, 0x01, 0x84, 0x00, 0x62, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x88, - 0x00, 0x22, 0x00, 0x08, 0xC0, 0x06, 0x10, 0x01, 0x82, 0x00, 0xE0, 0x60, - 0xE8, 0x0F, 0xE3, 0xC0, 0x07, 0xE0, 0x1C, 0x18, 0x30, 0x0C, 0x60, 0x06, - 0x40, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0xC0, 0x00, - 0x40, 0x00, 0x60, 0x00, 0x30, 0x03, 0x0C, 0x0E, 0x03, 0xF0, 0x03, 0xFC, - 0x18, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x0F, 0xFF, 0x82, 0x00, - 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0xFF, 0xF0, 0x0F, - 0xC7, 0x9C, 0x3A, 0x18, 0x07, 0x08, 0x01, 0x8C, 0x00, 0xC4, 0x00, 0x22, - 0x00, 0x11, 0x00, 0x08, 0x80, 0x04, 0x40, 0x02, 0x10, 0x03, 0x08, 0x01, - 0x82, 0x01, 0x40, 0xC3, 0x20, 0x3F, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, - 0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x7F, 0x00, 0xF0, 0x00, - 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x47, - 0xC0, 0x2C, 0x18, 0x1C, 0x04, 0x0C, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, - 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, - 0x04, 0x00, 0x82, 0x00, 0x47, 0xC0, 0xF8, 0x06, 0x00, 0x18, 0x00, 0x60, - 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, - 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x03, 0xFF, 0xF0, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x40, 0x10, 0x04, - 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, - 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x10, 0x08, 0x06, 0xFE, 0x00, 0xF0, - 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, - 0xFE, 0x10, 0x30, 0x10, 0xE0, 0x11, 0xC0, 0x13, 0x00, 0x16, 0x00, 0x1E, - 0x00, 0x1B, 0x00, 0x11, 0x80, 0x10, 0xC0, 0x10, 0x60, 0x10, 0x30, 0x10, - 0x18, 0x10, 0x1C, 0xF0, 0x3F, 0x7E, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, - 0x00, 0x80, 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x02, 0x00, 0x08, - 0x00, 0x20, 0x00, 0x80, 0xFF, 0xFC, 0xEF, 0x9E, 0x07, 0x1E, 0x20, 0xC1, - 0x82, 0x10, 0x20, 0x42, 0x04, 0x08, 0x40, 0x81, 0x08, 0x10, 0x21, 0x02, - 0x04, 0x20, 0x40, 0x84, 0x08, 0x10, 0x81, 0x02, 0x10, 0x20, 0x42, 0x04, - 0x08, 0x40, 0x81, 0x3E, 0x1C, 0x38, 0x71, 0xF0, 0x0B, 0x06, 0x07, 0x01, - 0x03, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, 0x20, 0x04, 0x10, - 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x13, - 0xF0, 0x3E, 0x07, 0xC0, 0x30, 0x60, 0x80, 0x22, 0x00, 0x24, 0x00, 0x50, - 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x05, 0x00, 0x12, 0x00, - 0x22, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0xF1, 0xFC, 0x05, 0xC1, 0x81, - 0xC0, 0x10, 0x60, 0x02, 0x18, 0x00, 0xC4, 0x00, 0x11, 0x00, 0x04, 0x40, - 0x01, 0x10, 0x00, 0x44, 0x00, 0x11, 0x80, 0x08, 0x60, 0x02, 0x14, 0x01, - 0x04, 0xC1, 0x81, 0x0F, 0x80, 0x40, 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, - 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xE3, 0xC6, - 0x0E, 0x86, 0x00, 0xE1, 0x00, 0x18, 0xC0, 0x06, 0x20, 0x00, 0x88, 0x00, - 0x22, 0x00, 0x08, 0x80, 0x02, 0x20, 0x00, 0x84, 0x00, 0x61, 0x00, 0x18, - 0x20, 0x0A, 0x06, 0x0C, 0x80, 0x7C, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, - 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x0F, 0xF0, 0xF8, - 0x7C, 0x11, 0x8C, 0x2C, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x00, 0x02, 0x00, - 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, - 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xD1, 0x83, 0x98, 0x04, 0x80, 0x24, 0x00, - 0x30, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x00, 0x1C, - 0x01, 0xF0, 0x1A, 0x7F, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0xFF, 0xFC, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, - 0x00, 0x08, 0x00, 0x08, 0x01, 0x06, 0x0F, 0x03, 0xF8, 0xF0, 0x3E, 0x08, - 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, 0x20, 0x80, 0x10, 0x40, 0x08, - 0x20, 0x04, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, 0x00, 0x41, 0x00, - 0xE0, 0x41, 0xD0, 0x1F, 0x8E, 0xFE, 0x0F, 0xE2, 0x00, 0x20, 0x60, 0x0C, - 0x0C, 0x01, 0x80, 0x80, 0x20, 0x18, 0x0C, 0x01, 0x01, 0x00, 0x30, 0x60, - 0x02, 0x08, 0x00, 0x41, 0x00, 0x0C, 0x60, 0x00, 0x88, 0x00, 0x19, 0x00, - 0x01, 0x40, 0x00, 0x38, 0x00, 0xFC, 0x07, 0xE4, 0x00, 0x10, 0x80, 0x02, - 0x18, 0x20, 0xC3, 0x0E, 0x18, 0x21, 0x42, 0x04, 0x28, 0x40, 0x8D, 0x88, - 0x19, 0x93, 0x03, 0x22, 0x60, 0x2C, 0x68, 0x05, 0x85, 0x00, 0xA0, 0xA0, - 0x1C, 0x1C, 0x01, 0x81, 0x80, 0x7C, 0x1F, 0x18, 0x03, 0x06, 0x03, 0x01, - 0x83, 0x00, 0x63, 0x00, 0x1B, 0x00, 0x07, 0x00, 0x03, 0x80, 0x03, 0x60, - 0x03, 0x18, 0x03, 0x06, 0x03, 0x01, 0x83, 0x00, 0x61, 0x00, 0x33, 0xF0, - 0x7E, 0xFC, 0x1F, 0x90, 0x01, 0x8C, 0x00, 0x86, 0x00, 0xC1, 0x80, 0x40, - 0xC0, 0x60, 0x20, 0x20, 0x18, 0x30, 0x04, 0x10, 0x03, 0x08, 0x00, 0x8C, - 0x00, 0x64, 0x00, 0x16, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x00, 0x01, - 0x80, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x20, 0x07, 0xFE, 0x00, - 0xFF, 0xF4, 0x01, 0x20, 0x09, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, - 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, 0x40, 0x14, 0x00, 0xA0, 0x07, 0xFF, - 0xE0, 0x07, 0x0C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x30, 0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, - 0x0C, 0x07, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 0x07, 0x0C, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, 0x30, 0xE0, 0x1C, 0x00, 0x44, 0x0D, 0x84, - 0x36, 0x04, 0x40, 0x07, 0x00 }; - -const GFXglyph FreeMono18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 4, 22, 21, 8, -21 }, // 0x21 '!' - { 11, 11, 10, 21, 5, -20 }, // 0x22 '"' - { 25, 14, 24, 21, 3, -21 }, // 0x23 '#' - { 67, 13, 26, 21, 4, -22 }, // 0x24 '$' - { 110, 15, 21, 21, 3, -20 }, // 0x25 '%' - { 150, 12, 18, 21, 4, -17 }, // 0x26 '&' - { 177, 4, 10, 21, 8, -20 }, // 0x27 ''' - { 182, 5, 25, 21, 10, -20 }, // 0x28 '(' - { 198, 5, 25, 21, 6, -20 }, // 0x29 ')' - { 214, 13, 12, 21, 4, -20 }, // 0x2A '*' - { 234, 15, 17, 21, 3, -17 }, // 0x2B '+' - { 266, 7, 10, 21, 5, -4 }, // 0x2C ',' - { 275, 15, 1, 21, 3, -9 }, // 0x2D '-' - { 277, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 281, 13, 26, 21, 4, -22 }, // 0x2F '/' - { 324, 13, 21, 21, 4, -20 }, // 0x30 '0' - { 359, 13, 21, 21, 4, -20 }, // 0x31 '1' - { 394, 13, 21, 21, 3, -20 }, // 0x32 '2' - { 429, 14, 21, 21, 3, -20 }, // 0x33 '3' - { 466, 12, 21, 21, 4, -20 }, // 0x34 '4' - { 498, 14, 21, 21, 3, -20 }, // 0x35 '5' - { 535, 12, 21, 21, 5, -20 }, // 0x36 '6' - { 567, 12, 21, 21, 4, -20 }, // 0x37 '7' - { 599, 13, 21, 21, 4, -20 }, // 0x38 '8' - { 634, 12, 21, 21, 5, -20 }, // 0x39 '9' - { 666, 5, 15, 21, 8, -14 }, // 0x3A ':' - { 676, 7, 20, 21, 5, -14 }, // 0x3B ';' - { 694, 15, 16, 21, 3, -17 }, // 0x3C '<' - { 724, 17, 6, 21, 2, -12 }, // 0x3D '=' - { 737, 15, 16, 21, 3, -17 }, // 0x3E '>' - { 767, 12, 20, 21, 5, -19 }, // 0x3F '?' - { 797, 13, 23, 21, 4, -20 }, // 0x40 '@' - { 835, 21, 20, 21, 0, -19 }, // 0x41 'A' - { 888, 18, 20, 21, 1, -19 }, // 0x42 'B' - { 933, 17, 20, 21, 2, -19 }, // 0x43 'C' - { 976, 16, 20, 21, 2, -19 }, // 0x44 'D' - { 1016, 17, 20, 21, 1, -19 }, // 0x45 'E' - { 1059, 17, 20, 21, 1, -19 }, // 0x46 'F' - { 1102, 17, 20, 21, 2, -19 }, // 0x47 'G' - { 1145, 16, 20, 21, 2, -19 }, // 0x48 'H' - { 1185, 13, 20, 21, 4, -19 }, // 0x49 'I' - { 1218, 17, 20, 21, 3, -19 }, // 0x4A 'J' - { 1261, 18, 20, 21, 1, -19 }, // 0x4B 'K' - { 1306, 15, 20, 21, 3, -19 }, // 0x4C 'L' - { 1344, 19, 20, 21, 1, -19 }, // 0x4D 'M' - { 1392, 18, 20, 21, 1, -19 }, // 0x4E 'N' - { 1437, 17, 20, 21, 2, -19 }, // 0x4F 'O' - { 1480, 16, 20, 21, 1, -19 }, // 0x50 'P' - { 1520, 17, 24, 21, 2, -19 }, // 0x51 'Q' - { 1571, 19, 20, 21, 1, -19 }, // 0x52 'R' - { 1619, 14, 20, 21, 3, -19 }, // 0x53 'S' - { 1654, 15, 20, 21, 3, -19 }, // 0x54 'T' - { 1692, 17, 20, 21, 2, -19 }, // 0x55 'U' - { 1735, 21, 20, 21, 0, -19 }, // 0x56 'V' - { 1788, 19, 20, 21, 1, -19 }, // 0x57 'W' - { 1836, 19, 20, 21, 1, -19 }, // 0x58 'X' - { 1884, 17, 20, 21, 2, -19 }, // 0x59 'Y' - { 1927, 13, 20, 21, 4, -19 }, // 0x5A 'Z' - { 1960, 5, 25, 21, 10, -20 }, // 0x5B '[' - { 1976, 13, 26, 21, 4, -22 }, // 0x5C '\' - { 2019, 5, 25, 21, 6, -20 }, // 0x5D ']' - { 2035, 13, 9, 21, 4, -20 }, // 0x5E '^' - { 2050, 21, 1, 21, 0, 4 }, // 0x5F '_' - { 2053, 6, 5, 21, 5, -21 }, // 0x60 '`' - { 2057, 16, 15, 21, 3, -14 }, // 0x61 'a' - { 2087, 18, 21, 21, 1, -20 }, // 0x62 'b' - { 2135, 15, 15, 21, 3, -14 }, // 0x63 'c' - { 2164, 18, 21, 21, 2, -20 }, // 0x64 'd' - { 2212, 16, 15, 21, 2, -14 }, // 0x65 'e' - { 2242, 14, 21, 21, 4, -20 }, // 0x66 'f' - { 2279, 17, 22, 21, 2, -14 }, // 0x67 'g' - { 2326, 17, 21, 21, 1, -20 }, // 0x68 'h' - { 2371, 14, 22, 21, 4, -21 }, // 0x69 'i' - { 2410, 10, 29, 21, 5, -21 }, // 0x6A 'j' - { 2447, 16, 21, 21, 2, -20 }, // 0x6B 'k' - { 2489, 14, 21, 21, 4, -20 }, // 0x6C 'l' - { 2526, 19, 15, 21, 1, -14 }, // 0x6D 'm' - { 2562, 17, 15, 21, 1, -14 }, // 0x6E 'n' - { 2594, 15, 15, 21, 3, -14 }, // 0x6F 'o' - { 2623, 18, 22, 21, 1, -14 }, // 0x70 'p' - { 2673, 18, 22, 21, 2, -14 }, // 0x71 'q' - { 2723, 15, 15, 21, 3, -14 }, // 0x72 'r' - { 2752, 13, 15, 21, 4, -14 }, // 0x73 's' - { 2777, 16, 20, 21, 1, -19 }, // 0x74 't' - { 2817, 17, 15, 21, 1, -14 }, // 0x75 'u' - { 2849, 19, 15, 21, 1, -14 }, // 0x76 'v' - { 2885, 19, 15, 21, 1, -14 }, // 0x77 'w' - { 2921, 17, 15, 21, 2, -14 }, // 0x78 'x' - { 2953, 17, 22, 21, 2, -14 }, // 0x79 'y' - { 3000, 13, 15, 21, 4, -14 }, // 0x7A 'z' - { 3025, 8, 25, 21, 6, -20 }, // 0x7B '{' - { 3050, 1, 25, 21, 10, -20 }, // 0x7C '|' - { 3054, 8, 25, 21, 7, -20 }, // 0x7D '}' - { 3079, 15, 5, 21, 3, -11 } }; // 0x7E '~' - -const GFXfont FreeMono18pt7b PROGMEM = { - (uint8_t *)FreeMono18pt7bBitmaps, - (GFXglyph *)FreeMono18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 3761 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h deleted file mode 100644 index 4c8bd151d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h +++ /dev/null @@ -1,577 +0,0 @@ -const uint8_t FreeMono24pt7bBitmaps[] PROGMEM = { - 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x10, 0x84, 0x21, 0x08, - 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0xFE, 0x7F, 0x7C, 0x3E, 0x7C, - 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, 0x3C, - 0x3E, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x01, - 0x86, 0x00, 0x30, 0xC0, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, 0x60, 0x03, - 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x70, 0x01, 0x8C, 0x00, 0x61, 0x80, 0x0C, - 0x30, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0x06, 0x18, 0x00, 0xC3, 0x00, 0x18, - 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x7F, 0xFF, 0xEF, 0xFF, - 0xFC, 0x06, 0x18, 0x00, 0xC7, 0x00, 0x38, 0xC0, 0x06, 0x18, 0x00, 0xC3, - 0x00, 0x18, 0x60, 0x03, 0x0C, 0x00, 0x61, 0x80, 0x0C, 0x30, 0x01, 0x86, - 0x00, 0x30, 0xC0, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x0F, 0xC0, - 0x0F, 0xFD, 0x87, 0x03, 0xE3, 0x80, 0x39, 0xC0, 0x06, 0x60, 0x01, 0x98, - 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, - 0x80, 0x03, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, - 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x80, 0x0E, 0xFC, 0x0F, 0x37, - 0xFF, 0x80, 0x7F, 0x80, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x80, 0x01, 0xFE, 0x00, 0x38, - 0x70, 0x03, 0x03, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, - 0x01, 0x80, 0x30, 0x30, 0x03, 0x87, 0x00, 0x1F, 0xE0, 0x30, 0x78, 0x1F, - 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, - 0x0C, 0x01, 0xE0, 0x00, 0x7F, 0x80, 0x0E, 0x1C, 0x00, 0xC0, 0xC0, 0x18, - 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x0C, 0x0E, 0x00, - 0xE1, 0xC0, 0x07, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xEC, 0x01, 0xFF, 0x00, - 0xE1, 0x00, 0x70, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x7C, 0x00, 0x3B, 0x83, - 0xD8, 0x60, 0xFE, 0x0C, 0x33, 0x03, 0x98, 0xC0, 0x66, 0x30, 0x0D, 0x8C, - 0x03, 0xC3, 0x00, 0x70, 0x60, 0x1C, 0x1C, 0x0F, 0x03, 0x87, 0x7C, 0x7F, - 0x9F, 0x07, 0x80, 0x00, 0xFE, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x3C, - 0x70, 0xE1, 0xC3, 0x87, 0x00, 0x06, 0x1C, 0x30, 0xE1, 0x87, 0x0E, 0x18, - 0x70, 0xE1, 0xC3, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x0C, - 0x1C, 0x38, 0x70, 0x60, 0xE1, 0xC1, 0x83, 0x83, 0x06, 0x06, 0x04, 0xC1, - 0xC1, 0x83, 0x83, 0x07, 0x0E, 0x0C, 0x1C, 0x38, 0x70, 0xE0, 0xE1, 0xC3, - 0x87, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0x87, 0x0E, 0x1C, 0x30, 0x61, 0xC3, - 0x0E, 0x18, 0x70, 0xC1, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x03, 0x00, 0x00, 0xC0, 0x10, 0x30, 0x3F, 0x8C, 0x7C, 0xFF, 0xFC, 0x07, - 0xF8, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0C, 0xC0, 0x06, 0x18, 0x03, 0x87, - 0x00, 0xC0, 0xC0, 0x60, 0x18, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, - 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, - 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, - 0x1F, 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, - 0x1C, 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF0, 0x7D, 0xFF, - 0xFF, 0xFF, 0xEF, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, - 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x0E, 0x00, - 0x03, 0x00, 0x01, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x0C, 0x00, 0x07, - 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x00, 0x03, - 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xE0, 0x18, 0x30, 0x03, 0x1C, 0x00, - 0xE6, 0x00, 0x19, 0x80, 0x06, 0xE0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, - 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, - 0x76, 0x00, 0x19, 0x80, 0x06, 0x70, 0x03, 0x8C, 0x00, 0xC3, 0x80, 0x60, - 0x78, 0x78, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x03, 0x80, 0x07, 0x80, 0x0F, - 0x80, 0x1D, 0x80, 0x39, 0x80, 0x71, 0x80, 0xE1, 0x80, 0xC1, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xC0, 0xE0, - 0xC0, 0x1C, 0x60, 0x03, 0xB8, 0x00, 0x6C, 0x00, 0x0F, 0x00, 0x03, 0x00, - 0x00, 0xC0, 0x00, 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, - 0x00, 0xD0, 0x00, 0x38, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, - 0xF8, 0x01, 0xFF, 0xC0, 0x70, 0x3C, 0x18, 0x01, 0xC6, 0x00, 0x18, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x00, - 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xD8, 0x00, - 0x3B, 0x80, 0x0E, 0x3E, 0x07, 0x81, 0xFF, 0xE0, 0x07, 0xE0, 0x00, 0x00, - 0x3C, 0x00, 0x7C, 0x00, 0x6C, 0x00, 0xCC, 0x00, 0x8C, 0x01, 0x8C, 0x03, - 0x0C, 0x03, 0x0C, 0x06, 0x0C, 0x04, 0x0C, 0x0C, 0x0C, 0x08, 0x0C, 0x10, - 0x0C, 0x30, 0x0C, 0x20, 0x0C, 0x60, 0x0C, 0x40, 0x0C, 0x80, 0x0C, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0xFF, 0x00, 0xFF, 0x3F, 0xFF, 0x07, 0xFF, 0xE0, - 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, - 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC7, 0xE0, 0x1F, 0xFF, 0x03, - 0x80, 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, - 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x06, 0xC0, 0x01, 0xDC, 0x00, 0x71, 0xF0, 0x3C, 0x0F, - 0xFF, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x80, 0x3F, 0xF0, 0x3E, 0x00, 0x1E, - 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, - 0x18, 0x00, 0x06, 0x00, 0x03, 0x80, 0x00, 0xC1, 0xF8, 0x31, 0xFF, 0x0C, - 0xF0, 0xF3, 0x70, 0x0C, 0xD8, 0x01, 0xBC, 0x00, 0x6E, 0x00, 0x0F, 0x80, - 0x03, 0xC0, 0x00, 0xD8, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0x30, 0x01, - 0x8E, 0x00, 0x61, 0xC0, 0x30, 0x38, 0x38, 0x07, 0xFC, 0x00, 0x7C, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xC0, - 0x00, 0x60, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, - 0x30, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC0, 0xF1, 0xC0, 0x0E, - 0x60, 0x01, 0xB8, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x36, 0x00, 0x18, 0xC0, 0x0C, 0x1C, 0x0E, 0x03, 0xFF, 0x00, 0xFF, - 0xC0, 0x70, 0x38, 0x30, 0x03, 0x18, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0x60, 0x01, 0x98, - 0x00, 0xE3, 0x00, 0x70, 0x70, 0x38, 0x0F, 0xFC, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x03, 0xFE, 0x01, 0xC1, 0xC0, 0xC0, 0x38, 0x60, 0x07, 0x18, 0x00, - 0xCC, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x01, 0xB0, 0x00, 0x3C, 0x00, 0x1F, - 0x00, 0x07, 0x60, 0x03, 0xD8, 0x01, 0xB3, 0x00, 0xCC, 0xF0, 0xF3, 0x0F, - 0xF8, 0xC1, 0xF8, 0x30, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, - 0xE0, 0x00, 0x30, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, - 0x07, 0xC0, 0xFF, 0xC0, 0x1F, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, - 0xF7, 0xC0, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF1, 0xF8, 0x7C, 0x3F, 0x0F, - 0x83, 0xE0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x38, 0x04, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, - 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x20, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0x7F, 0xFF, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x07, 0xF0, 0x1F, 0xFE, 0x3E, 0x07, 0x98, 0x00, 0xEC, 0x00, - 0x36, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0xC0, - 0x00, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x00, 0x03, 0x00, - 0x01, 0x80, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x80, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, - 0x78, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE0, 0xE0, 0xE0, 0x1C, 0x30, - 0x03, 0x1C, 0x00, 0x66, 0x00, 0x19, 0x80, 0x06, 0xC0, 0x01, 0xB0, 0x07, - 0xEC, 0x07, 0xFB, 0x03, 0xC6, 0xC1, 0xC1, 0xB0, 0xE0, 0x6C, 0x30, 0x1B, - 0x0C, 0x06, 0xC3, 0x01, 0xB0, 0xC0, 0x6C, 0x18, 0x1B, 0x07, 0x86, 0xC0, - 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, - 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x80, 0xC0, 0xFF, 0xF0, - 0x0F, 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1B, 0x00, - 0x00, 0x01, 0x98, 0x00, 0x00, 0x11, 0x80, 0x00, 0x03, 0x0C, 0x00, 0x00, - 0x30, 0xC0, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, - 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0C, 0x03, 0x00, 0x00, 0x80, 0x30, 0x00, - 0x18, 0x01, 0x80, 0x01, 0x80, 0x18, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, - 0xFC, 0x00, 0x20, 0x00, 0xC0, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, - 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x01, 0x80, - 0x00, 0x18, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x03, - 0xFF, 0xFF, 0x01, 0x80, 0x0E, 0x06, 0x00, 0x1C, 0x18, 0x00, 0x38, 0x60, - 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x38, 0x60, 0x01, - 0xC1, 0x80, 0x1E, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x60, 0x03, 0xC1, - 0x80, 0x03, 0x86, 0x00, 0x06, 0x18, 0x00, 0x1C, 0x60, 0x00, 0x31, 0x80, - 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x61, 0x80, 0x03, - 0x86, 0x00, 0x1C, 0xFF, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0xFE, 0x60, 0xF0, 0x3D, 0x87, 0x00, 0x3E, 0x38, 0x00, 0x38, 0xC0, - 0x00, 0xE7, 0x00, 0x01, 0x98, 0x00, 0x06, 0x60, 0x00, 0x03, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, - 0xC7, 0x00, 0x06, 0x0E, 0x00, 0x70, 0x1E, 0x07, 0x80, 0x3F, 0xFC, 0x00, - 0x1F, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0x00, 0x3C, 0x0C, 0x00, - 0x38, 0x30, 0x00, 0x70, 0xC0, 0x00, 0xC3, 0x00, 0x03, 0x8C, 0x00, 0x06, - 0x30, 0x00, 0x1C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, - 0x00, 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x00, 0xCC, 0x00, 0x03, 0x30, 0x00, - 0x0C, 0xC0, 0x00, 0x33, 0x00, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x30, - 0xC0, 0x01, 0xC3, 0x00, 0x0E, 0x0C, 0x00, 0xF0, 0xFF, 0xFF, 0x83, 0xFF, - 0xF8, 0x00, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE1, 0x80, 0x01, 0x86, 0x00, - 0x06, 0x18, 0x00, 0x18, 0x60, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x00, - 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0xC6, 0x00, 0x03, 0x18, 0x00, 0x0C, - 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF1, 0x80, 0x00, 0xC6, 0x00, - 0x03, 0x18, 0x00, 0x0C, 0x60, 0x00, 0x31, 0x80, 0x00, 0xC6, 0x00, 0x00, - 0x18, 0x0C, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x60, 0x30, 0x01, 0x80, 0xC0, 0x06, 0x03, 0x00, 0x18, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0xFF, 0xF0, 0x03, 0xFF, - 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x98, 0x1E, 0x03, 0xF0, 0x70, - 0x01, 0xE1, 0x80, 0x01, 0xC6, 0x00, 0x01, 0x9C, 0x00, 0x03, 0x30, 0x00, - 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0x80, 0x00, 0x1B, 0x00, 0x00, 0x37, 0x00, 0x00, 0x66, - 0x00, 0x00, 0xCC, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x1C, 0x00, 0x06, 0x1E, - 0x00, 0x0C, 0x0F, 0x00, 0xF8, 0x0F, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x7F, - 0x01, 0xFC, 0xFE, 0x03, 0xF8, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, - 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, - 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, - 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFE, - 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, - 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x30, 0x60, 0x00, 0x60, 0xC0, 0x00, 0xC1, 0x80, 0x01, 0x83, 0x00, 0x03, - 0x06, 0x00, 0x06, 0x0C, 0x00, 0x0C, 0x18, 0x00, 0x30, 0x38, 0x00, 0x60, - 0x38, 0x01, 0x80, 0x3C, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0xFF, 0x81, 0xFE, 0xFF, 0x81, 0xFE, 0x18, 0x00, 0x30, 0x18, 0x00, 0xE0, - 0x18, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x18, 0x07, 0x00, 0x18, 0x0E, 0x00, - 0x18, 0x18, 0x00, 0x18, 0x70, 0x00, 0x18, 0xE0, 0x00, 0x19, 0xE0, 0x00, - 0x1B, 0xF8, 0x00, 0x1F, 0x1C, 0x00, 0x1C, 0x06, 0x00, 0x18, 0x03, 0x00, - 0x18, 0x03, 0x80, 0x18, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x18, 0x00, 0xC0, - 0x18, 0x00, 0x60, 0x18, 0x00, 0x60, 0x18, 0x00, 0x70, 0x18, 0x00, 0x30, - 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x1F, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x01, - 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, - 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, - 0x06, 0x00, 0x18, 0x30, 0x00, 0xC1, 0x80, 0x06, 0x0C, 0x00, 0x30, 0x60, - 0x01, 0x83, 0x00, 0x0C, 0x18, 0x00, 0x60, 0xC0, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC0, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xF3, 0x60, 0x01, - 0xB0, 0xD8, 0x00, 0x6C, 0x33, 0x00, 0x33, 0x0C, 0xC0, 0x0C, 0xC3, 0x38, - 0x07, 0x30, 0xC6, 0x01, 0x8C, 0x31, 0xC0, 0xE3, 0x0C, 0x30, 0x30, 0xC3, - 0x0C, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x0C, 0xC0, - 0xC3, 0x03, 0x30, 0x30, 0xC0, 0x78, 0x0C, 0x30, 0x1E, 0x03, 0x0C, 0x03, - 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0x30, 0x00, 0x03, 0x0C, - 0x00, 0x00, 0xC3, 0x00, 0x00, 0x30, 0xC0, 0x00, 0x0C, 0xFF, 0x00, 0x3F, - 0xFF, 0xC0, 0x0F, 0xF0, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0x1E, 0x00, - 0x0C, 0x1F, 0x00, 0x0C, 0x1B, 0x00, 0x0C, 0x19, 0x80, 0x0C, 0x19, 0xC0, - 0x0C, 0x18, 0xC0, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x60, 0x0C, 0x18, 0x30, - 0x0C, 0x18, 0x38, 0x0C, 0x18, 0x18, 0x0C, 0x18, 0x0C, 0x0C, 0x18, 0x0E, - 0x0C, 0x18, 0x06, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x03, 0x0C, 0x18, 0x01, - 0x8C, 0x18, 0x01, 0xCC, 0x18, 0x00, 0xCC, 0x18, 0x00, 0x6C, 0x18, 0x00, - 0x7C, 0x18, 0x00, 0x3C, 0x7F, 0x80, 0x1C, 0x7F, 0x80, 0x1C, 0x00, 0x7E, - 0x00, 0x01, 0xFF, 0xC0, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, - 0x38, 0x38, 0x00, 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, - 0x06, 0x60, 0x00, 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, - 0x0E, 0x30, 0x00, 0x0C, 0x38, 0x00, 0x1C, 0x1C, 0x00, 0x38, 0x0E, 0x00, - 0x70, 0x07, 0x81, 0xE0, 0x03, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0xFF, 0xFF, - 0x07, 0xFF, 0xFE, 0x06, 0x00, 0x78, 0x30, 0x00, 0xE1, 0x80, 0x03, 0x0C, - 0x00, 0x0C, 0x60, 0x00, 0x63, 0x00, 0x03, 0x18, 0x00, 0x18, 0xC0, 0x01, - 0xC6, 0x00, 0x0C, 0x30, 0x00, 0xC1, 0x80, 0x1E, 0x0F, 0xFF, 0xC0, 0x7F, - 0xF8, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, - 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, - 0x00, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFF, - 0x80, 0x07, 0x81, 0xE0, 0x0E, 0x00, 0x70, 0x1C, 0x00, 0x38, 0x38, 0x00, - 0x1C, 0x30, 0x00, 0x0C, 0x70, 0x00, 0x0E, 0x60, 0x00, 0x06, 0x60, 0x00, - 0x06, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0x60, 0x00, 0x06, 0x60, 0x00, 0x06, 0x70, 0x00, 0x0E, 0x30, 0x00, - 0x0C, 0x18, 0x00, 0x1C, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x81, - 0xE0, 0x00, 0xFF, 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xFF, - 0x87, 0x07, 0xFF, 0xFE, 0x07, 0x00, 0xF8, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, - 0x80, 0x18, 0x03, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, - 0x70, 0x18, 0x00, 0x60, 0x18, 0x01, 0xC0, 0x18, 0x07, 0x80, 0x1F, 0xFF, - 0x00, 0x1F, 0xFC, 0x00, 0x18, 0x0E, 0x00, 0x18, 0x07, 0x00, 0x18, 0x03, - 0x80, 0x18, 0x01, 0xC0, 0x18, 0x00, 0xE0, 0x18, 0x00, 0x60, 0x18, 0x00, - 0x30, 0x18, 0x00, 0x30, 0x18, 0x00, 0x18, 0xFF, 0x80, 0x1F, 0xFF, 0x80, - 0x0F, 0x03, 0xF8, 0x00, 0xFF, 0xE6, 0x1E, 0x07, 0xE3, 0x80, 0x1E, 0x30, - 0x00, 0xE6, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x60, 0x00, 0x07, - 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x30, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, - 0x06, 0xF8, 0x01, 0xED, 0xE0, 0x7C, 0xCF, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0x00, 0xF0, 0x0C, 0x03, 0xC0, 0x30, - 0x0F, 0x00, 0xC0, 0x3C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, - 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, - 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, - 0x03, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x00, 0xFF, - 0x01, 0xFF, 0xFE, 0x03, 0xFC, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, - 0x01, 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, - 0x18, 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x00, 0x01, - 0x86, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x0C, 0x30, 0x00, 0x18, - 0x60, 0x00, 0x30, 0xC0, 0x00, 0x61, 0x80, 0x00, 0xC3, 0x80, 0x03, 0x83, - 0x00, 0x06, 0x07, 0x00, 0x1C, 0x07, 0x00, 0x70, 0x07, 0x83, 0xC0, 0x07, - 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xC0, 0x3F, 0xF7, 0xFC, 0x03, 0xFF, - 0x18, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x0C, 0x00, 0x03, 0x00, 0x60, - 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0xC0, 0x03, 0x80, 0x0C, 0x00, 0x18, 0x01, 0x80, 0x01, - 0x80, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x0E, 0x03, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x06, 0x06, 0x00, 0x00, 0x30, 0xC0, 0x00, - 0x03, 0x0C, 0x00, 0x00, 0x30, 0x80, 0x00, 0x01, 0x98, 0x00, 0x00, 0x19, - 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xE0, 0x00, - 0xFF, 0x80, 0x7F, 0xFF, 0xE0, 0x1F, 0xF3, 0x00, 0x00, 0x30, 0xC0, 0x00, - 0x0C, 0x30, 0x00, 0x03, 0x0C, 0x03, 0x80, 0xC3, 0x01, 0xE0, 0x30, 0x60, - 0x78, 0x0C, 0x18, 0x1F, 0x02, 0x06, 0x04, 0xC0, 0x81, 0x83, 0x30, 0x60, - 0x60, 0xCC, 0x18, 0x18, 0x31, 0x86, 0x06, 0x18, 0x61, 0x81, 0x86, 0x18, - 0x60, 0x71, 0x87, 0x18, 0x0C, 0x40, 0xC6, 0x03, 0x30, 0x31, 0x00, 0xCC, - 0x0C, 0xC0, 0x33, 0x01, 0xB0, 0x0D, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, - 0xD8, 0x06, 0xC0, 0x34, 0x00, 0xF0, 0x07, 0x00, 0x3C, 0x01, 0xC0, 0x0E, - 0x00, 0x7F, 0x00, 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, - 0x38, 0x0E, 0x00, 0x70, 0x07, 0x00, 0x60, 0x03, 0x00, 0xC0, 0x01, 0x81, - 0x80, 0x01, 0xC3, 0x80, 0x00, 0xE7, 0x00, 0x00, 0x76, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x66, - 0x00, 0x00, 0xC3, 0x00, 0x01, 0x81, 0x80, 0x03, 0x81, 0xC0, 0x07, 0x00, - 0xE0, 0x06, 0x00, 0x60, 0x0C, 0x00, 0x30, 0x18, 0x00, 0x18, 0x38, 0x00, - 0x1C, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0x18, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x70, 0x06, 0x00, - 0x60, 0x03, 0x00, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC3, - 0x00, 0x00, 0xE7, 0x00, 0x00, 0x66, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x07, 0xFF, 0xE0, 0x07, 0xFF, - 0xE0, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, 0x19, 0x80, 0x0C, 0x60, 0x07, - 0x18, 0x03, 0x86, 0x00, 0xC1, 0x80, 0x70, 0x00, 0x38, 0x00, 0x0C, 0x00, - 0x07, 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x06, 0x00, 0x03, 0x80, 0x31, 0xC0, 0x0C, 0x60, 0x03, 0x30, 0x00, - 0xDC, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0xFF, 0xFF, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0xFF, 0xFC, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, - 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x80, 0x00, 0x60, - 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x00, 0x07, 0x00, - 0x00, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, - 0x0C, 0xFF, 0xFC, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, - 0x18, 0x30, 0x60, 0xC1, 0x83, 0xFF, 0xFC, 0x00, 0x40, 0x00, 0x30, 0x00, - 0x1E, 0x00, 0x0E, 0xC0, 0x07, 0x38, 0x01, 0x87, 0x00, 0xC0, 0xC0, 0x60, - 0x18, 0x38, 0x03, 0x1C, 0x00, 0xE6, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x3C, 0x0E, 0x07, 0x03, - 0x01, 0xFC, 0x00, 0x7F, 0xFC, 0x01, 0xC0, 0x3C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x60, 0x0F, 0xF9, 0x81, 0xFF, 0xFE, 0x0F, 0x80, 0x38, 0x70, 0x00, 0x63, - 0x80, 0x01, 0x8C, 0x00, 0x06, 0x30, 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, - 0x07, 0x86, 0x00, 0x76, 0x1E, 0x07, 0x9F, 0x3F, 0xF8, 0x7C, 0x3F, 0x80, - 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, - 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x1F, 0x80, - 0x18, 0xFF, 0xC0, 0x33, 0x81, 0xC0, 0x6E, 0x01, 0xC0, 0xF0, 0x00, 0xC1, - 0xE0, 0x01, 0xC3, 0x80, 0x01, 0x87, 0x00, 0x03, 0x8C, 0x00, 0x03, 0x18, - 0x00, 0x06, 0x30, 0x00, 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, - 0x00, 0x63, 0x80, 0x01, 0x87, 0x00, 0x03, 0x0F, 0x00, 0x0E, 0x1F, 0x00, - 0x38, 0x37, 0x00, 0xE3, 0xE7, 0x03, 0x87, 0xC7, 0xFE, 0x00, 0x03, 0xF0, - 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF9, 0x83, 0xC0, 0xFC, 0x38, 0x01, 0xE3, - 0x00, 0x07, 0x38, 0x00, 0x19, 0x80, 0x00, 0xDC, 0x00, 0x06, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, - 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, - 0xC7, 0x00, 0x1E, 0x1E, 0x03, 0xC0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x01, 0xF8, 0x18, 0x07, - 0xFE, 0x18, 0x0F, 0x07, 0x98, 0x1C, 0x01, 0xD8, 0x38, 0x00, 0xF8, 0x70, - 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0x60, 0x00, 0x38, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x38, - 0x00, 0xD8, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x9F, 0x07, 0xFE, 0x1F, 0x01, - 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x3F, 0xF8, 0x07, 0x80, 0xF0, 0x70, 0x01, - 0xC3, 0x00, 0x07, 0x30, 0x00, 0x19, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0x60, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x01, 0xC0, - 0x00, 0xC7, 0x00, 0x0E, 0x1E, 0x03, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, - 0x00, 0x7F, 0xC0, 0x3F, 0xFC, 0x0E, 0x00, 0x03, 0x80, 0x00, 0x60, 0x00, - 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x9F, 0xFF, 0xF0, - 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, - 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, - 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x03, 0xFF, 0xFC, 0x7F, 0xFF, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xFC, - 0x7C, 0x38, 0x1C, 0xF8, 0xE0, 0x0D, 0x83, 0x00, 0x0F, 0x0E, 0x00, 0x1E, - 0x18, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, - 0x00, 0x00, 0xC6, 0x00, 0x01, 0x8C, 0x00, 0x03, 0x18, 0x00, 0x06, 0x18, - 0x00, 0x1C, 0x30, 0x00, 0x38, 0x30, 0x00, 0xF0, 0x70, 0x03, 0x60, 0x78, - 0x1C, 0xC0, 0x3F, 0xF1, 0x80, 0x1F, 0x83, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, - 0x80, 0x00, 0x0E, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xC0, 0x00, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x3F, 0x00, 0x18, 0xFF, 0x80, - 0x37, 0x03, 0x80, 0x7C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, - 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, - 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, - 0x63, 0xFC, 0x07, 0xFF, 0xF8, 0x0F, 0xF0, 0x01, 0xC0, 0x00, 0x70, 0x00, - 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC0, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, - 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, - 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x1F, 0xE0, 0x60, 0x7F, 0x81, - 0x80, 0x60, 0x06, 0x07, 0x00, 0x18, 0x38, 0x00, 0x61, 0xC0, 0x01, 0x8E, - 0x00, 0x06, 0x70, 0x00, 0x1B, 0x80, 0x00, 0x7F, 0x00, 0x01, 0xCE, 0x00, - 0x06, 0x1C, 0x00, 0x18, 0x38, 0x00, 0x60, 0x70, 0x01, 0x80, 0xE0, 0x06, - 0x01, 0xC0, 0x18, 0x03, 0x80, 0x60, 0x07, 0x0F, 0x80, 0x7F, 0xFE, 0x01, - 0xFF, 0x3F, 0xC0, 0x0F, 0xF0, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, - 0x00, 0x30, 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x3C, 0x0F, 0x9F, 0x87, 0xE0, 0xFB, - 0x1C, 0xC7, 0x01, 0xE0, 0xD8, 0x38, 0x1C, 0x07, 0x01, 0x81, 0x80, 0x60, - 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, - 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, - 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, - 0x18, 0x06, 0x01, 0x81, 0x80, 0x60, 0x18, 0x18, 0x06, 0x01, 0x8F, 0xE0, - 0x7C, 0x1F, 0xFE, 0x07, 0xC1, 0xF0, 0x00, 0x1F, 0x00, 0xF8, 0xFF, 0x81, - 0xF3, 0x83, 0x80, 0x6C, 0x03, 0x80, 0xF0, 0x03, 0x81, 0xC0, 0x03, 0x03, - 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, - 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, 0x03, 0x00, - 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, 0x30, 0x30, 0x00, - 0x67, 0xFC, 0x03, 0xFF, 0xF8, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0xFE, - 0x00, 0xF0, 0x3C, 0x07, 0x00, 0x38, 0x38, 0x00, 0x71, 0xC0, 0x00, 0xE6, - 0x00, 0x01, 0x98, 0x00, 0x06, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x36, 0x00, 0x01, - 0x98, 0x00, 0x06, 0x70, 0x00, 0x38, 0xE0, 0x01, 0xC1, 0xC0, 0x0E, 0x03, - 0xC0, 0xF0, 0x07, 0xFF, 0x80, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x01, 0xF1, - 0xFF, 0x83, 0xE7, 0x03, 0x80, 0xD8, 0x01, 0x81, 0xE0, 0x01, 0x83, 0xC0, - 0x03, 0x87, 0x00, 0x03, 0x0E, 0x00, 0x07, 0x18, 0x00, 0x06, 0x30, 0x00, - 0x0C, 0x60, 0x00, 0x18, 0xC0, 0x00, 0x31, 0x80, 0x00, 0x63, 0x00, 0x00, - 0xC7, 0x00, 0x03, 0x0E, 0x00, 0x06, 0x1E, 0x00, 0x18, 0x36, 0x00, 0x70, - 0x67, 0x03, 0xC0, 0xC7, 0xFE, 0x01, 0x83, 0xF0, 0x03, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x01, - 0xF8, 0x00, 0x07, 0xFF, 0x1F, 0x0F, 0x07, 0x9F, 0x1C, 0x01, 0xD8, 0x38, - 0x00, 0x78, 0x70, 0x00, 0x78, 0x60, 0x00, 0x38, 0xE0, 0x00, 0x38, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, 0x00, 0x18, 0xC0, - 0x00, 0x18, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x38, 0x70, 0x00, 0x78, 0x30, - 0x00, 0x78, 0x1C, 0x01, 0xD8, 0x0F, 0x07, 0x98, 0x07, 0xFF, 0x18, 0x01, - 0xFC, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, - 0x03, 0xFF, 0x00, 0x03, 0xFF, 0x7E, 0x03, 0xC3, 0xF0, 0x7F, 0x81, 0x8F, - 0x0E, 0x0C, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, - 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, - 0x00, 0x00, 0x30, 0x00, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x00, 0x07, 0xF0, - 0x07, 0xFF, 0x63, 0xC0, 0xF9, 0xC0, 0x0E, 0x60, 0x01, 0x98, 0x00, 0x66, - 0x00, 0x19, 0xC0, 0x00, 0x38, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0xC0, 0x00, - 0x7C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, - 0xF8, 0x00, 0x7F, 0x00, 0x3B, 0xF0, 0x3C, 0xDF, 0xFE, 0x00, 0xFE, 0x00, - 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, - 0x00, 0x06, 0x00, 0x03, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x0C, 0x00, 0x00, - 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, - 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x03, - 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x07, 0x07, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x3F, 0x80, 0xF8, - 0x03, 0xF1, 0xF0, 0x07, 0xE0, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, - 0x03, 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x18, 0x18, 0x00, - 0x30, 0x30, 0x00, 0x60, 0x60, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, - 0x03, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, 0x00, 0x38, 0x18, 0x00, 0xF0, - 0x18, 0x03, 0x60, 0x38, 0x3C, 0xF8, 0x3F, 0xF1, 0xF0, 0x1F, 0x00, 0x00, - 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF0, 0xC0, 0x00, 0xC0, 0x30, 0x00, - 0x30, 0x06, 0x00, 0x1C, 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x00, 0xC0, 0x03, 0x80, 0x30, 0x00, 0x60, 0x18, 0x00, 0x18, 0x06, 0x00, - 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x06, 0x18, - 0x00, 0x00, 0xC6, 0x00, 0x00, 0x33, 0x00, 0x00, 0x0E, 0xC0, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x7F, 0x00, 0x3F, 0xDF, 0xC0, 0x0F, 0xF1, - 0x80, 0x00, 0x20, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x03, 0x01, - 0x80, 0x81, 0xE0, 0x60, 0x30, 0x78, 0x10, 0x0C, 0x1E, 0x0C, 0x03, 0x0C, - 0xC3, 0x00, 0xC3, 0x30, 0xC0, 0x10, 0xCC, 0x30, 0x06, 0x61, 0x98, 0x01, - 0x98, 0x66, 0x00, 0x66, 0x19, 0x80, 0x0B, 0x03, 0x60, 0x03, 0xC0, 0xD0, - 0x00, 0xF0, 0x1C, 0x00, 0x38, 0x07, 0x00, 0x0E, 0x01, 0xC0, 0x3F, 0x81, - 0xFE, 0x3F, 0x81, 0xFE, 0x0C, 0x00, 0x38, 0x06, 0x00, 0x70, 0x03, 0x00, - 0xE0, 0x01, 0x81, 0xC0, 0x00, 0xC3, 0x80, 0x00, 0x67, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x67, 0x00, 0x00, 0xC3, - 0x80, 0x01, 0x81, 0xC0, 0x03, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x0C, 0x00, - 0x38, 0x18, 0x00, 0x1C, 0x7F, 0x81, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, - 0xFF, 0x7F, 0x00, 0xFF, 0x18, 0x00, 0x0C, 0x18, 0x00, 0x18, 0x0C, 0x00, - 0x18, 0x0C, 0x00, 0x30, 0x06, 0x00, 0x30, 0x06, 0x00, 0x60, 0x03, 0x00, - 0x60, 0x03, 0x00, 0xC0, 0x01, 0x80, 0xC0, 0x01, 0x81, 0x80, 0x00, 0xC1, - 0x80, 0x00, 0xC3, 0x00, 0x00, 0x63, 0x00, 0x00, 0x66, 0x00, 0x00, 0x36, - 0x00, 0x00, 0x34, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFC, - 0x00, 0xFF, 0xFF, 0x7F, 0xFF, 0xB0, 0x01, 0x98, 0x01, 0xCC, 0x01, 0xC0, - 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xE0, - 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x03, 0x70, - 0x01, 0xB0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xE0, 0x7C, 0x0C, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, - 0x00, 0x60, 0x0C, 0x03, 0x00, 0xE0, 0xF0, 0x1E, 0x00, 0x70, 0x06, 0x00, - 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, - 0x0C, 0x01, 0x80, 0x18, 0x03, 0xE0, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x1F, 0x00, 0x60, 0x06, 0x00, 0xC0, 0x18, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x01, - 0x80, 0x38, 0x01, 0xE0, 0x3C, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x03, 0x00, - 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0xC0, - 0xF8, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0xFC, 0x03, 0x70, 0xE0, 0x76, 0x07, - 0x8E, 0xC0, 0x1F, 0xC0, 0x00, 0xF0 }; - -const GFXglyph FreeMono24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 5, 30, 28, 11, -28 }, // 0x21 '!' - { 19, 16, 14, 28, 6, -28 }, // 0x22 '"' - { 47, 19, 32, 28, 4, -29 }, // 0x23 '#' - { 123, 18, 33, 28, 5, -29 }, // 0x24 '$' - { 198, 20, 29, 28, 4, -27 }, // 0x25 '%' - { 271, 18, 25, 28, 5, -23 }, // 0x26 '&' - { 328, 7, 14, 28, 11, -28 }, // 0x27 ''' - { 341, 7, 34, 28, 14, -27 }, // 0x28 '(' - { 371, 7, 34, 28, 8, -27 }, // 0x29 ')' - { 401, 18, 16, 28, 5, -27 }, // 0x2A '*' - { 437, 20, 22, 28, 4, -23 }, // 0x2B '+' - { 492, 9, 14, 28, 6, -6 }, // 0x2C ',' - { 508, 22, 2, 28, 3, -13 }, // 0x2D '-' - { 514, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 520, 18, 35, 28, 5, -30 }, // 0x2F '/' - { 599, 18, 30, 28, 5, -28 }, // 0x30 '0' - { 667, 16, 29, 28, 6, -28 }, // 0x31 '1' - { 725, 18, 29, 28, 5, -28 }, // 0x32 '2' - { 791, 19, 30, 28, 5, -28 }, // 0x33 '3' - { 863, 16, 28, 28, 6, -27 }, // 0x34 '4' - { 919, 19, 29, 28, 5, -27 }, // 0x35 '5' - { 988, 18, 30, 28, 6, -28 }, // 0x36 '6' - { 1056, 18, 28, 28, 5, -27 }, // 0x37 '7' - { 1119, 18, 30, 28, 5, -28 }, // 0x38 '8' - { 1187, 18, 30, 28, 6, -28 }, // 0x39 '9' - { 1255, 7, 21, 28, 11, -19 }, // 0x3A ':' - { 1274, 10, 27, 28, 7, -19 }, // 0x3B ';' - { 1308, 22, 22, 28, 3, -23 }, // 0x3C '<' - { 1369, 24, 9, 28, 2, -17 }, // 0x3D '=' - { 1396, 21, 22, 28, 4, -23 }, // 0x3E '>' - { 1454, 17, 28, 28, 6, -26 }, // 0x3F '?' - { 1514, 18, 32, 28, 5, -28 }, // 0x40 '@' - { 1586, 28, 26, 28, 0, -25 }, // 0x41 'A' - { 1677, 22, 26, 28, 3, -25 }, // 0x42 'B' - { 1749, 22, 28, 28, 3, -26 }, // 0x43 'C' - { 1826, 22, 26, 28, 3, -25 }, // 0x44 'D' - { 1898, 22, 26, 28, 3, -25 }, // 0x45 'E' - { 1970, 22, 26, 28, 3, -25 }, // 0x46 'F' - { 2042, 23, 28, 28, 3, -26 }, // 0x47 'G' - { 2123, 23, 26, 28, 3, -25 }, // 0x48 'H' - { 2198, 16, 26, 28, 6, -25 }, // 0x49 'I' - { 2250, 23, 27, 28, 4, -25 }, // 0x4A 'J' - { 2328, 24, 26, 28, 3, -25 }, // 0x4B 'K' - { 2406, 21, 26, 28, 4, -25 }, // 0x4C 'L' - { 2475, 26, 26, 28, 1, -25 }, // 0x4D 'M' - { 2560, 24, 26, 28, 2, -25 }, // 0x4E 'N' - { 2638, 24, 28, 28, 2, -26 }, // 0x4F 'O' - { 2722, 21, 26, 28, 3, -25 }, // 0x50 'P' - { 2791, 24, 32, 28, 2, -26 }, // 0x51 'Q' - { 2887, 24, 26, 28, 3, -25 }, // 0x52 'R' - { 2965, 20, 28, 28, 4, -26 }, // 0x53 'S' - { 3035, 22, 26, 28, 3, -25 }, // 0x54 'T' - { 3107, 23, 27, 28, 3, -25 }, // 0x55 'U' - { 3185, 28, 26, 28, 0, -25 }, // 0x56 'V' - { 3276, 26, 26, 28, 1, -25 }, // 0x57 'W' - { 3361, 24, 26, 28, 2, -25 }, // 0x58 'X' - { 3439, 24, 26, 28, 2, -25 }, // 0x59 'Y' - { 3517, 18, 26, 28, 5, -25 }, // 0x5A 'Z' - { 3576, 7, 34, 28, 13, -27 }, // 0x5B '[' - { 3606, 18, 35, 28, 5, -30 }, // 0x5C '\' - { 3685, 7, 34, 28, 8, -27 }, // 0x5D ']' - { 3715, 18, 12, 28, 5, -28 }, // 0x5E '^' - { 3742, 28, 2, 28, 0, 5 }, // 0x5F '_' - { 3749, 8, 7, 28, 7, -29 }, // 0x60 '`' - { 3756, 22, 22, 28, 3, -20 }, // 0x61 'a' - { 3817, 23, 29, 28, 2, -27 }, // 0x62 'b' - { 3901, 21, 22, 28, 4, -20 }, // 0x63 'c' - { 3959, 24, 29, 28, 3, -27 }, // 0x64 'd' - { 4046, 21, 22, 28, 3, -20 }, // 0x65 'e' - { 4104, 19, 28, 28, 6, -27 }, // 0x66 'f' - { 4171, 23, 30, 28, 3, -20 }, // 0x67 'g' - { 4258, 23, 28, 28, 3, -27 }, // 0x68 'h' - { 4339, 18, 29, 28, 5, -28 }, // 0x69 'i' - { 4405, 14, 38, 28, 6, -28 }, // 0x6A 'j' - { 4472, 22, 28, 28, 4, -27 }, // 0x6B 'k' - { 4549, 18, 28, 28, 5, -27 }, // 0x6C 'l' - { 4612, 28, 21, 28, 0, -20 }, // 0x6D 'm' - { 4686, 23, 21, 28, 2, -20 }, // 0x6E 'n' - { 4747, 22, 22, 28, 3, -20 }, // 0x6F 'o' - { 4808, 23, 30, 28, 2, -20 }, // 0x70 'p' - { 4895, 24, 30, 28, 3, -20 }, // 0x71 'q' - { 4985, 21, 20, 28, 5, -19 }, // 0x72 'r' - { 5038, 18, 22, 28, 5, -20 }, // 0x73 's' - { 5088, 21, 27, 28, 3, -25 }, // 0x74 't' - { 5159, 23, 21, 28, 3, -19 }, // 0x75 'u' - { 5220, 26, 20, 28, 1, -19 }, // 0x76 'v' - { 5285, 26, 20, 28, 1, -19 }, // 0x77 'w' - { 5350, 24, 20, 28, 2, -19 }, // 0x78 'x' - { 5410, 24, 29, 28, 2, -19 }, // 0x79 'y' - { 5497, 17, 20, 28, 6, -19 }, // 0x7A 'z' - { 5540, 11, 34, 28, 8, -27 }, // 0x7B '{' - { 5587, 2, 34, 28, 13, -27 }, // 0x7C '|' - { 5596, 11, 34, 28, 9, -27 }, // 0x7D '}' - { 5643, 20, 6, 28, 4, -15 } }; // 0x7E '~' - -const GFXfont FreeMono24pt7b PROGMEM = { - (uint8_t *)FreeMono24pt7bBitmaps, - (GFXglyph *)FreeMono24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 6330 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h deleted file mode 100644 index c82d7869c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h +++ /dev/null @@ -1,176 +0,0 @@ -const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { - 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, - 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, - 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, - 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, - 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, - 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, - 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, - 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, - 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, - 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, - 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, - 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, - 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, - 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, - 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, - 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, - 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, - 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, - 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, - 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, - 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, - 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, - 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, - 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, - 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, - 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, - 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, - 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, - 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, - 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, - 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, - 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, - 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, - 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, - 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, - 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, - 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, - 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, - 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, - 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, - 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, - 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, - 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, - 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, - 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, - 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, - 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, - 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, - 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, - 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, - 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, - 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, - 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, - 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, - 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, - 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, - 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, - 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, - 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, - 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, - 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, - 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, - 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, - 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, - 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, - 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, - 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, - 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, - 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, - 0x2C, 0x61, 0x24, 0x30 }; - -const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 2, 11, 11, 4, -10 }, // 0x21 '!' - { 3, 6, 5, 11, 2, -10 }, // 0x22 '"' - { 7, 7, 12, 11, 2, -10 }, // 0x23 '#' - { 18, 8, 12, 11, 1, -10 }, // 0x24 '$' - { 30, 7, 11, 11, 2, -10 }, // 0x25 '%' - { 40, 7, 10, 11, 2, -9 }, // 0x26 '&' - { 49, 3, 5, 11, 4, -10 }, // 0x27 ''' - { 51, 2, 13, 11, 5, -10 }, // 0x28 '(' - { 55, 2, 13, 11, 4, -10 }, // 0x29 ')' - { 59, 7, 7, 11, 2, -10 }, // 0x2A '*' - { 66, 7, 7, 11, 2, -8 }, // 0x2B '+' - { 73, 3, 5, 11, 2, -1 }, // 0x2C ',' - { 75, 9, 1, 11, 1, -5 }, // 0x2D '-' - { 77, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 78, 7, 13, 11, 2, -11 }, // 0x2F '/' - { 90, 7, 11, 11, 2, -10 }, // 0x30 '0' - { 100, 5, 11, 11, 3, -10 }, // 0x31 '1' - { 107, 7, 11, 11, 2, -10 }, // 0x32 '2' - { 117, 8, 11, 11, 1, -10 }, // 0x33 '3' - { 128, 6, 11, 11, 3, -10 }, // 0x34 '4' - { 137, 7, 11, 11, 2, -10 }, // 0x35 '5' - { 147, 7, 11, 11, 2, -10 }, // 0x36 '6' - { 157, 7, 11, 11, 2, -10 }, // 0x37 '7' - { 167, 7, 11, 11, 2, -10 }, // 0x38 '8' - { 177, 7, 11, 11, 2, -10 }, // 0x39 '9' - { 187, 2, 8, 11, 4, -7 }, // 0x3A ':' - { 189, 3, 11, 11, 3, -7 }, // 0x3B ';' - { 194, 8, 8, 11, 1, -8 }, // 0x3C '<' - { 202, 9, 4, 11, 1, -6 }, // 0x3D '=' - { 207, 9, 8, 11, 1, -8 }, // 0x3E '>' - { 216, 7, 10, 11, 2, -9 }, // 0x3F '?' - { 225, 8, 12, 11, 2, -10 }, // 0x40 '@' - { 237, 11, 10, 11, 0, -9 }, // 0x41 'A' - { 251, 9, 10, 11, 1, -9 }, // 0x42 'B' - { 263, 9, 10, 11, 1, -9 }, // 0x43 'C' - { 275, 9, 10, 11, 1, -9 }, // 0x44 'D' - { 287, 9, 10, 11, 1, -9 }, // 0x45 'E' - { 299, 9, 10, 11, 1, -9 }, // 0x46 'F' - { 311, 10, 10, 11, 1, -9 }, // 0x47 'G' - { 324, 9, 10, 11, 1, -9 }, // 0x48 'H' - { 336, 5, 10, 11, 3, -9 }, // 0x49 'I' - { 343, 8, 10, 11, 2, -9 }, // 0x4A 'J' - { 353, 9, 10, 11, 1, -9 }, // 0x4B 'K' - { 365, 8, 10, 11, 2, -9 }, // 0x4C 'L' - { 375, 11, 10, 11, 0, -9 }, // 0x4D 'M' - { 389, 9, 10, 11, 1, -9 }, // 0x4E 'N' - { 401, 9, 10, 11, 1, -9 }, // 0x4F 'O' - { 413, 8, 10, 11, 1, -9 }, // 0x50 'P' - { 423, 9, 13, 11, 1, -9 }, // 0x51 'Q' - { 438, 9, 10, 11, 1, -9 }, // 0x52 'R' - { 450, 7, 10, 11, 2, -9 }, // 0x53 'S' - { 459, 9, 10, 11, 1, -9 }, // 0x54 'T' - { 471, 9, 10, 11, 1, -9 }, // 0x55 'U' - { 483, 11, 10, 11, 0, -9 }, // 0x56 'V' - { 497, 11, 10, 11, 0, -9 }, // 0x57 'W' - { 511, 9, 10, 11, 1, -9 }, // 0x58 'X' - { 523, 9, 10, 11, 1, -9 }, // 0x59 'Y' - { 535, 7, 10, 11, 2, -9 }, // 0x5A 'Z' - { 544, 2, 13, 11, 5, -10 }, // 0x5B '[' - { 548, 7, 13, 11, 2, -11 }, // 0x5C '\' - { 560, 2, 13, 11, 4, -10 }, // 0x5D ']' - { 564, 7, 5, 11, 2, -10 }, // 0x5E '^' - { 569, 11, 1, 11, 0, 2 }, // 0x5F '_' - { 571, 3, 3, 11, 3, -11 }, // 0x60 '`' - { 573, 9, 8, 11, 1, -7 }, // 0x61 'a' - { 582, 9, 11, 11, 1, -10 }, // 0x62 'b' - { 595, 7, 8, 11, 2, -7 }, // 0x63 'c' - { 602, 9, 11, 11, 1, -10 }, // 0x64 'd' - { 615, 8, 8, 11, 1, -7 }, // 0x65 'e' - { 623, 6, 11, 11, 3, -10 }, // 0x66 'f' - { 632, 9, 11, 11, 1, -7 }, // 0x67 'g' - { 645, 9, 11, 11, 1, -10 }, // 0x68 'h' - { 658, 7, 10, 11, 2, -9 }, // 0x69 'i' - { 667, 5, 13, 11, 3, -9 }, // 0x6A 'j' - { 676, 8, 11, 11, 2, -10 }, // 0x6B 'k' - { 687, 7, 11, 11, 2, -10 }, // 0x6C 'l' - { 697, 9, 8, 11, 1, -7 }, // 0x6D 'm' - { 706, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 715, 9, 8, 11, 1, -7 }, // 0x6F 'o' - { 724, 9, 11, 11, 1, -7 }, // 0x70 'p' - { 737, 9, 11, 11, 1, -7 }, // 0x71 'q' - { 750, 7, 8, 11, 3, -7 }, // 0x72 'r' - { 757, 7, 8, 11, 2, -7 }, // 0x73 's' - { 764, 8, 10, 11, 2, -9 }, // 0x74 't' - { 774, 8, 8, 11, 1, -7 }, // 0x75 'u' - { 782, 9, 8, 11, 1, -7 }, // 0x76 'v' - { 791, 9, 8, 11, 1, -7 }, // 0x77 'w' - { 800, 9, 8, 11, 1, -7 }, // 0x78 'x' - { 809, 9, 11, 11, 1, -7 }, // 0x79 'y' - { 822, 7, 8, 11, 2, -7 }, // 0x7A 'z' - { 829, 3, 13, 11, 4, -10 }, // 0x7B '{' - { 834, 1, 13, 11, 5, -10 }, // 0x7C '|' - { 836, 3, 13, 11, 4, -10 }, // 0x7D '}' - { 841, 7, 3, 11, 2, -6 } }; // 0x7E '~' - -const GFXfont FreeMono9pt7b PROGMEM = { - (uint8_t *)FreeMono9pt7bBitmaps, - (GFXglyph *)FreeMono9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1516 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h deleted file mode 100644 index 4ad9d1a4f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h +++ /dev/null @@ -1,250 +0,0 @@ -const uint8_t FreeMonoBold12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xF6, 0x66, 0x60, 0x6F, 0x60, 0xE7, 0xE7, 0x62, 0x42, - 0x42, 0x42, 0x42, 0x11, 0x87, 0x30, 0xC6, 0x18, 0xC3, 0x31, 0xFF, 0xFF, - 0xF9, 0x98, 0x33, 0x06, 0x60, 0xCC, 0x7F, 0xEF, 0xFC, 0x66, 0x0C, 0xC3, - 0x98, 0x63, 0x04, 0x40, 0x0C, 0x03, 0x00, 0xC0, 0xFE, 0x7F, 0x9C, 0x66, - 0x09, 0x80, 0x78, 0x0F, 0xE0, 0x7F, 0x03, 0xE0, 0xF8, 0x7F, 0xFB, 0xFC, - 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x38, 0x1F, 0x0C, 0x42, 0x10, 0xC4, 0x1F, - 0x03, 0x9C, 0x3C, 0x7F, 0x33, 0xE0, 0x8C, 0x21, 0x08, 0xC3, 0xE0, 0x70, - 0x3E, 0x1F, 0xC6, 0x61, 0x80, 0x70, 0x0C, 0x07, 0x83, 0xEE, 0xDF, 0xB3, - 0xCC, 0x73, 0xFE, 0x7F, 0x80, 0xFD, 0x24, 0x90, 0x39, 0xDC, 0xE6, 0x73, - 0x18, 0xC6, 0x31, 0x8C, 0x31, 0x8E, 0x31, 0xC4, 0xE7, 0x1C, 0xE3, 0x1C, - 0x63, 0x18, 0xC6, 0x31, 0x98, 0xCE, 0x67, 0x10, 0x0C, 0x03, 0x00, 0xC3, - 0xB7, 0xFF, 0xDF, 0xE1, 0xE0, 0xFC, 0x33, 0x0C, 0xC0, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0x3B, 0x9C, 0xCE, 0x62, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x40, 0x30, 0x1C, 0x07, 0x03, 0x80, 0xE0, 0x30, - 0x1C, 0x06, 0x03, 0x80, 0xC0, 0x70, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0x60, - 0x38, 0x0E, 0x01, 0x00, 0x1E, 0x0F, 0xC6, 0x1B, 0x87, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x87, 0x61, 0x8F, 0xC1, 0xE0, 0x1C, - 0x0F, 0x0F, 0xC3, 0xB0, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x3F, 0xFF, 0xFC, 0x1F, 0x1F, 0xEE, 0x1F, 0x83, 0xC0, - 0xC0, 0x70, 0x38, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE3, 0xF0, 0xFF, 0xFF, - 0xFC, 0x3F, 0x0F, 0xF1, 0x87, 0x00, 0x60, 0x0C, 0x03, 0x83, 0xE0, 0x7C, - 0x01, 0xC0, 0x0C, 0x01, 0x80, 0x3C, 0x0F, 0xFF, 0x9F, 0xC0, 0x07, 0x07, - 0x83, 0xC3, 0xE1, 0xB1, 0xD8, 0xCC, 0xC6, 0xE3, 0x7F, 0xFF, 0xE0, 0x61, - 0xF8, 0xFC, 0x7F, 0x9F, 0xE6, 0x01, 0x80, 0x60, 0x1F, 0x87, 0xF9, 0x86, - 0x00, 0xC0, 0x30, 0x0C, 0x03, 0xC1, 0xBF, 0xE7, 0xE0, 0x07, 0xC7, 0xF3, - 0xC1, 0xC0, 0x60, 0x38, 0x0E, 0xF3, 0xFE, 0xF1, 0xF8, 0x3E, 0x0F, 0x83, - 0x71, 0xCF, 0xE1, 0xF0, 0xFF, 0xFF, 0xFC, 0x1F, 0x07, 0x01, 0x80, 0x60, - 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x1E, - 0x1F, 0xEE, 0x1F, 0x03, 0xC0, 0xF0, 0x36, 0x19, 0xFE, 0x7F, 0xB8, 0x7C, - 0x0F, 0x03, 0xE1, 0xDF, 0xE3, 0xF0, 0x3E, 0x1F, 0xCE, 0x3B, 0x07, 0xC1, - 0xF0, 0x7E, 0x3D, 0xFF, 0x3D, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x3F, 0x8F, - 0x80, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x77, 0x70, 0x00, 0x00, 0x76, 0x6C, - 0xC8, 0x80, 0x00, 0x30, 0x0F, 0x03, 0xE0, 0xF8, 0x3E, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x00, 0x20, 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x0F, 0x80, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x0F, 0x00, 0x40, 0x00, 0x7C, - 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x3C, 0x3C, 0x18, 0x08, 0x00, 0x07, - 0x03, 0x81, 0xC0, 0x1E, 0x07, 0xF1, 0xC7, 0x30, 0x6C, 0x0D, 0x87, 0xB3, - 0xF6, 0xE6, 0xD8, 0xDB, 0x1B, 0x73, 0x67, 0xFC, 0x7F, 0x80, 0x30, 0x03, - 0x00, 0x71, 0xC7, 0xF8, 0x7C, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0x00, - 0x76, 0x00, 0xEE, 0x01, 0x8C, 0x07, 0x18, 0x0E, 0x38, 0x1F, 0xF0, 0x7F, - 0xF0, 0xC0, 0x61, 0x80, 0xCF, 0xC7, 0xFF, 0x8F, 0xC0, 0xFF, 0xC7, 0xFF, - 0x0C, 0x1C, 0x60, 0x63, 0x03, 0x18, 0x38, 0xFF, 0x87, 0xFE, 0x30, 0x39, - 0x80, 0xCC, 0x06, 0x60, 0x7F, 0xFF, 0x7F, 0xF0, 0x0F, 0xF3, 0xFF, 0x70, - 0x76, 0x03, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x60, - 0x37, 0x07, 0x3F, 0xF0, 0xFC, 0xFF, 0x0F, 0xFC, 0x60, 0xE6, 0x06, 0x60, - 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x03, 0x60, 0x76, 0x0E, 0xFF, - 0xCF, 0xF8, 0xFF, 0xF7, 0xFF, 0x8C, 0x0C, 0x60, 0x63, 0x1B, 0x18, 0xC0, - 0xFE, 0x07, 0xF0, 0x31, 0x81, 0x8C, 0xCC, 0x06, 0x60, 0x3F, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFF, 0xCC, 0x06, 0x60, 0x33, 0x19, 0x98, 0xC0, 0xFE, - 0x07, 0xF0, 0x31, 0x81, 0x8C, 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, - 0x0F, 0xF1, 0xFF, 0x9C, 0x1C, 0xC0, 0x6C, 0x03, 0x60, 0x03, 0x00, 0x18, - 0x7F, 0xC3, 0xFE, 0x01, 0xB8, 0x0C, 0xE0, 0xE3, 0xFF, 0x07, 0xE0, 0x7C, - 0xF9, 0xF3, 0xE3, 0x03, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0xFF, 0x0F, - 0xFC, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0xFC, 0xFF, 0xF3, 0xF0, - 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, - 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xF0, 0x0F, 0xF8, 0x7F, 0xC0, 0x30, 0x01, - 0x80, 0x0C, 0x00, 0x60, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, 0x31, - 0xC3, 0x0F, 0xF8, 0x1F, 0x00, 0xFC, 0xFB, 0xF3, 0xE3, 0x0E, 0x0C, 0x70, - 0x33, 0x80, 0xFC, 0x03, 0xF0, 0x0F, 0xE0, 0x39, 0xC0, 0xC3, 0x03, 0x0E, - 0x0C, 0x18, 0xFC, 0x7F, 0xF0, 0xF0, 0xFF, 0x0F, 0xF0, 0x18, 0x01, 0x80, - 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x31, 0x83, 0x18, 0x31, 0x83, - 0xFF, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9E, 0x1E, 0x7C, 0xF9, - 0xB3, 0xE6, 0xFD, 0x99, 0xF6, 0x67, 0x99, 0x8E, 0x66, 0x31, 0x98, 0x06, - 0xFC, 0xFF, 0xF3, 0xF0, 0xF1, 0xFF, 0xCF, 0xCF, 0x0C, 0x78, 0x63, 0xE3, - 0x1B, 0x18, 0xDC, 0xC6, 0x76, 0x31, 0xB1, 0x8F, 0x8C, 0x3C, 0x61, 0xE7, - 0xE7, 0x3F, 0x18, 0x0F, 0x03, 0xFC, 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, - 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, 0x60, 0x67, 0x0E, 0x3F, 0xC0, 0xF0, - 0xFF, 0x8F, 0xFE, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, 0x30, 0x73, 0xFE, - 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0x03, 0xFC, - 0x70, 0xE6, 0x06, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, 0x07, - 0x60, 0x67, 0x0E, 0x3F, 0xC1, 0xF0, 0x18, 0x33, 0xFF, 0x3F, 0xE0, 0xFF, - 0x83, 0xFF, 0x83, 0x07, 0x0C, 0x0C, 0x30, 0x30, 0xC1, 0xC3, 0xFE, 0x0F, - 0xF0, 0x31, 0xE0, 0xC3, 0x83, 0x07, 0x0C, 0x0C, 0xFE, 0x3F, 0xF8, 0x70, - 0x3F, 0xDF, 0xFE, 0x1F, 0x03, 0xC0, 0xF8, 0x07, 0xE0, 0x7E, 0x01, 0xF0, - 0x3C, 0x0F, 0x87, 0xFF, 0xBF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC6, 0x3C, 0x63, - 0xC6, 0x3C, 0x63, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x3F, 0xC3, 0xFC, 0xFF, 0xFF, 0xFF, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, - 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0x63, 0x9C, 0x1F, 0xC0, 0xF0, - 0xFC, 0x3F, 0xFC, 0x3F, 0x30, 0x0C, 0x38, 0x1C, 0x18, 0x18, 0x1C, 0x38, - 0x1C, 0x38, 0x0E, 0x70, 0x0E, 0x70, 0x0F, 0x60, 0x07, 0xE0, 0x07, 0xE0, - 0x03, 0xC0, 0x03, 0xC0, 0xFC, 0xFF, 0xF3, 0xF6, 0x01, 0xDC, 0xC6, 0x77, - 0x99, 0xDE, 0x67, 0x79, 0x8D, 0xFE, 0x3F, 0xF8, 0xF3, 0xE3, 0xCF, 0x8F, - 0x3C, 0x38, 0x70, 0xE1, 0xC0, 0xF8, 0xFB, 0xE3, 0xE3, 0x86, 0x0F, 0x38, - 0x1F, 0xC0, 0x3E, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x77, 0x03, 0x8E, - 0x1E, 0x1C, 0xFC, 0xFF, 0xF3, 0xF0, 0xF9, 0xFF, 0x9F, 0x30, 0xC3, 0x9C, - 0x19, 0x81, 0xF8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x3F, 0xC3, 0xFC, 0xFF, 0xBF, 0xEC, 0x3B, 0x0C, 0xC6, 0x33, 0x80, 0xC0, - 0x60, 0x38, 0xCC, 0x36, 0x0F, 0x03, 0xFF, 0xFF, 0xF0, 0xFF, 0xF1, 0x8C, - 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xFE, 0x40, 0x30, 0x0E, - 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x00, 0xE0, 0x18, - 0x07, 0x00, 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0C, 0x01, 0xFF, 0xC6, - 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1F, 0xFE, 0x04, 0x03, - 0x01, 0xE0, 0xFC, 0x7B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, 0xFF, 0xFF, 0xF0, - 0xCE, 0x73, 0x3F, 0x07, 0xF8, 0x00, 0xC0, 0x0C, 0x1F, 0xC7, 0xFC, 0x60, - 0xCC, 0x0C, 0xC1, 0xCF, 0xFF, 0x3F, 0xF0, 0xF0, 0x07, 0x80, 0x0C, 0x00, - 0x60, 0x03, 0x7C, 0x1F, 0xF8, 0xF1, 0xC7, 0x07, 0x30, 0x19, 0x80, 0xCC, - 0x06, 0x60, 0x73, 0xC7, 0x7F, 0xFB, 0xDF, 0x00, 0x1F, 0xB3, 0xFF, 0x70, - 0xFE, 0x07, 0xC0, 0x3C, 0x00, 0xC0, 0x0C, 0x00, 0x70, 0x77, 0xFF, 0x1F, - 0xC0, 0x01, 0xE0, 0x0F, 0x00, 0x18, 0x00, 0xC1, 0xF6, 0x3F, 0xF1, 0xC7, - 0x9C, 0x1C, 0xC0, 0x66, 0x03, 0x30, 0x19, 0x81, 0xC7, 0x1E, 0x3F, 0xFC, - 0x7D, 0xE0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xFF, 0xFF, 0xFF, 0xE0, - 0x0E, 0x00, 0x70, 0x73, 0xFF, 0x1F, 0xC0, 0x07, 0xC3, 0xFC, 0x60, 0x0C, - 0x0F, 0xFD, 0xFF, 0x86, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, - 0x81, 0xFF, 0xBF, 0xF0, 0x1F, 0x79, 0xFF, 0xDC, 0x79, 0x81, 0xCC, 0x06, - 0x60, 0x33, 0x01, 0x9C, 0x1C, 0x71, 0xE1, 0xFF, 0x07, 0xD8, 0x00, 0xC0, - 0x06, 0x00, 0x70, 0x7F, 0x03, 0xF0, 0xF0, 0x03, 0xC0, 0x03, 0x00, 0x0C, - 0x00, 0x37, 0xC0, 0xFF, 0x83, 0xC7, 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, - 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF3, 0xFF, 0xCF, 0xC0, 0x06, 0x00, 0xC0, - 0x00, 0x3F, 0x07, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, - 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x06, 0x06, 0x00, 0xFF, 0xFF, 0x03, 0x03, - 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0xFE, 0xFC, - 0xF0, 0x07, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x3F, 0x19, 0xF8, 0xDE, 0x07, - 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x6F, 0x03, 0x1C, 0x78, 0xFF, 0xC7, - 0xE0, 0x7E, 0x0F, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF8, 0xFE, 0xF1, - 0xFF, 0xF1, 0xCE, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x19, 0xF7, 0xBF, 0xEF, 0x78, 0x77, 0xC1, 0xFF, 0x83, 0xC7, - 0x0C, 0x0C, 0x30, 0x30, 0xC0, 0xC3, 0x03, 0x0C, 0x0C, 0x30, 0x33, 0xF1, - 0xFF, 0xC7, 0xC0, 0x1F, 0x83, 0xFC, 0x70, 0xEE, 0x07, 0xC0, 0x3C, 0x03, - 0xC0, 0x3E, 0x07, 0x70, 0xE3, 0xFC, 0x1F, 0x80, 0xF7, 0xE3, 0xFF, 0xC3, - 0xC3, 0x8E, 0x07, 0x30, 0x0C, 0xC0, 0x33, 0x00, 0xCE, 0x07, 0x3C, 0x38, - 0xFF, 0xC3, 0x7E, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x0F, 0xE0, 0x3F, 0x80, - 0x1F, 0xBC, 0xFF, 0xF7, 0x0F, 0x38, 0x1C, 0xC0, 0x33, 0x00, 0xCC, 0x03, - 0x38, 0x1C, 0x70, 0xF0, 0xFF, 0xC1, 0xFB, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0xC0, 0x1F, 0xC0, 0x7F, 0x79, 0xE7, 0xFF, 0x1F, 0x31, 0xC0, 0x18, 0x01, - 0x80, 0x18, 0x01, 0x80, 0x18, 0x0F, 0xFC, 0xFF, 0xC0, 0x3F, 0x9F, 0xFE, - 0x1F, 0x82, 0xFE, 0x1F, 0xE0, 0xFF, 0x03, 0xE0, 0xFF, 0xFF, 0xF0, 0x30, - 0x06, 0x00, 0xC0, 0x7F, 0xEF, 0xFC, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, - 0x00, 0xC0, 0x18, 0x71, 0xFE, 0x1F, 0x00, 0xF1, 0xF7, 0x8F, 0x8C, 0x0C, - 0x60, 0x63, 0x03, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x38, 0xF0, 0xFF, 0xC3, - 0xEE, 0xFC, 0xFF, 0xF3, 0xF3, 0x87, 0x0E, 0x1C, 0x1C, 0x60, 0x73, 0x80, - 0xEC, 0x03, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xF8, 0x7F, 0xE1, - 0xF7, 0x39, 0x8C, 0xE6, 0x37, 0xB0, 0xFF, 0xC3, 0xFF, 0x07, 0xBC, 0x1C, - 0xF0, 0x73, 0x81, 0x86, 0x00, 0x7C, 0xF9, 0xF3, 0xE3, 0xCF, 0x07, 0xF8, - 0x0F, 0xC0, 0x1E, 0x00, 0xFC, 0x07, 0x38, 0x38, 0x73, 0xF3, 0xFF, 0xCF, - 0xC0, 0xF9, 0xFF, 0x9F, 0x70, 0xE3, 0x0C, 0x39, 0xC1, 0x98, 0x19, 0x81, - 0xF8, 0x0F, 0x00, 0xF0, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0xFF, 0x0F, - 0xF0, 0x7F, 0xCF, 0xF9, 0x8E, 0x33, 0x80, 0x70, 0x1C, 0x07, 0x01, 0xC6, - 0x70, 0xFF, 0xFF, 0xFF, 0x80, 0x0E, 0x3C, 0x60, 0xC1, 0x83, 0x06, 0x0C, - 0x39, 0xE3, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x3C, 0x38, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0xE1, 0xC0, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x3C, - 0x79, 0x83, 0x06, 0x0C, 0x18, 0x31, 0xE3, 0x80, 0x3C, 0x37, 0xE7, 0x67, - 0xE6, 0x1C }; - -const GFXglyph FreeMonoBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 4, 15, 14, 5, -14 }, // 0x21 '!' - { 8, 8, 7, 14, 3, -13 }, // 0x22 '"' - { 15, 11, 18, 14, 2, -15 }, // 0x23 '#' - { 40, 10, 20, 14, 2, -16 }, // 0x24 '$' - { 65, 10, 15, 14, 2, -14 }, // 0x25 '%' - { 84, 10, 13, 14, 2, -12 }, // 0x26 '&' - { 101, 3, 7, 14, 5, -13 }, // 0x27 ''' - { 104, 5, 19, 14, 6, -14 }, // 0x28 '(' - { 116, 5, 19, 14, 3, -14 }, // 0x29 ')' - { 128, 10, 10, 14, 2, -14 }, // 0x2A '*' - { 141, 12, 13, 14, 1, -12 }, // 0x2B '+' - { 161, 5, 7, 14, 4, -2 }, // 0x2C ',' - { 166, 12, 2, 14, 1, -7 }, // 0x2D '-' - { 169, 3, 3, 14, 5, -2 }, // 0x2E '.' - { 171, 10, 20, 14, 2, -16 }, // 0x2F '/' - { 196, 10, 15, 14, 2, -14 }, // 0x30 '0' - { 215, 10, 15, 14, 2, -14 }, // 0x31 '1' - { 234, 10, 15, 14, 2, -14 }, // 0x32 '2' - { 253, 11, 15, 14, 1, -14 }, // 0x33 '3' - { 274, 9, 14, 14, 2, -13 }, // 0x34 '4' - { 290, 10, 15, 14, 2, -14 }, // 0x35 '5' - { 309, 10, 15, 14, 2, -14 }, // 0x36 '6' - { 328, 10, 15, 14, 2, -14 }, // 0x37 '7' - { 347, 10, 15, 14, 2, -14 }, // 0x38 '8' - { 366, 10, 15, 14, 3, -14 }, // 0x39 '9' - { 385, 3, 11, 14, 5, -10 }, // 0x3A ':' - { 390, 4, 15, 14, 4, -10 }, // 0x3B ';' - { 398, 12, 11, 14, 1, -11 }, // 0x3C '<' - { 415, 12, 7, 14, 1, -9 }, // 0x3D '=' - { 426, 12, 11, 14, 1, -11 }, // 0x3E '>' - { 443, 9, 14, 14, 3, -13 }, // 0x3F '?' - { 459, 11, 19, 14, 2, -14 }, // 0x40 '@' - { 486, 15, 14, 14, -1, -13 }, // 0x41 'A' - { 513, 13, 14, 14, 0, -13 }, // 0x42 'B' - { 536, 12, 14, 14, 1, -13 }, // 0x43 'C' - { 557, 12, 14, 14, 1, -13 }, // 0x44 'D' - { 578, 13, 14, 14, 0, -13 }, // 0x45 'E' - { 601, 13, 14, 14, 0, -13 }, // 0x46 'F' - { 624, 13, 14, 14, 1, -13 }, // 0x47 'G' - { 647, 14, 14, 14, 0, -13 }, // 0x48 'H' - { 672, 10, 14, 14, 2, -13 }, // 0x49 'I' - { 690, 13, 14, 14, 1, -13 }, // 0x4A 'J' - { 713, 14, 14, 14, 0, -13 }, // 0x4B 'K' - { 738, 12, 14, 14, 1, -13 }, // 0x4C 'L' - { 759, 14, 14, 14, 0, -13 }, // 0x4D 'M' - { 784, 13, 14, 14, 0, -13 }, // 0x4E 'N' - { 807, 12, 14, 14, 1, -13 }, // 0x4F 'O' - { 828, 12, 14, 14, 0, -13 }, // 0x50 'P' - { 849, 12, 17, 14, 1, -13 }, // 0x51 'Q' - { 875, 14, 14, 14, 0, -13 }, // 0x52 'R' - { 900, 10, 14, 14, 2, -13 }, // 0x53 'S' - { 918, 12, 14, 14, 1, -13 }, // 0x54 'T' - { 939, 12, 14, 14, 1, -13 }, // 0x55 'U' - { 960, 16, 14, 14, -1, -13 }, // 0x56 'V' - { 988, 14, 14, 14, 0, -13 }, // 0x57 'W' - { 1013, 14, 14, 14, 0, -13 }, // 0x58 'X' - { 1038, 12, 14, 14, 1, -13 }, // 0x59 'Y' - { 1059, 10, 14, 14, 2, -13 }, // 0x5A 'Z' - { 1077, 5, 19, 14, 6, -14 }, // 0x5B '[' - { 1089, 10, 20, 14, 2, -16 }, // 0x5C '\' - { 1114, 5, 19, 14, 3, -14 }, // 0x5D ']' - { 1126, 10, 8, 14, 2, -15 }, // 0x5E '^' - { 1136, 14, 2, 14, 0, 4 }, // 0x5F '_' - { 1140, 4, 4, 14, 4, -15 }, // 0x60 '`' - { 1142, 12, 11, 14, 1, -10 }, // 0x61 'a' - { 1159, 13, 15, 14, 0, -14 }, // 0x62 'b' - { 1184, 12, 11, 14, 1, -10 }, // 0x63 'c' - { 1201, 13, 15, 14, 1, -14 }, // 0x64 'd' - { 1226, 12, 11, 14, 1, -10 }, // 0x65 'e' - { 1243, 11, 15, 14, 2, -14 }, // 0x66 'f' - { 1264, 13, 16, 14, 1, -10 }, // 0x67 'g' - { 1290, 14, 15, 14, 0, -14 }, // 0x68 'h' - { 1317, 11, 14, 14, 1, -13 }, // 0x69 'i' - { 1337, 8, 19, 15, 3, -13 }, // 0x6A 'j' - { 1356, 13, 15, 14, 1, -14 }, // 0x6B 'k' - { 1381, 11, 15, 14, 1, -14 }, // 0x6C 'l' - { 1402, 15, 11, 14, 0, -10 }, // 0x6D 'm' - { 1423, 14, 11, 14, 0, -10 }, // 0x6E 'n' - { 1443, 12, 11, 14, 1, -10 }, // 0x6F 'o' - { 1460, 14, 16, 14, 0, -10 }, // 0x70 'p' - { 1488, 14, 16, 14, 0, -10 }, // 0x71 'q' - { 1516, 12, 11, 14, 1, -10 }, // 0x72 'r' - { 1533, 10, 11, 14, 2, -10 }, // 0x73 's' - { 1547, 11, 14, 14, 1, -13 }, // 0x74 't' - { 1567, 13, 11, 14, 0, -10 }, // 0x75 'u' - { 1585, 14, 11, 14, 0, -10 }, // 0x76 'v' - { 1605, 14, 11, 14, 0, -10 }, // 0x77 'w' - { 1625, 14, 11, 14, 0, -10 }, // 0x78 'x' - { 1645, 12, 16, 14, 1, -10 }, // 0x79 'y' - { 1669, 11, 11, 14, 1, -10 }, // 0x7A 'z' - { 1685, 7, 19, 14, 3, -14 }, // 0x7B '{' - { 1702, 2, 19, 14, 6, -14 }, // 0x7C '|' - { 1707, 7, 19, 14, 4, -14 }, // 0x7D '}' - { 1724, 12, 4, 14, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoBold12pt7b PROGMEM = { - (uint8_t *)FreeMonoBold12pt7bBitmaps, - (GFXglyph *)FreeMonoBold12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2402 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h deleted file mode 100644 index 36e0be05d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h +++ /dev/null @@ -1,423 +0,0 @@ -const uint8_t FreeMonoBold18pt7bBitmaps[] PROGMEM = { - 0x77, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xC4, 0x03, 0xBF, - 0xFF, 0xB8, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1E, 0xC1, 0x98, 0x33, - 0x06, 0x60, 0xCC, 0x18, 0x0E, 0x1C, 0x0F, 0x3C, 0x1F, 0x3C, 0x1E, 0x3C, - 0x1E, 0x3C, 0x1E, 0x78, 0x1E, 0x78, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x1E, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x7F, 0xFE, 0x7F, 0xFE, - 0x7F, 0xFE, 0x7F, 0xFE, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, - 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x01, - 0xE0, 0x1F, 0xF1, 0xFF, 0xE7, 0xFF, 0xBE, 0x1E, 0xF0, 0x3B, 0xC0, 0xCF, - 0xE0, 0x3F, 0xF8, 0x7F, 0xF0, 0x7F, 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x3F, - 0x80, 0xFF, 0x87, 0xFF, 0xFE, 0xFF, 0xF3, 0x7F, 0x80, 0x78, 0x01, 0xE0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xC0, 0x1E, 0x00, 0xFF, 0x03, 0x86, - 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x38, 0x70, 0x3F, 0xC2, 0x1E, 0x3E, - 0x03, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0x8F, 0x18, 0x7F, 0x01, 0xC7, 0x03, - 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x1C, 0x70, 0x1F, 0xC0, 0x0F, 0x00, 0x03, - 0xD0, 0x1F, 0xF0, 0x7F, 0xE1, 0xFF, 0xC3, 0xE6, 0x07, 0x80, 0x0F, 0x00, - 0x0F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0xFE, 0x03, 0xFE, 0xFF, 0xBD, 0xFE, - 0x3F, 0xFC, 0x3F, 0x7C, 0x7C, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, 0x7E, - 0xF0, 0xFF, 0xFF, 0xF6, 0x66, 0x66, 0x07, 0x0F, 0x1F, 0x1E, 0x3E, 0x3C, - 0x78, 0x78, 0x78, 0x70, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x1E, 0x1F, 0x0F, 0x07, 0xE0, 0xF0, 0xF8, - 0x78, 0x7C, 0x3C, 0x3E, 0x1E, 0x1E, 0x1E, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0E, 0x1E, 0x1E, 0x1E, 0x3C, 0x3C, 0x78, 0xF8, 0xF0, 0xE0, - 0x01, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0xFE, 0x1F, 0xF8, 0x07, 0xE0, 0x0F, 0xF0, 0x1F, 0xF8, - 0x1E, 0x78, 0x1C, 0x38, 0x18, 0x18, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x3E, 0x78, 0xF3, 0xC7, - 0x8E, 0x1C, 0x70, 0xE1, 0x80, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, - 0x3F, 0xFF, 0xE0, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x0E, 0x00, 0x3C, 0x00, - 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, - 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, - 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, - 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x03, 0x00, 0x00, - 0x07, 0xE0, 0x1F, 0xF8, 0x3F, 0xFC, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1E, - 0xF8, 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x1F, 0x78, 0x1E, - 0x7C, 0x3E, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x07, 0xC0, - 0x1F, 0x80, 0xFF, 0x03, 0xFE, 0x0F, 0xBC, 0x0C, 0x78, 0x00, 0xF0, 0x01, - 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x81, 0xFF, 0xFB, 0xFF, 0xF7, - 0xFF, 0xE7, 0xFF, 0x80, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xFF, 0xEF, - 0x87, 0xDE, 0x07, 0xF8, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x78, 0x03, 0xE0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, - 0x0F, 0xC0, 0x7F, 0xF0, 0xFF, 0xF8, 0xFF, 0xFC, 0x70, 0x3E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3C, 0x03, 0xFC, 0x03, 0xF0, 0x03, 0xF0, - 0x03, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0xE0, 0x3F, 0xFF, 0xFE, 0xFF, 0xFC, 0x7F, 0xF8, 0x1F, 0xE0, 0x00, 0xF8, - 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0xC0, 0x77, 0x80, 0xEF, 0x03, 0x9E, 0x0F, - 0x3C, 0x1C, 0x78, 0x70, 0xF1, 0xE1, 0xE3, 0x83, 0xCF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x07, 0xFC, 0x0F, 0xF8, 0x1F, 0xF0, - 0x1F, 0xC0, 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xFF, 0x83, 0xC0, - 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x7B, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, 0x0F, - 0xFF, 0xC3, 0x83, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x0F, 0xB8, 0x0F, 0xBF, 0xFF, 0xCF, 0xFF, 0xC3, 0xFF, 0xC0, 0x7F, - 0x80, 0x00, 0xFC, 0x07, 0xFC, 0x3F, 0xF8, 0xFF, 0xF1, 0xF8, 0x07, 0xC0, - 0x1F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE7, 0xC3, 0xDF, 0xC7, 0x7F, 0xCF, - 0xFF, 0xDF, 0x8F, 0xFC, 0x07, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3D, 0xE0, - 0xFB, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x01, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1E, - 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, - 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0x70, 0x00, 0x07, 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0x83, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1E, 0xF0, 0x78, 0xFF, 0xE0, - 0xFF, 0x81, 0xFF, 0x0F, 0xFF, 0x9E, 0x0F, 0x78, 0x0F, 0xF0, 0x1F, 0xE0, - 0x3F, 0xE0, 0xFB, 0xFF, 0xE7, 0xFF, 0xC7, 0xFF, 0x03, 0xF8, 0x00, 0x0F, - 0xC0, 0x3F, 0xE0, 0xFF, 0xE3, 0xFF, 0xEF, 0xC3, 0xDF, 0x03, 0xBC, 0x07, - 0xF8, 0x0F, 0xF0, 0x1F, 0xF0, 0x3D, 0xF1, 0xFB, 0xFF, 0xF3, 0xFE, 0xE3, - 0xFB, 0xC3, 0xE7, 0x80, 0x1E, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xE7, 0xFF, - 0x8F, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, 0x00, 0x77, 0xFF, 0xF7, 0x00, 0x00, - 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF3, 0xC7, 0x8E, 0x3C, 0x70, 0xE1, 0x87, 0x0C, 0x00, - 0x00, 0x00, 0x00, 0x80, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, - 0x00, 0xFE, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, - 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7C, 0x00, - 0x07, 0x7F, 0xFF, 0xDF, 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xCF, 0xFF, - 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, - 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, - 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0x80, - 0x00, 0x1F, 0xC0, 0xFF, 0xE3, 0xFF, 0xF7, 0xFF, 0xEF, 0x07, 0xFE, 0x03, - 0xDC, 0x07, 0x80, 0x0F, 0x00, 0x7C, 0x03, 0xF8, 0x1F, 0xC0, 0x1E, 0x00, - 0x30, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0x70, 0x00, 0x07, 0xE0, 0x1F, 0xE0, 0x7F, 0xE1, 0xE1, - 0xC7, 0x83, 0xCE, 0x03, 0xBC, 0x07, 0x70, 0x0E, 0xE0, 0x7D, 0xC3, 0xFB, - 0x8F, 0xF7, 0x3C, 0xEE, 0x71, 0xDC, 0xE3, 0xB9, 0xC7, 0x73, 0xCE, 0xE3, - 0xFF, 0xC3, 0xFF, 0x83, 0xFF, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x02, - 0x1E, 0x1E, 0x3F, 0xFC, 0x1F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, 0x00, 0x7F, - 0xF0, 0x01, 0xFF, 0xC0, 0x03, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xF8, - 0x00, 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, - 0x78, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, - 0xFE, 0x07, 0xFF, 0xF8, 0x3C, 0x00, 0xF3, 0xFC, 0x1F, 0xEF, 0xF8, 0x7F, - 0xFF, 0xE1, 0xFF, 0x7F, 0x03, 0xF8, 0x7F, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, - 0xFF, 0x8F, 0xFF, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x3C, 0x3C, 0x03, 0xC3, - 0xC0, 0x7C, 0x3F, 0xFF, 0x83, 0xFF, 0xF0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, - 0x3C, 0x03, 0xE3, 0xC0, 0x1F, 0x3C, 0x00, 0xF3, 0xC0, 0x0F, 0x3C, 0x01, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, 0x7F, 0xFF, 0x00, 0x01, - 0xF8, 0xC1, 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0xFF, 0xF7, 0xE0, 0x7E, 0xF8, - 0x07, 0xFE, 0x00, 0x7F, 0x80, 0x0E, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x07, 0x7F, 0x03, 0xE7, 0xFF, 0xFC, 0x7F, 0xFF, 0x03, 0xFF, 0xC0, 0x1F, - 0xE0, 0xFF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xFF, 0xFC, 0x78, 0x1F, - 0x9E, 0x03, 0xE7, 0x80, 0x79, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, - 0x80, 0x3D, 0xE0, 0x0F, 0x78, 0x03, 0xDE, 0x00, 0xF7, 0x80, 0x7D, 0xE0, - 0x1E, 0x78, 0x1F, 0xBF, 0xFF, 0xCF, 0xFF, 0xF3, 0xFF, 0xF0, 0x7F, 0xF0, - 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xE3, 0xC0, - 0x3C, 0x78, 0x07, 0x8F, 0x1C, 0xF1, 0xE3, 0xCC, 0x3F, 0xF8, 0x07, 0xFF, - 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xF1, 0x8F, 0x0C, - 0x79, 0xE0, 0x0F, 0x3C, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF3, 0xC0, 0x1E, 0x78, 0x63, 0xCF, 0x1E, 0x79, 0xE3, 0xC6, 0x3F, 0xF8, - 0x07, 0xFF, 0x00, 0xFF, 0xE0, 0x1F, 0xFC, 0x03, 0xC7, 0x80, 0x78, 0xE0, - 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0x80, - 0x7F, 0xF0, 0x07, 0xFC, 0x00, 0x01, 0xFC, 0xE0, 0x7F, 0xFE, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFE, 0x7F, 0x03, 0xE7, 0xC0, 0x1E, 0xF8, 0x00, 0xEF, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x03, 0xFE, 0xF0, - 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x3F, 0xF7, 0x80, 0x1E, 0x7E, 0x01, 0xE3, - 0xFF, 0xFE, 0x1F, 0xFF, 0xE0, 0xFF, 0xF8, 0x01, 0xFE, 0x00, 0x7F, 0x0F, - 0xE3, 0xFC, 0x7F, 0x9F, 0xE3, 0xFC, 0x7F, 0x1F, 0xC1, 0xE0, 0x3C, 0x0F, - 0x01, 0xE0, 0x78, 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xFF, 0xFE, - 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x78, - 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC3, 0xFC, 0x7F, 0xBF, 0xE3, 0xFF, - 0xFF, 0x1F, 0xF7, 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x83, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xF8, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, - 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x38, 0x07, 0x8F, - 0x00, 0xF1, 0xE0, 0x1E, 0x3C, 0x03, 0xC7, 0x80, 0xF8, 0xF8, 0x3F, 0x1F, - 0xFF, 0xC3, 0xFF, 0xF0, 0x1F, 0xFC, 0x00, 0x7E, 0x00, 0xFF, 0x0F, 0xCF, - 0xF9, 0xFE, 0xFF, 0x9F, 0xEF, 0xF8, 0xFC, 0x3C, 0x1F, 0x03, 0xC3, 0xE0, - 0x3C, 0x7C, 0x03, 0xCF, 0x80, 0x3D, 0xF0, 0x03, 0xFE, 0x00, 0x3F, 0xF8, - 0x03, 0xFF, 0x80, 0x3E, 0x7C, 0x03, 0xC3, 0xE0, 0x3C, 0x1E, 0x03, 0xC0, - 0xF0, 0x3C, 0x0F, 0x0F, 0xF8, 0x7E, 0xFF, 0x87, 0xFF, 0xF8, 0x7F, 0x7F, - 0x03, 0xE0, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, - 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x01, 0x87, 0x80, 0xF1, 0xE0, 0x3C, - 0x78, 0x0F, 0x1E, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xC0, 0x3E, 0x00, 0xF8, 0xFC, 0x01, 0xF9, 0xFC, 0x07, 0xF3, 0xF8, - 0x0F, 0xE3, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x0F, 0xF1, 0xFE, 0x1F, 0xE3, - 0xFC, 0x3D, 0xE7, 0x78, 0x7B, 0xDE, 0xF0, 0xF7, 0xBD, 0xE1, 0xE7, 0xF3, - 0xC3, 0xCF, 0xE7, 0x87, 0x8F, 0x8F, 0x0F, 0x1F, 0x1E, 0x1E, 0x1E, 0x3C, - 0x3C, 0x00, 0x79, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xF7, - 0xF0, 0x1F, 0xC0, 0xFC, 0x1F, 0xEF, 0xE1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, - 0xFF, 0x3F, 0x83, 0xC3, 0xF8, 0x3C, 0x3F, 0xC3, 0xC3, 0xFC, 0x3C, 0x3D, - 0xE3, 0xC3, 0xDE, 0x3C, 0x3C, 0xF3, 0xC3, 0xC7, 0xBC, 0x3C, 0x7B, 0xC3, - 0xC3, 0xFC, 0x3C, 0x3F, 0xC3, 0xC1, 0xFC, 0x3C, 0x1F, 0xCF, 0xF8, 0xFC, - 0xFF, 0x87, 0xCF, 0xF8, 0x7C, 0x7F, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0x7F, - 0xE0, 0x0F, 0xFF, 0x81, 0xFF, 0xFC, 0x3F, 0x0F, 0xC7, 0xC0, 0x3E, 0x78, - 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, 0x78, 0x01, 0xE7, 0xC0, 0x3E, - 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x1F, 0xFF, 0x00, 0x7F, 0xE0, 0x01, 0xF8, - 0x00, 0x7F, 0xF8, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3C, 0x0F, - 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, 0x03, 0xF3, - 0xFF, 0xF8, 0xFF, 0xFC, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x03, 0xFF, 0x80, 0x7F, 0xC0, - 0x00, 0x01, 0xF8, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x3F, - 0x0F, 0xC7, 0xC0, 0x3E, 0x78, 0x01, 0xEF, 0x80, 0x1F, 0xF0, 0x00, 0xFF, - 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x1F, - 0x78, 0x01, 0xE7, 0xC0, 0x3E, 0x3F, 0x0F, 0xC1, 0xFF, 0xF8, 0x0F, 0xFF, - 0x00, 0x7F, 0xE0, 0x03, 0xF8, 0x00, 0x3F, 0x8E, 0x07, 0xFF, 0xF0, 0xFF, - 0xFF, 0x0F, 0xFF, 0xE0, 0x60, 0x78, 0x7F, 0xF8, 0x07, 0xFF, 0xF0, 0x3F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x01, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x78, 0x0F, - 0x03, 0xC0, 0x78, 0x1E, 0x0F, 0xC0, 0xFF, 0xFC, 0x07, 0xFF, 0xC0, 0x3F, - 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0x0F, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, - 0x1E, 0x07, 0xC3, 0xFE, 0x1F, 0xBF, 0xF0, 0x7F, 0xFF, 0x83, 0xF7, 0xF8, - 0x0F, 0x00, 0x07, 0xE7, 0x07, 0xFF, 0x8F, 0xFF, 0xC7, 0xFF, 0xE7, 0xC1, - 0xF3, 0xC0, 0x79, 0xE0, 0x3C, 0xF8, 0x00, 0x7F, 0x80, 0x1F, 0xFC, 0x07, - 0xFF, 0x81, 0xFF, 0xE0, 0x0F, 0xFB, 0x00, 0x7F, 0xC0, 0x1F, 0xE0, 0x0F, - 0xFC, 0x1F, 0xFF, 0xFF, 0xBF, 0xFF, 0x8D, 0xFF, 0x80, 0x3F, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0xE1, - 0xE3, 0xFC, 0x3C, 0x7F, 0x87, 0x8F, 0x60, 0xF0, 0xC0, 0x1E, 0x00, 0x03, - 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, - 0x80, 0x00, 0xF0, 0x01, 0xFF, 0xE0, 0x3F, 0xFC, 0x07, 0xFF, 0x80, 0x7F, - 0xE0, 0xFF, 0x0F, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFE, 0xFF, 0x1F, 0xF3, - 0xC0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, - 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, - 0x00, 0xF0, 0xF0, 0x07, 0x87, 0xC0, 0x7C, 0x1F, 0x07, 0xC0, 0xFF, 0xFE, - 0x03, 0xFF, 0xE0, 0x0F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x03, 0xFD, - 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFB, 0xF8, 0x1F, 0xE1, 0xC0, 0x07, 0x03, - 0xC0, 0x1E, 0x07, 0x80, 0x3C, 0x07, 0x80, 0xF0, 0x0F, 0x01, 0xE0, 0x0F, - 0x03, 0x80, 0x1E, 0x0F, 0x00, 0x3E, 0x1E, 0x00, 0x3C, 0x78, 0x00, 0x78, - 0xF0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, 0xFF, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0x0F, - 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, 0xFF, 0xFE, 0x0F, 0xF7, 0x80, 0x0F, 0x3C, - 0x38, 0x78, 0xE3, 0xE3, 0x87, 0x1F, 0x1C, 0x38, 0xF8, 0xE1, 0xEF, 0xE7, - 0x0F, 0x7F, 0x78, 0x7B, 0xBB, 0xC3, 0xFD, 0xFE, 0x0F, 0xEF, 0xF0, 0x7E, - 0x3F, 0x03, 0xF1, 0xF8, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x07, 0xC1, 0xF0, - 0x3E, 0x0F, 0x81, 0xF0, 0x7C, 0x00, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, - 0x7F, 0xBF, 0x07, 0xE1, 0xE0, 0xF8, 0x3E, 0x3E, 0x03, 0xEF, 0x80, 0x3D, - 0xE0, 0x03, 0xF8, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x3F, - 0x80, 0x0F, 0x78, 0x03, 0xC7, 0x80, 0xF8, 0x78, 0x3E, 0x0F, 0x8F, 0xE3, - 0xFF, 0xFC, 0x7F, 0xFF, 0x8F, 0xF7, 0xE0, 0xFC, 0x7E, 0x07, 0xEF, 0xF0, - 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x1E, 0x07, 0x81, 0xF0, 0xF8, 0x0F, - 0x0F, 0x00, 0x79, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xF8, 0x00, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, - 0x00, 0xF0, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, 0xFE, - 0x00, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3C, 0xF0, - 0x78, 0xF0, 0xF0, 0x70, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0x80, 0x07, - 0x00, 0x0F, 0x00, 0x1E, 0x0E, 0x1C, 0x0F, 0x38, 0x0F, 0x78, 0x0F, 0x7F, - 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFE, 0xFF, 0xFF, 0xFE, 0xE0, 0x01, - 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, 0x00, - 0x38, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x07, 0x00, 0x1F, 0x00, - 0x7F, 0x00, 0xFE, 0x03, 0xDE, 0x0F, 0x1E, 0x3E, 0x3E, 0xF8, 0x3F, 0xE0, - 0x3F, 0x80, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xC3, 0x87, 0x0E, 0x1C, 0x30, 0x01, 0xFC, 0x01, 0xFF, 0xC0, - 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x00, 0x78, 0x0F, 0xFF, 0x07, 0xFF, 0xE1, - 0xFF, 0xFC, 0x7F, 0xFF, 0x9F, 0x80, 0xF3, 0xC0, 0x1E, 0x78, 0x0F, 0xCF, - 0xFF, 0xFE, 0xFF, 0xFF, 0xCF, 0xFF, 0xF8, 0x7F, 0x3E, 0x7C, 0x00, 0x1F, - 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, - 0x3F, 0x01, 0xFF, 0xF8, 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0xFC, 0x1F, 0x1F, - 0x01, 0xF3, 0xC0, 0x1E, 0x78, 0x03, 0xCF, 0x00, 0x79, 0xE0, 0x0F, 0x3E, - 0x03, 0xE7, 0xE0, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, 0xFF, 0xF0, 0xF9, - 0xF8, 0x00, 0x03, 0xF3, 0x87, 0xFF, 0xCF, 0xFF, 0xEF, 0xFF, 0xF7, 0xE0, - 0xFF, 0xC0, 0x3F, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, - 0x00, 0x4F, 0x80, 0xF7, 0xFF, 0xF9, 0xFF, 0xF8, 0x7F, 0xF8, 0x0F, 0xF0, - 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x03, 0xF3, 0xC0, 0xFF, 0xBC, 0x1F, 0xFF, 0xC3, 0xFF, - 0xFC, 0x7E, 0x0F, 0xC7, 0x80, 0x7C, 0xF0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, - 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x07, 0xC7, 0xE0, 0xFC, 0x7F, 0xFF, 0xF3, - 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, 0x3F, 0x3E, 0x03, 0xF0, 0x03, 0xFF, 0x01, - 0xFF, 0xE0, 0xFF, 0xFC, 0x7E, 0x0F, 0x9E, 0x01, 0xEF, 0x00, 0x3F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, 0x7F, 0xFF, - 0xCF, 0xFF, 0xF1, 0xFF, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x07, 0xFF, 0x0F, - 0xFF, 0x1F, 0xFF, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, - 0xFC, 0xFF, 0xF8, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0xFF, - 0xF8, 0xFF, 0xF8, 0x07, 0xE7, 0xC3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0xFF, - 0xF7, 0xC1, 0xF9, 0xF0, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xF0, 0x07, - 0x9E, 0x00, 0xF3, 0xE0, 0x3E, 0x3E, 0x0F, 0xC7, 0xFF, 0xF8, 0x7F, 0xFF, - 0x07, 0xFD, 0xE0, 0x3F, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, - 0x03, 0xFF, 0x80, 0x7F, 0xF0, 0x0F, 0xFC, 0x00, 0xFE, 0x00, 0x3E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0x78, 0xF8, 0x03, 0xDF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFE, - 0x07, 0xE1, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, - 0x0F, 0x03, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x1F, 0xC1, 0xFD, - 0xFE, 0x0F, 0xFF, 0xF0, 0x7F, 0xBF, 0x01, 0xF8, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x3F, 0xC0, - 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7F, 0xFE, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xFF, 0xFE, 0xFF, 0xEF, 0xFC, 0x7F, 0x00, - 0x7C, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x3C, 0x00, 0x0F, - 0x00, 0x03, 0xC7, 0xF0, 0xF3, 0xFC, 0x3C, 0xFF, 0x0F, 0x3F, 0x83, 0xDF, - 0x00, 0xFF, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0xF7, 0x80, - 0x3C, 0xF0, 0x0F, 0x1F, 0x0F, 0xC3, 0xFB, 0xF1, 0xFF, 0xFC, 0x7F, 0xDF, - 0x0F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x3F, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFE, 0x3D, 0xE3, - 0xC1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xFE, 0x3E, 0x3C, 0x78, - 0xF0, 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0x3C, 0x3C, 0x78, 0xF0, - 0xF1, 0xE3, 0xC3, 0xC7, 0x8F, 0x0F, 0x1E, 0xFE, 0x3E, 0x7F, 0xF8, 0xF9, - 0xFF, 0xE3, 0xE7, 0xDF, 0x0F, 0x1E, 0x1E, 0x7C, 0x03, 0xEF, 0xF0, 0x3F, - 0xFF, 0x83, 0xFF, 0xFC, 0x1F, 0x87, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, - 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, - 0x7F, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x0F, 0xF7, 0xE0, 0x7E, 0x03, 0xF8, - 0x01, 0xFF, 0xC0, 0x7F, 0xFC, 0x1F, 0xFF, 0xC7, 0xE0, 0xFD, 0xF0, 0x07, - 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xE0, 0x0F, - 0xBF, 0x07, 0xE3, 0xFF, 0xF8, 0x3F, 0xFE, 0x03, 0xFF, 0x80, 0x1F, 0xC0, - 0x3E, 0x7E, 0x03, 0xF7, 0xFC, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC1, 0xF8, - 0x3F, 0x0F, 0x80, 0x7C, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, - 0xF0, 0x03, 0xC7, 0xC0, 0x3E, 0x3F, 0x07, 0xE1, 0xFF, 0xFE, 0x0F, 0xFF, - 0xE0, 0x7B, 0xFE, 0x03, 0xCF, 0xC0, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFE, 0x00, - 0x00, 0x03, 0xF3, 0xE0, 0x7F, 0xDF, 0x87, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, - 0xE0, 0xFC, 0x7C, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x78, 0xF0, 0x03, - 0xC7, 0x80, 0x1E, 0x3E, 0x01, 0xF0, 0xFC, 0x1F, 0x83, 0xFF, 0xFC, 0x1F, - 0xFF, 0xE0, 0x3F, 0xEF, 0x00, 0x7E, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, - 0x3F, 0xC0, 0x7E, 0x1E, 0x7F, 0x3F, 0xFF, 0xBF, 0xFF, 0xFF, 0xF1, 0xFE, - 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, 0xE0, - 0x07, 0xE6, 0x1F, 0xFE, 0x7F, 0xFE, 0x7F, 0xFE, 0x78, 0x1E, 0x78, 0x0E, - 0x7F, 0xE0, 0x3F, 0xFC, 0x03, 0xFE, 0x60, 0x1F, 0xE0, 0x0F, 0xF8, 0x1F, - 0xFF, 0xFF, 0xFF, 0xFE, 0x7F, 0xFC, 0x07, 0xE0, 0x0C, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0xF3, 0xFF, 0xF9, 0xFF, - 0xFC, 0xFF, 0xFC, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x07, 0x8F, 0xFF, 0xC3, 0xFF, - 0xC1, 0xFF, 0xC0, 0x3F, 0x80, 0xFC, 0x1F, 0xBF, 0x0F, 0xEF, 0xC3, 0xFB, - 0xF0, 0xFE, 0x3C, 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF0, 0x1E, 0x3C, - 0x07, 0x8F, 0x01, 0xE3, 0xC0, 0x78, 0xF8, 0x7E, 0x3F, 0xFF, 0xC7, 0xFF, - 0xF0, 0xFF, 0x7C, 0x0F, 0x9E, 0x7F, 0x07, 0xF7, 0xFC, 0x7F, 0xFF, 0xE3, - 0xFE, 0xFE, 0x0F, 0xE1, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x1E, 0x01, - 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x3E, 0x78, 0x00, 0xF7, 0x80, 0x07, 0xFC, - 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7E, - 0x03, 0xF7, 0xF8, 0x3F, 0xFF, 0xC1, 0xFE, 0xFC, 0x07, 0xF3, 0xC7, 0x0F, - 0x1E, 0x7C, 0xF0, 0x73, 0xE7, 0x83, 0x9F, 0x7C, 0x1F, 0xFF, 0xC0, 0xFF, - 0xFE, 0x03, 0xF7, 0xF0, 0x1F, 0xBF, 0x80, 0xFC, 0xF8, 0x07, 0xC7, 0xC0, - 0x1E, 0x3E, 0x00, 0xE0, 0xE0, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, 0xFC, 0x7F, - 0xBF, 0x07, 0xE1, 0xF1, 0xF0, 0x1F, 0xFC, 0x01, 0xFF, 0x00, 0x1F, 0xC0, - 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x7E, 0xFC, 0x1F, 0x8F, 0xC7, 0xE0, 0xFD, - 0xFE, 0x3F, 0xFF, 0xC7, 0xFF, 0xF0, 0x7F, 0x7E, 0x0F, 0xDF, 0xE3, 0xFF, - 0xFC, 0x7F, 0xBF, 0x07, 0xE3, 0xC0, 0x78, 0x3C, 0x0E, 0x07, 0x83, 0xC0, - 0x78, 0x70, 0x0F, 0x1E, 0x00, 0xE3, 0x80, 0x1E, 0xF0, 0x01, 0xDC, 0x00, - 0x3F, 0x80, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, - 0x38, 0x00, 0x0F, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x01, 0xFF, 0xE0, 0x1F, - 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF9, 0xC7, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0x81, 0xF0, 0xFC, 0x7E, 0x1F, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xF8, 0xFC, 0x3E, 0x0F, - 0x83, 0xF0, 0x3E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xF0, 0x7E, - 0x0F, 0xC3, 0xF0, 0x38, 0x6F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, 0x3E, 0x0F, 0xC1, 0xF8, 0x3E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x7C, 0x0F, 0xC1, 0xF0, - 0x7C, 0x3F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x83, 0xE1, 0xF8, - 0xFC, 0x3F, 0x07, 0x00, 0x1E, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xDF, 0xFC, - 0xFF, 0x3F, 0xFB, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0x78 }; - -const GFXglyph FreeMonoBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 5, 22, 21, 8, -21 }, // 0x21 '!' - { 14, 11, 10, 21, 5, -20 }, // 0x22 '"' - { 28, 16, 25, 21, 3, -22 }, // 0x23 '#' - { 78, 14, 28, 21, 4, -23 }, // 0x24 '$' - { 127, 15, 21, 21, 3, -20 }, // 0x25 '%' - { 167, 15, 20, 21, 3, -19 }, // 0x26 '&' - { 205, 4, 10, 21, 8, -20 }, // 0x27 ''' - { 210, 8, 27, 21, 9, -21 }, // 0x28 '(' - { 237, 8, 27, 21, 4, -21 }, // 0x29 ')' - { 264, 16, 15, 21, 3, -21 }, // 0x2A '*' - { 294, 16, 19, 21, 3, -18 }, // 0x2B '+' - { 332, 7, 10, 21, 5, -3 }, // 0x2C ',' - { 341, 19, 4, 21, 1, -11 }, // 0x2D '-' - { 351, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 355, 15, 28, 21, 3, -23 }, // 0x2F '/' - { 408, 16, 23, 21, 3, -22 }, // 0x30 '0' - { 454, 15, 22, 21, 3, -21 }, // 0x31 '1' - { 496, 15, 23, 21, 3, -22 }, // 0x32 '2' - { 540, 16, 23, 21, 3, -22 }, // 0x33 '3' - { 586, 15, 21, 21, 3, -20 }, // 0x34 '4' - { 626, 17, 22, 21, 2, -21 }, // 0x35 '5' - { 673, 15, 23, 21, 4, -22 }, // 0x36 '6' - { 717, 15, 22, 21, 3, -21 }, // 0x37 '7' - { 759, 15, 23, 21, 3, -22 }, // 0x38 '8' - { 803, 15, 23, 21, 4, -22 }, // 0x39 '9' - { 847, 5, 16, 21, 8, -15 }, // 0x3A ':' - { 857, 7, 22, 21, 5, -15 }, // 0x3B ';' - { 877, 18, 16, 21, 1, -17 }, // 0x3C '<' - { 913, 19, 10, 21, 1, -14 }, // 0x3D '=' - { 937, 18, 16, 21, 2, -17 }, // 0x3E '>' - { 973, 15, 21, 21, 4, -20 }, // 0x3F '?' - { 1013, 15, 27, 21, 3, -21 }, // 0x40 '@' - { 1064, 22, 21, 21, -1, -20 }, // 0x41 'A' - { 1122, 20, 21, 21, 1, -20 }, // 0x42 'B' - { 1175, 19, 21, 21, 1, -20 }, // 0x43 'C' - { 1225, 18, 21, 21, 2, -20 }, // 0x44 'D' - { 1273, 19, 21, 21, 1, -20 }, // 0x45 'E' - { 1323, 19, 21, 21, 1, -20 }, // 0x46 'F' - { 1373, 20, 21, 21, 1, -20 }, // 0x47 'G' - { 1426, 21, 21, 21, 0, -20 }, // 0x48 'H' - { 1482, 14, 21, 21, 4, -20 }, // 0x49 'I' - { 1519, 19, 21, 21, 2, -20 }, // 0x4A 'J' - { 1569, 20, 21, 21, 1, -20 }, // 0x4B 'K' - { 1622, 18, 21, 21, 2, -20 }, // 0x4C 'L' - { 1670, 23, 21, 21, -1, -20 }, // 0x4D 'M' - { 1731, 20, 21, 21, 1, -20 }, // 0x4E 'N' - { 1784, 20, 21, 21, 1, -20 }, // 0x4F 'O' - { 1837, 18, 21, 21, 1, -20 }, // 0x50 'P' - { 1885, 20, 26, 21, 1, -20 }, // 0x51 'Q' - { 1950, 21, 21, 21, 0, -20 }, // 0x52 'R' - { 2006, 17, 21, 21, 2, -20 }, // 0x53 'S' - { 2051, 19, 21, 21, 1, -20 }, // 0x54 'T' - { 2101, 21, 21, 21, 0, -20 }, // 0x55 'U' - { 2157, 23, 21, 21, -1, -20 }, // 0x56 'V' - { 2218, 21, 21, 21, 0, -20 }, // 0x57 'W' - { 2274, 19, 21, 21, 1, -20 }, // 0x58 'X' - { 2324, 20, 21, 21, 1, -20 }, // 0x59 'Y' - { 2377, 16, 21, 21, 3, -20 }, // 0x5A 'Z' - { 2419, 8, 27, 21, 9, -21 }, // 0x5B '[' - { 2446, 15, 28, 21, 3, -23 }, // 0x5C '\' - { 2499, 8, 27, 21, 4, -21 }, // 0x5D ']' - { 2526, 15, 11, 21, 3, -21 }, // 0x5E '^' - { 2547, 21, 4, 21, 0, 4 }, // 0x5F '_' - { 2558, 6, 6, 21, 6, -22 }, // 0x60 '`' - { 2563, 19, 16, 21, 1, -15 }, // 0x61 'a' - { 2601, 19, 22, 21, 1, -21 }, // 0x62 'b' - { 2654, 17, 16, 21, 2, -15 }, // 0x63 'c' - { 2688, 20, 22, 21, 1, -21 }, // 0x64 'd' - { 2743, 18, 16, 21, 1, -15 }, // 0x65 'e' - { 2779, 16, 22, 21, 4, -21 }, // 0x66 'f' - { 2823, 19, 23, 21, 1, -15 }, // 0x67 'g' - { 2878, 21, 22, 21, 0, -21 }, // 0x68 'h' - { 2936, 16, 22, 21, 3, -21 }, // 0x69 'i' - { 2980, 12, 29, 21, 5, -21 }, // 0x6A 'j' - { 3024, 18, 22, 21, 2, -21 }, // 0x6B 'k' - { 3074, 16, 22, 21, 3, -21 }, // 0x6C 'l' - { 3118, 22, 16, 21, -1, -15 }, // 0x6D 'm' - { 3162, 20, 16, 21, 0, -15 }, // 0x6E 'n' - { 3202, 19, 16, 21, 1, -15 }, // 0x6F 'o' - { 3240, 21, 23, 21, 0, -15 }, // 0x70 'p' - { 3301, 21, 23, 22, 1, -15 }, // 0x71 'q' - { 3362, 17, 16, 21, 3, -15 }, // 0x72 'r' - { 3396, 16, 16, 21, 3, -15 }, // 0x73 's' - { 3428, 17, 21, 21, 1, -20 }, // 0x74 't' - { 3473, 18, 16, 21, 1, -15 }, // 0x75 'u' - { 3509, 21, 16, 21, 0, -15 }, // 0x76 'v' - { 3551, 21, 16, 21, 0, -15 }, // 0x77 'w' - { 3593, 19, 16, 21, 1, -15 }, // 0x78 'x' - { 3631, 19, 23, 21, 1, -15 }, // 0x79 'y' - { 3686, 14, 16, 21, 3, -15 }, // 0x7A 'z' - { 3714, 10, 27, 21, 6, -21 }, // 0x7B '{' - { 3748, 4, 27, 21, 9, -21 }, // 0x7C '|' - { 3762, 10, 27, 21, 6, -21 }, // 0x7D '}' - { 3796, 17, 8, 21, 2, -13 } }; // 0x7E '~' - -const GFXfont FreeMonoBold18pt7b PROGMEM = { - (uint8_t *)FreeMonoBold18pt7bBitmaps, - (GFXglyph *)FreeMonoBold18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4485 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h deleted file mode 100644 index aa0dcd045..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h +++ /dev/null @@ -1,672 +0,0 @@ -const uint8_t FreeMonoBold24pt7bBitmaps[] PROGMEM = { - 0x38, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xF3, 0xE7, 0xCF, - 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE3, 0x82, 0x00, 0x00, 0x00, 0x71, 0xF7, - 0xFF, 0xEF, 0x9E, 0x00, 0xFC, 0x7E, 0xF8, 0x7D, 0xF0, 0xFB, 0xE1, 0xF7, - 0xC3, 0xEF, 0x87, 0xDF, 0x0F, 0xBE, 0x1F, 0x38, 0x1C, 0x70, 0x38, 0xE0, - 0x71, 0xC0, 0xE3, 0x81, 0xC7, 0x03, 0x80, 0x01, 0xC1, 0xC0, 0x0F, 0x8F, - 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, 0x8F, 0x80, - 0x7E, 0x3E, 0x01, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x03, 0xFF, - 0xFF, 0x9F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFD, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, - 0x81, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0x1F, 0x00, 0x7C, 0x7C, 0x1F, - 0xFF, 0xFC, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0x9F, 0xFF, - 0xFC, 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, - 0x0F, 0x8F, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xE0, 0x0F, - 0x8F, 0x80, 0x3C, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x1F, 0xFF, 0x07, 0xFF, 0xF1, 0xFF, 0xFE, - 0x7F, 0xFF, 0xDF, 0xC1, 0xFB, 0xF0, 0x1F, 0x7C, 0x01, 0xEF, 0x80, 0x39, - 0xF8, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, - 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, - 0x80, 0x1F, 0xF8, 0x07, 0xFF, 0x81, 0xFB, 0xFF, 0xFF, 0x7F, 0xFF, 0xCF, - 0xFF, 0xF1, 0xDF, 0xFC, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x01, 0xC0, 0x00, - 0x0F, 0x80, 0x00, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0xF0, 0xE0, 0x0F, 0x07, - 0x80, 0x70, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xF0, 0x78, 0x03, - 0xC3, 0x80, 0x1F, 0xFC, 0x00, 0x7F, 0xC1, 0xF0, 0xF8, 0x7F, 0x00, 0x3F, - 0xF0, 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x07, 0xE0, 0xF8, 0x38, - 0x1F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0x1E, 0x00, 0xF0, 0x78, 0x07, 0x01, - 0xC0, 0x38, 0x0E, 0x01, 0xC0, 0x70, 0x0F, 0x07, 0x80, 0x38, 0x78, 0x01, - 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0xFC, - 0x01, 0xFF, 0xE0, 0x1F, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xC7, 0x00, 0x7C, - 0x10, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xC7, 0xCF, 0xFF, - 0x3F, 0x7E, 0xFF, 0xFF, 0xE7, 0xFF, 0xBE, 0x1F, 0xF9, 0xF0, 0x7F, 0x8F, - 0x83, 0xFC, 0x7C, 0x0F, 0xE3, 0xF0, 0x7F, 0xCF, 0xFF, 0xFF, 0x7F, 0xFF, - 0xF9, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x0F, 0xE0, 0x00, 0xFD, 0xF7, 0xDF, - 0x7D, 0xF7, 0xDF, 0x38, 0xE3, 0x8E, 0x38, 0xE0, 0x01, 0x80, 0xF0, 0x7C, - 0x3F, 0x0F, 0xC7, 0xE1, 0xF8, 0xFC, 0x3E, 0x0F, 0x87, 0xC1, 0xF0, 0x7C, - 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, - 0x81, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0xF8, 0x3E, 0x0F, 0xC1, 0xF0, 0x7E, - 0x0F, 0x83, 0xF0, 0x7C, 0x1F, 0x03, 0xC0, 0x60, 0x3C, 0x0F, 0x83, 0xF0, - 0xFC, 0x1F, 0x83, 0xE0, 0xFC, 0x1F, 0x07, 0xC1, 0xF8, 0x3E, 0x0F, 0x83, - 0xE0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x1E, 0x0F, 0x83, 0xE0, 0xF8, 0x7C, 0x1F, 0x0F, 0xC3, 0xE1, 0xF8, 0x7C, - 0x3F, 0x0F, 0x83, 0xE0, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x07, 0xC0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x10, 0x7C, 0x11, 0xF3, 0xE7, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0x87, 0xFF, 0xF0, 0x07, - 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0x80, 0x3F, 0x7E, 0x01, 0xFB, 0xF0, - 0x1F, 0x8F, 0xC0, 0xF8, 0x3E, 0x03, 0x80, 0xE0, 0x00, 0x38, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x01, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x70, 0x00, 0x1F, - 0x8F, 0x87, 0xC7, 0xC3, 0xE1, 0xE1, 0xF0, 0xF0, 0x78, 0x38, 0x3C, 0x1C, - 0x0E, 0x06, 0x00, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x7D, 0xFF, 0xFF, 0xFF, 0xEF, 0x80, - 0x00, 0x00, 0x60, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, - 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xF8, 0x00, - 0x1F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xFF, 0xFE, - 0x1F, 0x83, 0xF1, 0xF8, 0x0F, 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF7, 0xC0, - 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, - 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x07, 0xFE, 0x00, - 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7D, 0xF0, 0x07, 0xCF, - 0x80, 0x3E, 0x7E, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, - 0x80, 0xFF, 0xF8, 0x03, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, - 0x3F, 0x80, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x7F, 0xF8, 0x0F, 0xEF, 0x80, - 0xFC, 0xF8, 0x07, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, - 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3F, 0xFF, 0xE7, - 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0x01, 0xFC, - 0x00, 0x3F, 0xF8, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0xC7, 0xFF, 0xFF, 0x3F, - 0x03, 0xFB, 0xF0, 0x07, 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFB, 0x80, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, - 0x0E, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, - 0xE0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x7E, 0x03, 0xF1, 0xC0, 0x0F, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x0F, - 0xC0, 0x0F, 0xFC, 0x00, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, - 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xFF, 0xC0, - 0x3F, 0xBF, 0xFF, 0xFD, 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0xC0, - 0x1F, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, - 0xF8, 0x00, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xEF, 0x80, 0x3E, 0xF8, 0x03, - 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x80, 0xF0, 0xF8, 0x1F, 0x0F, 0x81, - 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xC0, 0xF8, 0x78, 0x0F, 0x8F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, - 0x80, 0x07, 0xFE, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, 0x07, - 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, - 0xFF, 0xFC, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, - 0x01, 0xF0, 0x00, 0x0F, 0xBF, 0x00, 0x7F, 0xFF, 0x03, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF0, 0xFF, 0xFF, 0x83, 0xC0, 0xFE, 0x00, 0x01, 0xF0, 0x00, 0x0F, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x03, 0xE0, 0x00, 0x3F, 0xF0, 0x03, 0xF7, 0xE0, 0x3F, 0xBF, 0xFF, 0xF9, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0x1F, 0xF0, 0x00, 0x00, - 0x1F, 0xC0, 0x0F, 0xFF, 0x01, 0xFF, 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE1, - 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, - 0x7C, 0x00, 0x0F, 0x8F, 0xC0, 0xF9, 0xFF, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, - 0xCF, 0xFF, 0xFC, 0xFF, 0x0F, 0xEF, 0xE0, 0x3E, 0xFC, 0x03, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, 0xC0, 0x3F, 0x7E, - 0x03, 0xF3, 0xF0, 0x7E, 0x3F, 0xFF, 0xE1, 0xFF, 0xFC, 0x0F, 0xFF, 0x80, - 0x7F, 0xF0, 0x01, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xF0, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, - 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x06, 0x00, 0x01, 0xF8, 0x00, 0xFF, - 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0xFF, 0xE7, 0xE0, 0x7E, 0xFC, - 0x03, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xF7, - 0xC0, 0x3E, 0x7E, 0x07, 0xE3, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0xFF, 0xF0, - 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7F, 0x0F, 0xE7, 0xC0, 0x3E, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xF7, 0xE0, - 0x7E, 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x80, 0xFF, 0xF0, 0x03, - 0xFC, 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xE0, 0x1F, 0xFF, 0x83, 0xFF, 0xF8, - 0x7F, 0xFF, 0xC7, 0xE0, 0xFE, 0xFC, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x07, 0xF7, 0xE0, - 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0x9F, 0x03, - 0xF1, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, - 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x0F, 0xF0, 0x7F, 0xFE, 0x0F, 0xFF, 0xC0, - 0xFF, 0xF8, 0x0F, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, - 0xEF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7D, 0xFF, - 0xFF, 0xFF, 0xEF, 0x80, 0x0F, 0x87, 0xF1, 0xFC, 0x7F, 0x1F, 0xC3, 0xE0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0x1F, 0x87, 0xE1, 0xF0, 0xFC, 0x3E, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x1C, - 0x07, 0x01, 0x80, 0x00, 0x00, 0x04, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x7F, - 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, - 0x01, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, - 0xFF, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0x80, - 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1E, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, - 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xF0, 0x01, - 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xC0, 0x03, 0xFE, 0x00, 0x1F, 0xF0, - 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, 0x01, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xC0, 0x7E, 0xF8, 0x03, 0xFF, 0x80, 0x1F, - 0x70, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x3F, - 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0xFF, 0x80, 0x3F, 0xF8, - 0x0F, 0xFF, 0x83, 0xE0, 0xF8, 0x78, 0x07, 0x1E, 0x00, 0xF3, 0x80, 0x0E, - 0x70, 0x01, 0xDE, 0x00, 0x3B, 0x80, 0x3F, 0x70, 0x1F, 0xEE, 0x07, 0xFD, - 0xC1, 0xFF, 0xB8, 0x7E, 0x77, 0x0F, 0x0E, 0xE3, 0xC1, 0xDC, 0x70, 0x3B, - 0x8E, 0x07, 0x71, 0xC0, 0xEE, 0x3C, 0x1D, 0xC3, 0xC3, 0xB8, 0x7F, 0xF7, - 0x07, 0xFF, 0xE0, 0x7F, 0xFC, 0x03, 0xFB, 0xC0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x61, 0xF0, 0x3E, 0x1F, 0xFF, 0xC3, - 0xFF, 0xF0, 0x1F, 0xFC, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, - 0xFE, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0xFE, - 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x0F, 0xBE, 0x00, - 0x00, 0x7D, 0xF8, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x3E, 0x3E, 0x00, 0x03, - 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF0, 0x3F, 0x00, 0x0F, 0x80, - 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xF8, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0xF8, 0x00, 0xF8, 0x0F, - 0x80, 0x03, 0xE1, 0xFF, 0x80, 0xFF, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, - 0x7F, 0xFF, 0xFF, 0x83, 0xFF, 0xDF, 0xF8, 0x0F, 0xFC, 0x7F, 0xFF, 0xC0, - 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, - 0xFE, 0x07, 0xC0, 0x1F, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, - 0x00, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7F, 0xFF, 0xF0, - 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFC, 0x1F, 0x00, 0x3F, 0x87, 0xC0, 0x03, 0xF1, 0xF0, 0x00, 0x7C, 0x7C, - 0x00, 0x1F, 0x1F, 0x00, 0x07, 0xC7, 0xC0, 0x03, 0xF7, 0xFF, 0xFF, 0xFB, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xE7, 0x01, 0xFF, 0xFF, 0xC1, 0xFF, - 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFE, 0x07, 0xF8, 0xFC, 0x01, 0xFC, 0xFC, - 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x00, 0x03, 0x9F, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x39, 0xFC, 0x00, - 0x7C, 0x7F, 0x80, 0xFF, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, - 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, - 0xF0, 0x0F, 0xF0, 0xF8, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, - 0x1F, 0x00, 0x0F, 0xCF, 0x80, 0x03, 0xE7, 0xC0, 0x01, 0xF3, 0xE0, 0x00, - 0xF9, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x3E, 0x00, - 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0x80, 0x07, 0xE7, 0xC0, 0x03, 0xE3, 0xE0, - 0x03, 0xF1, 0xF0, 0x07, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFF, - 0x7F, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, - 0xF0, 0xF8, 0x00, 0xF8, 0x7C, 0x00, 0x7C, 0x3E, 0x0E, 0x3E, 0x1F, 0x0F, - 0x9F, 0x0F, 0x87, 0xC7, 0x07, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x1F, - 0x0F, 0x80, 0x0F, 0x87, 0xC3, 0x87, 0xC1, 0xC3, 0xE3, 0xE0, 0x01, 0xF1, - 0xF0, 0x00, 0xF8, 0xF8, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, - 0xFF, 0xF8, 0xF8, 0x00, 0x7C, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, 0x1F, - 0x07, 0x0F, 0x8F, 0x87, 0xC3, 0x87, 0xC3, 0xE0, 0x03, 0xFF, 0xF0, 0x01, - 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x00, - 0x1F, 0x0F, 0x80, 0x0F, 0x87, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, 0xE0, - 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, - 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, - 0x7F, 0x8E, 0x00, 0xFF, 0xF7, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE1, - 0xFF, 0xFF, 0xF1, 0xFE, 0x03, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x3E, - 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x07, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x0F, - 0xFE, 0xF8, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0x00, - 0xFF, 0xFF, 0xC0, 0x01, 0xF3, 0xF0, 0x00, 0xF9, 0xFC, 0x00, 0x7C, 0x7F, - 0x80, 0xFE, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, - 0x7F, 0xFF, 0x00, 0x07, 0xFC, 0x00, 0x3F, 0xE1, 0xFF, 0x1F, 0xFC, 0xFF, - 0xE7, 0xFF, 0x3F, 0xF9, 0xFF, 0xCF, 0xFE, 0x3F, 0xE1, 0xFF, 0x07, 0xC0, - 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, - 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, - 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xF8, 0x1F, 0x00, - 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, - 0x00, 0x3E, 0x07, 0xC0, 0x0F, 0x87, 0xFE, 0x1F, 0xFB, 0xFF, 0xCF, 0xFF, - 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xF7, 0xFE, 0x1F, 0xF8, 0x7F, 0xFF, - 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFC, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x1F, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, - 0xE0, 0x3F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, - 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x1F, 0x83, - 0xF8, 0x3F, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, - 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xE0, 0xFF, 0x9F, 0xFE, - 0x3F, 0xFB, 0xFF, 0xC7, 0xFF, 0x7F, 0xF8, 0xFF, 0xE7, 0xFE, 0x0F, 0xF8, - 0x3E, 0x01, 0xF8, 0x07, 0xC0, 0xFE, 0x00, 0xF8, 0x3F, 0x80, 0x1F, 0x0F, - 0xE0, 0x03, 0xE3, 0xF8, 0x00, 0x7D, 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, - 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0xFE, 0x7F, - 0x00, 0x1F, 0x87, 0xF0, 0x03, 0xE0, 0x7E, 0x00, 0x7C, 0x07, 0xE0, 0x0F, - 0x80, 0x7E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x00, 0xF8, 0x1F, 0xF8, 0x1F, - 0xF7, 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x07, 0xFD, 0xFF, - 0x80, 0x7F, 0x00, 0x7F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0x80, - 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x0F, 0x80, 0x0E, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, 0xC1, - 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, 0x7D, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0xFF, 0xFF, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0xFF, 0x80, 0x0F, 0xF9, - 0xFF, 0x00, 0x1F, 0xF3, 0xFF, 0x00, 0x7F, 0xE3, 0xFE, 0x00, 0xFF, 0x83, - 0xFE, 0x03, 0xFE, 0x07, 0xFC, 0x07, 0xFC, 0x0F, 0xFC, 0x1F, 0xF8, 0x1F, - 0xF8, 0x3F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0x7D, 0xF1, 0xF7, 0xC0, 0xFB, - 0xE3, 0xEF, 0x81, 0xF7, 0xEF, 0xDF, 0x03, 0xE7, 0xDF, 0x3E, 0x07, 0xCF, - 0xFE, 0x7C, 0x0F, 0x8F, 0xF8, 0xF8, 0x1F, 0x1F, 0xF1, 0xF0, 0x3E, 0x1F, - 0xE3, 0xE0, 0x7C, 0x3F, 0x87, 0xC0, 0xF8, 0x3F, 0x0F, 0x81, 0xF0, 0x00, - 0x1F, 0x03, 0xE0, 0x00, 0x3E, 0x1F, 0xF8, 0x03, 0xFF, 0x7F, 0xF8, 0x0F, - 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFD, 0xFF, 0x80, 0x3F, - 0xF0, 0x7F, 0x00, 0x7F, 0xEF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, - 0xFC, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, 0xFF, 0x00, 0xF8, 0x1F, 0xF0, - 0x0F, 0x81, 0xFF, 0x80, 0xF8, 0x1F, 0xFC, 0x0F, 0x81, 0xFF, 0xC0, 0xF8, - 0x1F, 0x7E, 0x0F, 0x81, 0xF3, 0xF0, 0xF8, 0x1F, 0x3F, 0x0F, 0x81, 0xF1, - 0xF8, 0xF8, 0x1F, 0x0F, 0xCF, 0x81, 0xF0, 0xFC, 0xF8, 0x1F, 0x07, 0xEF, - 0x81, 0xF0, 0x3F, 0xF8, 0x1F, 0x03, 0xFF, 0x81, 0xF0, 0x1F, 0xF8, 0x1F, - 0x00, 0xFF, 0x81, 0xF0, 0x0F, 0xF8, 0x7F, 0xE0, 0x7F, 0x8F, 0xFF, 0x03, - 0xF8, 0xFF, 0xF0, 0x3F, 0x8F, 0xFF, 0x01, 0xF8, 0x7F, 0xE0, 0x0F, 0x80, - 0x00, 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xFE, 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, - 0xF8, 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, - 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, - 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, - 0x7F, 0xF0, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xE7, 0xE0, 0x00, 0xFC, 0x7E, - 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE0, 0xFF, 0x07, 0xF8, 0x0F, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x03, - 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFC, 0x7F, 0xFF, 0xFE, 0x1F, 0x00, 0xFE, 0x1F, 0x00, 0x3F, 0x1F, - 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, - 0x00, 0x3F, 0x1F, 0x00, 0x7E, 0x1F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0x80, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, - 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xE0, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, 0x0F, 0xE1, 0xF8, - 0x00, 0xFC, 0x7E, 0x00, 0x0F, 0xCF, 0x80, 0x00, 0xFB, 0xF0, 0x00, 0x1F, - 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x07, 0xFE, 0x00, - 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0xFD, - 0xF0, 0x00, 0x1F, 0x3F, 0x00, 0x07, 0xE7, 0xF0, 0x01, 0xF8, 0x7F, 0x00, - 0x7F, 0x07, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x03, 0xFF, 0x87, 0x80, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x07, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x0F, 0x01, 0xF8, 0x00, 0x7F, 0xFF, - 0x80, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, - 0x7F, 0xFF, 0xFE, 0x00, 0xF8, 0x07, 0xE0, 0x0F, 0x80, 0x3F, 0x00, 0xF8, - 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3F, - 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, - 0xFF, 0xF0, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xF8, 0x3F, - 0x80, 0x0F, 0x81, 0xFC, 0x00, 0xF8, 0x0F, 0xE0, 0x0F, 0x80, 0x7E, 0x00, - 0xF8, 0x03, 0xF0, 0x7F, 0xF0, 0x1F, 0xEF, 0xFF, 0x81, 0xFF, 0xFF, 0xF8, - 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0x7F, 0xF0, 0x07, 0xE0, 0x01, 0xFC, 0x70, - 0x1F, 0xFD, 0xE0, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFC, - 0x0F, 0xE7, 0xE0, 0x1F, 0x9F, 0x00, 0x3E, 0x7C, 0x00, 0xF9, 0xF0, 0x01, - 0xC7, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, - 0xFF, 0xFF, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xE0, 0x00, - 0x0F, 0xDC, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0xC0, 0x0F, - 0xFF, 0xC0, 0xFE, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x1C, - 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC1, 0xF0, 0x7F, - 0xE0, 0xF8, 0x3F, 0xF0, 0x7C, 0x1F, 0xF8, 0x3E, 0x0F, 0xFC, 0x1F, 0x07, - 0xFE, 0x0F, 0x83, 0xEE, 0x07, 0xC0, 0xE0, 0x03, 0xE0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, - 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE1, - 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, - 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, - 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, - 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, - 0x81, 0xF0, 0x00, 0xF8, 0x1F, 0x80, 0x1F, 0x80, 0xF8, 0x01, 0xF0, 0x0F, - 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, - 0x80, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x1F, 0xFB, - 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0x7F, - 0xE0, 0x1F, 0xF8, 0x7C, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x03, 0xE0, - 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, - 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x03, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0xF8, - 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x7E, 0x1F, 0x00, 0x00, 0xF8, 0x7C, 0x00, - 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x1F, 0xBE, 0x00, 0x00, - 0x3F, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, - 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x7F, 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0xE0, 0x7F, 0xE3, 0xE0, 0x00, 0x3C, 0x3E, - 0x0F, 0x83, 0xC3, 0xE1, 0xF8, 0x3C, 0x3E, 0x1F, 0x87, 0xC3, 0xE1, 0xFC, - 0x7C, 0x3E, 0x3F, 0xC7, 0xC1, 0xE3, 0xFC, 0x7C, 0x1F, 0x3F, 0xE7, 0xC1, - 0xF7, 0xFE, 0x78, 0x1F, 0x7F, 0xE7, 0x81, 0xF7, 0x9F, 0xF8, 0x1F, 0xF9, - 0xFF, 0x81, 0xFF, 0x9F, 0xF8, 0x0F, 0xF9, 0xFF, 0x80, 0xFF, 0x0F, 0xF8, - 0x0F, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFE, - 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x3F, - 0x00, 0x7F, 0x80, 0xFF, 0x3F, 0xF0, 0x7F, 0xEF, 0xFC, 0x1F, 0xFB, 0xFF, - 0x07, 0xFE, 0x7F, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xFC, 0x0F, 0x80, - 0x1F, 0x87, 0xC0, 0x03, 0xF3, 0xE0, 0x00, 0xFF, 0xF8, 0x00, 0x1F, 0xFC, - 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, - 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0xFC, 0xF8, 0x00, - 0x7E, 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, - 0x07, 0xFC, 0x0F, 0xFB, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, - 0x7F, 0xF7, 0xFC, 0x0F, 0xF8, 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0x7F, 0x87, 0xE0, 0x1F, - 0x80, 0xFC, 0x07, 0xC0, 0x1F, 0x03, 0xE0, 0x03, 0xE1, 0xF8, 0x00, 0xFC, - 0x7C, 0x00, 0x1F, 0xBE, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, - 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0xE0, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0xF3, - 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x3E, 0x03, - 0xF1, 0xF0, 0x1F, 0x8F, 0x81, 0xF8, 0x7C, 0x1F, 0x83, 0xE1, 0xF8, 0x0E, - 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x70, 0x7E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, - 0x01, 0xF7, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xBF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xBE, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, - 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, - 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, - 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x60, 0x00, 0x0F, 0x00, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, - 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x07, - 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, - 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, - 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0x7F, 0xC0, 0x00, 0x40, 0x00, 0x06, 0x00, 0x00, 0xF0, - 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0x7F, 0xE0, 0x0F, 0xFF, 0x00, 0xFF, - 0xF8, 0x1F, 0x9F, 0x83, 0xF0, 0xFC, 0x7E, 0x07, 0xEF, 0xC0, 0x3F, 0xF8, - 0x01, 0xFF, 0x80, 0x0F, 0x70, 0x00, 0x60, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xE0, 0x78, 0x3E, 0x0F, 0xC3, 0xF0, 0x7C, 0x1E, 0x06, 0x01, 0xFF, - 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x01, 0xFF, - 0xF8, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, - 0xF8, 0x7F, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x03, - 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFE, 0xFE, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x0F, - 0xE0, 0x03, 0xEF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xF8, 0x3F, 0xE0, 0x7F, 0x07, 0xF0, 0x03, 0xF0, 0xFC, 0x00, - 0x3E, 0x1F, 0x80, 0x07, 0xE3, 0xE0, 0x00, 0x7C, 0x7C, 0x00, 0x0F, 0x8F, - 0x80, 0x01, 0xF1, 0xF0, 0x00, 0x3E, 0x3E, 0x00, 0x07, 0xC7, 0xE0, 0x01, - 0xF8, 0xFC, 0x00, 0x3E, 0x1F, 0xC0, 0x0F, 0xCF, 0xFE, 0x07, 0xF3, 0xFF, - 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0xFE, 0x7F, 0xF0, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x18, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0x81, 0xFC, 0x7E, 0x00, - 0x7C, 0x7C, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, 0x38, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7C, 0x00, 0x06, 0x7E, 0x00, 0x1F, 0x7F, 0x80, 0x7F, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x00, 0xFF, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0xF8, 0x00, 0xFE, 0x3E, 0x00, 0xFF, 0xEF, 0x80, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFE, 0x1F, 0xE0, 0xFF, 0x87, 0xE0, - 0x0F, 0xE1, 0xF0, 0x01, 0xF8, 0xFC, 0x00, 0x7E, 0x3E, 0x00, 0x0F, 0x8F, - 0x80, 0x03, 0xE3, 0xE0, 0x00, 0xF8, 0xF8, 0x00, 0x3E, 0x3E, 0x00, 0x0F, - 0x8F, 0xC0, 0x07, 0xE1, 0xF0, 0x01, 0xF8, 0x7E, 0x00, 0xFE, 0x0F, 0xE0, - 0x7F, 0xE3, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC0, - 0xFF, 0xEF, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, - 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x7F, 0x81, 0xFC, - 0x7E, 0x00, 0x7E, 0xFC, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x80, 0x7E, - 0x3F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, - 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, - 0xFF, 0xFF, 0x07, 0xFF, 0xF8, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, - 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, - 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x01, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE1, 0xFF, - 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xFF, 0xBF, 0x83, 0xFF, 0xFF, 0xE3, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFB, 0xFC, 0x3F, 0xF9, 0xF8, 0x07, 0xF0, - 0xF8, 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0x7C, 0x00, 0x3E, 0x3E, 0x00, 0x1F, - 0x1F, 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xC0, 0x03, 0xE3, 0xF0, 0x03, - 0xF0, 0xF8, 0x01, 0xF8, 0x7E, 0x01, 0xFC, 0x3F, 0xC3, 0xFE, 0x0F, 0xFF, - 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xC0, 0x3F, 0xFB, 0xE0, 0x07, - 0xF1, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFE, 0x00, - 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFE, 0x00, - 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x0F, 0xC0, 0x07, 0xCF, 0xFC, 0x01, - 0xF7, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, 0xFC, 0x1F, - 0x81, 0xFC, 0x03, 0xE0, 0x7E, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, 0xC0, - 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, 0x07, - 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, 0x1F, 0x00, 0x3E, - 0x1F, 0xF0, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, - 0xFF, 0xDF, 0xF0, 0x3F, 0xE0, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, - 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7F, 0xFF, 0xF7, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, - 0xFF, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, - 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x3F, 0xBF, 0xFF, 0xBF, 0xFF, - 0x9F, 0xFF, 0xCF, 0xFF, 0x83, 0xFF, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, - 0x87, 0xFC, 0x07, 0xC7, 0xFF, 0x03, 0xE3, 0xFF, 0x81, 0xF1, 0xFF, 0xC0, - 0xF8, 0x7F, 0xC0, 0x7C, 0xFE, 0x00, 0x3E, 0xFE, 0x00, 0x1F, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0xE0, - 0x00, 0xFF, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0x3E, 0x3F, 0x80, 0x1F, 0x0F, - 0xE0, 0x3F, 0x81, 0xFF, 0xBF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, - 0x7F, 0xFB, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0xFE, - 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x03, 0xFF, - 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xF8, - 0x00, 0x3C, 0x1F, 0x00, 0xFD, 0xFC, 0xFF, 0x07, 0xFF, 0xFF, 0xFE, 0x1F, - 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0xF0, 0xFF, 0x1F, 0x87, 0xC1, 0xF8, - 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, - 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x1F, 0x07, 0xC1, 0xF1, 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, - 0xF1, 0xFC, 0x7F, 0xFF, 0xC7, 0xF1, 0xFD, 0xFE, 0x1F, 0x87, 0xE0, 0x00, - 0x1F, 0x80, 0x1F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFE, 0x0F, 0xFF, 0xFF, 0x87, - 0xFF, 0xFF, 0xC1, 0xFF, 0x07, 0xF0, 0x7F, 0x01, 0xF8, 0x3F, 0x00, 0x7C, - 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0x83, 0xE0, 0x07, - 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, 0x3E, 0x00, - 0x7C, 0x1F, 0x00, 0x3E, 0x3F, 0xE0, 0x7F, 0xBF, 0xF8, 0x7F, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFE, 0x1F, 0xFB, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x01, - 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, - 0xFE, 0x0F, 0xF1, 0xFC, 0x01, 0xFC, 0xFC, 0x00, 0x7E, 0xFC, 0x00, 0x1F, - 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x7E, 0x7F, 0x00, - 0x7F, 0x1F, 0xC0, 0xFF, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0x00, 0x1F, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x03, - 0xF9, 0xFF, 0xC0, 0x7F, 0xBF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, - 0xFF, 0xC3, 0xFF, 0x83, 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0xFC, 0x00, 0x7E, - 0x0F, 0xC0, 0x03, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, - 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x03, - 0xF0, 0xFE, 0x00, 0x7E, 0x0F, 0xF8, 0x1F, 0xE0, 0xFF, 0xFF, 0xFC, 0x0F, - 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x0F, 0x9F, 0xFC, 0x00, 0xF8, 0x7F, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, - 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0x3F, 0xF9, 0xFC, 0x0F, 0xFF, 0xDF, 0xE1, 0xFF, 0xFF, 0xFE, 0x3F, - 0xFF, 0xFF, 0xE3, 0xF8, 0x1F, 0xFC, 0x7F, 0x00, 0x7F, 0x07, 0xC0, 0x03, - 0xF0, 0xFC, 0x00, 0x3F, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, - 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFC, 0x00, - 0x3F, 0x07, 0xE0, 0x07, 0xF0, 0x7F, 0x81, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, - 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0x9F, 0x00, 0x0F, - 0xE1, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0x00, - 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, - 0xF0, 0x3F, 0xC7, 0xFC, 0x7F, 0xCF, 0xFE, 0x7F, 0xDF, 0xFF, 0x7F, 0xFF, - 0xFF, 0x3F, 0xFF, 0x0E, 0x07, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, - 0x00, 0x07, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, - 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xC0, - 0x00, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xC0, 0x03, 0xFC, 0x60, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE7, 0xFF, 0xFF, 0x3F, 0x01, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, - 0x1C, 0x7F, 0xF0, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x3F, 0xFF, 0xC0, - 0x3F, 0xFF, 0x00, 0x0F, 0xFD, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xEF, 0xFF, 0xFE, 0x3F, - 0xFF, 0xC0, 0x07, 0xF8, 0x00, 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0xFF, - 0xF8, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, - 0x80, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, - 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x03, 0x83, 0xF0, 0x1F, 0x87, - 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, - 0xFC, 0x00, 0x7F, 0x01, 0xFE, 0x7F, 0x81, 0xFF, 0x3F, 0xC0, 0xFF, 0x9F, - 0xE0, 0x7F, 0xC7, 0xF0, 0x1F, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x00, 0xF8, - 0x3E, 0x00, 0x7C, 0x1F, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, - 0x83, 0xE0, 0x07, 0xC1, 0xF0, 0x03, 0xE0, 0xF8, 0x01, 0xF0, 0x7C, 0x01, - 0xF8, 0x3F, 0x01, 0xFC, 0x1F, 0xC1, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, - 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0x3F, 0xF3, 0xF0, 0x03, 0xF0, 0x00, 0x7F, - 0xE0, 0x7F, 0xEF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x0F, - 0xFF, 0x7F, 0xE0, 0x7F, 0xE0, 0xF8, 0x01, 0xF0, 0x0F, 0xC0, 0x1F, 0x00, - 0x7C, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF0, - 0x7C, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF8, 0xF8, 0x00, 0x0F, 0x9F, 0x00, - 0x00, 0xFD, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x7F, 0x80, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, - 0xFC, 0x03, 0xFF, 0x7F, 0x80, 0x1F, 0xE1, 0xF0, 0xF8, 0x7C, 0x1F, 0x1F, - 0x87, 0xC1, 0xF1, 0xF8, 0xFC, 0x1F, 0x1F, 0xCF, 0x80, 0xFB, 0xFC, 0xF8, - 0x0F, 0xBF, 0xDF, 0x80, 0xFB, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, - 0xDF, 0xF0, 0x07, 0xF9, 0xFF, 0x00, 0x7F, 0x9F, 0xE0, 0x07, 0xF0, 0xFE, - 0x00, 0x3F, 0x0F, 0xE0, 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, - 0xE0, 0x3C, 0x00, 0x3F, 0xC0, 0xFF, 0x1F, 0xF8, 0x7F, 0xE7, 0xFE, 0x1F, - 0xF9, 0xFF, 0x87, 0xFE, 0x3F, 0xC0, 0xFF, 0x03, 0xF8, 0x7F, 0x00, 0x7F, - 0x3F, 0x80, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, - 0x00, 0xFE, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x7F, 0xC0, 0xFF, 0xBF, 0xF8, - 0x7F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0x7F, 0xC0, 0xFF, 0x80, - 0x7F, 0x80, 0x7F, 0xBF, 0xF0, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, - 0xFF, 0x7F, 0x80, 0x7F, 0x8F, 0xC0, 0x07, 0x81, 0xF0, 0x03, 0xE0, 0x7E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xF0, 0x3E, 0x00, 0x7C, 0x0F, 0x80, - 0x0F, 0x87, 0xC0, 0x03, 0xE1, 0xF0, 0x00, 0x7C, 0xF8, 0x00, 0x1F, 0xFE, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x07, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xFF, 0x80, - 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, - 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x3F, 0xBE, 0x0F, 0xC3, 0x83, 0xF0, 0x00, 0xFC, 0x00, - 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xC0, 0x3B, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x78, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0x07, - 0xF8, 0x1F, 0x80, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x0F, 0x81, 0xFE, 0x0F, - 0xF0, 0x3F, 0x80, 0xFF, 0x01, 0xFE, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, - 0x07, 0xF8, 0x0F, 0xF0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x77, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE0, 0x78, 0x03, 0xF0, 0x0F, - 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, - 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, - 0x07, 0xC0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x03, 0xFC, 0x1F, 0xE0, 0xFC, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x83, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0x78, - 0x00, 0x07, 0x80, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0x03, 0x9F, 0xFE, 0x1F, - 0xFF, 0xFC, 0xFF, 0xF3, 0xFF, 0xFF, 0x87, 0xFF, 0x9C, 0x0F, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x1F, 0x00 }; - -const GFXglyph FreeMonoBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 7, 31, 28, 10, -29 }, // 0x21 '!' - { 28, 15, 14, 28, 6, -28 }, // 0x22 '"' - { 55, 22, 34, 28, 3, -30 }, // 0x23 '#' - { 149, 19, 38, 28, 5, -31 }, // 0x24 '$' - { 240, 21, 30, 28, 4, -28 }, // 0x25 '%' - { 319, 21, 28, 28, 4, -26 }, // 0x26 '&' - { 393, 6, 14, 28, 11, -28 }, // 0x27 ''' - { 404, 10, 37, 28, 12, -29 }, // 0x28 '(' - { 451, 10, 37, 28, 6, -29 }, // 0x29 ')' - { 498, 21, 19, 28, 4, -28 }, // 0x2A '*' - { 548, 23, 26, 28, 3, -25 }, // 0x2B '+' - { 623, 9, 14, 28, 7, -6 }, // 0x2C ',' - { 639, 24, 5, 28, 2, -15 }, // 0x2D '-' - { 654, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 660, 20, 38, 28, 4, -32 }, // 0x2F '/' - { 755, 21, 31, 28, 4, -29 }, // 0x30 '0' - { 837, 20, 29, 28, 4, -28 }, // 0x31 '1' - { 910, 21, 30, 28, 3, -29 }, // 0x32 '2' - { 989, 21, 31, 28, 4, -29 }, // 0x33 '3' - { 1071, 20, 28, 28, 4, -27 }, // 0x34 '4' - { 1141, 21, 31, 28, 4, -29 }, // 0x35 '5' - { 1223, 20, 31, 28, 5, -29 }, // 0x36 '6' - { 1301, 20, 30, 28, 4, -29 }, // 0x37 '7' - { 1376, 20, 31, 28, 4, -29 }, // 0x38 '8' - { 1454, 20, 31, 28, 5, -29 }, // 0x39 '9' - { 1532, 7, 22, 28, 11, -20 }, // 0x3A ':' - { 1552, 10, 28, 28, 6, -20 }, // 0x3B ';' - { 1587, 24, 21, 28, 2, -23 }, // 0x3C '<' - { 1650, 24, 14, 28, 2, -19 }, // 0x3D '=' - { 1692, 23, 22, 28, 3, -23 }, // 0x3E '>' - { 1756, 20, 29, 28, 5, -27 }, // 0x3F '?' - { 1829, 19, 36, 28, 4, -28 }, // 0x40 '@' - { 1915, 29, 27, 28, -1, -26 }, // 0x41 'A' - { 2013, 26, 27, 28, 1, -26 }, // 0x42 'B' - { 2101, 25, 29, 28, 2, -27 }, // 0x43 'C' - { 2192, 25, 27, 28, 1, -26 }, // 0x44 'D' - { 2277, 25, 27, 28, 1, -26 }, // 0x45 'E' - { 2362, 25, 27, 28, 1, -26 }, // 0x46 'F' - { 2447, 25, 29, 28, 2, -27 }, // 0x47 'G' - { 2538, 26, 27, 28, 1, -26 }, // 0x48 'H' - { 2626, 19, 27, 28, 5, -26 }, // 0x49 'I' - { 2691, 25, 28, 28, 3, -26 }, // 0x4A 'J' - { 2779, 27, 27, 28, 1, -26 }, // 0x4B 'K' - { 2871, 25, 27, 28, 2, -26 }, // 0x4C 'L' - { 2956, 31, 27, 28, -1, -26 }, // 0x4D 'M' - { 3061, 28, 27, 28, 0, -26 }, // 0x4E 'N' - { 3156, 27, 29, 28, 1, -27 }, // 0x4F 'O' - { 3254, 24, 27, 28, 1, -26 }, // 0x50 'P' - { 3335, 27, 35, 28, 1, -27 }, // 0x51 'Q' - { 3454, 28, 27, 28, 0, -26 }, // 0x52 'R' - { 3549, 22, 29, 28, 3, -27 }, // 0x53 'S' - { 3629, 25, 27, 28, 2, -26 }, // 0x54 'T' - { 3714, 28, 28, 28, 0, -26 }, // 0x55 'U' - { 3812, 30, 27, 28, -1, -26 }, // 0x56 'V' - { 3914, 28, 27, 28, 0, -26 }, // 0x57 'W' - { 4009, 26, 27, 28, 1, -26 }, // 0x58 'X' - { 4097, 26, 27, 28, 1, -26 }, // 0x59 'Y' - { 4185, 21, 27, 28, 4, -26 }, // 0x5A 'Z' - { 4256, 10, 37, 28, 12, -29 }, // 0x5B '[' - { 4303, 20, 38, 28, 4, -32 }, // 0x5C '\' - { 4398, 10, 37, 28, 6, -29 }, // 0x5D ']' - { 4445, 20, 15, 28, 4, -29 }, // 0x5E '^' - { 4483, 28, 5, 28, 0, 5 }, // 0x5F '_' - { 4501, 9, 8, 28, 8, -30 }, // 0x60 '`' - { 4510, 24, 23, 28, 2, -21 }, // 0x61 'a' - { 4579, 27, 31, 28, 0, -29 }, // 0x62 'b' - { 4684, 24, 23, 28, 3, -21 }, // 0x63 'c' - { 4753, 26, 31, 28, 2, -29 }, // 0x64 'd' - { 4854, 24, 23, 28, 2, -21 }, // 0x65 'e' - { 4923, 22, 30, 28, 4, -29 }, // 0x66 'f' - { 5006, 25, 31, 28, 2, -21 }, // 0x67 'g' - { 5103, 26, 30, 28, 1, -29 }, // 0x68 'h' - { 5201, 21, 29, 28, 4, -28 }, // 0x69 'i' - { 5278, 17, 38, 28, 5, -28 }, // 0x6A 'j' - { 5359, 25, 30, 28, 2, -29 }, // 0x6B 'k' - { 5453, 21, 30, 28, 4, -29 }, // 0x6C 'l' - { 5532, 30, 22, 28, -1, -21 }, // 0x6D 'm' - { 5615, 25, 22, 28, 1, -21 }, // 0x6E 'n' - { 5684, 25, 23, 28, 2, -21 }, // 0x6F 'o' - { 5756, 28, 31, 28, 0, -21 }, // 0x70 'p' - { 5865, 28, 31, 28, 1, -21 }, // 0x71 'q' - { 5974, 24, 22, 28, 3, -21 }, // 0x72 'r' - { 6040, 21, 23, 28, 4, -21 }, // 0x73 's' - { 6101, 23, 28, 28, 1, -26 }, // 0x74 't' - { 6182, 25, 22, 28, 1, -20 }, // 0x75 'u' - { 6251, 28, 21, 28, 0, -20 }, // 0x76 'v' - { 6325, 28, 21, 28, 0, -20 }, // 0x77 'w' - { 6399, 26, 21, 28, 1, -20 }, // 0x78 'x' - { 6468, 26, 30, 28, 1, -20 }, // 0x79 'y' - { 6566, 19, 21, 28, 5, -20 }, // 0x7A 'z' - { 6616, 14, 37, 28, 7, -29 }, // 0x7B '{' - { 6681, 5, 36, 28, 12, -28 }, // 0x7C '|' - { 6704, 14, 37, 28, 8, -29 }, // 0x7D '}' - { 6769, 22, 10, 28, 3, -17 } }; // 0x7E '~' - -const GFXfont FreeMonoBold24pt7b PROGMEM = { - (uint8_t *)FreeMonoBold24pt7bBitmaps, - (GFXglyph *)FreeMonoBold24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 7469 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h deleted file mode 100644 index 75b1766b2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h +++ /dev/null @@ -1,189 +0,0 @@ -const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, - 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, - 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, - 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, - 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, - 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, - 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, - 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, - 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, - 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, - 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, - 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, - 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, - 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, - 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, - 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, - 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, - 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, - 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, - 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, - 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, - 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, - 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, - 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, - 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, - 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, - 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, - 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, - 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, - 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, - 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, - 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, - 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, - 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, - 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, - 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, - 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, - 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, - 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, - 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, - 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, - 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, - 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, - 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, - 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, - 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, - 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, - 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, - 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, - 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, - 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, - 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, - 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, - 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, - 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, - 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, - 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, - 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, - 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, - 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, - 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, - 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, - 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, - 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, - 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, - 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, - 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, - 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, - 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, - 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, - 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, - 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, - 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, - 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, - 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, - 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, - 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, - 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, - 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, - 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, - 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, - 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, - 0x7C, 0xF3, 0xC0, 0xC0 }; - -const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 3, 11, 11, 4, -10 }, // 0x21 '!' - { 5, 7, 5, 11, 2, -10 }, // 0x22 '"' - { 10, 8, 12, 11, 1, -10 }, // 0x23 '#' - { 22, 7, 14, 11, 2, -11 }, // 0x24 '$' - { 35, 7, 11, 11, 2, -10 }, // 0x25 '%' - { 45, 8, 10, 11, 1, -9 }, // 0x26 '&' - { 55, 3, 5, 11, 4, -10 }, // 0x27 ''' - { 57, 4, 14, 11, 5, -10 }, // 0x28 '(' - { 64, 4, 14, 11, 2, -10 }, // 0x29 ')' - { 71, 8, 7, 11, 2, -10 }, // 0x2A '*' - { 78, 8, 9, 11, 2, -8 }, // 0x2B '+' - { 87, 3, 5, 11, 3, -1 }, // 0x2C ',' - { 89, 9, 2, 11, 1, -5 }, // 0x2D '-' - { 92, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 93, 7, 15, 11, 2, -12 }, // 0x2F '/' - { 107, 7, 12, 11, 2, -11 }, // 0x30 '0' - { 118, 7, 11, 11, 2, -10 }, // 0x31 '1' - { 128, 8, 12, 11, 1, -11 }, // 0x32 '2' - { 140, 8, 12, 11, 2, -11 }, // 0x33 '3' - { 152, 7, 10, 11, 2, -9 }, // 0x34 '4' - { 161, 9, 11, 11, 1, -10 }, // 0x35 '5' - { 174, 8, 12, 11, 2, -11 }, // 0x36 '6' - { 186, 8, 11, 11, 1, -10 }, // 0x37 '7' - { 197, 7, 12, 11, 2, -11 }, // 0x38 '8' - { 208, 8, 12, 11, 2, -11 }, // 0x39 '9' - { 220, 2, 8, 11, 4, -7 }, // 0x3A ':' - { 222, 3, 11, 11, 3, -7 }, // 0x3B ';' - { 227, 9, 8, 11, 1, -8 }, // 0x3C '<' - { 236, 9, 6, 11, 1, -7 }, // 0x3D '=' - { 243, 9, 8, 11, 1, -8 }, // 0x3E '>' - { 252, 8, 11, 11, 2, -10 }, // 0x3F '?' - { 263, 9, 15, 11, 1, -11 }, // 0x40 '@' - { 280, 11, 11, 11, 0, -10 }, // 0x41 'A' - { 296, 10, 11, 11, 1, -10 }, // 0x42 'B' - { 310, 9, 11, 11, 1, -10 }, // 0x43 'C' - { 323, 10, 11, 11, 0, -10 }, // 0x44 'D' - { 337, 9, 11, 11, 1, -10 }, // 0x45 'E' - { 350, 9, 11, 11, 1, -10 }, // 0x46 'F' - { 363, 10, 11, 11, 1, -10 }, // 0x47 'G' - { 377, 9, 11, 11, 1, -10 }, // 0x48 'H' - { 390, 6, 11, 11, 3, -10 }, // 0x49 'I' - { 399, 10, 11, 11, 1, -10 }, // 0x4A 'J' - { 413, 10, 11, 11, 1, -10 }, // 0x4B 'K' - { 427, 9, 11, 11, 1, -10 }, // 0x4C 'L' - { 440, 11, 11, 11, 0, -10 }, // 0x4D 'M' - { 456, 11, 11, 11, 0, -10 }, // 0x4E 'N' - { 472, 11, 11, 11, 0, -10 }, // 0x4F 'O' - { 488, 9, 11, 11, 1, -10 }, // 0x50 'P' - { 501, 11, 14, 11, 0, -10 }, // 0x51 'Q' - { 521, 9, 11, 11, 1, -10 }, // 0x52 'R' - { 534, 9, 11, 11, 1, -10 }, // 0x53 'S' - { 547, 9, 11, 11, 1, -10 }, // 0x54 'T' - { 560, 11, 11, 11, 0, -10 }, // 0x55 'U' - { 576, 11, 11, 11, 0, -10 }, // 0x56 'V' - { 592, 10, 11, 11, 0, -10 }, // 0x57 'W' - { 606, 10, 11, 11, 0, -10 }, // 0x58 'X' - { 620, 10, 11, 11, 0, -10 }, // 0x59 'Y' - { 634, 8, 11, 11, 2, -10 }, // 0x5A 'Z' - { 645, 4, 14, 11, 5, -10 }, // 0x5B '[' - { 652, 7, 15, 11, 2, -12 }, // 0x5C '\' - { 666, 4, 14, 11, 2, -10 }, // 0x5D ']' - { 673, 7, 6, 11, 2, -11 }, // 0x5E '^' - { 679, 11, 2, 11, 0, 3 }, // 0x5F '_' - { 682, 3, 3, 11, 3, -11 }, // 0x60 '`' - { 684, 9, 8, 11, 1, -7 }, // 0x61 'a' - { 693, 10, 11, 11, 0, -10 }, // 0x62 'b' - { 707, 9, 8, 11, 1, -7 }, // 0x63 'c' - { 716, 10, 11, 11, 1, -10 }, // 0x64 'd' - { 730, 9, 8, 11, 1, -7 }, // 0x65 'e' - { 739, 8, 11, 11, 2, -10 }, // 0x66 'f' - { 750, 9, 12, 11, 1, -7 }, // 0x67 'g' - { 764, 9, 11, 11, 1, -10 }, // 0x68 'h' - { 777, 8, 11, 11, 2, -10 }, // 0x69 'i' - { 788, 6, 15, 11, 2, -10 }, // 0x6A 'j' - { 800, 9, 11, 11, 1, -10 }, // 0x6B 'k' - { 813, 8, 11, 11, 2, -10 }, // 0x6C 'l' - { 824, 11, 8, 11, 0, -7 }, // 0x6D 'm' - { 835, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 844, 9, 8, 11, 1, -7 }, // 0x6F 'o' - { 853, 11, 12, 11, 0, -7 }, // 0x70 'p' - { 870, 11, 12, 11, 0, -7 }, // 0x71 'q' - { 887, 9, 8, 11, 1, -7 }, // 0x72 'r' - { 896, 8, 8, 11, 2, -7 }, // 0x73 's' - { 904, 8, 11, 11, 1, -10 }, // 0x74 't' - { 915, 9, 8, 11, 1, -7 }, // 0x75 'u' - { 924, 11, 8, 11, 0, -7 }, // 0x76 'v' - { 935, 11, 8, 11, 0, -7 }, // 0x77 'w' - { 946, 9, 8, 11, 1, -7 }, // 0x78 'x' - { 955, 10, 12, 11, 0, -7 }, // 0x79 'y' - { 970, 7, 8, 11, 2, -7 }, // 0x7A 'z' - { 977, 4, 14, 11, 3, -10 }, // 0x7B '{' - { 984, 2, 14, 11, 5, -10 }, // 0x7C '|' - { 988, 4, 14, 11, 4, -10 }, // 0x7D '}' - { 995, 9, 4, 11, 1, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoBold9pt7b PROGMEM = { - (uint8_t *)FreeMonoBold9pt7bBitmaps, - (GFXglyph *)FreeMonoBold9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1672 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h deleted file mode 100644 index cc3ecb271..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h +++ /dev/null @@ -1,269 +0,0 @@ -const uint8_t FreeMonoBoldOblique12pt7bBitmaps[] PROGMEM = { - 0x1C, 0xF3, 0xCE, 0x38, 0xE7, 0x1C, 0x61, 0x86, 0x00, 0x63, 0x8C, 0x00, - 0xE7, 0xE7, 0xE6, 0xC6, 0xC6, 0xC4, 0x84, 0x03, 0x30, 0x19, 0x81, 0xDC, - 0x0C, 0xE0, 0x66, 0x1F, 0xFC, 0xFF, 0xE1, 0x98, 0x0C, 0xC0, 0xEE, 0x06, - 0x70, 0xFF, 0xCF, 0xFE, 0x1D, 0xC0, 0xCC, 0x06, 0x60, 0x77, 0x03, 0x30, - 0x00, 0x01, 0x00, 0x70, 0x0C, 0x07, 0xF1, 0xFE, 0x71, 0xCC, 0x11, 0x80, - 0x3F, 0x03, 0xF0, 0x0F, 0x20, 0x6E, 0x0D, 0xC3, 0x3F, 0xE7, 0xF8, 0x1C, - 0x03, 0x00, 0x60, 0x0C, 0x00, 0x0E, 0x03, 0xE0, 0xC4, 0x10, 0x82, 0x30, - 0x7C, 0x07, 0x78, 0x7C, 0x7F, 0x19, 0xF0, 0x62, 0x08, 0x41, 0x18, 0x3E, - 0x03, 0x80, 0x07, 0xC1, 0xF8, 0x62, 0x0C, 0x01, 0x80, 0x38, 0x0F, 0x03, - 0xF7, 0x6F, 0xD8, 0xF3, 0x1E, 0x7F, 0xE7, 0xF8, 0xFF, 0x6D, 0x20, 0x06, - 0x1C, 0x70, 0xC3, 0x06, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x70, 0x60, 0xC1, 0x00, 0x0C, 0x18, 0x38, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x30, 0x61, 0xC3, 0x0E, 0x38, 0x61, 0xC2, 0x00, 0x06, 0x00, 0xC0, - 0x18, 0x3F, 0x7F, 0xFE, 0xFF, 0x07, 0x81, 0xF8, 0x77, 0x0C, 0x60, 0x03, - 0x00, 0x70, 0x07, 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0xE0, 0x0C, - 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x18, 0x00, 0x1C, 0xE3, 0x1C, 0x63, 0x08, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x70, 0x01, - 0x80, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, - 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, 0x03, 0x80, 0x0C, 0x00, 0x70, - 0x03, 0x80, 0x0C, 0x00, 0x20, 0x00, 0x07, 0x83, 0xF8, 0xE3, 0x98, 0x37, - 0x06, 0xC0, 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1B, 0x03, 0x60, 0xEE, 0x38, - 0xFE, 0x0F, 0x00, 0x03, 0xC1, 0xF0, 0x7E, 0x0C, 0xC0, 0x38, 0x07, 0x00, - 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, 0xFF, 0xFF, 0xF0, - 0x03, 0xE0, 0x3F, 0x83, 0x8E, 0x38, 0x31, 0x81, 0x80, 0x18, 0x01, 0xC0, - 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x80, 0x38, 0x47, 0x87, 0x3F, 0xF3, 0xFF, - 0x80, 0x07, 0xC1, 0xFF, 0x18, 0x70, 0x03, 0x00, 0x30, 0x06, 0x07, 0xC0, - 0x7C, 0x00, 0xE0, 0x06, 0x00, 0x60, 0x06, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, - 0x01, 0xE0, 0x3C, 0x0F, 0x03, 0x60, 0xCC, 0x3B, 0x8E, 0x63, 0x8C, 0x61, - 0x9F, 0xFB, 0xFF, 0x01, 0x81, 0xF8, 0x3F, 0x00, 0x0F, 0xF1, 0xFE, 0x18, - 0x01, 0x80, 0x18, 0x03, 0xF8, 0x3F, 0xC3, 0x8E, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x0C, 0xC1, 0xCF, 0xF8, 0x7E, 0x00, 0x03, 0xE1, 0xFC, 0x70, 0x1C, - 0x03, 0x00, 0xC0, 0x1B, 0xC7, 0xFC, 0xF3, 0x98, 0x33, 0x06, 0x60, 0xCE, - 0x30, 0xFC, 0x0F, 0x00, 0xFF, 0xFF, 0xFB, 0x07, 0x60, 0xC0, 0x38, 0x06, - 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x08, - 0x00, 0x07, 0x83, 0xF8, 0xE3, 0xB0, 0x36, 0x06, 0xC0, 0xDC, 0x31, 0xFC, - 0x3F, 0x8C, 0x3B, 0x03, 0x60, 0x6C, 0x39, 0xFE, 0x1F, 0x00, 0x07, 0x81, - 0xF8, 0x63, 0x98, 0x33, 0x06, 0x60, 0xCE, 0x79, 0xFF, 0x1E, 0xC0, 0x18, - 0x06, 0x01, 0xC0, 0x71, 0xFC, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x00, - 0x67, 0x30, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x00, 0x38, 0x71, 0xC3, - 0x0E, 0x18, 0x20, 0x00, 0x00, 0x18, 0x03, 0xC0, 0x7C, 0x1F, 0x03, 0xE0, - 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x08, 0x7F, 0xFB, - 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFB, 0xFF, 0xC0, 0x30, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x1F, 0x03, 0xE0, 0x7C, - 0x07, 0x80, 0x20, 0x00, 0x3E, 0x7F, 0xB0, 0xF8, 0x30, 0x18, 0x1C, 0x1C, - 0x3C, 0x38, 0x18, 0x00, 0x06, 0x07, 0x03, 0x00, 0x03, 0xC0, 0x7E, 0x0C, - 0x71, 0x83, 0x30, 0x33, 0x0F, 0x33, 0xE6, 0x76, 0x6C, 0x66, 0xC6, 0x6C, - 0x6C, 0xFC, 0xC7, 0xEC, 0x00, 0xC0, 0x0C, 0x00, 0xE3, 0x07, 0xF0, 0x3C, - 0x00, 0x07, 0xF0, 0x1F, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x3B, 0x00, 0xE7, - 0x01, 0x8E, 0x07, 0x1C, 0x1F, 0xF8, 0x3F, 0xF0, 0xE0, 0x71, 0x80, 0xEF, - 0xC7, 0xFF, 0x8F, 0xC0, 0x3F, 0xF1, 0xFF, 0xC3, 0x06, 0x38, 0x31, 0xC1, - 0x8C, 0x18, 0x7F, 0xC3, 0xFE, 0x38, 0x39, 0xC0, 0xCC, 0x06, 0x60, 0x6F, - 0xFF, 0x7F, 0xE0, 0x03, 0xEC, 0x3F, 0xF1, 0xC3, 0x8C, 0x06, 0x60, 0x19, - 0x80, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x03, 0x3C, 0x1C, - 0x7F, 0xE0, 0x7E, 0x00, 0x3F, 0xE1, 0xFF, 0x87, 0x0C, 0x30, 0x31, 0x81, - 0x8C, 0x0C, 0xE0, 0x67, 0x03, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0xE1, 0xCF, - 0xFC, 0x7F, 0x80, 0x1F, 0xFE, 0x3F, 0xFC, 0x38, 0x38, 0x70, 0x70, 0xCC, - 0xC1, 0x98, 0x03, 0xF0, 0x0F, 0xE0, 0x1D, 0x80, 0x31, 0x18, 0x60, 0x70, - 0xC0, 0xE7, 0xFF, 0x9F, 0xFF, 0x00, 0x1F, 0xFF, 0x1F, 0xFE, 0x0E, 0x06, - 0x0C, 0x0E, 0x0C, 0xC4, 0x0C, 0xC0, 0x1F, 0xC0, 0x1F, 0xC0, 0x19, 0xC0, - 0x19, 0x80, 0x18, 0x00, 0x38, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x07, 0xEC, - 0x7F, 0xF3, 0x83, 0x9C, 0x06, 0x60, 0x19, 0x80, 0x0C, 0x00, 0x30, 0xFE, - 0xC3, 0xFB, 0x01, 0xCC, 0x07, 0x3C, 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x0F, - 0xBF, 0x1F, 0xBE, 0x0E, 0x0C, 0x0C, 0x0C, 0x0C, 0x1C, 0x0C, 0x1C, 0x1F, - 0xF8, 0x1F, 0xF8, 0x18, 0x18, 0x18, 0x38, 0x18, 0x38, 0x38, 0x30, 0x7C, - 0xFC, 0xFC, 0xF8, 0x3F, 0xF3, 0xFF, 0x03, 0x00, 0x70, 0x07, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0xFF, 0xCF, 0xFC, - 0x03, 0xFF, 0x03, 0xFF, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x70, 0x20, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0xE0, 0xE1, 0xC0, - 0xFF, 0x80, 0x3F, 0x00, 0x1F, 0x9F, 0x1F, 0x9E, 0x0E, 0x38, 0x0C, 0x70, - 0x0C, 0xE0, 0x0F, 0xC0, 0x1F, 0xC0, 0x1F, 0xE0, 0x1C, 0xE0, 0x18, 0x60, - 0x18, 0x70, 0x38, 0x70, 0xFE, 0x3C, 0xFC, 0x3C, 0x3F, 0xC1, 0xFE, 0x01, - 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x18, 0xE0, - 0xC6, 0x06, 0x30, 0x7F, 0xFF, 0xFF, 0xF8, 0x1E, 0x07, 0x87, 0x81, 0xE0, - 0xF0, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x06, 0xCF, 0x81, 0xBF, 0x60, 0xEF, - 0x98, 0x3B, 0xEE, 0x0C, 0x73, 0x83, 0x1C, 0xC0, 0xC0, 0x30, 0xFC, 0x7E, - 0x3F, 0x1F, 0x80, 0x3C, 0x3F, 0x3E, 0x3F, 0x1E, 0x0C, 0x1F, 0x1C, 0x1F, - 0x1C, 0x1B, 0x98, 0x3B, 0x98, 0x3B, 0x98, 0x31, 0xF8, 0x31, 0xF8, 0x30, - 0xF0, 0x70, 0xF0, 0xFC, 0x70, 0xF8, 0x70, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, - 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, - 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0x7C, 0x00, 0x3F, 0xE1, 0xFF, 0x83, - 0x0E, 0x38, 0x31, 0xC1, 0x8C, 0x0C, 0x60, 0xC3, 0xFC, 0x3F, 0xC1, 0xC0, - 0x0C, 0x00, 0x60, 0x0F, 0xF0, 0x7F, 0x80, 0x03, 0xE0, 0x3F, 0xE1, 0xC3, - 0x8C, 0x07, 0x60, 0x0D, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1B, 0x00, - 0x6E, 0x03, 0x1C, 0x38, 0x7F, 0xC0, 0xFC, 0x03, 0x02, 0x1F, 0xFC, 0xFF, - 0xE0, 0x1F, 0xF0, 0x3F, 0xF0, 0x38, 0x70, 0x60, 0x60, 0xC0, 0xC1, 0x87, - 0x07, 0xFC, 0x0F, 0xF0, 0x18, 0xF0, 0x30, 0xE0, 0x60, 0xC1, 0xC1, 0xCF, - 0xE1, 0xFF, 0xC3, 0xC0, 0x0F, 0xB1, 0xFF, 0x30, 0xE6, 0x06, 0x60, 0x67, - 0x80, 0x7F, 0x01, 0xFC, 0x01, 0xC4, 0x0C, 0xC0, 0xCE, 0x18, 0xFF, 0x8B, - 0xE0, 0x7F, 0xFB, 0xFF, 0xD9, 0xCF, 0xCE, 0x7C, 0x63, 0x63, 0x18, 0x18, - 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x03, 0x00, 0x18, 0x0F, 0xF8, 0x7F, 0xC0, - 0x7E, 0xFF, 0xF3, 0xF3, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x81, 0xC6, 0x06, - 0x38, 0x18, 0xE0, 0x63, 0x03, 0x8C, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, - 0x00, 0xFC, 0x7F, 0xF8, 0xFD, 0xC0, 0x61, 0x81, 0xC3, 0x87, 0x07, 0x0C, - 0x0E, 0x38, 0x0C, 0x60, 0x19, 0xC0, 0x3F, 0x00, 0x7C, 0x00, 0xF8, 0x00, - 0xE0, 0x01, 0x80, 0x00, 0x7E, 0x7E, 0xFC, 0xFD, 0xC0, 0x73, 0x9C, 0xE7, - 0x79, 0x8E, 0xF7, 0x1B, 0xEE, 0x36, 0xD8, 0x7D, 0xF0, 0xF3, 0xE1, 0xE7, - 0x83, 0x8F, 0x07, 0x1E, 0x1C, 0x38, 0x00, 0x1F, 0x1F, 0x1F, 0x1F, 0x0E, - 0x1C, 0x07, 0x38, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x03, 0xC0, 0x07, - 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x38, 0x70, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, - 0xFF, 0xC7, 0xCC, 0x38, 0x73, 0x83, 0x9C, 0x0F, 0xC0, 0x7C, 0x01, 0xC0, - 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x0F, 0xF8, 0x7F, 0x80, 0x0F, 0xF8, - 0x7F, 0xE1, 0xC7, 0x86, 0x1C, 0x18, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, - 0x0E, 0x00, 0x70, 0xC3, 0x83, 0x1C, 0x1C, 0x7F, 0xF3, 0xFF, 0x80, 0x0F, - 0x87, 0xC3, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x1C, 0x0C, 0x06, - 0x03, 0x03, 0x81, 0xC0, 0xC0, 0x60, 0x3E, 0x3F, 0x00, 0x41, 0xC3, 0x83, - 0x07, 0x0E, 0x1C, 0x18, 0x38, 0x70, 0xE0, 0xC1, 0xC3, 0x83, 0x06, 0x0E, - 0x1C, 0x18, 0x20, 0x1F, 0x0F, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x0C, - 0x0E, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x70, 0x30, 0x18, 0x7C, 0x3E, - 0x00, 0x02, 0x01, 0x80, 0xF0, 0x7E, 0x3B, 0x9C, 0x7E, 0x1F, 0x03, 0xFF, - 0xFF, 0xFF, 0xFC, 0xCE, 0x73, 0x1F, 0xC3, 0xFE, 0x00, 0x60, 0x06, 0x0F, - 0xE3, 0xFE, 0x70, 0xCC, 0x0C, 0xC3, 0xCF, 0xFF, 0x7F, 0xF0, 0x1E, 0x00, - 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xDF, 0x81, 0xFF, 0x83, 0xC3, 0x8F, - 0x03, 0x1C, 0x06, 0x38, 0x0C, 0x70, 0x18, 0xE0, 0x63, 0xE1, 0x9F, 0xFE, - 0x3D, 0xF8, 0x00, 0x0F, 0xF3, 0xFF, 0x30, 0x76, 0x07, 0xE0, 0x6C, 0x00, - 0xC0, 0x0C, 0x00, 0xE0, 0x67, 0xFE, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0xF0, - 0x01, 0xC0, 0x06, 0x07, 0xD8, 0x7F, 0xE3, 0x0F, 0x98, 0x1E, 0x60, 0x73, - 0x01, 0xCC, 0x07, 0x30, 0x3C, 0xE1, 0xF1, 0xFF, 0xE3, 0xF7, 0x80, 0x0F, - 0xC1, 0xFE, 0x78, 0x76, 0x03, 0xFF, 0xFF, 0xFF, 0xC0, 0x0C, 0x00, 0xE0, - 0xE7, 0xFE, 0x1F, 0x80, 0x00, 0xFC, 0x07, 0xF8, 0x0C, 0x00, 0x38, 0x01, - 0xFF, 0x07, 0xFE, 0x01, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, - 0x00, 0x60, 0x01, 0xC0, 0x1F, 0xF8, 0x3F, 0xF0, 0x00, 0x0F, 0xBC, 0x7F, - 0xF3, 0x0F, 0x18, 0x1C, 0xC0, 0x73, 0x01, 0x8C, 0x0E, 0x30, 0x38, 0xE3, - 0xE1, 0xFF, 0x83, 0xEC, 0x00, 0x30, 0x01, 0xC0, 0x06, 0x07, 0xF0, 0x1F, - 0x80, 0x1E, 0x01, 0xF0, 0x03, 0x00, 0x18, 0x00, 0xDE, 0x0F, 0xF8, 0x78, - 0xC3, 0x86, 0x18, 0x30, 0xC1, 0x8E, 0x1C, 0x70, 0xE3, 0x06, 0x7E, 0xFF, - 0xE7, 0xE0, 0x03, 0x80, 0x70, 0x00, 0x0F, 0xC1, 0xF0, 0x06, 0x00, 0xC0, - 0x38, 0x07, 0x00, 0xC0, 0x18, 0x03, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x70, - 0x07, 0x00, 0x00, 0xFF, 0x1F, 0xF0, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, - 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x1C, 0x03, 0x87, - 0xF0, 0xFE, 0x00, 0x1E, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0C, 0xFC, - 0x33, 0xE0, 0xDE, 0x07, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF8, 0x06, 0xF0, - 0x39, 0xC3, 0xE7, 0xEF, 0x1F, 0x80, 0x0F, 0x81, 0xF0, 0x06, 0x01, 0xC0, - 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0x61, - 0xFF, 0xFF, 0xF8, 0x3F, 0xBC, 0x7F, 0xFC, 0xF3, 0x98, 0xC6, 0x33, 0x9C, - 0xE7, 0x39, 0xCC, 0x63, 0x18, 0xC6, 0x31, 0x8D, 0xF7, 0xBF, 0xEF, 0x78, - 0x3D, 0xE1, 0xFF, 0x8F, 0x8C, 0x38, 0x61, 0x83, 0x0C, 0x18, 0xE1, 0xC7, - 0x0E, 0x30, 0x67, 0xEF, 0xFE, 0x7E, 0x07, 0xC1, 0xFE, 0x38, 0x76, 0x03, - 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x1E, - 0xFC, 0x1F, 0xFE, 0x0F, 0x87, 0x0F, 0x03, 0x0E, 0x03, 0x0E, 0x03, 0x0E, - 0x07, 0x0E, 0x06, 0x1F, 0x0C, 0x1F, 0xF8, 0x19, 0xF0, 0x18, 0x00, 0x18, - 0x00, 0x38, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xDE, 0x3F, 0xFC, 0xC3, - 0xE3, 0x03, 0x84, 0x07, 0x18, 0x0E, 0x30, 0x1C, 0x60, 0x78, 0xE1, 0xE0, - 0xFF, 0xC0, 0xF9, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x1C, 0x01, 0xFC, 0x03, - 0xF8, 0x1E, 0x78, 0x7F, 0xF0, 0x7C, 0xC3, 0xC0, 0x0E, 0x00, 0x30, 0x00, - 0xC0, 0x03, 0x00, 0x1C, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0x07, 0xF1, 0xFF, - 0x30, 0x73, 0x86, 0x3F, 0x81, 0xFE, 0x03, 0xE6, 0x06, 0xE0, 0xEF, 0xFC, - 0xFF, 0x00, 0x0C, 0x07, 0x01, 0x83, 0xFF, 0xFF, 0xCE, 0x03, 0x00, 0xC0, - 0x30, 0x1C, 0x07, 0x01, 0x83, 0x7F, 0xCF, 0xC0, 0xF0, 0xFF, 0x1F, 0x60, - 0x76, 0x07, 0x60, 0x76, 0x06, 0x60, 0x66, 0x0E, 0x61, 0xE7, 0xFF, 0x3E, - 0xF0, 0x7E, 0x7E, 0xFC, 0xFC, 0xE0, 0xC0, 0xC3, 0x81, 0x86, 0x03, 0x98, - 0x07, 0x70, 0x06, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x38, 0x00, 0xF8, 0x7F, - 0xE3, 0xE6, 0x63, 0x1B, 0xDC, 0x6F, 0x61, 0xFF, 0x87, 0xFC, 0x1E, 0xF0, - 0x73, 0x81, 0xCE, 0x06, 0x38, 0x00, 0x3E, 0x7C, 0xF9, 0xF1, 0xE7, 0x03, - 0xF8, 0x07, 0xC0, 0x1F, 0x01, 0xFC, 0x0F, 0x38, 0x78, 0xFB, 0xF7, 0xEF, - 0x9F, 0x80, 0x1F, 0x1F, 0x3E, 0x1F, 0x1C, 0x1C, 0x0C, 0x18, 0x0E, 0x38, - 0x0E, 0x70, 0x06, 0x60, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x1F, 0xF1, - 0xFF, 0x38, 0xE3, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC6, 0x38, 0x67, - 0xFE, 0x7F, 0xE0, 0x01, 0xC0, 0xF0, 0x70, 0x18, 0x06, 0x03, 0x80, 0xE0, - 0x30, 0x1C, 0x3E, 0x0F, 0x00, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, - 0x0F, 0x01, 0xC0, 0x0C, 0x71, 0xC7, 0x18, 0x63, 0x8E, 0x30, 0xC3, 0x1C, - 0x71, 0x86, 0x38, 0xE3, 0x04, 0x00, 0x0E, 0x07, 0x80, 0xC0, 0x60, 0x70, - 0x30, 0x18, 0x0C, 0x06, 0x01, 0xC1, 0xE1, 0xC0, 0xC0, 0xE0, 0x70, 0x30, - 0x38, 0x78, 0x38, 0x00, 0x3C, 0x27, 0xE6, 0xEF, 0xCC, 0x38 }; - -const GFXglyph FreeMonoBoldOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 6, 15, 14, 6, -14 }, // 0x21 '!' - { 12, 8, 7, 14, 6, -13 }, // 0x22 '"' - { 19, 13, 18, 14, 2, -15 }, // 0x23 '#' - { 49, 11, 20, 14, 3, -16 }, // 0x24 '$' - { 77, 11, 15, 14, 3, -14 }, // 0x25 '%' - { 98, 11, 13, 14, 2, -12 }, // 0x26 '&' - { 116, 3, 7, 14, 8, -13 }, // 0x27 ''' - { 119, 7, 19, 14, 7, -14 }, // 0x28 '(' - { 136, 7, 19, 14, 2, -14 }, // 0x29 ')' - { 153, 11, 10, 14, 4, -14 }, // 0x2A '*' - { 167, 12, 13, 14, 3, -12 }, // 0x2B '+' - { 187, 6, 7, 14, 3, -2 }, // 0x2C ',' - { 193, 13, 2, 14, 2, -7 }, // 0x2D '-' - { 197, 3, 3, 14, 6, -2 }, // 0x2E '.' - { 199, 14, 20, 14, 2, -16 }, // 0x2F '/' - { 234, 11, 15, 14, 3, -14 }, // 0x30 '0' - { 255, 11, 15, 14, 2, -14 }, // 0x31 '1' - { 276, 13, 15, 14, 1, -14 }, // 0x32 '2' - { 301, 12, 15, 14, 2, -14 }, // 0x33 '3' - { 324, 11, 14, 14, 3, -13 }, // 0x34 '4' - { 344, 12, 15, 14, 2, -14 }, // 0x35 '5' - { 367, 11, 15, 14, 4, -14 }, // 0x36 '6' - { 388, 11, 15, 14, 4, -14 }, // 0x37 '7' - { 409, 11, 15, 14, 3, -14 }, // 0x38 '8' - { 430, 11, 15, 14, 3, -14 }, // 0x39 '9' - { 451, 5, 11, 14, 5, -10 }, // 0x3A ':' - { 458, 7, 15, 14, 3, -10 }, // 0x3B ';' - { 472, 13, 11, 14, 2, -11 }, // 0x3C '<' - { 490, 13, 7, 14, 2, -9 }, // 0x3D '=' - { 502, 13, 11, 14, 2, -11 }, // 0x3E '>' - { 520, 9, 14, 14, 5, -13 }, // 0x3F '?' - { 536, 12, 19, 14, 2, -14 }, // 0x40 '@' - { 565, 15, 14, 14, 0, -13 }, // 0x41 'A' - { 592, 13, 14, 14, 1, -13 }, // 0x42 'B' - { 615, 14, 14, 14, 2, -13 }, // 0x43 'C' - { 640, 13, 14, 14, 1, -13 }, // 0x44 'D' - { 663, 15, 14, 14, 0, -13 }, // 0x45 'E' - { 690, 16, 14, 14, 0, -13 }, // 0x46 'F' - { 718, 14, 14, 14, 1, -13 }, // 0x47 'G' - { 743, 16, 14, 14, 0, -13 }, // 0x48 'H' - { 771, 12, 14, 14, 2, -13 }, // 0x49 'I' - { 792, 16, 14, 14, 0, -13 }, // 0x4A 'J' - { 820, 16, 14, 14, 0, -13 }, // 0x4B 'K' - { 848, 13, 14, 14, 1, -13 }, // 0x4C 'L' - { 871, 18, 14, 14, 0, -13 }, // 0x4D 'M' - { 903, 16, 14, 14, 1, -13 }, // 0x4E 'N' - { 931, 14, 14, 14, 1, -13 }, // 0x4F 'O' - { 956, 13, 14, 14, 1, -13 }, // 0x50 'P' - { 979, 14, 17, 14, 1, -13 }, // 0x51 'Q' - { 1009, 15, 14, 14, 0, -13 }, // 0x52 'R' - { 1036, 12, 14, 14, 3, -13 }, // 0x53 'S' - { 1057, 13, 14, 14, 2, -13 }, // 0x54 'T' - { 1080, 14, 14, 14, 2, -13 }, // 0x55 'U' - { 1105, 15, 14, 14, 1, -13 }, // 0x56 'V' - { 1132, 15, 14, 14, 1, -13 }, // 0x57 'W' - { 1159, 16, 14, 14, 0, -13 }, // 0x58 'X' - { 1187, 13, 14, 14, 2, -13 }, // 0x59 'Y' - { 1210, 14, 14, 14, 1, -13 }, // 0x5A 'Z' - { 1235, 9, 19, 14, 5, -14 }, // 0x5B '[' - { 1257, 7, 20, 14, 5, -16 }, // 0x5C '\' - { 1275, 9, 19, 14, 3, -14 }, // 0x5D ']' - { 1297, 10, 8, 14, 4, -15 }, // 0x5E '^' - { 1307, 15, 2, 14, -1, 4 }, // 0x5F '_' - { 1311, 4, 4, 14, 7, -15 }, // 0x60 '`' - { 1313, 12, 11, 14, 2, -10 }, // 0x61 'a' - { 1330, 15, 15, 14, -1, -14 }, // 0x62 'b' - { 1359, 12, 11, 14, 2, -10 }, // 0x63 'c' - { 1376, 14, 15, 14, 2, -14 }, // 0x64 'd' - { 1403, 12, 11, 14, 2, -10 }, // 0x65 'e' - { 1420, 15, 15, 14, 2, -14 }, // 0x66 'f' - { 1449, 14, 16, 14, 2, -10 }, // 0x67 'g' - { 1477, 13, 15, 14, 1, -14 }, // 0x68 'h' - { 1502, 11, 14, 14, 2, -13 }, // 0x69 'i' - { 1522, 12, 19, 14, 1, -13 }, // 0x6A 'j' - { 1551, 14, 15, 14, 1, -14 }, // 0x6B 'k' - { 1578, 11, 15, 14, 2, -14 }, // 0x6C 'l' - { 1599, 15, 11, 14, 0, -10 }, // 0x6D 'm' - { 1620, 13, 11, 14, 1, -10 }, // 0x6E 'n' - { 1638, 12, 11, 14, 2, -10 }, // 0x6F 'o' - { 1655, 16, 16, 14, -1, -10 }, // 0x70 'p' - { 1687, 15, 16, 14, 1, -10 }, // 0x71 'q' - { 1717, 14, 11, 14, 1, -10 }, // 0x72 'r' - { 1737, 12, 11, 14, 2, -10 }, // 0x73 's' - { 1754, 10, 14, 14, 2, -13 }, // 0x74 't' - { 1772, 12, 11, 14, 2, -10 }, // 0x75 'u' - { 1789, 15, 11, 14, 1, -10 }, // 0x76 'v' - { 1810, 14, 11, 14, 2, -10 }, // 0x77 'w' - { 1830, 14, 11, 14, 1, -10 }, // 0x78 'x' - { 1850, 16, 16, 14, 0, -10 }, // 0x79 'y' - { 1882, 12, 11, 14, 2, -10 }, // 0x7A 'z' - { 1899, 10, 19, 14, 4, -14 }, // 0x7B '{' - { 1923, 6, 19, 14, 5, -14 }, // 0x7C '|' - { 1938, 9, 19, 14, 3, -14 }, // 0x7D '}' - { 1960, 12, 4, 14, 3, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique12pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique12pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2638 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h deleted file mode 100644 index bc4f20ea5..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h +++ /dev/null @@ -1,460 +0,0 @@ -const uint8_t FreeMonoBoldOblique18pt7bBitmaps[] PROGMEM = { - 0x0F, 0x07, 0xC7, 0xE3, 0xF1, 0xF0, 0xF8, 0xFC, 0x7C, 0x3E, 0x1F, 0x0F, - 0x07, 0x87, 0xC3, 0xC1, 0xE0, 0x60, 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, - 0x80, 0xF8, 0xFF, 0x0E, 0xF1, 0xEF, 0x1E, 0xE1, 0xCE, 0x1C, 0xC1, 0xCC, - 0x18, 0xC1, 0x88, 0x18, 0x00, 0xE3, 0x80, 0x79, 0xE0, 0x1C, 0x70, 0x07, - 0x1C, 0x03, 0xCF, 0x00, 0xF3, 0xC0, 0x38, 0xE0, 0x7F, 0xFF, 0x3F, 0xFF, - 0xCF, 0xFF, 0xF3, 0xFF, 0xF8, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0x8E, 0x0F, - 0xFF, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0x3F, 0xFF, 0x83, 0xCF, 0x00, 0xF3, - 0xC0, 0x38, 0xE0, 0x1E, 0x78, 0x07, 0x9E, 0x01, 0xC7, 0x00, 0x71, 0xC0, - 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, 0x03, 0xF0, 0x03, 0xFF, - 0x81, 0xFF, 0xF0, 0xFF, 0xF8, 0x3C, 0x1E, 0x1E, 0x07, 0x87, 0x80, 0x01, - 0xF0, 0x00, 0x7F, 0xC0, 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x07, 0xF0, 0x00, - 0x3C, 0x70, 0x0F, 0x3C, 0x03, 0xCF, 0x83, 0xE3, 0xFF, 0xF8, 0xFF, 0xFC, - 0x3F, 0xFE, 0x0C, 0xFE, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, - 0xF0, 0x00, 0x18, 0x00, 0x03, 0xC0, 0x0F, 0xE0, 0x1C, 0x70, 0x30, 0x30, - 0x30, 0x30, 0x30, 0x70, 0x38, 0xE0, 0x1F, 0xC3, 0x0F, 0x1F, 0x01, 0xFC, - 0x0F, 0xE0, 0x7F, 0x00, 0xF8, 0xF0, 0x83, 0xF8, 0x07, 0x1C, 0x0E, 0x0C, - 0x0C, 0x0C, 0x0C, 0x1C, 0x0E, 0x38, 0x07, 0xF0, 0x03, 0xC0, 0x00, 0x7A, - 0x01, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0x9C, 0x0F, 0x00, 0x0F, 0x00, - 0x0F, 0x00, 0x07, 0x80, 0x1F, 0x80, 0x3F, 0xC0, 0x7F, 0xCF, 0x79, 0xFF, - 0xF1, 0xFE, 0xF1, 0xFC, 0xF0, 0xF8, 0xFF, 0xFE, 0xFF, 0xFE, 0x7F, 0xFE, - 0x1F, 0xBC, 0x7B, 0xFD, 0xEF, 0x73, 0x9C, 0xC6, 0x00, 0x01, 0xC0, 0xF0, - 0x3C, 0x1E, 0x0F, 0x03, 0xC1, 0xE0, 0x70, 0x3C, 0x0F, 0x07, 0x81, 0xE0, - 0x78, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3E, - 0x07, 0x81, 0xE0, 0x7C, 0x1F, 0x03, 0x80, 0x07, 0x03, 0xC0, 0xF8, 0x3E, - 0x07, 0x81, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xC0, 0xF0, 0x3C, 0x1E, 0x07, 0x83, 0xC1, - 0xE0, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xC0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x02, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x1F, 0xF0, 0x1F, 0x80, - 0x7F, 0x81, 0xEF, 0x07, 0x8F, 0x0F, 0x1E, 0x08, 0x10, 0x00, 0x00, 0x70, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, - 0x1E, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x0F, - 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x07, 0x80, - 0x01, 0xC0, 0x00, 0x70, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, - 0xC0, 0xC0, 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x38, 0x00, 0x03, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x01, 0xFF, - 0x01, 0xFF, 0xC1, 0xFF, 0xE1, 0xF1, 0xF9, 0xE0, 0x7C, 0xF0, 0x1E, 0xF0, - 0x0F, 0x78, 0x07, 0xB8, 0x03, 0x9C, 0x03, 0xDE, 0x01, 0xCF, 0x00, 0xE7, - 0x00, 0x73, 0xC0, 0x79, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, 0x1E, 0x3E, 0x1E, - 0x0F, 0xFF, 0x07, 0xFF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x03, - 0xF8, 0x0F, 0xE0, 0x7F, 0xC0, 0xF7, 0x81, 0x8F, 0x00, 0x1C, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, - 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x03, 0x81, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xE0, 0x1F, - 0xFF, 0x03, 0xC1, 0xF0, 0x78, 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, - 0x3F, 0x03, 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x87, 0xFF, 0xF8, 0xFF, 0xFF, - 0x00, 0x00, 0xFE, 0x00, 0xFF, 0xC0, 0x7F, 0xF8, 0x3F, 0xFF, 0x0E, 0x07, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFF, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, - 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xF1, 0xFF, 0xF8, 0xFF, 0xFC, - 0x3F, 0xFE, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0x00, 0x3F, 0x00, 0x7F, 0x00, - 0xFE, 0x00, 0xFE, 0x01, 0xEE, 0x03, 0xDE, 0x07, 0x9E, 0x0F, 0x1C, 0x1E, - 0x1C, 0x3C, 0x3C, 0x78, 0x3C, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, - 0xFC, 0x00, 0x70, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, - 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xE0, 0x00, 0x3B, 0xE0, 0x1F, 0xFE, 0x07, 0xFF, 0xC1, 0xFF, 0xF8, - 0x78, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, - 0x0F, 0x18, 0x0F, 0xCF, 0xFF, 0xE3, 0xFF, 0xF0, 0x7F, 0xF8, 0x07, 0xF0, - 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xFC, 0x03, 0xFF, 0x81, 0xFF, 0xE0, 0x7F, - 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x9F, - 0x01, 0xEF, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xF1, 0xFC, 0x3E, 0x3E, 0x03, - 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, 0x03, 0xC3, 0xE0, 0xF8, 0x7F, 0xFE, - 0x07, 0xFF, 0x80, 0x7F, 0xE0, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x3C, - 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xC0, - 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, - 0xFF, 0xF0, 0xF8, 0x3E, 0x3E, 0x03, 0xC7, 0x80, 0x78, 0xF0, 0x0F, 0x1E, - 0x03, 0xC3, 0xE0, 0xF0, 0x3F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xE0, 0x7F, - 0xFE, 0x1F, 0x83, 0xE3, 0xC0, 0x3C, 0xF0, 0x07, 0x9E, 0x01, 0xF3, 0xE0, - 0x7C, 0x7F, 0xFF, 0x87, 0xFF, 0xE0, 0x7F, 0xF0, 0x03, 0xF8, 0x00, 0x00, - 0x7E, 0x00, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0x87, 0xC3, 0xC0, - 0xF1, 0xE0, 0x3C, 0x78, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xF1, 0xFC, - 0x7F, 0xFE, 0x0F, 0xFF, 0x81, 0xFD, 0xE0, 0x3E, 0xF0, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x81, 0xFF, 0xC0, 0xFF, 0xE0, 0x3F, 0xE0, - 0x07, 0xE0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x8F, 0x9F, 0x3E, 0x38, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xC0, 0xF0, 0x1E, - 0x07, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x30, 0x0E, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0xFE, 0x00, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, - 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x38, - 0x3F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x9F, 0xFF, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, 0xFF, 0xDF, 0xFF, 0xF0, - 0x00, 0x00, 0x03, 0x80, 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, - 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x07, - 0x00, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0xFF, 0xBF, 0xFF, 0xF0, 0x7F, 0x80, - 0xFE, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x0F, 0xE1, 0xFE, 0x0F, 0xF0, 0x7E, - 0x01, 0xE0, 0x07, 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0x70, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x0F, 0x0F, - 0x07, 0x01, 0xC3, 0x80, 0x71, 0xE0, 0x1C, 0x70, 0x0E, 0x18, 0x0F, 0x8E, - 0x1F, 0xE3, 0x8F, 0xF0, 0xE7, 0x9C, 0x33, 0xC7, 0x1C, 0xE1, 0xC7, 0x38, - 0x71, 0xCF, 0x18, 0x73, 0xFE, 0x38, 0x7F, 0xCE, 0x0F, 0xF3, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0xC0, 0x7F, 0xF0, 0x0F, - 0xF8, 0x01, 0xF8, 0x00, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, - 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xBC, 0x00, - 0x1C, 0xF0, 0x00, 0xF3, 0xC0, 0x07, 0x87, 0x80, 0x1E, 0x1E, 0x00, 0xF0, - 0x78, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, - 0x1E, 0x00, 0xF1, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, - 0x07, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0xFF, 0x87, 0xFF, 0xFC, 0x1F, 0xFF, - 0xF0, 0x38, 0x0F, 0x81, 0xC0, 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x3E, 0x07, - 0xFF, 0xE0, 0x3F, 0xFE, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0xE0, 0x1F, - 0x87, 0x00, 0x3C, 0x38, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0xF3, 0xFF, - 0xFF, 0xBF, 0xFF, 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0x00, 0x00, 0x7F, - 0x30, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xF1, 0xF8, 0x3F, 0x1F, - 0x00, 0x78, 0xF0, 0x03, 0xCF, 0x80, 0x1C, 0x78, 0x00, 0x03, 0xC0, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0x00, 0x38, 0x7E, 0x07, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, - 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xFF, 0x80, 0x7F, 0xFE, 0x07, - 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x78, 0x1F, 0x03, 0x80, 0x7C, 0x1C, 0x01, - 0xE1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x03, 0xC3, 0x80, 0x1E, 0x1C, - 0x00, 0xF1, 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x70, 0x07, 0xC3, 0x80, 0x7C, - 0x3C, 0x07, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xC1, 0xFF, 0xFC, 0x0F, 0xFF, - 0x80, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xFF, - 0xFF, 0x03, 0xC0, 0x3C, 0x0F, 0x00, 0xE0, 0x3C, 0x73, 0x80, 0xE3, 0xCC, - 0x03, 0xFF, 0x00, 0x1F, 0xFC, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, - 0x1E, 0x00, 0x3C, 0x70, 0x00, 0xF0, 0x07, 0x03, 0xC0, 0x1C, 0x0E, 0x00, - 0xF1, 0xFF, 0xFF, 0xC7, 0xFF, 0xFE, 0x3F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE0, - 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, - 0x3C, 0x01, 0xC0, 0x70, 0x07, 0x80, 0xE1, 0x8E, 0x03, 0xC7, 0x1C, 0x07, - 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0xF1, - 0xC0, 0x01, 0xE3, 0x80, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, - 0x00, 0x00, 0x3F, 0x18, 0x0F, 0xFF, 0xC0, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, - 0xFC, 0x0F, 0x0F, 0x80, 0x38, 0xF8, 0x01, 0x87, 0x80, 0x00, 0x78, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x7F, 0xEF, 0x07, 0xFF, 0x78, - 0x3F, 0xFB, 0xC0, 0xFF, 0x9E, 0x00, 0x38, 0xFC, 0x03, 0xC3, 0xFF, 0xFE, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFC, 0x00, 0x7F, 0x80, 0x00, 0x03, 0xF8, 0xFE, - 0x0F, 0xF3, 0xFC, 0x1F, 0xE7, 0xF8, 0x3F, 0x8F, 0xE0, 0x3C, 0x07, 0x80, - 0x70, 0x0E, 0x00, 0xE0, 0x1C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0xF0, 0x0F, - 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0xFF, 0xFE, 0x01, 0xE0, - 0x3C, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x1E, 0x03, 0xC0, 0xFF, 0x1F, - 0xE1, 0xFE, 0x7F, 0xC7, 0xFC, 0xFF, 0x87, 0xF1, 0xFE, 0x00, 0x07, 0xFF, - 0xE1, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, 0xE0, 0x07, 0x80, 0x00, 0xE0, - 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, - 0x01, 0xC0, 0x0F, 0xFF, 0xC3, 0xFF, 0xF8, 0x7F, 0xFF, 0x07, 0xFF, 0xE0, - 0x00, 0x3F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, - 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x80, 0x1C, 0x03, 0x80, - 0x78, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x1F, - 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFC, 0x00, - 0x00, 0x07, 0xF8, 0xFC, 0x1F, 0xFB, 0xFC, 0x3F, 0xE7, 0xF0, 0x7F, 0xCF, - 0xE0, 0x3C, 0x1E, 0x00, 0x70, 0xF8, 0x00, 0xE3, 0xE0, 0x03, 0xCF, 0x00, - 0x07, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, - 0xF9, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x83, 0xE0, 0x07, 0x03, 0xC0, 0x1E, - 0x07, 0x80, 0xFF, 0x8F, 0xE3, 0xFF, 0x0F, 0xC7, 0xFE, 0x1F, 0x8F, 0xF8, - 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0xFF, 0xF0, 0x1F, 0xFE, 0x00, 0xFF, 0xE0, - 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, - 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x60, 0x78, - 0x0F, 0x07, 0x80, 0xF0, 0x70, 0x0E, 0x07, 0x00, 0xE7, 0xFF, 0xFE, 0xFF, - 0xFF, 0xEF, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, - 0x0F, 0xC7, 0xF8, 0x0F, 0xE1, 0xFC, 0x0F, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, - 0x07, 0xF0, 0x3F, 0xC7, 0xF8, 0x1F, 0xE3, 0xF8, 0x0E, 0xF3, 0xDC, 0x07, - 0x7B, 0xDE, 0x03, 0x9F, 0xEF, 0x03, 0xCF, 0xE7, 0x81, 0xE7, 0xE3, 0x80, - 0xE3, 0xF1, 0xC0, 0x70, 0xF1, 0xE0, 0x38, 0x70, 0xF0, 0x3C, 0x00, 0x70, - 0x3F, 0xC1, 0xFE, 0x3F, 0xE1, 0xFF, 0x1F, 0xF0, 0xFF, 0x8F, 0xF0, 0x7F, - 0x80, 0x0F, 0xC1, 0xFE, 0x1F, 0xC1, 0xFF, 0x1F, 0xC3, 0xFE, 0x1F, 0xE1, - 0xFE, 0x07, 0xE0, 0x38, 0x07, 0xF0, 0x78, 0x07, 0xF0, 0x78, 0x0F, 0xF8, - 0x70, 0x0F, 0x78, 0x70, 0x0E, 0x78, 0xF0, 0x0E, 0x7C, 0xF0, 0x1E, 0x3C, - 0xF0, 0x1E, 0x3E, 0xE0, 0x1E, 0x1E, 0xE0, 0x1C, 0x1F, 0xE0, 0x1C, 0x0F, - 0xE0, 0x3C, 0x0F, 0xE0, 0x7F, 0x87, 0xC0, 0xFF, 0x87, 0xC0, 0xFF, 0x87, - 0xC0, 0xFF, 0x03, 0xC0, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, 0xC0, - 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, 0x0F, - 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x01, - 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, 0xFF, - 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x00, 0x0F, 0xFF, 0x80, - 0x7F, 0xFF, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x0F, 0x81, 0xC0, - 0x3C, 0x1E, 0x01, 0xE0, 0xF0, 0x0F, 0x07, 0x00, 0xF0, 0x38, 0x0F, 0x83, - 0xFF, 0xF8, 0x1F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x38, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x01, 0xFF, - 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xF8, 0x07, 0xFF, - 0xC0, 0xFF, 0xFE, 0x1F, 0x87, 0xE3, 0xE0, 0x1F, 0x3C, 0x01, 0xF7, 0xC0, - 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x01, 0xEF, 0x00, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x7C, 0x7C, 0x1F, 0x87, - 0xFF, 0xF0, 0x3F, 0xFE, 0x01, 0xFF, 0x80, 0x07, 0xE0, 0x01, 0xFE, 0x30, - 0x3F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFF, 0x07, 0x83, 0xC0, 0x07, 0xFF, - 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, 0x03, 0xC0, 0xF8, - 0x0E, 0x01, 0xE0, 0x38, 0x07, 0x81, 0xE0, 0x3E, 0x07, 0x83, 0xF0, 0x1F, - 0xFF, 0x80, 0x7F, 0xFC, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x3C, 0x3E, - 0x00, 0xE0, 0x7C, 0x03, 0x80, 0xF0, 0x1E, 0x03, 0xE1, 0xFF, 0x07, 0xFF, - 0xFC, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xF8, 0x00, 0x7C, 0xE0, 0x7F, - 0xFC, 0x1F, 0xFF, 0x87, 0xFF, 0xE0, 0xF8, 0x7C, 0x3C, 0x07, 0x87, 0x80, - 0xE0, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0xF8, 0x03, 0xFF, - 0x80, 0x07, 0xF8, 0x40, 0x1F, 0x3C, 0x01, 0xE7, 0x80, 0x3C, 0xFC, 0x1F, - 0x1F, 0xFF, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0x7F, 0xFF, - 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x0E, 0x1F, 0xE1, 0xC3, - 0xBC, 0x78, 0x77, 0x0F, 0x1E, 0xE1, 0xC1, 0x80, 0x38, 0x00, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x3C, 0x00, - 0x07, 0x80, 0x0F, 0xFE, 0x03, 0xFF, 0xE0, 0x7F, 0xFC, 0x0F, 0xFF, 0x00, - 0x7F, 0x8F, 0xF3, 0xFE, 0x7F, 0xDF, 0xF7, 0xFC, 0xFF, 0x1F, 0xE3, 0xC0, - 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0F, 0x0F, 0x00, 0x70, 0x78, 0x03, 0x83, - 0xC0, 0x3C, 0x1C, 0x01, 0xE0, 0xE0, 0x0E, 0x0F, 0x00, 0x70, 0x78, 0x03, - 0x83, 0xC0, 0x3C, 0x1F, 0x01, 0xC0, 0xFC, 0x3E, 0x03, 0xFF, 0xE0, 0x1F, - 0xFE, 0x00, 0x7F, 0xE0, 0x00, 0xFC, 0x00, 0x00, 0x7F, 0x81, 0xFE, 0xFF, - 0x87, 0xFF, 0xFF, 0x0F, 0xFB, 0xFC, 0x1F, 0xE1, 0xC0, 0x0F, 0x03, 0xC0, - 0x1C, 0x07, 0x80, 0x78, 0x0F, 0x01, 0xE0, 0x1E, 0x03, 0x80, 0x1E, 0x0F, - 0x00, 0x3C, 0x3C, 0x00, 0x78, 0x70, 0x00, 0xF1, 0xE0, 0x01, 0xE7, 0x80, - 0x01, 0xEF, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, - 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0x87, 0xFF, - 0xFF, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE1, 0xFE, 0x78, 0x00, 0xF1, 0xE3, - 0xC3, 0x87, 0x8F, 0x0E, 0x1E, 0x7C, 0x78, 0x79, 0xF9, 0xC1, 0xEF, 0xEF, - 0x07, 0xBF, 0xBC, 0x1D, 0xFE, 0xE0, 0x77, 0x7F, 0x81, 0xFD, 0xFE, 0x07, - 0xE3, 0xF0, 0x3F, 0x8F, 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0xF8, 0x0F, 0x83, - 0xE0, 0x3E, 0x0F, 0x80, 0xF0, 0x3C, 0x00, 0x07, 0xE0, 0x7E, 0x0F, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFE, 0x0F, 0xE0, 0xFE, 0x03, 0xC0, 0xF8, 0x01, 0xE1, - 0xE0, 0x01, 0xF3, 0xC0, 0x00, 0xF7, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xEF, - 0x00, 0x07, 0xCF, 0x80, 0x0F, 0x87, 0xC0, 0x1F, 0x03, 0xC0, 0x7F, 0x07, - 0xF0, 0xFF, 0x8F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0x7E, 0x0F, - 0xEF, 0xF0, 0xFF, 0xFF, 0x0F, 0xEF, 0xE0, 0xFE, 0x3C, 0x0F, 0x01, 0xE1, - 0xE0, 0x1E, 0x3E, 0x00, 0xF7, 0xC0, 0x0F, 0xF8, 0x00, 0x7F, 0x00, 0x07, - 0xE0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x78, 0x00, 0x07, 0x00, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0x00, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0xFF, 0xFC, 0x3F, 0xFF, 0x87, 0xFF, - 0xF0, 0xF0, 0x7C, 0x1C, 0x1F, 0x03, 0x87, 0xC0, 0x61, 0xF0, 0x00, 0x7C, - 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x07, - 0x07, 0xC0, 0xE1, 0xF0, 0x3C, 0x7C, 0x07, 0x9F, 0xFF, 0xF3, 0xFF, 0xFC, - 0x7F, 0xFF, 0x8F, 0xFF, 0xF0, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xE0, - 0x70, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, - 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, - 0x80, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0xF0, 0x1C, 0x07, 0x81, 0xE0, 0x78, - 0x0E, 0x03, 0xC0, 0xF0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, - 0xF0, 0x3C, 0x0F, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x06, - 0x07, 0xF8, 0x3F, 0xC1, 0xFC, 0x0F, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, - 0x1C, 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, - 0x00, 0x78, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, - 0x1C, 0x0F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x80, 0x00, 0x40, 0x01, 0x80, - 0x07, 0x80, 0x3F, 0x80, 0xFF, 0x03, 0xFF, 0x0F, 0x9F, 0x3E, 0x1E, 0xF8, - 0x3F, 0xE0, 0x3F, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xC3, 0xC7, 0x0E, 0x3C, 0x30, 0x00, 0xFE, 0x00, - 0x7F, 0xF0, 0x1F, 0xFF, 0x03, 0xFF, 0xE0, 0x00, 0x3C, 0x07, 0xFF, 0x83, - 0xFF, 0xF0, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0x80, 0xF3, 0xE0, 0x1E, 0x78, - 0x1F, 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xF8, 0xFE, 0x7E, 0x07, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x3C, 0xFC, 0x00, 0xEF, 0xFC, 0x03, 0xFF, 0xF8, - 0x1F, 0xFF, 0xE0, 0x7E, 0x0F, 0xC1, 0xE0, 0x1F, 0x07, 0x00, 0x3C, 0x1C, - 0x00, 0xF0, 0xE0, 0x03, 0xC3, 0x80, 0x1E, 0x0F, 0x00, 0xF8, 0x3E, 0x07, - 0xC7, 0xFF, 0xFF, 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0x81, 0xF1, 0xF8, 0x00, - 0x00, 0xFE, 0x60, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, 0xF0, 0x3C, - 0xF8, 0x03, 0x9E, 0x00, 0x67, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, - 0xC0, 0x00, 0x7E, 0x01, 0xC7, 0xFF, 0xF8, 0xFF, 0xFE, 0x0F, 0xFF, 0x80, - 0x7F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x07, 0xE3, 0x80, 0xFF, 0xDC, 0x0F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x0F, 0xC1, 0xF0, 0xF8, 0x07, 0x87, 0x80, 0x1C, - 0x78, 0x00, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x07, 0x87, 0xE0, - 0xFC, 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xC3, 0xFF, 0xFE, 0x07, 0xE3, 0xE0, - 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0x7F, 0xFE, 0x3E, 0x0F, 0xCE, - 0x00, 0xF7, 0x00, 0x3D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x1E, 0xFF, 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF0, 0x3F, 0xF0, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, - 0xFF, 0xFC, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x01, 0xC0, - 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x1F, - 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x01, 0xF9, - 0xF8, 0x3F, 0xFF, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xE3, 0xE0, 0xFC, 0x3E, - 0x03, 0xE1, 0xE0, 0x0E, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x3C, - 0x3E, 0x03, 0xE1, 0xF8, 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x80, 0xFF, - 0xFC, 0x01, 0xF9, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, - 0x7F, 0xF8, 0x07, 0xFF, 0x80, 0x3F, 0xF8, 0x00, 0xFF, 0x00, 0x00, 0x0F, - 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xC0, 0x00, - 0x38, 0x00, 0x03, 0x9F, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xFE, - 0x07, 0xC3, 0xE0, 0x70, 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x1C, 0x0E, 0x03, - 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0x81, 0xE0, 0x38, 0x7F, 0x0F, 0xFF, 0xF8, - 0xFF, 0xFF, 0x8F, 0xF7, 0xF0, 0xFE, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, - 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xF0, - 0x0F, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x01, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x3F, 0xFE, 0x0F, 0xFF, 0x81, 0xFF, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x78, 0x00, - 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x1F, 0xFE, - 0x0F, 0xFF, 0x03, 0xFF, 0x80, 0x7F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0xFE, - 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, - 0xCF, 0xF0, 0x3C, 0xFF, 0x03, 0x9F, 0xF0, 0x38, 0xFE, 0x07, 0xBF, 0x00, - 0x7F, 0xC0, 0x07, 0xF8, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x0F, 0x7E, 0x00, 0xE3, 0xF0, 0x7E, 0x1F, 0xE7, 0xE1, 0xFE, 0xFE, 0x3F, - 0xE7, 0xE1, 0xFC, 0x03, 0xFC, 0x07, 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x00, - 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, - 0xF0, 0x00, 0xE0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, - 0xC0, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x1F, - 0x7C, 0x78, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF0, 0xF1, - 0xF1, 0xE1, 0xC3, 0x83, 0xC7, 0x87, 0x07, 0x8F, 0x0E, 0x0E, 0x1C, 0x3C, - 0x1C, 0x38, 0x78, 0x78, 0x70, 0xE0, 0xF1, 0xE1, 0xC1, 0xC7, 0xE3, 0xC3, - 0xFF, 0xCF, 0xC7, 0xFF, 0x9F, 0x9F, 0xFF, 0x3E, 0x3E, 0x0F, 0x8F, 0x80, - 0xFD, 0xFF, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0x7E, 0x1F, 0x07, 0xC0, - 0x78, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x01, 0xE0, 0x70, 0x0F, 0x07, - 0x80, 0x70, 0x3C, 0x03, 0x87, 0xF0, 0x3F, 0x7F, 0xC3, 0xFF, 0xFE, 0x1F, - 0xEF, 0xE0, 0xFE, 0x01, 0xFC, 0x01, 0xFF, 0x80, 0xFF, 0xF8, 0x7F, 0xFE, - 0x3E, 0x0F, 0xDF, 0x01, 0xF7, 0x80, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, - 0x01, 0xEF, 0x80, 0xFB, 0xF0, 0x7C, 0x7F, 0xFF, 0x1F, 0xFF, 0x03, 0xFF, - 0x80, 0x3F, 0x80, 0x07, 0xC7, 0xE0, 0x1F, 0xBF, 0xF0, 0x3F, 0xFF, 0xF0, - 0x7F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x78, 0x03, 0xC0, 0xE0, 0x07, 0x81, - 0xC0, 0x0F, 0x07, 0x00, 0x1E, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x3E, - 0x07, 0xC0, 0xFF, 0xFF, 0x81, 0xFF, 0xFE, 0x03, 0xDF, 0xF0, 0x07, 0x1F, - 0x80, 0x0E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xF8, - 0xF8, 0x1F, 0xFF, 0xF1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFE, 0x3E, 0x07, 0xC1, - 0xF0, 0x0F, 0x07, 0x80, 0x1C, 0x3C, 0x00, 0x70, 0xF0, 0x03, 0x83, 0xC0, - 0x0E, 0x0F, 0x80, 0x78, 0x3F, 0x07, 0xE0, 0x7F, 0xFF, 0x81, 0xFF, 0xFC, - 0x03, 0xFF, 0x70, 0x03, 0xF3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x00, 0x1F, - 0xF8, 0x00, 0x0F, 0xC3, 0xC1, 0xFC, 0xFF, 0x1F, 0xFF, 0xF1, 0xFF, 0xFE, - 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x07, 0x80, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, - 0xE0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x03, 0xF3, 0x0F, 0xFF, 0x3F, 0xFF, - 0x3F, 0xFF, 0x7C, 0x0E, 0x78, 0x00, 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFF, - 0x00, 0x3F, 0x70, 0x0F, 0xF8, 0x1F, 0xFF, 0xFE, 0xFF, 0xFC, 0xFF, 0xF8, - 0x0F, 0xE0, 0x06, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x7F, 0xFE, 0xFF, 0xFE, 0xFF, 0xFE, 0xFF, 0xFC, 0x1C, 0x00, 0x3C, 0x00, - 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x0E, - 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0xFC, 0x0F, 0xE0, 0x7C, 0x0F, 0xFF, 0x07, - 0xFF, 0x81, 0xFF, 0xE0, 0x7E, 0x78, 0x03, 0x9E, 0x00, 0xE7, 0x80, 0x79, - 0xE0, 0x1E, 0x78, 0x07, 0x1E, 0x01, 0xC7, 0x80, 0xF1, 0xE0, 0xFC, 0x7F, - 0xFF, 0x9F, 0xFF, 0xE3, 0xFF, 0xF8, 0x3E, 0x7C, 0x7F, 0x87, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x1F, 0xE1, 0xE0, 0x3C, 0x0F, 0x03, 0xC0, - 0x78, 0x3C, 0x01, 0xE1, 0xC0, 0x0F, 0x1E, 0x00, 0x79, 0xE0, 0x03, 0xCE, - 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, - 0x78, 0x00, 0x7E, 0x03, 0xF7, 0xF0, 0x3F, 0xFF, 0x81, 0xFD, 0xF8, 0x0F, - 0xE7, 0x8E, 0x1C, 0x3C, 0xF9, 0xE1, 0xE7, 0xCE, 0x0F, 0x7E, 0xF0, 0x7B, - 0xF7, 0x03, 0xFF, 0xF8, 0x1F, 0xDF, 0x80, 0xFC, 0xFC, 0x07, 0xE7, 0xE0, - 0x3E, 0x3E, 0x01, 0xF1, 0xF0, 0x0F, 0x07, 0x00, 0x0F, 0xE3, 0xF8, 0xFF, - 0x1F, 0xC7, 0xF9, 0xFE, 0x1F, 0x87, 0xF0, 0x7E, 0x7C, 0x01, 0xFF, 0xC0, - 0x07, 0xFC, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x01, 0xF7, - 0xC0, 0x1F, 0x1F, 0x03, 0xF0, 0x7C, 0x7F, 0xCF, 0xFB, 0xFE, 0x7F, 0xDF, - 0xE3, 0xFC, 0x07, 0xF0, 0x7F, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x07, - 0xE0, 0xFE, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xF0, 0x01, - 0xE1, 0xE0, 0x01, 0xE1, 0xC0, 0x01, 0xE3, 0xC0, 0x00, 0xF7, 0x80, 0x00, - 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x7F, - 0xF0, 0x00, 0xFF, 0xF8, 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF0, 0x00, 0x1F, - 0xFF, 0xC7, 0xFF, 0xF1, 0xFF, 0xF8, 0xFF, 0xFE, 0x3C, 0x1F, 0x0E, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x3C, 0xFF, 0xFF, 0x3F, 0xFF, 0xCF, 0xFF, 0xE3, 0xFF, 0xF8, 0x00, - 0xF0, 0x1F, 0x03, 0xF0, 0x7E, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xF0, 0x0E, - 0x00, 0xE0, 0x1E, 0x01, 0xC0, 0xFC, 0x0F, 0x80, 0xF8, 0x0F, 0xC0, 0x3C, - 0x03, 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xE0, 0x7E, - 0x03, 0xE0, 0x1C, 0x00, 0x02, 0x07, 0x07, 0x0F, 0x0F, 0x0E, 0x0E, 0x0E, - 0x1E, 0x1E, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, - 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0xE0, 0x01, 0xC0, 0x1F, 0x00, 0xFC, - 0x07, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0F, 0x00, - 0x78, 0x03, 0xC0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, 0x03, 0xC0, 0x1C, - 0x00, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x0F, 0xE0, 0x7E, 0x07, - 0xE0, 0x1E, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xFF, 0xFC, 0xFF, - 0x3F, 0xFF, 0x0F, 0xF8, 0x03, 0xF8, 0x00, 0xF0 }; - -const GFXglyph FreeMonoBoldOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 9, 22, 21, 9, -21 }, // 0x21 '!' - { 25, 12, 10, 21, 9, -20 }, // 0x22 '"' - { 40, 18, 25, 21, 4, -22 }, // 0x23 '#' - { 97, 18, 28, 21, 4, -23 }, // 0x24 '$' - { 160, 16, 21, 21, 5, -20 }, // 0x25 '%' - { 202, 16, 20, 21, 4, -19 }, // 0x26 '&' - { 242, 5, 10, 21, 12, -20 }, // 0x27 ''' - { 249, 10, 27, 21, 11, -21 }, // 0x28 '(' - { 283, 10, 27, 21, 4, -21 }, // 0x29 ')' - { 317, 15, 15, 21, 6, -21 }, // 0x2A '*' - { 346, 18, 19, 21, 4, -18 }, // 0x2B '+' - { 389, 9, 10, 21, 4, -3 }, // 0x2C ',' - { 401, 18, 4, 21, 4, -11 }, // 0x2D '-' - { 410, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 414, 21, 28, 21, 2, -23 }, // 0x2F '/' - { 488, 17, 23, 21, 5, -22 }, // 0x30 '0' - { 537, 15, 22, 21, 3, -21 }, // 0x31 '1' - { 579, 20, 23, 21, 2, -22 }, // 0x32 '2' - { 637, 18, 23, 21, 3, -22 }, // 0x33 '3' - { 689, 16, 21, 21, 4, -20 }, // 0x34 '4' - { 731, 18, 22, 21, 4, -21 }, // 0x35 '5' - { 781, 19, 23, 21, 5, -22 }, // 0x36 '6' - { 836, 16, 22, 21, 6, -21 }, // 0x37 '7' - { 880, 19, 23, 21, 3, -22 }, // 0x38 '8' - { 935, 18, 23, 21, 4, -22 }, // 0x39 '9' - { 987, 7, 16, 21, 9, -15 }, // 0x3A ':' - { 1001, 11, 22, 21, 4, -15 }, // 0x3B ';' - { 1032, 18, 16, 21, 4, -17 }, // 0x3C '<' - { 1068, 19, 10, 21, 3, -14 }, // 0x3D '=' - { 1092, 19, 16, 21, 3, -17 }, // 0x3E '>' - { 1130, 14, 21, 21, 8, -20 }, // 0x3F '?' - { 1167, 18, 27, 21, 3, -21 }, // 0x40 '@' - { 1228, 22, 21, 21, 0, -20 }, // 0x41 'A' - { 1286, 21, 21, 21, 1, -20 }, // 0x42 'B' - { 1342, 21, 21, 21, 2, -20 }, // 0x43 'C' - { 1398, 21, 21, 21, 1, -20 }, // 0x44 'D' - { 1454, 22, 21, 21, 0, -20 }, // 0x45 'E' - { 1512, 23, 21, 21, 0, -20 }, // 0x46 'F' - { 1573, 21, 21, 21, 2, -20 }, // 0x47 'G' - { 1629, 23, 21, 21, 0, -20 }, // 0x48 'H' - { 1690, 19, 21, 21, 2, -20 }, // 0x49 'I' - { 1740, 23, 21, 21, 0, -20 }, // 0x4A 'J' - { 1801, 23, 21, 21, 0, -20 }, // 0x4B 'K' - { 1862, 20, 21, 21, 1, -20 }, // 0x4C 'L' - { 1915, 25, 21, 21, 0, -20 }, // 0x4D 'M' - { 1981, 24, 21, 21, 1, -20 }, // 0x4E 'N' - { 2044, 20, 21, 21, 2, -20 }, // 0x4F 'O' - { 2097, 21, 21, 21, 1, -20 }, // 0x50 'P' - { 2153, 20, 26, 21, 2, -20 }, // 0x51 'Q' - { 2218, 22, 21, 21, 0, -20 }, // 0x52 'R' - { 2276, 19, 21, 21, 3, -20 }, // 0x53 'S' - { 2326, 19, 21, 21, 3, -20 }, // 0x54 'T' - { 2376, 21, 21, 21, 3, -20 }, // 0x55 'U' - { 2432, 23, 21, 21, 1, -20 }, // 0x56 'V' - { 2493, 22, 21, 21, 2, -20 }, // 0x57 'W' - { 2551, 24, 21, 21, 0, -20 }, // 0x58 'X' - { 2614, 20, 21, 21, 3, -20 }, // 0x59 'Y' - { 2667, 19, 21, 21, 2, -20 }, // 0x5A 'Z' - { 2717, 13, 27, 21, 8, -21 }, // 0x5B '[' - { 2761, 10, 28, 21, 8, -23 }, // 0x5C '\' - { 2796, 13, 27, 21, 4, -21 }, // 0x5D ']' - { 2840, 15, 11, 21, 6, -21 }, // 0x5E '^' - { 2861, 21, 4, 21, -1, 4 }, // 0x5F '_' - { 2872, 6, 6, 21, 10, -22 }, // 0x60 '`' - { 2877, 19, 16, 21, 2, -15 }, // 0x61 'a' - { 2915, 22, 22, 21, 0, -21 }, // 0x62 'b' - { 2976, 19, 16, 21, 3, -15 }, // 0x63 'c' - { 3014, 21, 22, 21, 3, -21 }, // 0x64 'd' - { 3072, 18, 16, 21, 3, -15 }, // 0x65 'e' - { 3108, 21, 22, 21, 3, -21 }, // 0x66 'f' - { 3166, 21, 23, 21, 2, -15 }, // 0x67 'g' - { 3227, 20, 22, 21, 1, -21 }, // 0x68 'h' - { 3282, 16, 22, 21, 3, -21 }, // 0x69 'i' - { 3326, 18, 29, 21, 2, -21 }, // 0x6A 'j' - { 3392, 20, 22, 21, 1, -21 }, // 0x6B 'k' - { 3447, 16, 22, 21, 3, -21 }, // 0x6C 'l' - { 3491, 23, 16, 21, 0, -15 }, // 0x6D 'm' - { 3537, 21, 16, 21, 1, -15 }, // 0x6E 'n' - { 3579, 18, 16, 21, 3, -15 }, // 0x6F 'o' - { 3615, 23, 23, 21, -1, -15 }, // 0x70 'p' - { 3682, 22, 23, 21, 2, -15 }, // 0x71 'q' - { 3746, 20, 16, 21, 2, -15 }, // 0x72 'r' - { 3786, 16, 16, 21, 4, -15 }, // 0x73 's' - { 3818, 16, 21, 21, 4, -20 }, // 0x74 't' - { 3860, 18, 16, 21, 3, -15 }, // 0x75 'u' - { 3896, 21, 16, 21, 2, -15 }, // 0x76 'v' - { 3938, 21, 16, 21, 3, -15 }, // 0x77 'w' - { 3980, 21, 16, 21, 1, -15 }, // 0x78 'x' - { 4022, 24, 23, 21, -1, -15 }, // 0x79 'y' - { 4091, 18, 16, 21, 3, -15 }, // 0x7A 'z' - { 4127, 12, 27, 21, 8, -21 }, // 0x7B '{' - { 4168, 8, 27, 21, 8, -21 }, // 0x7C '|' - { 4195, 13, 27, 21, 4, -21 }, // 0x7D '}' - { 4239, 17, 8, 21, 4, -13 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique18pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique18pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4928 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h deleted file mode 100644 index a2bbbdf36..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h +++ /dev/null @@ -1,742 +0,0 @@ -const uint8_t FreeMonoBoldOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x3F, 0x07, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xE0, 0xFE, - 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0xFC, 0x1F, 0xC1, 0xF8, 0x1F, 0x81, 0xF8, - 0x1F, 0x81, 0xF0, 0x1F, 0x01, 0xF0, 0x1E, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xC0, 0x7E, 0x0F, 0xE0, 0xFE, 0x0F, 0xC0, 0x78, 0x00, 0x7E, - 0x1F, 0xBF, 0x0F, 0xDF, 0x87, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF1, - 0xE0, 0xF8, 0xF0, 0x7C, 0x78, 0x3C, 0x38, 0x1E, 0x1C, 0x0F, 0x0E, 0x07, - 0x0E, 0x03, 0x83, 0x01, 0x80, 0x00, 0x1C, 0x1C, 0x00, 0x3E, 0x3E, 0x00, - 0x3E, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, - 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x0F, - 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFE, 0x03, 0xE3, 0xE0, 0x03, 0xE3, 0xE0, 0x03, 0xC3, 0xC0, 0x07, - 0xC7, 0xC0, 0x7F, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0x0F, 0x0F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, - 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x3E, 0x1E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, - 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x7C, 0x7C, 0x00, 0x38, 0x38, 0x00, 0x00, - 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0xFF, 0x00, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0x81, 0xFC, 0x1F, 0xC1, 0xF8, 0x03, 0xC0, 0xF8, 0x01, - 0xE0, 0x7C, 0x00, 0x40, 0x3F, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xFF, - 0x80, 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x00, - 0x7F, 0xC0, 0x00, 0x07, 0xE0, 0xE0, 0x01, 0xF0, 0xF0, 0x00, 0xF8, 0xF8, - 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xC3, 0xC0, 0x0E, 0x07, 0x00, - 0x70, 0x1C, 0x01, 0xC0, 0x70, 0x07, 0x01, 0xC0, 0x1C, 0x0E, 0x00, 0x78, - 0x78, 0x00, 0xFF, 0xC0, 0x03, 0xFE, 0x1F, 0x03, 0xE3, 0xFC, 0x00, 0x7F, - 0xC0, 0x0F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x03, 0xF8, 0x7C, 0x0F, - 0x07, 0xFC, 0x00, 0x3F, 0xF0, 0x01, 0xE1, 0xE0, 0x07, 0x03, 0x80, 0x38, - 0x0E, 0x00, 0xE0, 0x38, 0x03, 0x80, 0xE0, 0x0E, 0x07, 0x00, 0x3C, 0x3C, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, - 0x01, 0xFF, 0x80, 0x3F, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xFE, 0x01, 0xF1, - 0xE0, 0x1F, 0x04, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, - 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xE3, - 0xE7, 0xFF, 0x3F, 0x7E, 0xFF, 0xFB, 0xE7, 0xFF, 0x9E, 0x1F, 0xF1, 0xF0, - 0xFF, 0x8F, 0x83, 0xF8, 0x7C, 0x1F, 0xC3, 0xF0, 0xFF, 0x9F, 0xFF, 0xFC, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xFD, 0xF0, 0x1F, 0x80, 0x00, 0x7E, - 0xFD, 0xF3, 0xE7, 0xCF, 0x3E, 0x7C, 0xF1, 0xE3, 0xC7, 0x0E, 0x18, 0x00, - 0x00, 0x18, 0x00, 0xF0, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF8, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, - 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x03, - 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x00, 0xC0, 0x07, 0x80, 0x3F, 0x00, 0xFC, - 0x03, 0xF0, 0x07, 0xE0, 0x1F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xF0, 0x07, - 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x07, 0xC0, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, - 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x00, 0x00, 0x3C, - 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x08, - 0x3C, 0x09, 0xF9, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0x87, 0xFF, 0xE0, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, 0xFF, 0x00, 0x7F, - 0xF8, 0x07, 0xE7, 0xE0, 0x3E, 0x3F, 0x01, 0xE0, 0xF8, 0x0E, 0x07, 0x80, - 0x00, 0x07, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x7C, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xF0, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, - 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x07, 0x80, 0x78, 0x0F, 0x00, - 0xE0, 0x0C, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x1F, 0xFF, - 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, - 0x1F, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xF8, 0x00, 0xF9, 0xF0, 0x01, 0xF3, - 0xC0, 0x07, 0xCF, 0x80, 0x0F, 0x9F, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x78, - 0x00, 0xF8, 0xF0, 0x01, 0xF3, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0x8F, 0x80, - 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, 0x01, 0xF0, 0xFC, 0x07, - 0xC1, 0xFC, 0x3F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, - 0x03, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x7E, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFB, 0xE0, 0x1F, - 0x9E, 0x00, 0xF1, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, - 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x03, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x01, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, - 0xFF, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x03, 0xFF, 0xF0, - 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0x07, 0xF0, 0x1F, 0x00, - 0xFC, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF0, 0x01, 0xF0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x70, 0x3F, 0x80, 0x3E, 0x1F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x1F, - 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x0F, 0x81, 0xFC, 0x07, - 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x0F, 0xC0, - 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x01, 0xFF, 0xC0, - 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x3C, 0x01, - 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, - 0xFC, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x7F, 0xE0, 0x03, 0xFF, - 0x80, 0x1F, 0xBE, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0xC0, 0x1F, 0x1F, 0x00, - 0xF8, 0x7C, 0x07, 0xE1, 0xE0, 0x3F, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xC0, - 0xF8, 0x3E, 0x03, 0xC1, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, 0x00, 0xF8, 0x00, 0x3F, 0xF8, 0x01, - 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, - 0xFF, 0x00, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, 0x3F, - 0xFF, 0xE0, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF7, 0xF0, 0x00, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x0F, 0x01, 0xFC, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0xF8, 0x3C, 0x03, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0x00, - 0x01, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x7F, 0xFF, 0x00, - 0xFF, 0xFE, 0x01, 0xFE, 0x1C, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x0F, - 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x3E, - 0xFF, 0x80, 0x7D, 0xFF, 0xC0, 0x7F, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, 0x7F, - 0x87, 0xF0, 0xFF, 0x03, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, - 0x01, 0xF0, 0xF8, 0x01, 0xF0, 0xF8, 0x03, 0xE0, 0xF8, 0x03, 0xE0, 0xFC, - 0x07, 0xC0, 0xFE, 0x0F, 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, 0x00, 0x3F, - 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xFF, 0xFD, 0xFF, - 0xFF, 0xE7, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFB, 0xE0, 0x07, - 0xCF, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x00, - 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, - 0xE0, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x7F, 0xFF, 0xC0, 0xFC, 0x1F, - 0xC3, 0xF0, 0x1F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x7C, - 0x7C, 0x01, 0xF0, 0xFC, 0x07, 0xE0, 0xFC, 0x1F, 0x81, 0xFF, 0xFE, 0x01, - 0xFF, 0xF0, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0xFE, - 0x0F, 0xC3, 0xF0, 0x0F, 0xC7, 0xC0, 0x0F, 0x9F, 0x00, 0x1F, 0x3E, 0x00, - 0x3E, 0x7C, 0x00, 0xFC, 0xFC, 0x03, 0xF1, 0xFC, 0x1F, 0xE3, 0xFF, 0xFF, - 0x83, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFC, 0x00, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xFC, 0x01, 0xFF, - 0xFE, 0x03, 0xFF, 0xFE, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x3F, 0x07, 0xC0, - 0x1F, 0x0F, 0xC0, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, - 0x3F, 0x0F, 0xC0, 0x7F, 0x0F, 0xE1, 0xFF, 0x07, 0xFF, 0xFE, 0x07, 0xFF, - 0xFE, 0x03, 0xFF, 0xBE, 0x01, 0xFF, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0x00, - 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x0F, - 0xE0, 0x00, 0x1F, 0xC0, 0x38, 0x7F, 0x80, 0x7F, 0xFF, 0x00, 0xFF, 0xFE, - 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x07, 0x83, - 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x1F, 0x8F, 0xE3, 0xF8, 0xFC, - 0x1E, 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, - 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, - 0x1F, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, - 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, - 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xE0, - 0x00, 0x07, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, - 0x80, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, - 0xF3, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x80, 0x00, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x7F, - 0xE0, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x07, 0xFC, - 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFC, 0x01, 0xFF, - 0xE1, 0xFF, 0xFE, 0x3F, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0x1F, 0xFE, 0x00, - 0xFF, 0x80, 0x1F, 0xF0, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, - 0xE0, 0x07, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x0F, 0xE0, - 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, - 0x3F, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF0, 0x01, - 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xC1, 0xE0, - 0x07, 0x87, 0xC0, 0x0F, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x78, 0x78, 0x07, - 0xF1, 0xE0, 0x3F, 0xE3, 0xC1, 0xFF, 0x87, 0x87, 0xFF, 0x0E, 0x1F, 0x9E, - 0x3C, 0x7C, 0x3C, 0x78, 0xF0, 0x78, 0xF3, 0xC0, 0xE1, 0xC7, 0x83, 0xC3, - 0x8F, 0x07, 0x8F, 0x1E, 0x0F, 0x1E, 0x3E, 0x1C, 0x3C, 0x7F, 0xFC, 0x78, - 0x7F, 0xFC, 0xF0, 0x7F, 0xF1, 0xE0, 0x3F, 0xE3, 0xC0, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0x01, - 0xC0, 0x7F, 0xFF, 0x80, 0x7F, 0xFE, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x80, - 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xFC, 0x00, - 0x00, 0x7F, 0xF0, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, - 0x7C, 0x7C, 0x00, 0x01, 0xE1, 0xF8, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x7C, - 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x3F, 0xFF, - 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0xFC, - 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xC0, 0x07, 0xE0, 0x3E, 0x00, 0x0F, 0x87, - 0xFF, 0x03, 0xFF, 0xBF, 0xFC, 0x1F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0xC1, 0xFF, 0xEF, 0xFE, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x3F, - 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, - 0xFF, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x03, 0xE0, 0x1E, 0x00, 0x1F, - 0x01, 0xF0, 0x00, 0xF8, 0x0F, 0x80, 0x0F, 0x80, 0x7C, 0x01, 0xF8, 0x03, - 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xC0, 0x0F, 0xF0, 0x3E, 0x00, 0x1F, - 0x81, 0xF0, 0x00, 0x7C, 0x0F, 0x80, 0x03, 0xE0, 0x78, 0x00, 0x1F, 0x03, - 0xC0, 0x03, 0xF1, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFF, 0x87, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x03, 0xFF, 0xE6, 0x00, 0x7F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0x03, - 0xFF, 0xFF, 0xF0, 0x7F, 0x81, 0xFF, 0x0F, 0xE0, 0x07, 0xE1, 0xF8, 0x00, - 0x3E, 0x1F, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x3C, 0x3E, 0x00, 0x03, 0xC7, - 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, - 0x00, 0x70, 0x7E, 0x00, 0x1F, 0x07, 0xF8, 0x07, 0xF0, 0x3F, 0xFF, 0xFF, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF0, 0x07, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0x00, 0xFE, - 0x01, 0xF0, 0x07, 0xE0, 0x1E, 0x00, 0x3F, 0x01, 0xE0, 0x01, 0xF0, 0x3E, - 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xC0, 0x01, - 0xF0, 0x7C, 0x00, 0x1F, 0x07, 0xC0, 0x03, 0xF0, 0x7C, 0x00, 0x3E, 0x07, - 0x80, 0x03, 0xE0, 0x78, 0x00, 0x7E, 0x0F, 0x80, 0x07, 0xC0, 0xF8, 0x00, - 0xFC, 0x0F, 0x80, 0x1F, 0x80, 0xF0, 0x07, 0xF0, 0x7F, 0xFF, 0xFE, 0x07, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, - 0xFE, 0x1F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x00, 0x78, 0x00, 0xF8, - 0x07, 0xC0, 0x07, 0xC0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0xF1, 0xE0, 0x0F, - 0x0F, 0x8E, 0x00, 0x78, 0x7C, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, - 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFF, 0xFC, 0x00, - 0x07, 0xC3, 0xC0, 0x00, 0x3E, 0x1E, 0x1E, 0x01, 0xE0, 0xE0, 0xF0, 0x0F, - 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x7C, 0x07, 0xC0, 0x03, 0xE1, 0xFF, 0xFF, - 0xFE, 0x1F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF8, - 0x1F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, - 0x1F, 0x00, 0x0F, 0x80, 0x3E, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x7C, 0x00, - 0xF0, 0x70, 0xF8, 0x03, 0xE1, 0xF0, 0xE0, 0x07, 0xC3, 0xC0, 0x00, 0x0F, - 0xFF, 0x80, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, - 0xFC, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xC3, 0xE0, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x1F, 0x07, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x3F, 0xFF, 0x80, - 0x00, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFF, 0xF8, 0x00, - 0x00, 0x00, 0x07, 0xF8, 0x60, 0x03, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, - 0x1F, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0x80, 0xFE, 0x0F, 0xE0, - 0x03, 0xE0, 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x03, 0xC3, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x7F, 0xFC, 0xF8, 0x0F, 0xFF, - 0xEF, 0x80, 0xFF, 0xFE, 0xF8, 0x0F, 0xFF, 0xCF, 0x80, 0x7F, 0xF8, 0xF8, - 0x00, 0x1F, 0x0F, 0xC0, 0x01, 0xF0, 0xFE, 0x00, 0x1F, 0x07, 0xF8, 0x07, - 0xE0, 0x7F, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFC, 0x00, - 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0x0F, 0xF8, 0x0F, - 0xFC, 0x7F, 0xF0, 0x7F, 0xF1, 0xFF, 0xC1, 0xFF, 0xC7, 0xFE, 0x03, 0xFE, - 0x1F, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, - 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, - 0x00, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x07, 0x80, 0x1F, 0x00, 0x1E, - 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x07, 0xFE, 0x1F, 0xF8, 0x3F, 0xF8, 0xFF, - 0xF0, 0xFF, 0xE3, 0xFF, 0xC3, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x3F, 0xF8, - 0x00, 0x03, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x01, 0xFF, 0xFF, - 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xF8, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xFC, 0x00, 0x3F, - 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x07, 0x00, 0x0F, 0x80, - 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x78, 0x00, 0x78, 0x01, - 0xF0, 0x01, 0xF0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, - 0x80, 0x3F, 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, - 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x03, 0xFF, 0xC3, 0xFE, 0x0F, 0xFF, 0x8F, 0xFC, 0x1F, - 0xFF, 0x3F, 0xF8, 0x3F, 0xFE, 0x7F, 0xF0, 0x7F, 0xF8, 0x7F, 0xC0, 0x1F, - 0x01, 0xFC, 0x00, 0x3E, 0x07, 0xF0, 0x00, 0x78, 0x3F, 0x80, 0x01, 0xF0, - 0xFE, 0x00, 0x03, 0xE3, 0xF0, 0x00, 0x07, 0xDF, 0xC0, 0x00, 0x0F, 0xFE, - 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x01, 0xFC, 0xFC, 0x00, 0x03, 0xE0, 0xFC, 0x00, 0x0F, 0x81, 0xF8, - 0x00, 0x1F, 0x01, 0xF8, 0x00, 0x3E, 0x03, 0xF0, 0x00, 0x78, 0x03, 0xE0, - 0x00, 0xF0, 0x07, 0xE0, 0x1F, 0xFE, 0x0F, 0xF8, 0x7F, 0xFC, 0x1F, 0xF8, - 0xFF, 0xF8, 0x1F, 0xF1, 0xFF, 0xF0, 0x3F, 0xE1, 0xFF, 0xC0, 0x7F, 0x80, - 0x03, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0xF0, 0x01, 0xE0, 0x3E, 0x00, - 0x7C, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x01, 0xF0, 0x1E, 0x00, 0x7C, 0x07, - 0xC0, 0x0F, 0x9F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, - 0x9F, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x3F, - 0xC1, 0xFF, 0x00, 0x1F, 0xF0, 0x7F, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0x03, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0xE0, - 0x3F, 0xE0, 0x0F, 0xF8, 0x1F, 0xF0, 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xF7, - 0xC3, 0xFF, 0x00, 0x7D, 0xF1, 0xF7, 0xC0, 0x1F, 0x7C, 0xFD, 0xF0, 0x07, - 0xDF, 0xBE, 0x78, 0x01, 0xE3, 0xFF, 0x3E, 0x00, 0x78, 0xFF, 0xCF, 0x80, - 0x3E, 0x3F, 0xE3, 0xE0, 0x0F, 0x87, 0xF0, 0xF8, 0x03, 0xE1, 0xFC, 0x3C, - 0x00, 0xF0, 0x7E, 0x1F, 0x00, 0x7C, 0x1F, 0x07, 0xC0, 0x1F, 0x00, 0x01, - 0xF0, 0x07, 0xC0, 0x00, 0x78, 0x07, 0xFE, 0x01, 0xFF, 0x83, 0xFF, 0xC0, - 0xFF, 0xF0, 0xFF, 0xF0, 0x7F, 0xFC, 0x3F, 0xF8, 0x1F, 0xFE, 0x0F, 0xFC, - 0x03, 0xFF, 0x00, 0x07, 0xF8, 0x07, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, - 0xFC, 0x0F, 0xFF, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFE, 0x0F, 0xFE, 0x01, - 0xFE, 0x00, 0xF8, 0x01, 0xFF, 0x00, 0xF0, 0x01, 0xFF, 0x01, 0xF0, 0x03, - 0xFF, 0x81, 0xF0, 0x03, 0xFF, 0x81, 0xF0, 0x03, 0xEF, 0xC1, 0xF0, 0x03, - 0xCF, 0xC1, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, 0xC7, 0xE3, 0xE0, 0x07, - 0xC3, 0xF3, 0xE0, 0x07, 0xC3, 0xF3, 0xC0, 0x07, 0x81, 0xF7, 0xC0, 0x0F, - 0x81, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, 0x80, 0xFF, 0xC0, 0x0F, - 0x00, 0xFF, 0x80, 0x0F, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x7F, 0x80, 0xFF, - 0xF0, 0x3F, 0x80, 0xFF, 0xF0, 0x3F, 0x00, 0xFF, 0xF0, 0x1F, 0x00, 0x7F, - 0xE0, 0x1F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, 0x83, - 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x7E, 0x1F, 0x00, 0x07, 0xE7, 0xE0, 0x00, - 0x7C, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3E, 0xF0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, 0x07, - 0xDF, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x3E, 0x7C, 0x00, 0x0F, 0xCF, 0xC0, - 0x01, 0xF0, 0xF8, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x83, 0xFC, 0x1F, 0xE0, - 0x3F, 0xFF, 0xF8, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0x00, 0x03, 0xFF, - 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF8, - 0x07, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF0, 0x0F, - 0x80, 0x7F, 0x00, 0xF8, 0x01, 0xF0, 0x0F, 0x00, 0x1F, 0x01, 0xF0, 0x01, - 0xF0, 0x1F, 0x00, 0x1F, 0x01, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7E, 0x01, - 0xE0, 0x0F, 0xC0, 0x3F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, - 0xE0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7F, 0xFF, - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xF0, 0x00, - 0x7F, 0xFE, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x03, - 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x0F, 0xF0, 0x7F, - 0x83, 0xF8, 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x1F, 0x00, 0x07, 0xE7, 0xC0, - 0x00, 0x7D, 0xF8, 0x00, 0x0F, 0xBE, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x3F, - 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3E, 0xF8, 0x00, - 0x07, 0xDF, 0x00, 0x01, 0xFB, 0xE0, 0x00, 0x3E, 0x7E, 0x00, 0x0F, 0x8F, - 0xC0, 0x03, 0xF0, 0xFC, 0x01, 0xFC, 0x1F, 0xE0, 0xFF, 0x01, 0xFF, 0xFF, - 0xC0, 0x1F, 0xFF, 0xF0, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xF8, 0x38, 0x0F, 0xFF, 0xFF, - 0x81, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x00, 0xF0, - 0x1F, 0x80, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, - 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x00, 0x7C, 0x03, - 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x00, 0xF0, 0x01, 0xF0, - 0x0F, 0x80, 0x1F, 0x80, 0x7C, 0x01, 0xF8, 0x03, 0xE0, 0x3F, 0x80, 0x1F, - 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, - 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x1E, 0x07, 0xF0, 0x01, 0xF0, 0x1F, 0xC0, - 0x0F, 0x80, 0x7E, 0x00, 0x7C, 0x03, 0xF8, 0x03, 0xC0, 0x0F, 0xC0, 0xFF, - 0xE0, 0x7F, 0xCF, 0xFF, 0x01, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, - 0x3F, 0xDF, 0xFC, 0x01, 0xFC, 0x00, 0x0F, 0xE1, 0x80, 0x0F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xC1, 0xFC, 0x0F, - 0xE0, 0x7C, 0x01, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x03, 0xE0, - 0x03, 0xC0, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFF, 0x80, 0x01, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFE, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0xF8, 0xF8, 0x00, - 0x3E, 0x3E, 0x00, 0x1F, 0x8F, 0xC0, 0x0F, 0xC3, 0xFC, 0x0F, 0xF0, 0xFF, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x03, 0x9F, 0xFE, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF7, 0xFF, - 0xFF, 0xFD, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x9F, 0x07, 0x83, 0xE7, - 0x83, 0xE0, 0xFB, 0xE0, 0xF8, 0x3E, 0xF8, 0x3E, 0x0F, 0x3E, 0x0F, 0x07, - 0xCF, 0x07, 0xC1, 0xF3, 0x81, 0xF0, 0x38, 0x00, 0x7C, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x7C, 0x00, 0x07, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, - 0x80, 0x3F, 0xFF, 0xE0, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xF0, 0x7F, 0xE7, - 0xFF, 0x8F, 0xFF, 0x7F, 0xF9, 0xFF, 0xF7, 0xFF, 0x1F, 0xFE, 0x7F, 0xF0, - 0xFF, 0xC1, 0xE0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, - 0x3E, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xE0, 0x3C, 0x00, 0x3E, 0x07, 0xC0, - 0x03, 0xE0, 0x7C, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xC0, 0x7C, 0x00, 0x3C, - 0x07, 0x80, 0x07, 0xC0, 0xF8, 0x00, 0x7C, 0x0F, 0x80, 0x07, 0xC0, 0xF8, - 0x00, 0x78, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, - 0x00, 0xFF, 0x07, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xC0, 0x03, - 0xFF, 0xF0, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7F, 0xF0, - 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFC, 0x0F, - 0xFF, 0x7F, 0xE0, 0x3F, 0xF8, 0x7C, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0xF8, - 0x07, 0xC0, 0x03, 0xE0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x00, - 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x1F, - 0x03, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x01, 0xF0, 0xFC, 0x00, 0x07, 0xC3, - 0xE0, 0x00, 0x1F, 0x9F, 0x00, 0x00, 0x3E, 0xFC, 0x00, 0x00, 0xFB, 0xE0, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0x1E, 0x00, - 0x01, 0xE0, 0xF0, 0x7C, 0x1F, 0x0F, 0x87, 0xE0, 0xF0, 0x7C, 0x3F, 0x0F, - 0x83, 0xE3, 0xF8, 0x7C, 0x1F, 0x1F, 0xE3, 0xC0, 0xF9, 0xFF, 0x3E, 0x07, - 0xCF, 0xF9, 0xF0, 0x3E, 0xFF, 0xCF, 0x01, 0xF7, 0xBE, 0xF8, 0x0F, 0xFD, - 0xF7, 0xC0, 0x7B, 0xCF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, 0x3F, 0xE3, 0xFF, - 0x01, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x03, - 0xF8, 0x1F, 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x07, 0xF0, 0x07, 0xE0, - 0x3F, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, - 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFE, 0x07, 0xFE, 0x03, 0xFC, - 0x03, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xFE, 0x07, 0xE0, 0x00, 0x7E, - 0x1F, 0xC0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x1F, - 0xFC, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, - 0xF8, 0x00, 0x00, 0xFC, 0xFC, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x03, 0xF0, - 0x7E, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x0F, 0xC0, 0x1F, 0x80, 0x7F, 0xE0, - 0x7F, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, - 0xFF, 0xE0, 0x7F, 0xC0, 0xFF, 0xC0, 0x7F, 0xC0, 0x7F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0x80, 0xFF, 0x87, 0xC0, - 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0xC3, 0xE0, 0x01, - 0xF1, 0xF0, 0x00, 0x7E, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x00, - 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, - 0xFF, 0xC0, 0x3F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xE0, - 0x3F, 0xFF, 0xFC, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x0F, 0xC0, 0x1F, 0x03, - 0xF0, 0x03, 0xC0, 0xFC, 0x00, 0xF8, 0x3F, 0x00, 0x0E, 0x0F, 0xC0, 0x00, - 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x0E, 0x00, 0x7E, 0x03, 0xE0, 0x1F, - 0x80, 0x7C, 0x07, 0xE0, 0x0F, 0x01, 0xF8, 0x03, 0xE0, 0x7E, 0x00, 0x7C, - 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x0F, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x0F, - 0xFC, 0x07, 0xFF, 0x01, 0xFF, 0x80, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, - 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x00, 0x20, 0x03, 0xC0, 0x3E, 0x01, 0xF0, - 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x03, 0xE0, 0x1F, - 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0xF8, - 0x07, 0xC0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x00, 0xFF, 0xC0, 0x7F, - 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x03, 0xE0, 0x00, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x7F, 0xE0, 0x3F, 0xF8, - 0x0F, 0xFC, 0x03, 0xFF, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x01, - 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xF0, 0x03, - 0xFF, 0x80, 0xFF, 0xF8, 0x1F, 0xCF, 0xC3, 0xF8, 0xFE, 0x7E, 0x07, 0xEF, - 0xC0, 0x3F, 0xF8, 0x03, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xE0, 0x7F, 0xFF, - 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xEF, 0xFF, 0xFF, 0xFF, 0x00, 0x60, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, - 0x06, 0x00, 0x3F, 0xE0, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x07, 0xFF, - 0xFE, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x3E, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0x00, 0x78, 0x7C, 0x00, 0x78, 0xF8, 0x00, - 0xF8, 0xF8, 0x03, 0xF8, 0xFC, 0x0F, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, - 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFD, 0xFE, 0x0F, 0xE0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0xF0, 0xFE, 0x00, 0x0F, 0xBF, 0xFC, 0x00, 0x7F, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x00, 0xFF, 0x03, - 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x7E, 0x00, 0x3F, 0x03, 0xE0, 0x00, 0xF8, - 0x1F, 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0x7C, - 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0xC0, 0xFC, 0x00, - 0x7C, 0x0F, 0xE0, 0x07, 0xE3, 0xFF, 0xC0, 0xFE, 0x3F, 0xFF, 0xFF, 0xE1, - 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x7F, 0x9F, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, - 0xE0, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0x01, 0xFC, 0x7E, 0x00, - 0x7C, 0x7E, 0x00, 0x3E, 0x3E, 0x00, 0x0E, 0x3E, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x0C, 0x7F, 0x80, 0x3F, 0x1F, - 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x00, - 0x0F, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0x87, 0xC0, 0x0F, - 0xFF, 0x7C, 0x03, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0x81, 0xFC, 0x0F, 0xF8, 0x3F, 0x00, 0x3F, 0x83, 0xE0, 0x01, 0xF0, 0x7C, - 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x0F, 0x80, 0x01, - 0xF0, 0xF8, 0x00, 0x1E, 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, - 0xC0, 0x07, 0xE0, 0xFC, 0x00, 0xFE, 0x07, 0xF0, 0x3F, 0xF8, 0x7F, 0xFF, - 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0xC0, 0xFF, 0xE7, 0xF8, - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xF0, 0x03, 0xFF, - 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x1F, 0xE0, 0x7E, 0x3F, 0x80, - 0x1F, 0x3F, 0x00, 0x0F, 0x7E, 0x00, 0x0F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x1C, 0x7F, 0x01, 0xFE, 0x7F, 0xFF, - 0xFE, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, - 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x01, 0xF0, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x0F, 0xFE, 0xFF, 0x03, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF1, 0xFC, 0x1F, 0xFE, 0x3F, 0x80, 0x7F, 0x03, 0xE0, - 0x03, 0xF0, 0x7E, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0x3E, - 0x0F, 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x3E, 0x0F, 0x80, 0x03, 0xC0, 0xF8, - 0x00, 0x7C, 0x0F, 0xC0, 0x0F, 0xC0, 0xFC, 0x01, 0xFC, 0x07, 0xF0, 0x7F, - 0x80, 0x7F, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF8, 0x00, - 0xFF, 0xEF, 0x80, 0x03, 0xF0, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xF0, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xFF, 0xE0, 0x03, 0xFF, 0xFC, 0x00, - 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x03, - 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x79, 0xFF, 0x80, 0x1E, 0xFF, 0xF0, 0x0F, - 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, - 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, - 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, - 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, - 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, - 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, - 0x3F, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x3F, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x07, - 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, - 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, - 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, - 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xC0, 0x0F, - 0xFC, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x3F, 0xF0, - 0x1F, 0x1F, 0xFC, 0x07, 0xC7, 0xFF, 0x01, 0xF1, 0xFF, 0xC0, 0x78, 0x7F, - 0xE0, 0x1E, 0x7F, 0x80, 0x0F, 0xBF, 0x80, 0x03, 0xFF, 0xC0, 0x00, 0xFF, - 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xFC, 0x00, 0x07, 0xFF, 0x80, 0x01, - 0xF7, 0xF0, 0x00, 0x7C, 0xFE, 0x00, 0x1E, 0x1F, 0xC0, 0x0F, 0x83, 0xF8, - 0x1F, 0xE0, 0xFF, 0xEF, 0xF8, 0x3F, 0xFB, 0xFE, 0x1F, 0xFE, 0xFF, 0x07, - 0xFF, 0x9F, 0xC0, 0xFF, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x03, - 0xFF, 0x80, 0x07, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x7F, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x00, 0x00, 0x07, 0x81, 0xE0, - 0x3F, 0xBF, 0x9F, 0xE1, 0xFF, 0xFE, 0xFF, 0x87, 0xFF, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFF, 0xFC, 0x7F, 0xC7, 0xF1, 0xF0, 0x7E, 0x1F, 0x87, 0xC1, 0xF0, - 0x7C, 0x1F, 0x07, 0x81, 0xE0, 0x7C, 0x1E, 0x0F, 0x81, 0xE0, 0xF8, 0x3E, - 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3C, 0x0F, 0x03, - 0xC1, 0xF0, 0x7C, 0x0F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF1, - 0xFE, 0x1F, 0x87, 0xEF, 0xFC, 0x7F, 0x1F, 0xFF, 0xF3, 0xFC, 0x7F, 0xFF, - 0xCF, 0xF3, 0xFF, 0xFE, 0x3F, 0x8F, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF9, - 0xFF, 0x80, 0xFE, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x83, - 0xFF, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x1F, 0x80, 0x3E, 0x07, 0xC0, 0x0F, - 0x81, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0xF0, 0x1E, 0x00, 0x7C, 0x0F, 0x80, - 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x3C, 0x00, 0xF8, 0x0F, - 0x00, 0x3E, 0x1F, 0xF8, 0x3F, 0xEF, 0xFE, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, - 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0xFF, - 0x03, 0xF8, 0xFE, 0x00, 0xFE, 0x7C, 0x00, 0x3F, 0x7C, 0x00, 0x0F, 0xBE, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0xFB, 0xE0, 0x00, 0xFD, 0xF8, 0x00, 0x7C, 0xFE, 0x00, 0xFE, - 0x3F, 0x81, 0xFE, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, - 0x00, 0x7F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x07, - 0xF9, 0xFF, 0xC0, 0x1F, 0xF7, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xC0, 0x7F, - 0xFF, 0xFF, 0xC0, 0x7F, 0xF0, 0x3F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0x7E, - 0x00, 0x3F, 0x00, 0xF8, 0x00, 0x3E, 0x01, 0xF0, 0x00, 0x7C, 0x03, 0xC0, - 0x00, 0xF8, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x07, 0xE0, 0x3E, 0x00, - 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x01, 0xFC, 0x00, 0xFC, 0x03, 0xFE, 0x07, - 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0x80, 0x1E, 0xFF, 0xFC, - 0x00, 0x7C, 0xFF, 0xF0, 0x00, 0xF8, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x07, 0xFF, 0x3F, 0xC0, 0xFF, 0xFD, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, - 0xFF, 0xFF, 0x8F, 0xE0, 0x7F, 0xF8, 0xFC, 0x00, 0xFE, 0x07, 0xC0, 0x03, - 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0xF8, 0x1E, 0x00, 0x07, 0xC1, - 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x01, 0xE0, 0x7C, 0x00, 0x1F, 0x03, 0xF0, - 0x01, 0xF8, 0x1F, 0x80, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x03, 0xFF, 0xFF, - 0xE0, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xE7, 0xC0, - 0x01, 0xFC, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x7F, - 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0x0F, 0x80, 0x3F, 0xC3, 0xFE, 0x07, 0xFC, 0xFF, 0xE0, - 0x7F, 0xDF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0x1C, 0x00, 0x7F, - 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, - 0xFF, 0xF0, 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xCE, 0x03, 0xFF, 0xFC, - 0x0F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC3, 0xF8, 0x0F, 0x87, - 0xC0, 0x0E, 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xFF, 0x80, 0x3F, - 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, - 0x3F, 0x1C, 0x00, 0x3E, 0x7C, 0x00, 0x7C, 0xFC, 0x03, 0xF3, 0xFF, 0xFF, - 0xE7, 0xFF, 0xFF, 0x8F, 0xFF, 0xFE, 0x1F, 0xFF, 0xF0, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, - 0x80, 0x00, 0x78, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE1, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, - 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, - 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0xF7, 0xFF, - 0xFF, 0x7F, 0xFF, 0xF3, 0xFF, 0xFE, 0x1F, 0xFF, 0x80, 0x7F, 0x80, 0x7F, - 0x01, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, - 0x3F, 0xC7, 0xC0, 0x07, 0x8F, 0x80, 0x1F, 0x3E, 0x00, 0x3E, 0x7C, 0x00, - 0x7C, 0xF8, 0x00, 0xF1, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x0F, - 0x8F, 0x80, 0x1F, 0x1F, 0x00, 0x7C, 0x3E, 0x01, 0xF8, 0x7E, 0x0F, 0xFC, - 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF1, 0xFF, 0xEF, 0xE1, 0xFF, 0xBF, 0x80, - 0xFC, 0x00, 0x00, 0x7F, 0xF0, 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, - 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xE1, 0xF8, 0x03, 0xE0, - 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x0F, 0x80, 0xF8, 0x00, 0xFC, - 0x1F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xE7, 0xE0, - 0x00, 0x3E, 0x7C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x03, - 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, 0xEF, 0xFC, 0x03, 0xFF, - 0xFF, 0xC0, 0x7F, 0xFF, 0xFC, 0x07, 0xFE, 0x7F, 0x80, 0x3F, 0xC3, 0xE1, - 0xF0, 0xF8, 0x3E, 0x3F, 0x0F, 0x03, 0xE3, 0xF1, 0xF0, 0x3E, 0x7F, 0x1E, - 0x03, 0xE7, 0xF3, 0xE0, 0x3E, 0xFF, 0xBC, 0x03, 0xFF, 0xFF, 0xC0, 0x3F, - 0xFF, 0xFC, 0x03, 0xFE, 0xFF, 0x80, 0x3F, 0xEF, 0xF8, 0x03, 0xFC, 0xFF, - 0x00, 0x3F, 0x8F, 0xF0, 0x03, 0xF8, 0x7E, 0x00, 0x3F, 0x07, 0xE0, 0x01, - 0xF0, 0x7C, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x03, 0xFE, 0x0F, 0xF8, 0x3F, - 0xF0, 0xFF, 0xC1, 0xFF, 0x8F, 0xFE, 0x0F, 0xFC, 0x7F, 0xF0, 0x7F, 0xC1, - 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, - 0x00, 0x3F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xE3, - 0xF8, 0x00, 0xFE, 0x0F, 0xE0, 0x3F, 0xE0, 0x7F, 0xC3, 0xFF, 0x87, 0xFF, - 0x3F, 0xFC, 0x7F, 0xF9, 0xFF, 0xE3, 0xFF, 0x87, 0xFE, 0x0F, 0xF8, 0x00, - 0x01, 0xFE, 0x03, 0xFE, 0x03, 0xFF, 0x07, 0xFF, 0x07, 0xFF, 0x07, 0xFF, - 0x07, 0xFF, 0x07, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x01, 0xF8, 0x01, 0xF0, - 0x00, 0xF8, 0x03, 0xF0, 0x00, 0xF8, 0x03, 0xE0, 0x00, 0xFC, 0x07, 0xC0, - 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x7E, 0x1F, 0x00, - 0x00, 0x7E, 0x3E, 0x00, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x3E, 0x7C, 0x00, - 0x00, 0x3F, 0xF8, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, - 0x07, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, - 0xE0, 0xFF, 0xFF, 0xE0, 0x7C, 0x0F, 0xE0, 0x3C, 0x0F, 0xE0, 0x1E, 0x0F, - 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, - 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0xF0, 0x3F, - 0x00, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0x80, 0x00, 0x0F, 0x00, 0x1F, 0xC0, 0x1F, - 0xE0, 0x1F, 0xF0, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x3F, 0xC0, 0x1F, 0xC0, - 0x0F, 0xE0, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, - 0x80, 0x07, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, - 0x7E, 0x00, 0x3F, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3E, - 0x07, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x0F, - 0x03, 0xE0, 0x7C, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x3E, 0x07, 0xC0, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, - 0xC0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0xC0, - 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, - 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x1F, 0x80, 0x7F, - 0xC0, 0x7F, 0xC0, 0x3F, 0xC0, 0x1F, 0xC0, 0x07, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xE0, 0x39, 0xFF, 0xE0, 0xF7, 0xFF, 0xE7, - 0xFF, 0xCF, 0xFF, 0xFE, 0x0F, 0xFF, 0x38, 0x0F, 0xFC, 0x00, 0x0F, 0xE0, - 0x00, 0x0F, 0x80 }; - -const GFXglyph FreeMonoBoldOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 12, 31, 28, 12, -29 }, // 0x21 '!' - { 47, 17, 14, 28, 11, -28 }, // 0x22 '"' - { 77, 24, 34, 28, 5, -30 }, // 0x23 '#' - { 179, 25, 38, 28, 4, -31 }, // 0x24 '$' - { 298, 22, 30, 28, 6, -28 }, // 0x25 '%' - { 381, 21, 28, 28, 5, -26 }, // 0x26 '&' - { 455, 7, 14, 28, 16, -28 }, // 0x27 ''' - { 468, 14, 37, 28, 14, -29 }, // 0x28 '(' - { 533, 14, 37, 28, 5, -29 }, // 0x29 ')' - { 598, 21, 19, 28, 8, -28 }, // 0x2A '*' - { 648, 24, 26, 28, 5, -25 }, // 0x2B '+' - { 726, 12, 14, 28, 6, -6 }, // 0x2C ',' - { 747, 24, 5, 28, 5, -15 }, // 0x2D '-' - { 762, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 768, 28, 38, 28, 3, -32 }, // 0x2F '/' - { 901, 23, 31, 28, 6, -29 }, // 0x30 '0' - { 991, 21, 30, 28, 4, -29 }, // 0x31 '1' - { 1070, 26, 30, 28, 3, -29 }, // 0x32 '2' - { 1168, 25, 31, 28, 4, -29 }, // 0x33 '3' - { 1265, 22, 28, 28, 5, -27 }, // 0x34 '4' - { 1342, 25, 31, 28, 4, -29 }, // 0x35 '5' - { 1439, 24, 31, 28, 7, -29 }, // 0x36 '6' - { 1532, 22, 30, 28, 9, -29 }, // 0x37 '7' - { 1615, 23, 31, 28, 6, -29 }, // 0x38 '8' - { 1705, 24, 31, 28, 5, -29 }, // 0x39 '9' - { 1798, 10, 22, 28, 11, -20 }, // 0x3A ':' - { 1826, 15, 28, 28, 5, -20 }, // 0x3B ';' - { 1879, 25, 21, 28, 5, -23 }, // 0x3C '<' - { 1945, 26, 14, 28, 4, -19 }, // 0x3D '=' - { 1991, 25, 22, 28, 4, -23 }, // 0x3E '>' - { 2060, 19, 29, 28, 10, -27 }, // 0x3F '?' - { 2129, 23, 36, 28, 5, -28 }, // 0x40 '@' - { 2233, 30, 27, 28, 0, -26 }, // 0x41 'A' - { 2335, 29, 27, 28, 1, -26 }, // 0x42 'B' - { 2433, 28, 29, 28, 3, -27 }, // 0x43 'C' - { 2535, 28, 27, 28, 1, -26 }, // 0x44 'D' - { 2630, 29, 27, 28, 1, -26 }, // 0x45 'E' - { 2728, 31, 27, 28, 0, -26 }, // 0x46 'F' - { 2833, 28, 29, 28, 3, -27 }, // 0x47 'G' - { 2935, 30, 27, 28, 1, -26 }, // 0x48 'H' - { 3037, 25, 27, 28, 3, -26 }, // 0x49 'I' - { 3122, 31, 28, 28, 0, -26 }, // 0x4A 'J' - { 3231, 31, 27, 28, 0, -26 }, // 0x4B 'K' - { 3336, 27, 27, 28, 1, -26 }, // 0x4C 'L' - { 3428, 34, 27, 28, 0, -26 }, // 0x4D 'M' - { 3543, 32, 27, 28, 1, -26 }, // 0x4E 'N' - { 3651, 27, 29, 28, 3, -27 }, // 0x4F 'O' - { 3749, 28, 27, 28, 1, -26 }, // 0x50 'P' - { 3844, 27, 35, 28, 3, -27 }, // 0x51 'Q' - { 3963, 29, 27, 28, 0, -26 }, // 0x52 'R' - { 4061, 26, 29, 28, 3, -27 }, // 0x53 'S' - { 4156, 26, 27, 28, 4, -26 }, // 0x54 'T' - { 4244, 28, 28, 28, 4, -26 }, // 0x55 'U' - { 4342, 30, 27, 28, 2, -26 }, // 0x56 'V' - { 4444, 29, 27, 28, 3, -26 }, // 0x57 'W' - { 4542, 32, 27, 28, 0, -26 }, // 0x58 'X' - { 4650, 26, 27, 28, 4, -26 }, // 0x59 'Y' - { 4738, 27, 27, 28, 2, -26 }, // 0x5A 'Z' - { 4830, 18, 37, 28, 10, -29 }, // 0x5B '[' - { 4914, 13, 38, 28, 10, -32 }, // 0x5C '\' - { 4976, 18, 37, 28, 5, -29 }, // 0x5D ']' - { 5060, 20, 15, 28, 8, -29 }, // 0x5E '^' - { 5098, 29, 5, 28, -2, 5 }, // 0x5F '_' - { 5117, 8, 8, 28, 13, -30 }, // 0x60 '`' - { 5125, 24, 23, 28, 3, -21 }, // 0x61 'a' - { 5194, 29, 31, 28, 0, -29 }, // 0x62 'b' - { 5307, 25, 23, 28, 3, -21 }, // 0x63 'c' - { 5379, 28, 31, 28, 3, -29 }, // 0x64 'd' - { 5488, 24, 23, 28, 3, -21 }, // 0x65 'e' - { 5557, 28, 30, 28, 4, -29 }, // 0x66 'f' - { 5662, 28, 31, 28, 3, -21 }, // 0x67 'g' - { 5771, 26, 30, 28, 2, -29 }, // 0x68 'h' - { 5869, 23, 29, 28, 3, -28 }, // 0x69 'i' - { 5953, 23, 38, 28, 3, -28 }, // 0x6A 'j' - { 6063, 26, 30, 28, 2, -29 }, // 0x6B 'k' - { 6161, 23, 30, 28, 3, -29 }, // 0x6C 'l' - { 6248, 30, 22, 28, 0, -21 }, // 0x6D 'm' - { 6331, 26, 22, 28, 2, -21 }, // 0x6E 'n' - { 6403, 25, 23, 28, 3, -21 }, // 0x6F 'o' - { 6475, 31, 31, 28, -1, -21 }, // 0x70 'p' - { 6596, 29, 31, 28, 2, -21 }, // 0x71 'q' - { 6709, 28, 22, 28, 2, -21 }, // 0x72 'r' - { 6786, 23, 23, 28, 4, -21 }, // 0x73 's' - { 6853, 20, 28, 28, 5, -26 }, // 0x74 't' - { 6923, 23, 22, 28, 5, -20 }, // 0x75 'u' - { 6987, 28, 21, 28, 3, -20 }, // 0x76 'v' - { 7061, 28, 21, 28, 3, -20 }, // 0x77 'w' - { 7135, 29, 21, 28, 1, -20 }, // 0x78 'x' - { 7212, 32, 30, 28, -1, -20 }, // 0x79 'y' - { 7332, 25, 21, 28, 4, -20 }, // 0x7A 'z' - { 7398, 17, 37, 28, 10, -29 }, // 0x7B '{' - { 7477, 11, 36, 28, 11, -28 }, // 0x7C '|' - { 7527, 17, 37, 28, 6, -29 }, // 0x7D '}' - { 7606, 23, 10, 28, 5, -17 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique24pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique24pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 8307 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h deleted file mode 100644 index b530723a3..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h +++ /dev/null @@ -1,203 +0,0 @@ -const uint8_t FreeMonoBoldOblique9pt7bBitmaps[] PROGMEM = { - 0x39, 0xCC, 0x67, 0x31, 0x8C, 0x07, 0x38, 0x6C, 0xD9, 0x36, 0x48, 0x80, - 0x09, 0x0D, 0x86, 0xCF, 0xF7, 0xF9, 0xB3, 0xFD, 0xFE, 0x6C, 0x36, 0x1B, - 0x00, 0x00, 0x06, 0x07, 0x07, 0xE6, 0x33, 0x01, 0xE0, 0x7C, 0x06, 0x43, - 0x33, 0xBF, 0x83, 0x03, 0x00, 0x80, 0x1C, 0x11, 0x10, 0x88, 0x83, 0xB8, - 0xF3, 0xB8, 0x22, 0x21, 0x11, 0x07, 0x00, 0x0F, 0x1F, 0x30, 0x30, 0x38, - 0x7B, 0xDF, 0xCE, 0xFF, 0x7E, 0xFA, 0x80, 0x19, 0x8C, 0xC6, 0x63, 0x18, - 0xC6, 0x31, 0xC6, 0x30, 0x31, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0x98, 0xCC, - 0x40, 0x08, 0x08, 0xFF, 0xFF, 0x38, 0x6C, 0x6C, 0x0C, 0x06, 0x03, 0x1F, - 0xFF, 0xF8, 0xC0, 0x60, 0x30, 0x10, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0xFF, - 0xC0, 0xFC, 0x00, 0x00, 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, - 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x00, 0x0F, - 0x0F, 0xCC, 0x6C, 0x36, 0x1B, 0x0D, 0x05, 0x86, 0xC3, 0x63, 0x3F, 0x8F, - 0x00, 0x06, 0x1C, 0x3C, 0x6C, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x18, 0xFE, - 0xFE, 0x07, 0x83, 0xF1, 0x8C, 0x43, 0x00, 0xC0, 0xE0, 0x70, 0x38, 0x38, - 0x1C, 0x6F, 0xF3, 0xFC, 0x1F, 0x1F, 0xC0, 0x60, 0x30, 0x30, 0x70, 0x38, - 0x06, 0x03, 0x03, 0xBF, 0x9F, 0x80, 0x03, 0x07, 0x0B, 0x1B, 0x32, 0x66, - 0xFF, 0xFF, 0x1E, 0x1E, 0x3F, 0x9F, 0x98, 0x0F, 0xC7, 0xF3, 0x18, 0x0C, - 0x06, 0x06, 0x7F, 0x1E, 0x00, 0x07, 0x87, 0xCE, 0x06, 0x06, 0x03, 0xF3, - 0xFD, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0xFF, 0xFF, 0xC3, 0x06, 0x06, - 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, 0x1F, 0x1F, 0xDC, 0x6C, 0x36, 0x31, - 0xF1, 0xF8, 0xC6, 0xC3, 0x63, 0xBF, 0x8F, 0x80, 0x1E, 0x3F, 0x33, 0x63, - 0x63, 0x67, 0x7F, 0x3E, 0x06, 0x1C, 0xF8, 0xF0, 0x77, 0x00, 0x00, 0xEE, - 0x1C, 0x70, 0x00, 0x00, 0x03, 0x0C, 0x61, 0x08, 0x00, 0x00, 0xC1, 0xE1, - 0xE1, 0xE0, 0xF0, 0x07, 0x00, 0xF0, 0x0C, 0x7F, 0xDF, 0xF0, 0x00, 0x00, - 0x7F, 0xFF, 0xF0, 0x30, 0x0F, 0x00, 0xE0, 0x1E, 0x07, 0xC7, 0x87, 0x83, - 0x00, 0x7D, 0xFF, 0x18, 0x30, 0xE3, 0x9C, 0x30, 0x01, 0xC3, 0x80, 0x0F, - 0x0F, 0xCC, 0x6C, 0x36, 0x72, 0x79, 0x7D, 0xB6, 0xDA, 0x6F, 0xB3, 0xD8, - 0x0C, 0x07, 0xE1, 0xE0, 0x0F, 0x83, 0xF0, 0x1E, 0x03, 0xC0, 0xD8, 0x31, - 0x87, 0xF1, 0xFE, 0x30, 0xDF, 0x3F, 0xC7, 0x80, 0x3F, 0xC7, 0xFC, 0x61, - 0x8C, 0x31, 0xFC, 0x3F, 0x84, 0x19, 0x83, 0x30, 0x6F, 0xFB, 0xFE, 0x00, - 0x0F, 0xF1, 0xFF, 0x30, 0x66, 0x06, 0x60, 0x0C, 0x00, 0xC0, 0x0C, 0x00, - 0xE0, 0xC7, 0xF8, 0x3F, 0x00, 0x3F, 0x87, 0xF8, 0x63, 0x8C, 0x31, 0x06, - 0x60, 0xCC, 0x19, 0x86, 0x31, 0xCF, 0xF3, 0xF8, 0x00, 0x3F, 0xE3, 0xFE, - 0x18, 0x61, 0xB6, 0x1F, 0x01, 0xF0, 0x32, 0x03, 0x00, 0x30, 0x4F, 0xFC, - 0xFF, 0xC0, 0x3F, 0xF3, 0xFE, 0x18, 0x61, 0xB6, 0x1F, 0x03, 0xF0, 0x32, - 0x03, 0x00, 0x30, 0x0F, 0xC0, 0xFC, 0x00, 0x0F, 0xE3, 0xFC, 0xC1, 0x30, - 0x06, 0x01, 0x80, 0x31, 0xF6, 0x3E, 0xE1, 0x9F, 0xF0, 0xF8, 0x00, 0x1E, - 0xF3, 0xCF, 0x18, 0x61, 0x84, 0x10, 0xC3, 0xFC, 0x3F, 0xC3, 0x08, 0x31, - 0x8F, 0xBC, 0xFB, 0xC0, 0x3F, 0xCF, 0xF0, 0x60, 0x10, 0x0C, 0x03, 0x00, - 0xC0, 0x20, 0x18, 0x3F, 0xCF, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x80, 0x18, - 0x01, 0x80, 0x18, 0x61, 0x84, 0x10, 0xC3, 0x0F, 0xE0, 0x7C, 0x00, 0x3E, - 0xE7, 0xFC, 0x66, 0x0D, 0x81, 0x60, 0x7C, 0x0E, 0xC1, 0x98, 0x31, 0x1F, - 0x3B, 0xE7, 0x00, 0x3F, 0x07, 0xE0, 0x30, 0x06, 0x00, 0xC0, 0x10, 0x06, - 0x00, 0xC3, 0x18, 0x6F, 0xFB, 0xFF, 0x00, 0x38, 0x39, 0xC3, 0xC7, 0x3C, - 0x79, 0xE3, 0xDA, 0x1F, 0xF0, 0x9D, 0x8C, 0xCC, 0x60, 0x67, 0xCF, 0x3C, - 0x78, 0x3C, 0xF9, 0xE7, 0x87, 0x18, 0x3C, 0xC1, 0x66, 0x1B, 0xB0, 0xCD, - 0x06, 0x78, 0x31, 0xC3, 0xCE, 0x3E, 0x30, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, - 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, 0x9F, 0xC3, 0xC0, 0x3F, 0xC7, 0xFC, - 0x61, 0x8C, 0x31, 0x8E, 0x3F, 0x87, 0xE1, 0x80, 0x30, 0x0F, 0xC3, 0xF0, - 0x00, 0x0F, 0x0F, 0xE7, 0x1D, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x06, 0xE3, - 0x1F, 0xC3, 0xC0, 0x80, 0x7F, 0x3F, 0xC0, 0x3F, 0xC3, 0xFE, 0x18, 0x61, - 0x86, 0x10, 0xE3, 0xFC, 0x3F, 0x83, 0x18, 0x31, 0xCF, 0x8F, 0xF8, 0x70, - 0x1E, 0xCF, 0xF7, 0x19, 0x80, 0x70, 0x1F, 0x81, 0xF3, 0x0C, 0xC3, 0x3F, - 0x8B, 0xC0, 0x7F, 0xCF, 0xF9, 0x93, 0x66, 0x60, 0xC0, 0x18, 0x02, 0x00, - 0xC0, 0x18, 0x0F, 0xC1, 0xF8, 0x00, 0xF9, 0xFF, 0x7D, 0x83, 0x30, 0x64, - 0x09, 0x83, 0x30, 0x66, 0x0C, 0xE3, 0x0F, 0xC0, 0xF0, 0x00, 0xF9, 0xFE, - 0x3D, 0x83, 0x30, 0xC6, 0x30, 0xE6, 0x0D, 0x81, 0xB0, 0x3C, 0x07, 0x00, - 0x60, 0x00, 0xF9, 0xFF, 0x3D, 0x83, 0x36, 0x64, 0xC8, 0xBF, 0x35, 0xE7, - 0xB8, 0xE7, 0x1C, 0xE3, 0x18, 0x00, 0x3C, 0xF3, 0xCF, 0x1C, 0xC0, 0xD8, - 0x0F, 0x00, 0x60, 0x0F, 0x01, 0xB8, 0x31, 0x8F, 0x3C, 0xF3, 0xC0, 0x79, - 0xEE, 0x38, 0xC6, 0x19, 0x81, 0xE0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x0F, - 0xC3, 0xF8, 0x00, 0x3F, 0xCF, 0xF3, 0x18, 0xCC, 0x06, 0x03, 0x01, 0x80, - 0xC6, 0x61, 0xBF, 0xCF, 0xF0, 0x1E, 0x3C, 0xC1, 0x83, 0x06, 0x08, 0x30, - 0x60, 0xC1, 0x06, 0x0F, 0x1E, 0x00, 0x06, 0x31, 0x86, 0x31, 0x8C, 0x31, - 0x8C, 0x61, 0x8C, 0x60, 0x1E, 0x78, 0x30, 0x60, 0xC1, 0x86, 0x0C, 0x18, - 0x30, 0x41, 0x8F, 0x1E, 0x00, 0x08, 0x1C, 0x3C, 0x76, 0xE7, 0xC3, 0x7F, - 0xFF, 0xFC, 0x88, 0x80, 0x0F, 0x07, 0xE1, 0xF9, 0xFE, 0xE3, 0x30, 0xCF, - 0xFD, 0xFF, 0x38, 0x07, 0x00, 0x60, 0x0F, 0xC1, 0xFC, 0x71, 0xCC, 0x19, - 0x83, 0x30, 0xDF, 0xFB, 0xBC, 0x00, 0x1F, 0xCF, 0xF6, 0x1B, 0x00, 0xC0, - 0x30, 0x0F, 0xF1, 0xF8, 0x01, 0xE0, 0x38, 0x03, 0x0F, 0x63, 0xFC, 0xC3, - 0x30, 0x66, 0x0C, 0xC3, 0x9F, 0xF9, 0xF7, 0x00, 0x1F, 0x1F, 0xD8, 0x3F, - 0xFF, 0xFE, 0x1B, 0xFC, 0xF8, 0x07, 0xC3, 0xF1, 0x81, 0xFE, 0x7F, 0x84, - 0x03, 0x00, 0xC0, 0x30, 0x3F, 0x8F, 0xE0, 0x1E, 0xE7, 0xFD, 0x86, 0x60, - 0xCC, 0x19, 0xC6, 0x3F, 0xC1, 0xD8, 0x03, 0x00, 0xE1, 0xF8, 0x3E, 0x00, - 0x38, 0x1E, 0x01, 0x00, 0xDC, 0x3F, 0x8C, 0x62, 0x19, 0x84, 0x63, 0x3D, - 0xFF, 0x7C, 0x06, 0x03, 0x00, 0x03, 0xC3, 0xE0, 0x20, 0x30, 0x18, 0x0C, - 0x3F, 0xFF, 0xE0, 0x01, 0x81, 0x80, 0x07, 0xF3, 0xF8, 0x0C, 0x04, 0x06, - 0x03, 0x01, 0x80, 0xC0, 0x40, 0x67, 0xE3, 0xE0, 0x38, 0x0E, 0x01, 0x80, - 0x4F, 0x37, 0xCF, 0x83, 0xC0, 0xF0, 0x26, 0x39, 0xEE, 0x78, 0x1F, 0x0F, - 0x01, 0x80, 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x3F, 0xFF, 0xE0, 0x7E, - 0xE7, 0xFF, 0x33, 0x32, 0x63, 0x66, 0x36, 0x62, 0xF7, 0x7F, 0x67, 0x77, - 0x8F, 0xF8, 0xC3, 0x10, 0x66, 0x08, 0xC3, 0x3C, 0x7F, 0x8F, 0x1F, 0x0F, - 0xE6, 0x1F, 0x03, 0xC0, 0xF8, 0x67, 0xF0, 0xF8, 0x3F, 0xE3, 0xFF, 0x1C, - 0x31, 0x83, 0x18, 0x31, 0x86, 0x3F, 0xE3, 0x78, 0x30, 0x03, 0x00, 0xFC, - 0x0F, 0x80, 0x1E, 0xEF, 0xFD, 0x86, 0x60, 0xCC, 0x19, 0xC7, 0x3F, 0xE1, - 0xE8, 0x03, 0x00, 0x60, 0x3E, 0x07, 0xC0, 0x39, 0xDF, 0xF1, 0xC0, 0x60, - 0x10, 0x0C, 0x0F, 0xF3, 0xF8, 0x1F, 0x7F, 0x63, 0x7E, 0x1F, 0xC3, 0xFE, - 0xFC, 0x10, 0x08, 0x0C, 0x1F, 0xEF, 0xF1, 0x80, 0x80, 0xC0, 0x60, 0x3F, - 0x8F, 0x80, 0xF3, 0xFC, 0xF6, 0x09, 0x86, 0x61, 0x98, 0xE7, 0xF8, 0xFE, - 0xFB, 0xFF, 0x7C, 0xC6, 0x19, 0x83, 0x60, 0x6C, 0x07, 0x00, 0xC0, 0xF1, - 0xFE, 0x3D, 0xB3, 0x37, 0xC7, 0xF8, 0xEE, 0x1D, 0xC3, 0x30, 0x79, 0xEF, - 0x38, 0xEE, 0x0F, 0x01, 0xE0, 0x6E, 0x3C, 0xE7, 0xBC, 0x3C, 0xF3, 0x8F, - 0x18, 0xC1, 0x9C, 0x19, 0x81, 0xF0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, - 0xFC, 0x0F, 0xC0, 0x7F, 0xBF, 0xD9, 0xC1, 0x83, 0x83, 0x1B, 0xFD, 0xFE, - 0x06, 0x1C, 0x60, 0xC1, 0x86, 0x3C, 0x70, 0x30, 0x41, 0x83, 0x07, 0x06, - 0x00, 0x33, 0x32, 0x26, 0x66, 0x44, 0xCC, 0xC8, 0x0C, 0x0E, 0x04, 0x0C, - 0x0C, 0x0C, 0x0F, 0x0F, 0x18, 0x18, 0x10, 0x30, 0xF0, 0xE0, 0x38, 0x7C, - 0xF7, 0xC1, 0xC0 }; - -const GFXglyph FreeMonoBoldOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 5, 11, 11, 4, -10 }, // 0x21 '!' - { 7, 7, 5, 11, 4, -10 }, // 0x22 '"' - { 12, 9, 12, 11, 2, -10 }, // 0x23 '#' - { 26, 9, 14, 11, 2, -11 }, // 0x24 '$' - { 42, 9, 11, 11, 2, -10 }, // 0x25 '%' - { 55, 8, 10, 11, 2, -9 }, // 0x26 '&' - { 65, 2, 5, 11, 6, -10 }, // 0x27 ''' - { 67, 5, 14, 11, 5, -10 }, // 0x28 '(' - { 76, 5, 14, 11, 2, -10 }, // 0x29 ')' - { 85, 8, 7, 11, 3, -10 }, // 0x2A '*' - { 92, 9, 9, 11, 2, -8 }, // 0x2B '+' - { 103, 4, 5, 11, 2, -1 }, // 0x2C ',' - { 106, 9, 2, 11, 2, -5 }, // 0x2D '-' - { 109, 3, 2, 11, 4, -1 }, // 0x2E '.' - { 110, 11, 15, 11, 1, -12 }, // 0x2F '/' - { 131, 9, 12, 11, 2, -11 }, // 0x30 '0' - { 145, 8, 12, 11, 2, -11 }, // 0x31 '1' - { 157, 10, 12, 11, 1, -11 }, // 0x32 '2' - { 172, 9, 12, 11, 2, -11 }, // 0x33 '3' - { 186, 8, 10, 11, 2, -9 }, // 0x34 '4' - { 196, 9, 11, 11, 3, -10 }, // 0x35 '5' - { 209, 9, 12, 11, 3, -11 }, // 0x36 '6' - { 223, 8, 11, 11, 3, -10 }, // 0x37 '7' - { 234, 9, 12, 11, 2, -11 }, // 0x38 '8' - { 248, 8, 12, 11, 3, -11 }, // 0x39 '9' - { 260, 4, 8, 11, 4, -7 }, // 0x3A ':' - { 264, 6, 11, 11, 2, -7 }, // 0x3B ';' - { 273, 10, 8, 11, 2, -8 }, // 0x3C '<' - { 283, 10, 6, 11, 1, -7 }, // 0x3D '=' - { 291, 10, 8, 11, 1, -8 }, // 0x3E '>' - { 301, 7, 11, 11, 4, -10 }, // 0x3F '?' - { 311, 9, 15, 11, 2, -11 }, // 0x40 '@' - { 328, 11, 11, 11, 0, -10 }, // 0x41 'A' - { 344, 11, 11, 11, 0, -10 }, // 0x42 'B' - { 360, 12, 11, 11, 1, -10 }, // 0x43 'C' - { 377, 11, 11, 11, 0, -10 }, // 0x44 'D' - { 393, 12, 11, 11, 0, -10 }, // 0x45 'E' - { 410, 12, 11, 11, 0, -10 }, // 0x46 'F' - { 427, 11, 11, 11, 1, -10 }, // 0x47 'G' - { 443, 12, 11, 11, 0, -10 }, // 0x48 'H' - { 460, 10, 11, 11, 1, -10 }, // 0x49 'I' - { 474, 12, 11, 11, 0, -10 }, // 0x4A 'J' - { 491, 11, 11, 11, 0, -10 }, // 0x4B 'K' - { 507, 11, 11, 11, 0, -10 }, // 0x4C 'L' - { 523, 13, 11, 11, 0, -10 }, // 0x4D 'M' - { 541, 13, 11, 11, 0, -10 }, // 0x4E 'N' - { 559, 10, 11, 11, 1, -10 }, // 0x4F 'O' - { 573, 11, 11, 11, 0, -10 }, // 0x50 'P' - { 589, 10, 14, 11, 1, -10 }, // 0x51 'Q' - { 607, 12, 11, 11, 0, -10 }, // 0x52 'R' - { 624, 10, 11, 11, 2, -10 }, // 0x53 'S' - { 638, 11, 11, 11, 1, -10 }, // 0x54 'T' - { 654, 11, 11, 11, 1, -10 }, // 0x55 'U' - { 670, 11, 11, 11, 1, -10 }, // 0x56 'V' - { 686, 11, 11, 11, 1, -10 }, // 0x57 'W' - { 702, 12, 11, 11, 0, -10 }, // 0x58 'X' - { 719, 11, 11, 11, 1, -10 }, // 0x59 'Y' - { 735, 10, 11, 11, 1, -10 }, // 0x5A 'Z' - { 749, 7, 14, 11, 4, -10 }, // 0x5B '[' - { 762, 5, 15, 11, 4, -12 }, // 0x5C '\' - { 772, 7, 14, 11, 2, -10 }, // 0x5D ']' - { 785, 8, 6, 11, 3, -11 }, // 0x5E '^' - { 791, 11, 2, 11, -1, 3 }, // 0x5F '_' - { 794, 3, 3, 11, 5, -11 }, // 0x60 '`' - { 796, 10, 8, 11, 1, -7 }, // 0x61 'a' - { 806, 11, 11, 11, 0, -10 }, // 0x62 'b' - { 822, 10, 8, 11, 1, -7 }, // 0x63 'c' - { 832, 11, 11, 11, 1, -10 }, // 0x64 'd' - { 848, 9, 8, 11, 1, -7 }, // 0x65 'e' - { 857, 10, 11, 11, 2, -10 }, // 0x66 'f' - { 871, 11, 12, 11, 1, -7 }, // 0x67 'g' - { 888, 10, 11, 11, 1, -10 }, // 0x68 'h' - { 902, 9, 11, 11, 1, -10 }, // 0x69 'i' - { 915, 9, 15, 11, 1, -10 }, // 0x6A 'j' - { 932, 10, 11, 11, 1, -10 }, // 0x6B 'k' - { 946, 9, 11, 11, 1, -10 }, // 0x6C 'l' - { 959, 12, 8, 11, 0, -7 }, // 0x6D 'm' - { 971, 11, 8, 11, 1, -7 }, // 0x6E 'n' - { 982, 10, 8, 11, 1, -7 }, // 0x6F 'o' - { 992, 12, 12, 11, -1, -7 }, // 0x70 'p' - { 1010, 11, 12, 11, 1, -7 }, // 0x71 'q' - { 1027, 10, 8, 11, 1, -7 }, // 0x72 'r' - { 1037, 8, 8, 11, 2, -7 }, // 0x73 's' - { 1045, 9, 11, 11, 1, -10 }, // 0x74 't' - { 1058, 10, 8, 11, 1, -7 }, // 0x75 'u' - { 1068, 11, 8, 11, 1, -7 }, // 0x76 'v' - { 1079, 11, 8, 11, 1, -7 }, // 0x77 'w' - { 1090, 11, 8, 11, 1, -7 }, // 0x78 'x' - { 1101, 12, 12, 11, 0, -7 }, // 0x79 'y' - { 1119, 9, 8, 11, 2, -7 }, // 0x7A 'z' - { 1128, 7, 14, 11, 3, -10 }, // 0x7B '{' - { 1141, 4, 14, 11, 4, -10 }, // 0x7C '|' - { 1148, 8, 14, 11, 2, -10 }, // 0x7D '}' - { 1162, 9, 4, 11, 2, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoBoldOblique9pt7b PROGMEM = { - (uint8_t *)FreeMonoBoldOblique9pt7bBitmaps, - (GFXglyph *)FreeMonoBoldOblique9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1839 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h deleted file mode 100644 index 83a9a7708..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h +++ /dev/null @@ -1,248 +0,0 @@ -const uint8_t FreeMonoOblique12pt7bBitmaps[] PROGMEM = { - 0x11, 0x11, 0x12, 0x22, 0x22, 0x00, 0x0E, 0xE0, 0xE7, 0xE7, 0xC6, 0xC6, - 0xC6, 0x84, 0x84, 0x02, 0x40, 0x88, 0x12, 0x02, 0x40, 0x48, 0x7F, 0xC2, - 0x40, 0x48, 0x11, 0x1F, 0xF8, 0x48, 0x09, 0x02, 0x40, 0x48, 0x09, 0x02, - 0x20, 0x02, 0x01, 0x00, 0xF4, 0xC3, 0x60, 0x50, 0x04, 0x00, 0xC0, 0x0F, - 0x00, 0x60, 0x0A, 0x02, 0x81, 0x30, 0xC7, 0xC0, 0x80, 0x20, 0x08, 0x00, - 0x0E, 0x02, 0x20, 0x84, 0x10, 0x82, 0x20, 0x38, 0x00, 0x38, 0x38, 0x38, - 0x08, 0xE0, 0x22, 0x08, 0x41, 0x08, 0x22, 0x03, 0x80, 0x07, 0x84, 0x04, - 0x02, 0x01, 0x00, 0xC1, 0xA2, 0x8A, 0x85, 0x43, 0x31, 0x8F, 0x60, 0xFF, - 0x6D, 0x20, 0x00, 0x44, 0x42, 0x21, 0x08, 0x84, 0x21, 0x08, 0x42, 0x10, - 0x42, 0x00, 0x00, 0x84, 0x10, 0x84, 0x21, 0x08, 0x46, 0x21, 0x10, 0x88, - 0x44, 0x00, 0x04, 0x02, 0x02, 0x1D, 0x13, 0xF0, 0x40, 0x50, 0x48, 0x44, - 0x00, 0x02, 0x00, 0x40, 0x08, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, - 0x08, 0x01, 0x00, 0x20, 0x00, 0x1C, 0xE3, 0x18, 0x63, 0x08, 0x00, 0xFF, - 0xE0, 0x7F, 0x00, 0x00, 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, - 0x60, 0x02, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x00, 0x18, 0x00, 0x80, - 0x08, 0x00, 0x80, 0x04, 0x00, 0x40, 0x04, 0x00, 0x00, 0x07, 0x06, 0x23, - 0x04, 0x81, 0x40, 0x50, 0x14, 0x06, 0x02, 0x80, 0xA0, 0x28, 0x0A, 0x04, - 0x83, 0x11, 0x83, 0x80, 0x03, 0x03, 0x83, 0x83, 0x43, 0x20, 0x10, 0x08, - 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, 0x80, 0x43, 0xFE, 0x01, 0xC0, 0x62, - 0x0C, 0x10, 0x81, 0x00, 0x10, 0x02, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, - 0x0C, 0x01, 0x80, 0x20, 0x04, 0x04, 0xFF, 0xC0, 0x07, 0xC3, 0x0C, 0x00, - 0x80, 0x10, 0x06, 0x01, 0x81, 0xC0, 0x0C, 0x00, 0x40, 0x08, 0x01, 0x00, - 0x20, 0x09, 0x86, 0x0F, 0x00, 0x00, 0xC0, 0x50, 0x24, 0x12, 0x04, 0x82, - 0x21, 0x08, 0x82, 0x21, 0x10, 0x4F, 0xF8, 0x04, 0x01, 0x00, 0x80, 0xF8, - 0x0F, 0xE2, 0x00, 0x40, 0x08, 0x01, 0x00, 0x4E, 0x0E, 0x20, 0x02, 0x00, - 0x40, 0x08, 0x01, 0x00, 0x40, 0x19, 0x06, 0x1F, 0x00, 0x01, 0xE0, 0xC0, - 0x60, 0x18, 0x02, 0x00, 0x80, 0x13, 0xC5, 0x88, 0xE0, 0x98, 0x12, 0x02, - 0x40, 0x48, 0x10, 0x84, 0x0F, 0x00, 0xFF, 0xA0, 0x20, 0x08, 0x04, 0x01, - 0x00, 0x80, 0x20, 0x10, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, 0x08, 0x02, - 0x00, 0x07, 0x81, 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0x84, 0x20, 0x78, - 0x30, 0x88, 0x0A, 0x01, 0x40, 0x28, 0x08, 0x82, 0x0F, 0x80, 0x07, 0x81, - 0x08, 0x40, 0x90, 0x12, 0x02, 0x40, 0xC8, 0x39, 0x8D, 0x1E, 0x40, 0x08, - 0x02, 0x00, 0xC0, 0x30, 0x18, 0x3E, 0x00, 0x19, 0xCC, 0x00, 0x00, 0x0C, - 0xE6, 0x00, 0x06, 0x1C, 0x30, 0x00, 0x00, 0x00, 0x1C, 0x30, 0xE1, 0x86, - 0x08, 0x00, 0x00, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x06, 0x00, 0x30, - 0x00, 0xC0, 0x06, 0x00, 0x18, 0x00, 0xC0, 0x7F, 0xF8, 0x00, 0x00, 0x01, - 0xFF, 0xE0, 0x18, 0x00, 0xC0, 0x03, 0x00, 0x18, 0x00, 0x60, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x3E, 0xC3, 0x81, 0x01, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x07, 0x82, 0x31, - 0x04, 0x81, 0x20, 0x48, 0x74, 0x65, 0x21, 0x48, 0x92, 0x28, 0x7A, 0x00, - 0x80, 0x20, 0x04, 0x00, 0xF8, 0x07, 0xE0, 0x02, 0x80, 0x0A, 0x00, 0x48, - 0x01, 0x20, 0x08, 0x40, 0x41, 0x01, 0x04, 0x0F, 0xF0, 0x20, 0x41, 0x01, - 0x04, 0x02, 0x20, 0x0B, 0xE1, 0xF0, 0x1F, 0xF0, 0x40, 0xC2, 0x02, 0x10, - 0x10, 0x81, 0x84, 0x18, 0x7F, 0x82, 0x02, 0x10, 0x08, 0x80, 0x44, 0x02, - 0x60, 0x22, 0x03, 0x7F, 0xE0, 0x07, 0x91, 0x87, 0x20, 0x34, 0x02, 0x40, - 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x04, 0x04, 0x61, - 0x81, 0xE0, 0x1F, 0xE0, 0x41, 0x82, 0x06, 0x10, 0x11, 0x00, 0x88, 0x04, - 0x40, 0x22, 0x01, 0x10, 0x11, 0x00, 0x88, 0x08, 0x40, 0xC2, 0x0C, 0x7F, - 0x80, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x82, 0x00, 0x08, 0x00, 0x22, 0x01, - 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x01, 0x0C, 0x04, 0x20, 0x13, - 0xFF, 0xC0, 0x1F, 0xFC, 0x20, 0x10, 0x80, 0x42, 0x01, 0x08, 0x00, 0x22, - 0x01, 0xF8, 0x04, 0x20, 0x10, 0x00, 0x40, 0x01, 0x00, 0x0C, 0x00, 0x20, - 0x03, 0xF8, 0x00, 0x07, 0xD0, 0x83, 0x30, 0x12, 0x00, 0x40, 0x04, 0x00, - 0x80, 0x08, 0x00, 0x83, 0xE8, 0x04, 0x80, 0x4C, 0x04, 0x60, 0x41, 0xF8, - 0x0F, 0x3C, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x81, 0x01, 0x02, 0x03, - 0xFC, 0x08, 0x08, 0x10, 0x10, 0x20, 0x40, 0x40, 0x80, 0x81, 0x02, 0x02, - 0x1F, 0x1E, 0x00, 0x3F, 0xE0, 0x40, 0x08, 0x01, 0x00, 0x20, 0x08, 0x01, - 0x00, 0x20, 0x04, 0x00, 0x80, 0x20, 0x04, 0x00, 0x81, 0xFF, 0x00, 0x03, - 0xFE, 0x00, 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, - 0x00, 0x20, 0x40, 0x40, 0x80, 0x81, 0x01, 0x02, 0x04, 0x06, 0x10, 0x07, - 0xC0, 0x00, 0x1F, 0x1E, 0x10, 0x10, 0x20, 0xC0, 0x43, 0x00, 0x88, 0x01, - 0x20, 0x07, 0xC0, 0x0C, 0x40, 0x10, 0x40, 0x20, 0x80, 0x41, 0x01, 0x81, - 0x02, 0x02, 0x1F, 0x87, 0x00, 0x3F, 0x80, 0x40, 0x04, 0x00, 0x40, 0x08, - 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, 0x01, 0x10, 0x11, 0x02, 0x10, - 0x2F, 0xFE, 0x1C, 0x03, 0x85, 0x03, 0x02, 0x82, 0x81, 0x41, 0x40, 0xA1, - 0x20, 0x89, 0x30, 0x44, 0x90, 0x22, 0x88, 0x11, 0x44, 0x08, 0x42, 0x08, - 0x03, 0x04, 0x01, 0x02, 0x00, 0x87, 0xC3, 0xE0, 0x3C, 0x3E, 0x18, 0x08, - 0x38, 0x20, 0x50, 0x41, 0x20, 0x82, 0x61, 0x04, 0x42, 0x08, 0x88, 0x10, - 0x90, 0x41, 0x20, 0x83, 0x41, 0x02, 0x82, 0x06, 0x1F, 0x04, 0x00, 0x03, - 0xC0, 0x61, 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, - 0x80, 0x14, 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x0F, 0x00, 0x1F, 0xE0, - 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x40, 0x83, 0xF8, 0x10, - 0x00, 0x80, 0x04, 0x00, 0x60, 0x02, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x61, - 0x84, 0x04, 0x40, 0x14, 0x00, 0xA0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x14, - 0x00, 0xA0, 0x08, 0x80, 0x86, 0x18, 0x1F, 0x00, 0x40, 0x0F, 0xC4, 0x41, - 0xC0, 0x1F, 0xE0, 0x40, 0x82, 0x02, 0x10, 0x10, 0x80, 0x84, 0x08, 0x60, - 0x83, 0xF8, 0x10, 0xC0, 0x82, 0x04, 0x08, 0x40, 0x42, 0x03, 0x7E, 0x0C, - 0x07, 0xA3, 0x0C, 0x40, 0x90, 0x12, 0x00, 0x40, 0x06, 0x00, 0x3C, 0x00, - 0x40, 0x0A, 0x01, 0x40, 0x4C, 0x11, 0x7C, 0x00, 0xFF, 0xE8, 0x42, 0x84, - 0x20, 0x40, 0x04, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x00, 0x80, 0x10, - 0x01, 0x00, 0x10, 0x0F, 0xE0, 0xF8, 0xF9, 0x00, 0x88, 0x08, 0x80, 0x44, - 0x02, 0x20, 0x11, 0x01, 0x08, 0x08, 0x80, 0x44, 0x02, 0x20, 0x31, 0x01, - 0x04, 0x30, 0x1E, 0x00, 0xF8, 0x7D, 0x00, 0x42, 0x01, 0x08, 0x08, 0x20, - 0x40, 0x81, 0x02, 0x08, 0x08, 0x20, 0x11, 0x00, 0x48, 0x01, 0x20, 0x05, - 0x00, 0x14, 0x00, 0x60, 0x00, 0xF8, 0x7D, 0x00, 0x44, 0x01, 0x11, 0x84, - 0x46, 0x21, 0x18, 0x84, 0xA2, 0x12, 0x90, 0x91, 0x42, 0x45, 0x0A, 0x14, - 0x28, 0x60, 0xC1, 0x83, 0x06, 0x00, 0x1E, 0x1E, 0x10, 0x10, 0x10, 0x40, - 0x21, 0x00, 0x24, 0x00, 0x78, 0x00, 0x60, 0x01, 0xC0, 0x06, 0x80, 0x09, - 0x80, 0x21, 0x00, 0x81, 0x02, 0x02, 0x1E, 0x1F, 0x00, 0xF0, 0xF4, 0x04, - 0x20, 0x82, 0x18, 0x11, 0x01, 0x20, 0x1C, 0x00, 0x80, 0x08, 0x00, 0x80, - 0x10, 0x01, 0x00, 0x10, 0x0F, 0xE0, 0x0F, 0xF1, 0x01, 0x10, 0x21, 0x04, - 0x00, 0x80, 0x10, 0x02, 0x00, 0x40, 0x0C, 0x01, 0x82, 0x10, 0x22, 0x04, - 0x40, 0x47, 0xFC, 0x0E, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, - 0x82, 0x04, 0x08, 0x10, 0x20, 0x81, 0xE0, 0x84, 0x20, 0x84, 0x20, 0x84, - 0x21, 0x04, 0x21, 0x08, 0x21, 0x08, 0x40, 0x1E, 0x04, 0x08, 0x20, 0x40, - 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, 0x81, 0x02, 0x08, 0x11, 0xE0, 0x04, - 0x06, 0x04, 0x84, 0x44, 0x14, 0x0C, 0xFF, 0xFE, 0x99, 0x90, 0x1F, 0xC0, - 0x06, 0x00, 0x20, 0x02, 0x1F, 0xE6, 0x04, 0xC0, 0x48, 0x04, 0x81, 0xC7, - 0xEF, 0x18, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, 0x09, 0xF0, 0x50, - 0xC3, 0x03, 0x10, 0x08, 0x80, 0x48, 0x02, 0x40, 0x23, 0x03, 0x1C, 0x33, - 0xBE, 0x00, 0x0F, 0xD3, 0x07, 0x60, 0x24, 0x02, 0x80, 0x08, 0x00, 0x80, - 0x08, 0x06, 0x41, 0xC3, 0xF0, 0x00, 0x38, 0x00, 0x40, 0x02, 0x00, 0x20, - 0x01, 0x07, 0xC8, 0x43, 0x44, 0x0E, 0x40, 0x24, 0x01, 0x20, 0x09, 0x00, - 0xC8, 0x0E, 0x20, 0xE0, 0xF9, 0xC0, 0x0F, 0x86, 0x09, 0x00, 0xA0, 0x1F, - 0xFF, 0x00, 0x20, 0x06, 0x00, 0x60, 0xC7, 0xE0, 0x01, 0xF8, 0x10, 0x01, - 0x00, 0x08, 0x00, 0x40, 0x1F, 0xF0, 0x20, 0x01, 0x00, 0x08, 0x00, 0x40, - 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x03, 0xFE, 0x00, 0x0F, 0x31, 0x86, - 0x10, 0x10, 0x80, 0x88, 0x04, 0x40, 0x22, 0x02, 0x10, 0x10, 0x43, 0x81, - 0xE4, 0x00, 0x40, 0x02, 0x00, 0x20, 0x3E, 0x00, 0x1C, 0x00, 0x20, 0x03, - 0x00, 0x10, 0x00, 0x80, 0x05, 0xF0, 0x30, 0xC3, 0x02, 0x10, 0x10, 0x80, - 0x84, 0x0C, 0x20, 0x63, 0x02, 0x10, 0x13, 0xE3, 0xE0, 0x01, 0x80, 0x40, - 0x10, 0x00, 0x00, 0x07, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, - 0x04, 0x01, 0x0F, 0xFC, 0x00, 0x40, 0x10, 0x0C, 0x00, 0x00, 0x07, 0xF0, - 0x04, 0x01, 0x00, 0x40, 0x20, 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, - 0x01, 0x00, 0x8F, 0xC0, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x08, 0x01, - 0x1F, 0x10, 0x81, 0x30, 0x14, 0x01, 0xC0, 0x26, 0x02, 0x20, 0x21, 0x02, - 0x08, 0xE1, 0xE0, 0x0F, 0x80, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, 0x20, - 0x08, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x0F, 0xFC, 0x3B, 0xB8, - 0x33, 0x91, 0x08, 0x44, 0x21, 0x10, 0x84, 0x42, 0x12, 0x10, 0x48, 0x42, - 0x21, 0x0B, 0xC6, 0x30, 0x19, 0xE0, 0xE3, 0x08, 0x11, 0x01, 0x10, 0x11, - 0x02, 0x10, 0x21, 0x02, 0x20, 0x2F, 0x87, 0x0F, 0x86, 0x19, 0x80, 0xA0, - 0x18, 0x03, 0x00, 0x60, 0x14, 0x06, 0x61, 0x87, 0xC0, 0x19, 0xF0, 0x28, - 0x20, 0xC0, 0x42, 0x01, 0x10, 0x04, 0x40, 0x11, 0x00, 0x86, 0x06, 0x14, - 0x30, 0xCF, 0x02, 0x00, 0x08, 0x00, 0x20, 0x03, 0xF0, 0x00, 0x0F, 0x39, - 0x85, 0x18, 0x18, 0x80, 0x88, 0x04, 0x40, 0x22, 0x01, 0x18, 0x18, 0x63, - 0x81, 0xE4, 0x00, 0x20, 0x01, 0x00, 0x10, 0x07, 0xE0, 0x1C, 0x78, 0x2C, - 0x01, 0x80, 0x18, 0x00, 0x80, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x07, - 0xFC, 0x00, 0x0F, 0x44, 0x32, 0x04, 0x80, 0x1E, 0x00, 0x60, 0x0A, 0x02, - 0xC1, 0x2F, 0x80, 0x10, 0x08, 0x04, 0x02, 0x0F, 0xF9, 0x00, 0x80, 0x40, - 0x20, 0x20, 0x10, 0x08, 0x04, 0x19, 0xF0, 0xE0, 0xF2, 0x02, 0x40, 0x24, - 0x02, 0x40, 0x24, 0x06, 0x40, 0x44, 0x04, 0x41, 0xC3, 0xE6, 0xF8, 0xFA, - 0x01, 0x08, 0x10, 0x41, 0x02, 0x08, 0x10, 0x80, 0x48, 0x02, 0x40, 0x14, - 0x00, 0xC0, 0x00, 0xE0, 0x7A, 0x01, 0x10, 0x08, 0x8C, 0x84, 0xA4, 0x25, - 0x21, 0x4A, 0x0A, 0x50, 0x63, 0x02, 0x18, 0x00, 0x1E, 0x3C, 0x20, 0x40, - 0x46, 0x00, 0xB0, 0x03, 0x00, 0x0E, 0x00, 0xC8, 0x06, 0x10, 0x20, 0x23, - 0xE3, 0xC0, 0x3C, 0x3C, 0x40, 0x20, 0x81, 0x02, 0x08, 0x08, 0x20, 0x31, - 0x00, 0x48, 0x01, 0x40, 0x05, 0x00, 0x08, 0x00, 0x40, 0x02, 0x00, 0x08, - 0x03, 0xF0, 0x00, 0x3F, 0xC4, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x04, - 0x01, 0x00, 0x40, 0x9F, 0xF0, 0x06, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, - 0x21, 0x80, 0x81, 0x02, 0x08, 0x10, 0x20, 0x40, 0xC0, 0x01, 0x11, 0x12, - 0x22, 0x24, 0x44, 0x44, 0x88, 0x80, 0x0C, 0x08, 0x10, 0x20, 0x40, 0x82, - 0x04, 0x08, 0x0C, 0x20, 0x81, 0x02, 0x04, 0x08, 0x21, 0x80, 0x38, 0x28, - 0x88, 0x0E, 0x00 }; - -const GFXglyph FreeMonoOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 14, 0, 1 }, // 0x20 ' ' - { 0, 4, 15, 14, 6, -14 }, // 0x21 '!' - { 8, 8, 7, 14, 5, -14 }, // 0x22 '"' - { 15, 11, 16, 14, 3, -14 }, // 0x23 '#' - { 37, 10, 18, 14, 4, -15 }, // 0x24 '$' - { 60, 11, 15, 14, 3, -14 }, // 0x25 '%' - { 81, 9, 12, 14, 3, -11 }, // 0x26 '&' - { 95, 3, 7, 14, 8, -14 }, // 0x27 ''' - { 98, 5, 18, 14, 8, -14 }, // 0x28 '(' - { 110, 5, 18, 14, 4, -14 }, // 0x29 ')' - { 122, 9, 9, 14, 5, -14 }, // 0x2A '*' - { 133, 11, 11, 14, 3, -11 }, // 0x2B '+' - { 149, 6, 7, 14, 3, -3 }, // 0x2C ',' - { 155, 11, 1, 14, 3, -6 }, // 0x2D '-' - { 157, 3, 3, 14, 6, -2 }, // 0x2E '.' - { 159, 13, 18, 14, 2, -15 }, // 0x2F '/' - { 189, 10, 15, 14, 4, -14 }, // 0x30 '0' - { 208, 9, 15, 14, 3, -14 }, // 0x31 '1' - { 225, 12, 15, 14, 2, -14 }, // 0x32 '2' - { 248, 11, 15, 14, 3, -14 }, // 0x33 '3' - { 269, 10, 15, 14, 3, -14 }, // 0x34 '4' - { 288, 11, 15, 14, 3, -14 }, // 0x35 '5' - { 309, 11, 15, 14, 4, -14 }, // 0x36 '6' - { 330, 10, 15, 14, 5, -14 }, // 0x37 '7' - { 349, 11, 15, 14, 3, -14 }, // 0x38 '8' - { 370, 11, 15, 14, 3, -14 }, // 0x39 '9' - { 391, 5, 10, 14, 5, -9 }, // 0x3A ':' - { 398, 7, 13, 14, 3, -9 }, // 0x3B ';' - { 410, 12, 11, 14, 3, -11 }, // 0x3C '<' - { 427, 13, 4, 14, 2, -8 }, // 0x3D '=' - { 434, 12, 11, 14, 2, -11 }, // 0x3E '>' - { 451, 8, 14, 14, 6, -13 }, // 0x3F '?' - { 465, 10, 16, 14, 3, -14 }, // 0x40 '@' - { 485, 14, 14, 14, 0, -13 }, // 0x41 'A' - { 510, 13, 14, 14, 1, -13 }, // 0x42 'B' - { 533, 12, 14, 14, 3, -13 }, // 0x43 'C' - { 554, 13, 14, 14, 1, -13 }, // 0x44 'D' - { 577, 14, 14, 14, 1, -13 }, // 0x45 'E' - { 602, 14, 14, 14, 1, -13 }, // 0x46 'F' - { 627, 12, 14, 14, 3, -13 }, // 0x47 'G' - { 648, 15, 14, 14, 1, -13 }, // 0x48 'H' - { 675, 11, 14, 14, 3, -13 }, // 0x49 'I' - { 695, 15, 14, 14, 2, -13 }, // 0x4A 'J' - { 722, 15, 14, 14, 1, -13 }, // 0x4B 'K' - { 749, 12, 14, 14, 2, -13 }, // 0x4C 'L' - { 770, 17, 14, 14, 0, -13 }, // 0x4D 'M' - { 800, 15, 14, 14, 1, -13 }, // 0x4E 'N' - { 827, 13, 14, 14, 2, -13 }, // 0x4F 'O' - { 850, 13, 14, 14, 1, -13 }, // 0x50 'P' - { 873, 13, 17, 14, 2, -13 }, // 0x51 'Q' - { 901, 13, 14, 14, 1, -13 }, // 0x52 'R' - { 924, 11, 14, 14, 3, -13 }, // 0x53 'S' - { 944, 12, 14, 14, 4, -13 }, // 0x54 'T' - { 965, 13, 14, 14, 3, -13 }, // 0x55 'U' - { 988, 14, 14, 14, 3, -13 }, // 0x56 'V' - { 1013, 14, 14, 14, 3, -13 }, // 0x57 'W' - { 1038, 15, 14, 14, 1, -13 }, // 0x58 'X' - { 1065, 12, 14, 14, 4, -13 }, // 0x59 'Y' - { 1086, 12, 14, 14, 2, -13 }, // 0x5A 'Z' - { 1107, 7, 18, 14, 6, -14 }, // 0x5B '[' - { 1123, 5, 18, 14, 6, -15 }, // 0x5C '\' - { 1135, 7, 18, 14, 3, -14 }, // 0x5D ']' - { 1151, 9, 6, 14, 5, -14 }, // 0x5E '^' - { 1158, 15, 1, 14, -1, 3 }, // 0x5F '_' - { 1160, 3, 4, 14, 6, -15 }, // 0x60 '`' - { 1162, 12, 10, 14, 2, -9 }, // 0x61 'a' - { 1177, 13, 15, 14, 1, -14 }, // 0x62 'b' - { 1202, 12, 10, 14, 3, -9 }, // 0x63 'c' - { 1217, 13, 15, 14, 2, -14 }, // 0x64 'd' - { 1242, 11, 10, 14, 3, -9 }, // 0x65 'e' - { 1256, 13, 15, 14, 3, -14 }, // 0x66 'f' - { 1281, 13, 14, 14, 3, -9 }, // 0x67 'g' - { 1304, 13, 15, 14, 1, -14 }, // 0x68 'h' - { 1329, 10, 15, 14, 2, -14 }, // 0x69 'i' - { 1348, 10, 19, 14, 2, -14 }, // 0x6A 'j' - { 1372, 12, 15, 14, 2, -14 }, // 0x6B 'k' - { 1395, 10, 15, 14, 2, -14 }, // 0x6C 'l' - { 1414, 14, 10, 14, 0, -9 }, // 0x6D 'm' - { 1432, 12, 10, 14, 1, -9 }, // 0x6E 'n' - { 1447, 11, 10, 14, 3, -9 }, // 0x6F 'o' - { 1461, 14, 14, 14, 0, -9 }, // 0x70 'p' - { 1486, 13, 14, 14, 3, -9 }, // 0x71 'q' - { 1509, 13, 10, 14, 2, -9 }, // 0x72 'r' - { 1526, 10, 10, 14, 3, -9 }, // 0x73 's' - { 1539, 9, 14, 14, 3, -13 }, // 0x74 't' - { 1555, 12, 10, 14, 2, -9 }, // 0x75 'u' - { 1570, 13, 10, 14, 3, -9 }, // 0x76 'v' - { 1587, 13, 10, 14, 3, -9 }, // 0x77 'w' - { 1604, 14, 10, 14, 1, -9 }, // 0x78 'x' - { 1622, 14, 14, 14, 1, -9 }, // 0x79 'y' - { 1647, 11, 10, 14, 3, -9 }, // 0x7A 'z' - { 1661, 7, 18, 14, 5, -14 }, // 0x7B '{' - { 1677, 4, 17, 14, 6, -13 }, // 0x7C '|' - { 1686, 7, 18, 14, 4, -14 }, // 0x7D '}' - { 1702, 11, 3, 14, 3, -7 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique12pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique12pt7bBitmaps, - (GFXglyph *)FreeMonoOblique12pt7bGlyphs, - 0x20, 0x7E, 24 }; - -// Approx. 2379 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h deleted file mode 100644 index 1979e7203..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h +++ /dev/null @@ -1,398 +0,0 @@ -const uint8_t FreeMonoOblique18pt7bBitmaps[] PROGMEM = { - 0x00, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x06, 0x18, 0x30, 0x60, 0xC1, 0x02, - 0x04, 0x00, 0x00, 0x01, 0xC7, 0x8F, 0x1C, 0x00, 0x78, 0x7B, 0xC3, 0xFC, - 0x3D, 0xE1, 0xEF, 0x0F, 0x70, 0x73, 0x83, 0x98, 0x18, 0xC0, 0xC6, 0x06, - 0x00, 0x00, 0x8C, 0x01, 0x18, 0x06, 0x20, 0x08, 0x40, 0x11, 0x80, 0x62, - 0x00, 0xC4, 0x01, 0x18, 0x02, 0x30, 0x7F, 0xFC, 0x10, 0x80, 0x23, 0x00, - 0xC4, 0x01, 0x88, 0x3F, 0xFF, 0x04, 0x60, 0x18, 0x80, 0x21, 0x00, 0x46, - 0x01, 0x88, 0x03, 0x10, 0x04, 0x60, 0x08, 0xC0, 0x31, 0x00, 0x00, 0x30, - 0x00, 0x20, 0x00, 0x20, 0x00, 0xF9, 0x03, 0x0F, 0x06, 0x03, 0x04, 0x03, - 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0C, 0x00, 0x04, 0x00, 0x04, 0x40, 0x04, 0x40, 0x08, 0x40, 0x18, - 0xF0, 0x60, 0x9F, 0x80, 0x02, 0x00, 0x06, 0x00, 0x04, 0x00, 0x04, 0x00, - 0x04, 0x00, 0x03, 0xC0, 0x0C, 0x60, 0x08, 0x20, 0x10, 0x20, 0x10, 0x20, - 0x10, 0x40, 0x18, 0x80, 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x78, 0x07, 0xC0, - 0x3C, 0x00, 0xE0, 0x00, 0x01, 0xE0, 0x02, 0x18, 0x04, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x10, 0x0C, 0x20, 0x07, 0xC0, 0x01, 0xF0, 0x11, 0x81, - 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x20, 0x01, 0x80, 0x04, 0x00, 0xF0, - 0x09, 0x86, 0x84, 0x48, 0x32, 0x40, 0xA2, 0x07, 0x10, 0x30, 0x43, 0x81, - 0xE7, 0x80, 0x7B, 0xFD, 0xEF, 0x73, 0x98, 0xC6, 0x00, 0x01, 0x02, 0x06, - 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x30, 0x60, 0x60, 0x60, 0xC0, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, 0x60, 0x20, 0x04, 0x06, - 0x06, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x06, - 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, 0xC0, 0x01, - 0x00, 0x04, 0x00, 0x10, 0x00, 0xC6, 0xE3, 0xF8, 0x7E, 0x00, 0x70, 0x03, - 0x40, 0x19, 0x80, 0xC2, 0x06, 0x0C, 0x00, 0x00, 0xC0, 0x01, 0x00, 0x02, - 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0xFF, 0xFE, - 0x02, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x02, - 0x00, 0x04, 0x00, 0x0F, 0x87, 0x87, 0x83, 0x83, 0xC1, 0xC1, 0xC0, 0xC0, - 0xE0, 0x60, 0x00, 0xFF, 0xFF, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0xC0, 0x00, 0x30, 0x00, 0x04, 0x00, - 0x01, 0x80, 0x00, 0x60, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, - 0x10, 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0x20, 0x00, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0x40, 0x00, 0x18, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x20, - 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, 0x00, 0x01, - 0xF0, 0x18, 0x60, 0x80, 0x86, 0x01, 0x10, 0x04, 0x80, 0x12, 0x00, 0x50, - 0x01, 0x40, 0x0D, 0x00, 0x24, 0x00, 0xA0, 0x02, 0x80, 0x1A, 0x00, 0x48, - 0x01, 0x20, 0x0C, 0x80, 0x22, 0x01, 0x84, 0x0C, 0x18, 0x60, 0x3E, 0x00, - 0x00, 0x60, 0x07, 0x00, 0x68, 0x06, 0x40, 0xE4, 0x04, 0x20, 0x01, 0x00, - 0x08, 0x00, 0x40, 0x04, 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, - 0x00, 0x20, 0x01, 0x00, 0x08, 0x00, 0x80, 0x04, 0x0F, 0xFF, 0x80, 0x00, - 0x3C, 0x00, 0x61, 0x80, 0x40, 0x40, 0x40, 0x10, 0x60, 0x08, 0x00, 0x04, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x03, 0x00, 0x07, 0x00, 0x07, - 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x0C, - 0x00, 0x1C, 0x01, 0x1C, 0x00, 0x8F, 0xFF, 0xC0, 0x00, 0xFC, 0x03, 0x06, - 0x06, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x0C, 0x00, 0xF0, 0x00, 0x18, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x02, 0x00, 0x02, 0x00, 0x04, 0x00, 0x04, 0x40, 0x18, 0x70, 0x30, - 0x0F, 0xC0, 0x00, 0x1C, 0x00, 0xD0, 0x06, 0x80, 0x32, 0x00, 0x88, 0x04, - 0x20, 0x30, 0x81, 0x84, 0x04, 0x10, 0x20, 0x41, 0x81, 0x0C, 0x08, 0x60, - 0x21, 0x00, 0x8F, 0xFF, 0x80, 0x18, 0x00, 0x40, 0x01, 0x00, 0x04, 0x00, - 0x10, 0x07, 0xE0, 0x03, 0xFF, 0x03, 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, - 0x40, 0x00, 0x20, 0x00, 0x30, 0x00, 0x1B, 0xE0, 0x0E, 0x0C, 0x00, 0x02, - 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, - 0x08, 0x00, 0x04, 0x60, 0x04, 0x18, 0x04, 0x06, 0x0C, 0x00, 0xF8, 0x00, - 0x00, 0x3F, 0x00, 0xC0, 0x03, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x30, 0x00, 0x20, 0x00, 0x40, 0x00, 0x43, 0xE0, 0x4C, 0x30, 0xB0, 0x18, - 0xE0, 0x08, 0xC0, 0x08, 0x80, 0x08, 0x80, 0x08, 0x80, 0x10, 0xC0, 0x10, - 0x40, 0x20, 0x20, 0xC0, 0x1F, 0x00, 0xFF, 0xFC, 0x00, 0xE0, 0x04, 0x00, - 0x60, 0x02, 0x00, 0x30, 0x01, 0x00, 0x18, 0x00, 0x80, 0x0C, 0x00, 0x40, - 0x06, 0x00, 0x20, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0xC0, 0x04, - 0x00, 0x60, 0x02, 0x00, 0x00, 0x00, 0xF0, 0x06, 0x18, 0x10, 0x18, 0x40, - 0x11, 0x00, 0x22, 0x00, 0x44, 0x00, 0x88, 0x02, 0x18, 0x08, 0x18, 0x60, - 0x1F, 0x80, 0xC1, 0x82, 0x01, 0x88, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, - 0x09, 0x00, 0x23, 0x00, 0x83, 0x06, 0x01, 0xF0, 0x00, 0x00, 0xF0, 0x06, - 0x18, 0x10, 0x10, 0x40, 0x30, 0x80, 0x22, 0x00, 0x44, 0x00, 0x88, 0x03, - 0x10, 0x0E, 0x30, 0x34, 0x30, 0xD0, 0x3E, 0x20, 0x00, 0x40, 0x01, 0x00, - 0x02, 0x00, 0x08, 0x00, 0x20, 0x00, 0xC0, 0x02, 0x00, 0x18, 0x0F, 0xC0, - 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xC7, 0xCF, - 0x9F, 0x1C, 0x00, 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x1C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x07, 0x81, 0xE0, 0x3C, 0x0F, 0x01, - 0xC0, 0x70, 0x0E, 0x03, 0x80, 0x60, 0x00, 0x00, 0x01, 0x80, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x38, 0x7F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x18, 0x00, 0x03, 0x80, - 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, - 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x1F, 0xCE, 0x06, 0x80, - 0x38, 0x01, 0x80, 0x10, 0x01, 0x00, 0x20, 0x04, 0x01, 0x80, 0xF0, 0x18, - 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x0F, 0x80, 0xF8, - 0x07, 0x00, 0x01, 0xF0, 0x0C, 0x30, 0x30, 0x30, 0x40, 0x21, 0x00, 0x44, - 0x00, 0x88, 0x01, 0x10, 0x1E, 0x40, 0xC4, 0x86, 0x11, 0x08, 0x22, 0x20, - 0x48, 0x40, 0x90, 0x82, 0x21, 0x84, 0x40, 0xFC, 0x80, 0x01, 0x00, 0x02, - 0x00, 0x04, 0x00, 0x04, 0x00, 0x0C, 0x18, 0x07, 0xC0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x68, 0x00, 0x06, 0x40, 0x00, 0x32, 0x00, 0x03, 0x10, 0x00, - 0x10, 0x80, 0x01, 0x84, 0x00, 0x18, 0x10, 0x00, 0xC0, 0x80, 0x0C, 0x04, - 0x00, 0x60, 0x20, 0x06, 0x01, 0x00, 0x3F, 0xFC, 0x02, 0x00, 0x20, 0x10, - 0x01, 0x01, 0x00, 0x08, 0x08, 0x00, 0x40, 0x80, 0x02, 0x0C, 0x00, 0x09, - 0xFC, 0x07, 0xF0, 0x0F, 0xFF, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, - 0x02, 0x00, 0x40, 0x80, 0x10, 0x40, 0x08, 0x10, 0x06, 0x04, 0x03, 0x01, - 0xFF, 0x80, 0x40, 0x38, 0x20, 0x02, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, - 0x04, 0x40, 0x01, 0x10, 0x00, 0x84, 0x00, 0x41, 0x00, 0x23, 0xFF, 0xF0, - 0x00, 0xFC, 0x40, 0xC1, 0xF0, 0xC0, 0x1C, 0x60, 0x06, 0x10, 0x00, 0x88, - 0x00, 0x24, 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x30, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x03, 0x00, 0x00, - 0x40, 0x06, 0x08, 0x03, 0x01, 0x83, 0x80, 0x3F, 0x00, 0x0F, 0xFE, 0x00, - 0x80, 0xC0, 0x20, 0x18, 0x10, 0x02, 0x04, 0x00, 0x41, 0x00, 0x10, 0x40, - 0x04, 0x20, 0x01, 0x08, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, 0x02, - 0x10, 0x00, 0x84, 0x00, 0x21, 0x00, 0x10, 0x40, 0x08, 0x20, 0x06, 0x08, - 0x03, 0x02, 0x01, 0x83, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x10, 0x02, 0x02, - 0x00, 0x60, 0x20, 0x06, 0x02, 0x00, 0x60, 0x20, 0x00, 0x04, 0x00, 0x00, - 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, 0x81, 0x00, - 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x81, 0x00, 0x08, 0x10, 0x00, - 0x81, 0x00, 0x18, 0x10, 0x01, 0x8F, 0xFF, 0xF0, 0x0F, 0xFF, 0xF0, 0x10, - 0x03, 0x02, 0x00, 0x30, 0x20, 0x03, 0x02, 0x00, 0x20, 0x20, 0x00, 0x04, - 0x00, 0x00, 0x40, 0x80, 0x04, 0x10, 0x00, 0x7F, 0x00, 0x04, 0x10, 0x00, - 0x81, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, - 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFE, - 0x40, 0xC0, 0xF0, 0x40, 0x1C, 0x20, 0x03, 0x10, 0x00, 0x88, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x01, - 0xFE, 0x80, 0x02, 0x20, 0x00, 0x88, 0x00, 0x22, 0x00, 0x08, 0x40, 0x04, - 0x18, 0x01, 0x03, 0x81, 0xC0, 0x3F, 0x80, 0x07, 0xE1, 0xF8, 0x08, 0x02, - 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x01, 0x00, 0x20, 0x18, - 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x3F, 0xFC, 0x01, 0x00, 0x60, - 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x80, 0x20, 0x04, 0x02, 0x00, - 0x40, 0x10, 0x02, 0x00, 0x80, 0x10, 0x04, 0x00, 0x81, 0xF8, 0x3F, 0x00, - 0x0F, 0xFF, 0x80, 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x20, - 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x02, 0x00, 0x00, 0x20, 0x00, 0x04, - 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, 0x0C, 0x04, 0x00, - 0x80, 0x40, 0x08, 0x08, 0x00, 0x80, 0x80, 0x08, 0x08, 0x01, 0x00, 0x80, - 0x10, 0x0C, 0x02, 0x00, 0x60, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE1, 0xF8, - 0x08, 0x03, 0x00, 0x80, 0x60, 0x04, 0x06, 0x00, 0x20, 0x60, 0x01, 0x06, - 0x00, 0x10, 0xC0, 0x00, 0x8C, 0x00, 0x04, 0xC0, 0x00, 0x2F, 0x80, 0x01, - 0x8E, 0x00, 0x18, 0x30, 0x00, 0x80, 0xC0, 0x04, 0x06, 0x00, 0x20, 0x10, - 0x02, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x80, 0x30, 0x04, 0x00, 0x81, 0xFC, - 0x07, 0x80, 0x07, 0xFC, 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, - 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0x40, - 0x00, 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x10, 0x20, 0x04, - 0x08, 0x01, 0x04, 0x00, 0x81, 0x00, 0x20, 0x40, 0x0B, 0xFF, 0xFE, 0x0F, - 0x00, 0x1E, 0x03, 0x00, 0x38, 0x05, 0x00, 0x68, 0x04, 0x80, 0x68, 0x04, - 0x80, 0xC8, 0x04, 0x80, 0x90, 0x04, 0x81, 0x90, 0x08, 0x43, 0x10, 0x08, - 0x42, 0x10, 0x08, 0x46, 0x10, 0x08, 0x4C, 0x20, 0x10, 0x2C, 0x20, 0x10, - 0x38, 0x20, 0x10, 0x30, 0x20, 0x10, 0x00, 0x40, 0x10, 0x00, 0x40, 0x20, - 0x00, 0x40, 0x20, 0x00, 0x40, 0x20, 0x00, 0x40, 0xFC, 0x07, 0xE0, 0x1F, - 0x01, 0xFC, 0x0C, 0x00, 0x80, 0x78, 0x02, 0x01, 0xE0, 0x18, 0x04, 0x80, - 0x60, 0x13, 0x01, 0x00, 0x4C, 0x04, 0x03, 0x18, 0x10, 0x0C, 0x60, 0xC0, - 0x20, 0x83, 0x00, 0x83, 0x08, 0x06, 0x0C, 0x20, 0x18, 0x18, 0x80, 0x40, - 0x66, 0x01, 0x00, 0x98, 0x04, 0x03, 0x40, 0x30, 0x0D, 0x00, 0xC0, 0x14, - 0x02, 0x00, 0x70, 0x3F, 0x80, 0xC0, 0x00, 0xF8, 0x01, 0x83, 0x01, 0x00, - 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x04, 0x80, 0x02, 0x80, 0x01, 0x40, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, 0x00, 0x14, 0x00, 0x12, - 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, 0x0C, 0x18, 0x01, 0xF0, - 0x00, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, - 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, - 0x7F, 0x80, 0x20, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x40, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xF8, - 0x01, 0x83, 0x01, 0x00, 0xC1, 0x00, 0x21, 0x00, 0x19, 0x00, 0x05, 0x00, - 0x02, 0x80, 0x01, 0x40, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x28, - 0x00, 0x14, 0x00, 0x12, 0x00, 0x09, 0x80, 0x08, 0x40, 0x08, 0x30, 0x08, - 0x0C, 0x18, 0x03, 0xF0, 0x00, 0xC0, 0x01, 0xC0, 0x01, 0xFE, 0x18, 0xC0, - 0xF0, 0x0F, 0xFE, 0x00, 0x40, 0x60, 0x20, 0x0C, 0x08, 0x01, 0x02, 0x00, - 0x40, 0x80, 0x10, 0x40, 0x04, 0x10, 0x02, 0x04, 0x01, 0x01, 0x01, 0x80, - 0x7F, 0x80, 0x20, 0x60, 0x08, 0x0C, 0x02, 0x03, 0x80, 0x80, 0x60, 0x40, - 0x18, 0x10, 0x03, 0x04, 0x00, 0xC1, 0x00, 0x1B, 0xF8, 0x07, 0x00, 0x7E, - 0x40, 0x60, 0xF0, 0x20, 0x1C, 0x10, 0x02, 0x08, 0x00, 0x82, 0x00, 0x00, - 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, - 0x18, 0x00, 0x01, 0x00, 0x00, 0x44, 0x00, 0x11, 0x00, 0x04, 0x40, 0x02, - 0x38, 0x01, 0x0B, 0x81, 0x82, 0x3F, 0x80, 0x3F, 0xFF, 0xA0, 0x20, 0x50, - 0x10, 0x28, 0x08, 0x24, 0x08, 0x10, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, - 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x02, 0x00, 0x01, 0x00, 0x1F, - 0xFC, 0x00, 0x7E, 0x0F, 0xC4, 0x00, 0x42, 0x00, 0x10, 0x80, 0x08, 0x20, - 0x02, 0x08, 0x00, 0x82, 0x00, 0x21, 0x00, 0x08, 0x40, 0x04, 0x10, 0x01, - 0x04, 0x00, 0x41, 0x00, 0x10, 0x80, 0x0C, 0x20, 0x02, 0x08, 0x00, 0x82, - 0x00, 0x60, 0x80, 0x10, 0x10, 0x08, 0x06, 0x0C, 0x00, 0x7C, 0x00, 0xFE, - 0x03, 0xF9, 0x80, 0x02, 0x0C, 0x00, 0x30, 0x20, 0x01, 0x01, 0x00, 0x10, - 0x08, 0x01, 0x80, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x00, 0x40, - 0x60, 0x02, 0x06, 0x00, 0x10, 0x20, 0x00, 0xC3, 0x00, 0x06, 0x10, 0x00, - 0x31, 0x80, 0x00, 0x88, 0x00, 0x04, 0x80, 0x00, 0x2C, 0x00, 0x01, 0xC0, - 0x00, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0xF2, 0x00, 0x04, 0x20, 0x00, 0xC2, - 0x00, 0x08, 0x20, 0xC0, 0x82, 0x0C, 0x18, 0x21, 0xA1, 0x02, 0x1A, 0x10, - 0x23, 0x23, 0x04, 0x32, 0x30, 0x46, 0x22, 0x04, 0x62, 0x60, 0x4C, 0x26, - 0x04, 0xC2, 0x40, 0x58, 0x24, 0x05, 0x82, 0xC0, 0x70, 0x28, 0x07, 0x02, - 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0x0F, 0xC1, 0xF8, 0x30, 0x03, 0x00, - 0xC0, 0x30, 0x06, 0x03, 0x00, 0x18, 0x10, 0x00, 0xC1, 0x00, 0x03, 0x18, - 0x00, 0x09, 0x80, 0x00, 0x78, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x01, - 0xA0, 0x00, 0x19, 0x80, 0x01, 0x84, 0x00, 0x18, 0x30, 0x01, 0x80, 0xC0, - 0x08, 0x06, 0x00, 0x80, 0x18, 0x08, 0x00, 0xC1, 0xF8, 0x3F, 0x80, 0x7E, - 0x0F, 0xC4, 0x00, 0xC1, 0x80, 0x60, 0x20, 0x30, 0x0C, 0x08, 0x03, 0x04, - 0x00, 0x43, 0x00, 0x19, 0x80, 0x02, 0xC0, 0x00, 0xE0, 0x00, 0x10, 0x00, - 0x04, 0x00, 0x01, 0x00, 0x00, 0x80, 0x00, 0x20, 0x00, 0x08, 0x00, 0x02, - 0x00, 0x01, 0x00, 0x00, 0x40, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0x86, 0x00, - 0x82, 0x00, 0x81, 0x00, 0xC1, 0x80, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0x00, - 0xC0, 0x00, 0x40, 0x00, 0x40, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, - 0x60, 0x10, 0x60, 0x18, 0x20, 0x08, 0x20, 0x04, 0x20, 0x02, 0x30, 0x03, - 0x1F, 0xFF, 0x80, 0x07, 0xE0, 0x80, 0x10, 0x02, 0x00, 0xC0, 0x18, 0x02, - 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, - 0x00, 0x20, 0x04, 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x10, 0x06, 0x00, - 0xFC, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, - 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x00, 0x07, 0xE0, 0x0C, 0x01, 0x00, 0x20, 0x04, - 0x01, 0x80, 0x30, 0x04, 0x00, 0x80, 0x30, 0x06, 0x00, 0x80, 0x10, 0x02, - 0x00, 0xC0, 0x18, 0x02, 0x00, 0x40, 0x18, 0x03, 0x00, 0x40, 0x08, 0x03, - 0x00, 0x60, 0xF8, 0x00, 0x01, 0x00, 0x1C, 0x01, 0xB0, 0x19, 0x81, 0x86, - 0x18, 0x11, 0x80, 0xD8, 0x03, 0x80, 0x18, 0xFF, 0xFF, 0xF8, 0xC7, 0x1C, - 0x71, 0x80, 0x03, 0xF8, 0x0C, 0x0C, 0x00, 0x02, 0x00, 0x02, 0x00, 0x02, - 0x00, 0x02, 0x07, 0xFC, 0x18, 0x0C, 0x20, 0x04, 0x40, 0x04, 0x80, 0x04, - 0x80, 0x08, 0x80, 0x38, 0xC0, 0xE8, 0x3F, 0x0F, 0x0F, 0x00, 0x00, 0x20, - 0x00, 0x04, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x04, 0x00, 0x00, 0x87, - 0xC0, 0x13, 0x0C, 0x06, 0x80, 0x40, 0xE0, 0x0C, 0x18, 0x00, 0x82, 0x00, - 0x10, 0xC0, 0x02, 0x10, 0x00, 0x42, 0x00, 0x08, 0x40, 0x02, 0x08, 0x00, - 0x43, 0x80, 0x10, 0x70, 0x04, 0x09, 0x83, 0x0F, 0x1F, 0x80, 0x01, 0xFC, - 0x83, 0x03, 0xC6, 0x00, 0xE4, 0x00, 0x22, 0x00, 0x12, 0x00, 0x01, 0x00, - 0x01, 0x00, 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x18, 0x00, 0x64, - 0x00, 0x61, 0x81, 0xC0, 0x7F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x30, 0x00, - 0x0C, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x60, 0x3F, 0x18, 0x10, 0x64, - 0x18, 0x0D, 0x08, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x0C, 0x80, 0x02, 0x20, - 0x00, 0x88, 0x00, 0x62, 0x00, 0x18, 0x80, 0x0E, 0x20, 0x03, 0x04, 0x03, - 0x40, 0xC1, 0xB0, 0x1F, 0x8F, 0x00, 0x01, 0xF0, 0x0E, 0x0C, 0x18, 0x06, - 0x30, 0x02, 0x60, 0x01, 0x40, 0x01, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x00, - 0x80, 0x00, 0x80, 0x00, 0x40, 0x00, 0x60, 0x06, 0x30, 0x1C, 0x0F, 0xE0, - 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x40, 0x00, 0x08, 0x00, - 0x02, 0x00, 0x07, 0xFF, 0xC0, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, - 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x04, 0x00, 0x0F, - 0xFF, 0x00, 0x03, 0xE3, 0xE1, 0x83, 0x60, 0x40, 0x38, 0x10, 0x03, 0x04, - 0x00, 0x60, 0x80, 0x0C, 0x20, 0x01, 0x84, 0x00, 0x20, 0x80, 0x04, 0x10, - 0x01, 0x82, 0x00, 0x30, 0x60, 0x0C, 0x04, 0x02, 0x80, 0x61, 0x90, 0x07, - 0xC6, 0x00, 0x00, 0xC0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, - 0x30, 0x00, 0x0C, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x40, 0x00, - 0x10, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x23, 0xE0, 0x0B, - 0x0C, 0x05, 0x00, 0x81, 0x80, 0x20, 0x40, 0x08, 0x10, 0x02, 0x08, 0x00, - 0x82, 0x00, 0x60, 0x80, 0x18, 0x20, 0x06, 0x10, 0x01, 0x84, 0x00, 0x61, - 0x00, 0x30, 0x40, 0x0C, 0xFC, 0x1F, 0xC0, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x20, - 0x00, 0x40, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x08, 0x00, 0x10, 0x1F, 0xFF, - 0x80, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0xFE, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, 0x00, - 0x40, 0x00, 0x80, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0x10, 0x00, 0x20, - 0x00, 0x80, 0x03, 0x00, 0x0C, 0x0F, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x60, - 0x00, 0x10, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xC0, 0x00, 0x30, 0xFC, - 0x08, 0x18, 0x02, 0x0C, 0x00, 0x8C, 0x00, 0x66, 0x00, 0x1B, 0x00, 0x05, - 0x80, 0x01, 0xB0, 0x00, 0x46, 0x00, 0x31, 0xC0, 0x0C, 0x30, 0x02, 0x06, - 0x00, 0x80, 0xC0, 0x60, 0x30, 0xF8, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x20, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0x20, - 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x04, 0x00, 0x08, 0x0F, 0xFF, 0xC0, - 0x1C, 0xF1, 0xE0, 0xF1, 0xE3, 0x0E, 0x1C, 0x10, 0xC1, 0x81, 0x08, 0x10, - 0x30, 0x81, 0x03, 0x18, 0x10, 0x21, 0x83, 0x02, 0x10, 0x30, 0x21, 0x02, - 0x06, 0x10, 0x20, 0x63, 0x02, 0x04, 0x30, 0x60, 0x42, 0x06, 0x04, 0xF8, - 0x70, 0xF0, 0x0E, 0x3E, 0x01, 0x60, 0x81, 0xC0, 0x20, 0xC0, 0x10, 0x40, - 0x08, 0x20, 0x04, 0x30, 0x02, 0x10, 0x02, 0x08, 0x01, 0x04, 0x00, 0x82, - 0x00, 0x42, 0x00, 0x21, 0x00, 0x20, 0x80, 0x13, 0xF0, 0x3E, 0x01, 0xF0, - 0x06, 0x0C, 0x18, 0x06, 0x20, 0x03, 0x60, 0x01, 0x40, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x02, 0x80, 0x06, 0xC0, 0x04, 0x40, 0x18, - 0x30, 0x60, 0x1F, 0x80, 0x0F, 0x1F, 0x80, 0x16, 0x0C, 0x01, 0xC0, 0x20, - 0x30, 0x03, 0x03, 0x00, 0x10, 0x20, 0x01, 0x02, 0x00, 0x10, 0x40, 0x01, - 0x04, 0x00, 0x10, 0x40, 0x02, 0x06, 0x00, 0x60, 0x60, 0x04, 0x0B, 0x00, - 0x80, 0x98, 0x30, 0x08, 0xFC, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, - 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x10, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xF1, 0xE1, 0x83, 0x20, 0x40, 0x34, 0x10, 0x03, 0x84, 0x00, 0x30, 0x80, - 0x04, 0x20, 0x00, 0x84, 0x00, 0x10, 0x80, 0x06, 0x10, 0x00, 0xC2, 0x00, - 0x30, 0x60, 0x0E, 0x04, 0x03, 0x40, 0x60, 0xC8, 0x07, 0xE2, 0x00, 0x00, - 0x40, 0x00, 0x08, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x08, 0x00, 0x01, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x87, 0xC0, 0x23, 0x08, 0x04, 0xC0, 0x00, - 0xE0, 0x00, 0x18, 0x00, 0x02, 0x00, 0x00, 0x80, 0x00, 0x10, 0x00, 0x02, - 0x00, 0x00, 0x40, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x40, 0x00, 0x08, - 0x00, 0x3F, 0xFE, 0x00, 0x01, 0xFA, 0x0C, 0x1C, 0x20, 0x08, 0x80, 0x11, - 0x00, 0x03, 0x00, 0x03, 0xF8, 0x00, 0x7C, 0x00, 0x0C, 0x00, 0x09, 0x00, - 0x16, 0x00, 0x2C, 0x00, 0x9E, 0x06, 0x27, 0xF0, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0x10, 0x00, 0x80, 0x7F, 0xFC, 0x40, 0x02, 0x00, 0x10, 0x00, - 0x80, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x01, 0x00, 0x08, 0x00, 0x40, - 0x02, 0x00, 0xD8, 0x1C, 0x3F, 0x00, 0xF0, 0x1E, 0x20, 0x04, 0x80, 0x09, - 0x00, 0x12, 0x00, 0x24, 0x00, 0xC8, 0x01, 0x20, 0x02, 0x40, 0x04, 0x80, - 0x09, 0x00, 0x12, 0x00, 0x64, 0x03, 0x8C, 0x1D, 0x0F, 0xC3, 0x80, 0xFE, - 0x0F, 0xE6, 0x00, 0x20, 0x40, 0x08, 0x08, 0x03, 0x01, 0x80, 0x40, 0x30, - 0x18, 0x06, 0x02, 0x00, 0x40, 0x80, 0x08, 0x30, 0x01, 0x84, 0x00, 0x31, - 0x80, 0x02, 0x20, 0x00, 0x48, 0x00, 0x09, 0x00, 0x01, 0xC0, 0x00, 0xF8, - 0x0F, 0xA0, 0x01, 0x90, 0x00, 0x88, 0x40, 0xC4, 0x30, 0x42, 0x18, 0x61, - 0x1A, 0x20, 0x8D, 0x10, 0x4C, 0x98, 0x26, 0x48, 0x16, 0x2C, 0x0B, 0x14, - 0x07, 0x0A, 0x03, 0x07, 0x01, 0x81, 0x00, 0x0F, 0x83, 0xE0, 0xC0, 0x18, - 0x0C, 0x0C, 0x01, 0x83, 0x00, 0x18, 0xC0, 0x01, 0xB0, 0x00, 0x1C, 0x00, - 0x03, 0x00, 0x00, 0xF0, 0x00, 0x63, 0x00, 0x18, 0x30, 0x06, 0x06, 0x01, - 0x80, 0x60, 0x60, 0x06, 0x3F, 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x30, 0x01, - 0x00, 0x80, 0x18, 0x04, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, 0xC0, 0x04, - 0x04, 0x00, 0x30, 0x60, 0x01, 0x86, 0x00, 0x04, 0x20, 0x00, 0x23, 0x00, - 0x01, 0xB0, 0x00, 0x0D, 0x00, 0x00, 0x38, 0x00, 0x01, 0x80, 0x00, 0x08, - 0x00, 0x00, 0xC0, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, - 0x20, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFF, 0x10, 0x06, 0x10, 0x0C, 0x10, - 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x04, 0x30, 0x0C, 0x60, 0x0C, 0xFF, 0xF8, 0x00, - 0xE0, 0x20, 0x08, 0x01, 0x00, 0x20, 0x04, 0x01, 0x00, 0x20, 0x04, 0x00, - 0x80, 0x20, 0x08, 0x0E, 0x00, 0x60, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, - 0x40, 0x08, 0x02, 0x00, 0x40, 0x08, 0x01, 0x00, 0x18, 0x00, 0x00, 0x10, - 0xC3, 0x08, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x08, 0x21, 0x86, - 0x10, 0x43, 0x0C, 0x20, 0x06, 0x00, 0x40, 0x10, 0x04, 0x01, 0x00, 0x40, - 0x10, 0x04, 0x02, 0x00, 0x80, 0x20, 0x0C, 0x01, 0xC0, 0xC0, 0x40, 0x10, - 0x04, 0x03, 0x00, 0x80, 0x20, 0x08, 0x02, 0x01, 0x00, 0xC0, 0xE0, 0x00, - 0x1E, 0x02, 0x66, 0x0D, 0x86, 0x16, 0x06, 0x48, 0x07, 0x00 }; - -const GFXglyph FreeMonoOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 21, 0, 1 }, // 0x20 ' ' - { 0, 7, 22, 21, 9, -21 }, // 0x21 '!' - { 20, 13, 10, 21, 7, -20 }, // 0x22 '"' - { 37, 15, 24, 21, 5, -21 }, // 0x23 '#' - { 82, 16, 26, 21, 4, -22 }, // 0x24 '$' - { 134, 16, 21, 21, 5, -20 }, // 0x25 '%' - { 176, 13, 18, 21, 5, -17 }, // 0x26 '&' - { 206, 5, 10, 21, 12, -20 }, // 0x27 ''' - { 213, 8, 25, 21, 12, -20 }, // 0x28 '(' - { 238, 8, 25, 21, 5, -20 }, // 0x29 ')' - { 263, 14, 11, 21, 7, -19 }, // 0x2A '*' - { 283, 15, 17, 21, 5, -17 }, // 0x2B '+' - { 315, 9, 10, 21, 4, -4 }, // 0x2C ',' - { 327, 16, 1, 21, 5, -9 }, // 0x2D '-' - { 329, 5, 5, 21, 8, -4 }, // 0x2E '.' - { 333, 19, 26, 21, 3, -22 }, // 0x2F '/' - { 395, 14, 21, 21, 5, -20 }, // 0x30 '0' - { 432, 13, 21, 21, 4, -20 }, // 0x31 '1' - { 467, 17, 21, 21, 3, -20 }, // 0x32 '2' - { 512, 16, 21, 21, 3, -20 }, // 0x33 '3' - { 554, 14, 21, 21, 5, -20 }, // 0x34 '4' - { 591, 17, 21, 21, 4, -20 }, // 0x35 '5' - { 636, 16, 21, 21, 6, -20 }, // 0x36 '6' - { 678, 13, 21, 21, 8, -20 }, // 0x37 '7' - { 713, 15, 21, 21, 5, -20 }, // 0x38 '8' - { 753, 15, 21, 21, 5, -20 }, // 0x39 '9' - { 793, 7, 15, 21, 8, -14 }, // 0x3A ':' - { 807, 11, 20, 21, 4, -14 }, // 0x3B ';' - { 835, 17, 16, 21, 5, -17 }, // 0x3C '<' - { 869, 19, 6, 21, 3, -12 }, // 0x3D '=' - { 884, 18, 16, 21, 3, -17 }, // 0x3E '>' - { 920, 12, 20, 21, 8, -19 }, // 0x3F '?' - { 950, 15, 23, 21, 5, -20 }, // 0x40 '@' - { 994, 21, 20, 21, 0, -19 }, // 0x41 'A' - { 1047, 18, 20, 21, 2, -19 }, // 0x42 'B' - { 1092, 18, 20, 21, 4, -19 }, // 0x43 'C' - { 1137, 18, 20, 21, 2, -19 }, // 0x44 'D' - { 1182, 20, 20, 21, 2, -19 }, // 0x45 'E' - { 1232, 20, 20, 21, 2, -19 }, // 0x46 'F' - { 1282, 18, 20, 21, 4, -19 }, // 0x47 'G' - { 1327, 21, 20, 21, 2, -19 }, // 0x48 'H' - { 1380, 17, 20, 21, 4, -19 }, // 0x49 'I' - { 1423, 20, 20, 21, 4, -19 }, // 0x4A 'J' - { 1473, 21, 20, 21, 2, -19 }, // 0x4B 'K' - { 1526, 18, 20, 21, 2, -19 }, // 0x4C 'L' - { 1571, 24, 20, 21, 1, -19 }, // 0x4D 'M' - { 1631, 22, 20, 21, 2, -19 }, // 0x4E 'N' - { 1686, 17, 20, 21, 4, -19 }, // 0x4F 'O' - { 1729, 18, 20, 21, 2, -19 }, // 0x50 'P' - { 1774, 17, 24, 21, 4, -19 }, // 0x51 'Q' - { 1825, 18, 20, 21, 2, -19 }, // 0x52 'R' - { 1870, 18, 20, 21, 3, -19 }, // 0x53 'S' - { 1915, 17, 20, 21, 5, -19 }, // 0x54 'T' - { 1958, 18, 20, 21, 5, -19 }, // 0x55 'U' - { 2003, 21, 20, 21, 4, -19 }, // 0x56 'V' - { 2056, 20, 20, 21, 4, -19 }, // 0x57 'W' - { 2106, 21, 20, 21, 2, -19 }, // 0x58 'X' - { 2159, 18, 20, 21, 5, -19 }, // 0x59 'Y' - { 2204, 17, 20, 21, 4, -19 }, // 0x5A 'Z' - { 2247, 11, 25, 21, 9, -20 }, // 0x5B '[' - { 2282, 8, 27, 21, 9, -22 }, // 0x5C '\' - { 2309, 11, 25, 21, 5, -20 }, // 0x5D ']' - { 2344, 13, 9, 21, 7, -20 }, // 0x5E '^' - { 2359, 21, 1, 21, -1, 4 }, // 0x5F '_' - { 2362, 5, 5, 21, 9, -21 }, // 0x60 '`' - { 2366, 16, 15, 21, 3, -14 }, // 0x61 'a' - { 2396, 19, 21, 21, 1, -20 }, // 0x62 'b' - { 2446, 17, 15, 21, 4, -14 }, // 0x63 'c' - { 2478, 18, 21, 21, 4, -20 }, // 0x64 'd' - { 2526, 16, 15, 21, 4, -14 }, // 0x65 'e' - { 2556, 19, 21, 21, 4, -20 }, // 0x66 'f' - { 2606, 19, 22, 21, 4, -14 }, // 0x67 'g' - { 2659, 18, 21, 21, 2, -20 }, // 0x68 'h' - { 2707, 15, 22, 21, 3, -21 }, // 0x69 'i' - { 2749, 15, 29, 21, 3, -21 }, // 0x6A 'j' - { 2804, 18, 21, 21, 2, -20 }, // 0x6B 'k' - { 2852, 15, 21, 21, 3, -20 }, // 0x6C 'l' - { 2892, 20, 15, 21, 1, -14 }, // 0x6D 'm' - { 2930, 17, 15, 21, 2, -14 }, // 0x6E 'n' - { 2962, 16, 15, 21, 4, -14 }, // 0x6F 'o' - { 2992, 20, 22, 21, 0, -14 }, // 0x70 'p' - { 3047, 19, 22, 21, 4, -14 }, // 0x71 'q' - { 3100, 19, 15, 21, 3, -14 }, // 0x72 'r' - { 3136, 15, 15, 21, 4, -14 }, // 0x73 's' - { 3165, 13, 20, 21, 5, -19 }, // 0x74 't' - { 3198, 15, 15, 21, 4, -14 }, // 0x75 'u' - { 3227, 19, 15, 21, 4, -14 }, // 0x76 'v' - { 3263, 17, 15, 21, 5, -14 }, // 0x77 'w' - { 3295, 19, 15, 21, 2, -14 }, // 0x78 'x' - { 3331, 21, 22, 21, 1, -14 }, // 0x79 'y' - { 3389, 16, 15, 21, 4, -14 }, // 0x7A 'z' - { 3419, 11, 25, 21, 8, -20 }, // 0x7B '{' - { 3454, 6, 24, 21, 9, -19 }, // 0x7C '|' - { 3472, 10, 25, 21, 6, -20 }, // 0x7D '}' - { 3504, 15, 5, 21, 5, -11 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique18pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique18pt7bBitmaps, - (GFXglyph *)FreeMonoOblique18pt7bGlyphs, - 0x20, 0x7E, 35 }; - -// Approx. 4186 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h deleted file mode 100644 index 8a5592c29..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h +++ /dev/null @@ -1,643 +0,0 @@ -const uint8_t FreeMonoOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, - 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x00, 0xC0, 0x70, 0x1C, 0x06, 0x01, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x0F, 0x83, 0xE0, 0xF8, - 0x1C, 0x00, 0x7E, 0x3F, 0x7E, 0x3F, 0x7C, 0x3E, 0x7C, 0x3E, 0x7C, 0x3E, - 0x78, 0x3C, 0xF8, 0x7C, 0xF0, 0x78, 0xF0, 0x78, 0xF0, 0x78, 0xE0, 0x70, - 0xE0, 0x70, 0xE0, 0x70, 0xC0, 0x60, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, - 0x01, 0x86, 0x00, 0x04, 0x18, 0x00, 0x30, 0xC0, 0x00, 0xC3, 0x00, 0x03, - 0x0C, 0x00, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, - 0x07, 0xFF, 0xFF, 0x1F, 0xFF, 0xFC, 0x03, 0x0C, 0x00, 0x18, 0x30, 0x00, - 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x30, 0xC0, 0x1F, 0xFF, - 0xF8, 0x7F, 0xFF, 0xE0, 0x18, 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, - 0x06, 0x18, 0x00, 0x30, 0x40, 0x00, 0xC3, 0x00, 0x03, 0x0C, 0x00, 0x18, - 0x30, 0x00, 0x61, 0x80, 0x01, 0x86, 0x00, 0x06, 0x18, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x3F, 0x00, 0x07, 0xFD, 0x80, - 0x70, 0x7C, 0x06, 0x00, 0xE0, 0x60, 0x02, 0x07, 0x00, 0x10, 0x30, 0x00, - 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, - 0x00, 0x00, 0xC2, 0x00, 0x06, 0x30, 0x00, 0x61, 0x80, 0x03, 0x1E, 0x00, - 0x30, 0xFC, 0x07, 0x06, 0x7F, 0xF0, 0x00, 0xFE, 0x00, 0x01, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, - 0x00, 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0xC0, 0xC0, - 0x06, 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, - 0x0E, 0x00, 0x38, 0x70, 0x00, 0x7F, 0x81, 0xC0, 0xF8, 0x3F, 0x00, 0x07, - 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xC0, 0x00, 0x78, 0x00, 0x01, - 0x00, 0x78, 0x00, 0x07, 0xF8, 0x00, 0x38, 0x60, 0x01, 0x80, 0xC0, 0x06, - 0x03, 0x00, 0x30, 0x0C, 0x00, 0xC0, 0x30, 0x03, 0x01, 0x80, 0x0C, 0x0E, - 0x00, 0x18, 0x70, 0x00, 0x7F, 0x80, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, - 0x0F, 0xF8, 0x03, 0x8E, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x01, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x03, - 0xE0, 0x01, 0xCC, 0x0E, 0x60, 0xC3, 0xD8, 0x18, 0x63, 0x03, 0x18, 0xC0, - 0x33, 0x18, 0x06, 0xC3, 0x00, 0x70, 0x60, 0x0E, 0x0C, 0x01, 0xC0, 0xC0, - 0x78, 0x1C, 0x3B, 0xE1, 0xFE, 0x3C, 0x1F, 0x00, 0x00, 0x7E, 0xFD, 0xF3, - 0xE7, 0xCF, 0x3E, 0x78, 0xF1, 0xE3, 0x87, 0x0E, 0x18, 0x00, 0x00, 0x60, - 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x70, 0x0C, 0x03, 0x80, - 0x60, 0x1C, 0x03, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0xF0, 0x1C, 0x03, 0x80, - 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, 0x02, 0x00, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, - 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x38, 0x0E, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x00, 0x00, 0x20, 0x00, 0x18, - 0x00, 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x30, 0x0E, 0x0C, 0x0B, - 0xF3, 0x3E, 0x3F, 0xFE, 0x01, 0xFC, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x0E, - 0x60, 0x07, 0x18, 0x01, 0x83, 0x00, 0xC0, 0xC0, 0x60, 0x30, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x30, 0x00, 0x01, - 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, - 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, - 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xF8, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xE0, - 0x3C, 0x07, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xE0, 0x3C, 0xFF, 0xFF, 0xFF, 0xCF, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, - 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x03, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0x60, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x0F, 0xF8, 0x01, - 0xC1, 0xC0, 0x38, 0x0E, 0x07, 0x00, 0x60, 0xE0, 0x03, 0x0C, 0x00, 0x31, - 0x80, 0x03, 0x18, 0x00, 0x33, 0x00, 0x03, 0x30, 0x00, 0x33, 0x00, 0x03, - 0x20, 0x00, 0x26, 0x00, 0x06, 0x60, 0x00, 0x66, 0x00, 0x06, 0x40, 0x00, - 0x4C, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x0C, 0xC0, 0x01, 0x8C, 0x00, - 0x18, 0xC0, 0x01, 0x8C, 0x00, 0x30, 0xC0, 0x07, 0x06, 0x00, 0xE0, 0x60, - 0x1C, 0x03, 0x87, 0x80, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, 0x0E, 0x00, - 0x0F, 0x00, 0x0F, 0x80, 0x0E, 0xC0, 0x1C, 0xC0, 0x1C, 0x60, 0x1C, 0x30, - 0x08, 0x18, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x18, 0x00, 0x0C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x01, 0x80, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x30, 0x1F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, - 0x07, 0xE0, 0x00, 0x3F, 0xE0, 0x01, 0xE0, 0xE0, 0x07, 0x00, 0xE0, 0x1C, - 0x00, 0xE0, 0x30, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x00, 0x03, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x18, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, - 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, - 0x00, 0xC3, 0x80, 0x01, 0x87, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x00, - 0x0F, 0xC0, 0x01, 0xFF, 0xC0, 0x1E, 0x07, 0x80, 0xE0, 0x06, 0x03, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, - 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, - 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xE3, 0x00, 0x07, 0x0E, 0x00, - 0x38, 0x1E, 0x03, 0xC0, 0x3F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x1B, 0x00, 0x06, 0x60, 0x01, 0x8C, 0x00, 0x63, - 0x00, 0x18, 0x60, 0x07, 0x0C, 0x00, 0xC1, 0x80, 0x30, 0x30, 0x0C, 0x0C, - 0x03, 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x06, 0x00, 0xC1, 0x80, 0x30, - 0x60, 0x06, 0x18, 0x00, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xC0, 0x00, 0xC0, - 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x18, 0x00, 0x03, 0x00, - 0x0F, 0xFC, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x0F, 0xFF, 0xC0, 0x40, - 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0xBF, 0xC0, 0x0F, 0xFF, - 0x80, 0xF8, 0x1E, 0x02, 0x00, 0x30, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, - 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0xC0, 0x01, 0x87, 0x00, - 0x38, 0x1E, 0x07, 0x80, 0x7F, 0xF8, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x03, - 0xF0, 0x00, 0xFF, 0xC0, 0x1F, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, - 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, - 0x0E, 0x00, 0x00, 0x60, 0x00, 0x07, 0x0F, 0x80, 0x31, 0xFF, 0x01, 0x9C, - 0x3C, 0x0D, 0x80, 0x60, 0xD8, 0x03, 0x87, 0x80, 0x0C, 0x38, 0x00, 0x61, - 0xC0, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x00, 0xC3, 0x00, 0x0C, 0x18, 0x00, - 0x60, 0xE0, 0x06, 0x03, 0x00, 0x30, 0x1C, 0x07, 0x00, 0x70, 0x70, 0x01, - 0xFF, 0x00, 0x07, 0xE0, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, 0xFC, 0x00, 0x0F, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x03, 0x00, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x18, 0x00, 0x0C, - 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, 0x00, 0x3F, 0x00, 0x0F, - 0xFC, 0x01, 0xC1, 0xE0, 0x70, 0x06, 0x06, 0x00, 0x30, 0xC0, 0x03, 0x1C, - 0x00, 0x31, 0x80, 0x03, 0x18, 0x00, 0x31, 0x80, 0x06, 0x18, 0x00, 0xE0, - 0xC0, 0x1C, 0x0F, 0x07, 0x80, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0xE0, 0x70, - 0x18, 0x03, 0x83, 0x00, 0x1C, 0x60, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, - 0xCC, 0x00, 0x0C, 0xC0, 0x00, 0xCC, 0x00, 0x18, 0xC0, 0x03, 0x8E, 0x00, - 0x70, 0x60, 0x0E, 0x07, 0x83, 0xC0, 0x3F, 0xF0, 0x00, 0xFC, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x0F, 0x07, 0x00, 0x70, 0x0E, 0x03, 0x80, - 0x18, 0x0C, 0x00, 0x70, 0x60, 0x00, 0xC1, 0x80, 0x03, 0x0C, 0x00, 0x0C, - 0x30, 0x00, 0x30, 0xC0, 0x01, 0xC3, 0x00, 0x0F, 0x0C, 0x00, 0x6C, 0x38, - 0x03, 0xF0, 0x60, 0x1D, 0x81, 0xE1, 0xE6, 0x03, 0xFE, 0x18, 0x03, 0xE0, - 0xC0, 0x00, 0x03, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, - 0xC0, 0x00, 0x7C, 0x00, 0xFF, 0xC0, 0x01, 0xF8, 0x00, 0x00, 0x07, 0x83, - 0xF1, 0xFC, 0x7F, 0x1F, 0x83, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x7E, 0x3F, 0x8F, 0xE3, 0xF0, 0x78, - 0x00, 0x00, 0x3C, 0x00, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xC0, 0x0F, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3E, - 0x00, 0xF8, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3C, 0x00, 0x70, 0x01, - 0xC0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0C, 0x00, 0x3F, 0xFF, 0xFF, 0x9F, - 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, - 0x00, 0x06, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x70, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x3F, 0xFC, 0x78, - 0x1E, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, - 0x06, 0x00, 0x06, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x07, 0xC0, 0x07, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x7E, 0x00, 0xFE, 0x00, 0xFE, - 0x00, 0x7C, 0x00, 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x07, 0x07, 0x01, 0xC0, - 0x70, 0x60, 0x06, 0x1C, 0x00, 0xC3, 0x00, 0x18, 0xC0, 0x03, 0x18, 0x00, - 0x66, 0x00, 0xFC, 0xC0, 0x7F, 0x98, 0x1C, 0x66, 0x06, 0x0C, 0xC1, 0x81, - 0x98, 0x30, 0x33, 0x0C, 0x0E, 0x61, 0x81, 0x98, 0x30, 0x33, 0x06, 0x06, - 0x60, 0xF0, 0xCC, 0x0F, 0xF9, 0x80, 0x7F, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x03, 0x80, 0x00, 0x30, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x18, 0x0F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x0F, - 0xFE, 0x00, 0x00, 0x06, 0xC0, 0x00, 0x00, 0xCC, 0x00, 0x00, 0x31, 0x80, - 0x00, 0x06, 0x30, 0x00, 0x01, 0x86, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x0C, - 0x1C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x40, 0x30, 0x00, 0x18, 0x06, 0x00, - 0x06, 0x00, 0xC0, 0x00, 0xC0, 0x18, 0x00, 0x30, 0x01, 0x80, 0x07, 0xFF, - 0xF0, 0x01, 0xFF, 0xFE, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x03, - 0x00, 0x03, 0x00, 0x40, 0x00, 0x30, 0x18, 0x00, 0x06, 0x06, 0x00, 0x00, - 0xC0, 0xC0, 0x00, 0x18, 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x0F, 0xFC, 0x03, - 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x06, 0x00, 0x38, 0x01, 0x80, 0x07, - 0x00, 0xC0, 0x00, 0xC0, 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, - 0x03, 0x00, 0xC0, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x18, 0x01, 0xE0, 0x07, - 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0xE0, 0x03, 0x80, 0x30, 0x00, 0x70, - 0x0C, 0x00, 0x0E, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x60, 0x60, 0x00, - 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, 0x80, 0x01, 0xC0, 0x60, - 0x00, 0xE0, 0x30, 0x00, 0x70, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, 0x0F, 0x60, 0x78, 0x01, - 0xF0, 0x70, 0x00, 0x70, 0x70, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x30, 0x00, - 0x06, 0x38, 0x00, 0x02, 0x18, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x0C, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x60, - 0x60, 0x00, 0x60, 0x38, 0x00, 0xE0, 0x0F, 0x01, 0xE0, 0x03, 0xFF, 0xC0, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0C, - 0x00, 0xF0, 0x03, 0x00, 0x1C, 0x01, 0xC0, 0x03, 0x80, 0x60, 0x00, 0x60, - 0x18, 0x00, 0x1C, 0x06, 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, - 0x30, 0x30, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC0, 0xC0, - 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x06, 0x06, 0x00, 0x03, 0x01, - 0x80, 0x00, 0xC0, 0xE0, 0x00, 0x70, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x0C, - 0x03, 0x00, 0x06, 0x00, 0xC0, 0x07, 0x00, 0x60, 0x07, 0x80, 0xFF, 0xFF, - 0xC0, 0x3F, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, - 0x01, 0x80, 0x01, 0x80, 0x30, 0x00, 0x60, 0x0C, 0x00, 0x0C, 0x01, 0x80, - 0x01, 0x80, 0x30, 0x00, 0x30, 0x06, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, - 0x30, 0x18, 0x00, 0x06, 0x03, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x1F, 0xF8, - 0x00, 0x07, 0x03, 0x00, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x0C, 0x03, 0x00, 0x01, - 0x80, 0x60, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x01, 0x80, 0x01, 0x80, 0x60, - 0x00, 0x30, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xFF, - 0xF0, 0x7F, 0xFF, 0xFF, 0x00, 0x60, 0x00, 0x30, 0x06, 0x00, 0x06, 0x00, - 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x06, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, - 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x0C, 0x00, 0x01, 0x80, 0xC0, 0x00, - 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x38, 0x18, 0x00, 0x03, 0x01, - 0x80, 0x00, 0x30, 0x18, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0xFC, 0xC0, 0x3C, - 0x0F, 0xE0, 0x78, 0x01, 0xF0, 0x70, 0x00, 0x30, 0x70, 0x00, 0x18, 0x70, - 0x00, 0x0C, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x01, 0x80, 0x1F, 0xFE, 0xC0, 0x0F, 0xFF, 0x60, 0x00, 0x06, - 0x30, 0x00, 0x06, 0x18, 0x00, 0x03, 0x0C, 0x00, 0x01, 0x87, 0x00, 0x00, - 0xC1, 0x80, 0x00, 0xE0, 0xE0, 0x00, 0x60, 0x38, 0x00, 0x70, 0x0F, 0x00, - 0xF8, 0x03, 0xFF, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xFC, 0x1F, 0xE0, - 0x7F, 0x83, 0xFC, 0x03, 0x00, 0x06, 0x00, 0x60, 0x01, 0x80, 0x1C, 0x00, - 0x30, 0x03, 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x38, 0x01, - 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x18, 0x01, 0xFF, 0xFF, - 0x00, 0x3F, 0xFF, 0xC0, 0x06, 0x00, 0x18, 0x01, 0x80, 0x03, 0x00, 0x30, - 0x00, 0x60, 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x03, 0x00, 0x38, 0x00, 0x60, - 0x06, 0x00, 0x0C, 0x00, 0xC0, 0x01, 0x80, 0x18, 0x00, 0x70, 0x03, 0x00, - 0x0C, 0x00, 0xE0, 0x01, 0x80, 0xFF, 0x83, 0xFE, 0x1F, 0xF0, 0x7F, 0xC0, - 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x70, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, - 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, - 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, - 0x00, 0x0C, 0x00, 0x00, 0x30, 0x00, 0xFF, 0xFF, 0x83, 0xFF, 0xFE, 0x00, - 0x00, 0x0F, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x0C, 0x00, 0x00, - 0x00, 0xC0, 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x18, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x38, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x07, - 0x00, 0x20, 0x00, 0x60, 0x06, 0x00, 0x06, 0x00, 0x60, 0x00, 0x60, 0x06, - 0x00, 0x06, 0x00, 0x60, 0x00, 0xC0, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, - 0xC0, 0x0C, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, 0x07, 0x00, 0x70, 0x00, - 0x3C, 0x1C, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, - 0xFF, 0x07, 0xF8, 0x3F, 0xF8, 0x3F, 0xC0, 0x18, 0x00, 0x70, 0x00, 0xC0, - 0x07, 0x00, 0x0C, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x00, 0x03, 0x00, 0xE0, - 0x00, 0x18, 0x0C, 0x00, 0x00, 0xC1, 0xC0, 0x00, 0x0C, 0x1C, 0x00, 0x00, - 0x61, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x1B, 0x78, 0x00, 0x01, 0xF0, - 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0x70, - 0x00, 0x18, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0x60, 0x00, - 0x60, 0x01, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, - 0x03, 0x00, 0xFF, 0xE0, 0x1F, 0x87, 0xFF, 0x00, 0x7C, 0x00, 0x07, 0xFF, - 0xE0, 0x03, 0xFF, 0xF0, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x30, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, - 0x00, 0xC0, 0x03, 0x00, 0x60, 0x01, 0x80, 0x60, 0x00, 0xC0, 0x30, 0x00, - 0x60, 0x18, 0x00, 0x30, 0x0C, 0x00, 0x30, 0x0E, 0x00, 0x18, 0x06, 0x00, - 0x0C, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x3F, - 0x07, 0xF0, 0x00, 0x7F, 0x01, 0xB0, 0x00, 0xD8, 0x01, 0xB0, 0x00, 0xD8, - 0x01, 0x98, 0x01, 0x98, 0x01, 0x98, 0x03, 0x30, 0x01, 0x98, 0x03, 0x30, - 0x03, 0x18, 0x06, 0x30, 0x03, 0x1C, 0x0C, 0x30, 0x03, 0x0C, 0x0C, 0x30, - 0x03, 0x0C, 0x18, 0x60, 0x07, 0x0C, 0x30, 0x60, 0x06, 0x0C, 0x30, 0x60, - 0x06, 0x06, 0x60, 0x60, 0x06, 0x06, 0xC0, 0x60, 0x06, 0x06, 0xC0, 0xC0, - 0x0C, 0x07, 0x80, 0xC0, 0x0C, 0x03, 0x00, 0xC0, 0x0C, 0x00, 0x00, 0xC0, - 0x0C, 0x00, 0x01, 0xC0, 0x0C, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, - 0x18, 0x00, 0x01, 0x80, 0x18, 0x00, 0x01, 0x80, 0xFF, 0x80, 0x3F, 0xE0, - 0xFF, 0x80, 0x3F, 0xE0, 0x07, 0xE0, 0x0F, 0xFC, 0x3F, 0x80, 0x3F, 0xF0, - 0x0F, 0x00, 0x06, 0x00, 0x3C, 0x00, 0x10, 0x01, 0x98, 0x00, 0xC0, 0x06, - 0x60, 0x03, 0x00, 0x19, 0xC0, 0x0C, 0x00, 0x63, 0x00, 0x30, 0x01, 0x0C, - 0x01, 0x80, 0x0C, 0x18, 0x06, 0x00, 0x30, 0x60, 0x18, 0x00, 0xC1, 0xC0, - 0x60, 0x03, 0x03, 0x01, 0x00, 0x08, 0x0C, 0x0C, 0x00, 0x60, 0x18, 0x30, - 0x01, 0x80, 0x60, 0xC0, 0x06, 0x01, 0xC3, 0x00, 0x18, 0x03, 0x18, 0x00, - 0xC0, 0x0C, 0x60, 0x03, 0x00, 0x19, 0x80, 0x0C, 0x00, 0x66, 0x00, 0x30, - 0x01, 0xD8, 0x00, 0x80, 0x03, 0xC0, 0x06, 0x00, 0x0F, 0x00, 0xFF, 0xC0, - 0x1C, 0x03, 0xFE, 0x00, 0x70, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xF0, - 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, 0x06, - 0x0C, 0x00, 0x06, 0x18, 0x00, 0x07, 0x38, 0x00, 0x03, 0x30, 0x00, 0x03, - 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, 0x03, - 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, - 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, 0x30, - 0x60, 0x00, 0x70, 0x70, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x1E, 0x0F, 0x00, - 0x0F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0xC0, 0x30, - 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x01, 0xC0, - 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x18, 0x01, 0x80, 0x3C, - 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x30, 0x00, 0x00, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x7F, - 0xF0, 0x00, 0xF0, 0x78, 0x03, 0x80, 0x1C, 0x07, 0x00, 0x0E, 0x0E, 0x00, - 0x06, 0x0C, 0x00, 0x06, 0x18, 0x00, 0x03, 0x38, 0x00, 0x03, 0x30, 0x00, - 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0x60, 0x00, 0x03, 0xC0, 0x00, - 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0xC0, 0x00, 0x06, 0xC0, 0x00, - 0x06, 0xC0, 0x00, 0x0C, 0xC0, 0x00, 0x1C, 0xC0, 0x00, 0x18, 0x60, 0x00, - 0x30, 0x60, 0x00, 0x70, 0x30, 0x00, 0xE0, 0x38, 0x01, 0xC0, 0x0E, 0x0F, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0xF8, - 0x30, 0x3F, 0xFF, 0xF0, 0x78, 0x0F, 0x80, 0x07, 0xFF, 0xFC, 0x01, 0xFF, - 0xFF, 0xC0, 0x06, 0x00, 0x78, 0x01, 0x80, 0x0E, 0x00, 0xC0, 0x01, 0xC0, - 0x30, 0x00, 0x30, 0x0C, 0x00, 0x0C, 0x03, 0x00, 0x03, 0x00, 0xC0, 0x00, - 0xC0, 0x60, 0x00, 0x60, 0x18, 0x00, 0x30, 0x06, 0x00, 0x38, 0x01, 0x80, - 0x3C, 0x00, 0xFF, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x0C, 0x07, 0x80, 0x03, - 0x00, 0x70, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x01, 0x80, 0x18, 0x00, 0x70, - 0x06, 0x00, 0x0C, 0x01, 0x80, 0x03, 0x80, 0x60, 0x00, 0x60, 0x30, 0x00, - 0x1C, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x00, 0xF0, 0x00, 0x1F, 0xC0, 0x00, - 0x7F, 0xF3, 0x00, 0xE0, 0x3B, 0x03, 0x80, 0x0F, 0x07, 0x00, 0x0E, 0x06, - 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x07, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00, 0x18, 0x60, 0x00, 0x18, 0x60, - 0x00, 0x30, 0x60, 0x00, 0x70, 0xF0, 0x00, 0xE0, 0xF8, 0x01, 0xC0, 0xDC, - 0x07, 0x80, 0x8F, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0xFF, 0xFE, 0x3F, - 0xFF, 0xFE, 0x30, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, 0x18, 0x06, 0x60, - 0x38, 0x0C, 0x60, 0x30, 0x04, 0x00, 0x30, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x70, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0xFF, 0xFE, 0x00, 0xFF, - 0xFC, 0x00, 0x7F, 0xC0, 0xFF, 0xDF, 0xF0, 0x3F, 0xF1, 0x80, 0x00, 0x60, - 0x60, 0x00, 0x30, 0x18, 0x00, 0x0C, 0x06, 0x00, 0x03, 0x03, 0x80, 0x00, - 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x18, 0x0C, 0x00, 0x06, 0x03, 0x00, - 0x01, 0x81, 0xC0, 0x00, 0x60, 0x60, 0x00, 0x18, 0x18, 0x00, 0x0C, 0x06, - 0x00, 0x03, 0x01, 0x80, 0x00, 0xC0, 0xC0, 0x00, 0x30, 0x30, 0x00, 0x1C, - 0x0C, 0x00, 0x06, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0xC0, 0x30, 0x00, - 0x70, 0x0E, 0x00, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0x38, 0x1E, 0x00, 0x07, - 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x07, - 0xFC, 0xE0, 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x01, 0x80, 0x00, 0x60, 0x30, - 0x00, 0x18, 0x06, 0x00, 0x02, 0x00, 0xC0, 0x00, 0xC0, 0x0C, 0x00, 0x30, - 0x01, 0x80, 0x06, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x60, 0x00, 0xC0, - 0x0C, 0x00, 0x18, 0x03, 0x00, 0x01, 0x80, 0xC0, 0x00, 0x30, 0x18, 0x00, - 0x06, 0x06, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x18, 0x30, 0x00, 0x03, 0x8C, - 0x00, 0x00, 0x31, 0x80, 0x00, 0x06, 0x60, 0x00, 0x00, 0xD8, 0x00, 0x00, - 0x1B, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x00, 0xFF, 0xC0, - 0x7F, 0xFF, 0xF8, 0x0F, 0xF8, 0xC0, 0x00, 0x0C, 0x18, 0x00, 0x01, 0x83, - 0x00, 0x00, 0x30, 0x60, 0x08, 0x0C, 0x0C, 0x07, 0x01, 0x81, 0x81, 0xE0, - 0x30, 0x60, 0x2C, 0x0C, 0x0C, 0x0D, 0x81, 0x81, 0x81, 0x30, 0x30, 0x30, - 0x66, 0x0C, 0x06, 0x08, 0xC1, 0x80, 0xC3, 0x0C, 0x30, 0x18, 0x41, 0x8C, - 0x03, 0x18, 0x31, 0x80, 0x62, 0x06, 0x30, 0x0C, 0xC0, 0xCC, 0x03, 0x10, - 0x19, 0x80, 0x66, 0x03, 0x30, 0x0C, 0x80, 0x6C, 0x01, 0xB0, 0x0D, 0x80, - 0x34, 0x01, 0xB0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, - 0xF0, 0x00, 0x03, 0xF8, 0x03, 0xF8, 0x1F, 0xC0, 0x3F, 0xC0, 0x30, 0x00, - 0x30, 0x01, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x30, 0x00, 0x18, 0x03, 0x00, - 0x00, 0xE0, 0x30, 0x00, 0x03, 0x03, 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, - 0x63, 0x00, 0x00, 0x03, 0xB0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x36, 0x00, 0x00, 0x03, 0x38, 0x00, - 0x00, 0x30, 0xC0, 0x00, 0x03, 0x07, 0x00, 0x00, 0x30, 0x18, 0x00, 0x03, - 0x00, 0x60, 0x00, 0x30, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, - 0x70, 0x03, 0x00, 0x01, 0x80, 0xFF, 0x80, 0xFF, 0x07, 0xFC, 0x07, 0xF8, - 0x00, 0x7F, 0x80, 0x7F, 0x7F, 0x00, 0x7F, 0x1C, 0x00, 0x18, 0x0C, 0x00, - 0x30, 0x0C, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x06, 0x00, 0xC0, 0x03, 0x01, - 0x80, 0x03, 0x03, 0x00, 0x01, 0x86, 0x00, 0x01, 0x8C, 0x00, 0x00, 0xD8, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x60, 0x00, 0x00, 0xC0, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, - 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, 0x00, 0x01, 0x80, - 0x00, 0xFF, 0xFE, 0x00, 0xFF, 0xFC, 0x00, 0x03, 0xFF, 0xFE, 0x07, 0xFF, - 0xF8, 0x0C, 0x00, 0x30, 0x10, 0x00, 0xC0, 0x60, 0x03, 0x80, 0xC0, 0x0E, - 0x01, 0x80, 0x38, 0x03, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x60, 0x00, 0x01, 0x80, 0x00, 0x06, 0x00, 0x60, 0x18, - 0x00, 0xC0, 0x60, 0x01, 0x81, 0x80, 0x02, 0x06, 0x00, 0x0C, 0x18, 0x00, - 0x18, 0x60, 0x00, 0x30, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x80, 0x01, 0xFE, - 0x03, 0xFC, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, - 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, - 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x20, 0x00, 0xFF, 0x01, - 0xFE, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, - 0x30, 0x0C, 0x03, 0x80, 0x60, 0x18, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, - 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x18, - 0x06, 0x01, 0x80, 0x60, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x04, 0x01, 0xFE, - 0x03, 0xFC, 0x00, 0x10, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x04, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x06, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0xFF, 0x01, - 0xFE, 0x00, 0x00, 0x10, 0x00, 0x0C, 0x00, 0x07, 0x80, 0x03, 0x60, 0x01, - 0x8C, 0x00, 0xC3, 0x80, 0xE0, 0x60, 0x70, 0x1C, 0x38, 0x03, 0x1C, 0x00, - 0x6E, 0x00, 0x1F, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC3, 0x86, 0x0C, 0x18, 0x70, 0xC0, 0x00, 0x3F, 0x80, 0x0F, 0xFF, 0x80, - 0x78, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x00, - 0x01, 0x80, 0x00, 0x06, 0x00, 0x00, 0x38, 0x03, 0xFC, 0xC0, 0x7F, 0xFF, - 0x07, 0xC0, 0x0C, 0x38, 0x00, 0x31, 0xC0, 0x01, 0xCE, 0x00, 0x06, 0x30, - 0x00, 0x18, 0xC0, 0x00, 0xE3, 0x00, 0x07, 0x8E, 0x00, 0x7C, 0x1C, 0x0F, - 0x3F, 0x3F, 0xF0, 0xFC, 0x7F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x00, 0xC0, 0x00, 0x00, 0x10, 0x00, 0x00, 0x06, 0x07, 0xE0, 0x00, 0xC3, - 0xFF, 0x00, 0x19, 0xC0, 0xF0, 0x03, 0x60, 0x07, 0x00, 0xD8, 0x00, 0x60, - 0x1E, 0x00, 0x0E, 0x03, 0x80, 0x00, 0xC0, 0x60, 0x00, 0x18, 0x0C, 0x00, - 0x03, 0x03, 0x00, 0x00, 0x60, 0x60, 0x00, 0x0C, 0x0C, 0x00, 0x01, 0x81, - 0x80, 0x00, 0x60, 0x70, 0x00, 0x0C, 0x0E, 0x00, 0x03, 0x01, 0xC0, 0x00, - 0x60, 0x3C, 0x00, 0x18, 0x05, 0x80, 0x06, 0x01, 0xB8, 0x01, 0x83, 0xF3, - 0xC1, 0xE0, 0x7E, 0x3F, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x00, - 0x07, 0xFF, 0x30, 0x38, 0x0F, 0xC1, 0x80, 0x1F, 0x0C, 0x00, 0x18, 0x60, - 0x00, 0x63, 0x00, 0x01, 0x9C, 0x00, 0x06, 0x60, 0x00, 0x01, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x30, 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, 0x01, 0x80, 0x00, 0xC7, 0x00, - 0x0E, 0x0F, 0x01, 0xF0, 0x1F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x18, 0x00, 0xFC, 0x0C, 0x01, - 0xFF, 0x86, 0x01, 0xC0, 0xE3, 0x03, 0x80, 0x1B, 0x03, 0x80, 0x05, 0x81, - 0x80, 0x03, 0xC1, 0x80, 0x00, 0xE1, 0x80, 0x00, 0x60, 0xC0, 0x00, 0x30, - 0x60, 0x00, 0x18, 0x60, 0x00, 0x0C, 0x30, 0x00, 0x06, 0x18, 0x00, 0x02, - 0x0C, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0xC1, 0xC0, 0x01, - 0xE0, 0x60, 0x01, 0xE0, 0x38, 0x01, 0xB0, 0x0F, 0x03, 0x9F, 0x03, 0xFF, - 0x0F, 0x80, 0x7E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x80, 0x78, - 0x0F, 0x03, 0x80, 0x0E, 0x1C, 0x00, 0x18, 0xE0, 0x00, 0x73, 0x00, 0x00, - 0xD8, 0x00, 0x03, 0x60, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x00, 0x00, 0xC0, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x60, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x03, 0x07, 0x80, 0xF8, - 0x0F, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0xFF, - 0xF0, 0x00, 0xF0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x07, 0xFF, 0xFC, 0x03, - 0xFF, 0xFF, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xC0, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x00, 0x60, 0x00, 0x00, 0x18, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFE, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x87, 0xC1, 0xE0, 0xF3, 0xE1, 0xC0, - 0x1B, 0x01, 0xC0, 0x07, 0x81, 0xC0, 0x03, 0xC0, 0xC0, 0x00, 0xE0, 0xC0, - 0x00, 0x60, 0x60, 0x00, 0x30, 0x60, 0x00, 0x18, 0x30, 0x00, 0x0C, 0x18, - 0x00, 0x06, 0x0C, 0x00, 0x06, 0x06, 0x00, 0x03, 0x03, 0x00, 0x03, 0x81, - 0xC0, 0x01, 0xC0, 0x60, 0x01, 0xC0, 0x38, 0x03, 0x60, 0x0F, 0x07, 0x30, - 0x03, 0xFF, 0x18, 0x00, 0x7E, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x80, 0x03, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, 0x83, 0xF0, 0x01, - 0x8F, 0xF8, 0x01, 0x98, 0x1C, 0x03, 0xB0, 0x0E, 0x03, 0x40, 0x06, 0x03, - 0x80, 0x06, 0x03, 0x00, 0x06, 0x03, 0x00, 0x06, 0x07, 0x00, 0x06, 0x06, - 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0E, 0x06, 0x00, 0x0C, 0x0C, - 0x00, 0x0C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x1C, 0x0C, 0x00, 0x18, 0x0C, - 0x00, 0x18, 0x18, 0x00, 0x18, 0xFF, 0x01, 0xFF, 0xFF, 0x01, 0xFF, 0x00, - 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xF0, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, - 0xC0, 0x00, 0x18, 0x00, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, - 0x00, 0x00, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, - 0x00, 0x01, 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x70, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0x03, 0xFF, 0xF0, - 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0x60, 0x00, 0x06, - 0x00, 0x00, 0x60, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x00, - 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, - 0x18, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, - 0x03, 0x80, 0xFF, 0xF0, 0x0F, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, 0x00, 0x00, 0x60, - 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0xC1, - 0xFF, 0x00, 0x80, 0x70, 0x01, 0x80, 0xC0, 0x01, 0x83, 0x80, 0x01, 0x87, - 0x00, 0x01, 0x8C, 0x00, 0x03, 0x38, 0x00, 0x03, 0x70, 0x00, 0x03, 0xF8, - 0x00, 0x03, 0x9C, 0x00, 0x03, 0x0C, 0x00, 0x06, 0x0E, 0x00, 0x06, 0x07, - 0x00, 0x06, 0x03, 0x80, 0x06, 0x01, 0x80, 0x04, 0x00, 0xC0, 0x0C, 0x00, - 0xE0, 0xFC, 0x03, 0xFE, 0xFC, 0x03, 0xFC, 0x01, 0xFF, 0x00, 0x3F, 0xE0, - 0x00, 0x0C, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x00, 0x01, 0x80, - 0x00, 0x70, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, - 0x01, 0x80, 0x00, 0x30, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, - 0x18, 0x00, 0x03, 0x00, 0x00, 0x60, 0x00, 0x0C, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0x00, 0x1E, 0x07, 0x81, 0xE7, 0xE1, 0xF8, 0x3D, 0x8E, 0xE3, - 0x81, 0xE0, 0xF8, 0x30, 0x38, 0x1E, 0x06, 0x06, 0x03, 0x80, 0xC1, 0x80, - 0x60, 0x18, 0x30, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x08, - 0x18, 0x0C, 0x03, 0x06, 0x01, 0x80, 0x60, 0xC0, 0x30, 0x0C, 0x18, 0x06, - 0x01, 0x83, 0x00, 0x80, 0x60, 0x40, 0x30, 0x0C, 0x18, 0x06, 0x01, 0x83, - 0x00, 0xC0, 0x30, 0x60, 0x18, 0x06, 0x7F, 0x03, 0xC1, 0xFF, 0xE0, 0xF8, - 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x1F, 0xF0, 0x3E, 0x60, 0x70, 0x0F, 0x80, - 0x70, 0x3C, 0x00, 0x60, 0x70, 0x00, 0xC0, 0xC0, 0x01, 0x81, 0x80, 0x03, - 0x07, 0x00, 0x06, 0x0C, 0x00, 0x1C, 0x18, 0x00, 0x30, 0x30, 0x00, 0x60, - 0x60, 0x00, 0xC1, 0xC0, 0x01, 0x83, 0x00, 0x06, 0x06, 0x00, 0x0C, 0x0C, - 0x00, 0x18, 0x18, 0x00, 0x30, 0x70, 0x00, 0x67, 0xFC, 0x07, 0xFF, 0xF0, - 0x0F, 0xE0, 0x00, 0x3F, 0x00, 0x07, 0xFF, 0x00, 0x3C, 0x0F, 0x01, 0xC0, - 0x1C, 0x0C, 0x00, 0x38, 0x60, 0x00, 0x63, 0x00, 0x00, 0xDC, 0x00, 0x03, - 0x60, 0x00, 0x0D, 0x80, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, - 0x00, 0x1B, 0x00, 0x00, 0x6C, 0x00, 0x03, 0xB0, 0x00, 0x0C, 0x60, 0x00, - 0x61, 0xC0, 0x03, 0x03, 0x80, 0x38, 0x0F, 0x03, 0xC0, 0x0F, 0xFE, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x8F, 0xFE, 0x00, 0xFC, - 0xE0, 0x78, 0x00, 0xCC, 0x00, 0xE0, 0x06, 0xC0, 0x03, 0x00, 0x3C, 0x00, - 0x1C, 0x01, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, - 0x06, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x06, 0x01, 0x80, 0x00, 0x30, 0x0C, - 0x00, 0x03, 0x00, 0xE0, 0x00, 0x18, 0x07, 0x00, 0x01, 0x80, 0x3C, 0x00, - 0x1C, 0x01, 0xE0, 0x01, 0xC0, 0x0D, 0x80, 0x1C, 0x00, 0xCF, 0x03, 0xC0, - 0x06, 0x3F, 0xF8, 0x00, 0x30, 0x7F, 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x00, 0x01, 0x80, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, - 0x7F, 0xF8, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0xE1, 0xF0, 0x78, - 0x1C, 0xFC, 0x38, 0x01, 0xB0, 0x1C, 0x00, 0x2C, 0x0E, 0x00, 0x0F, 0x03, - 0x00, 0x01, 0xC1, 0x80, 0x00, 0x60, 0x60, 0x00, 0x18, 0x30, 0x00, 0x06, - 0x0C, 0x00, 0x01, 0x83, 0x00, 0x00, 0x60, 0xC0, 0x00, 0x30, 0x30, 0x00, - 0x0C, 0x0C, 0x00, 0x07, 0x03, 0x80, 0x03, 0xC0, 0x60, 0x01, 0xB0, 0x1C, - 0x00, 0xD8, 0x03, 0xC0, 0xE6, 0x00, 0x7F, 0xF1, 0x80, 0x07, 0xE0, 0x60, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0xC0, 0x00, 0x00, 0x30, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x7F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x3E, 0x03, 0xF8, 0x7F, - 0xC0, 0x18, 0xF0, 0x60, 0x0C, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xC0, - 0x00, 0x03, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x38, 0x00, 0x00, 0x18, 0x00, 0x00, 0x0C, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x03, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x0F, 0xFE, 0xC0, 0xF0, 0x3E, 0x0E, 0x00, 0x70, 0xE0, 0x01, 0x06, 0x00, - 0x08, 0x30, 0x00, 0x41, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3F, 0xF0, 0x00, - 0x3F, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x18, 0x00, 0x00, - 0xCC, 0x00, 0x06, 0x60, 0x00, 0x33, 0x00, 0x03, 0x3C, 0x00, 0x71, 0xF8, - 0x0F, 0x0D, 0xFF, 0xF0, 0x01, 0xFC, 0x00, 0x03, 0x00, 0x03, 0x00, 0x01, - 0x80, 0x00, 0xC0, 0x00, 0x60, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, - 0x0C, 0x00, 0x06, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, - 0x00, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x18, 0x00, 0x0C, 0x00, 0x0E, - 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0xC0, 0x03, 0x38, 0x0F, - 0x9F, 0xFF, 0x03, 0xF8, 0x00, 0xFC, 0x03, 0xFF, 0xE0, 0x1F, 0xC6, 0x00, - 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, 0x86, - 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x18, 0x60, 0x01, - 0x86, 0x00, 0x0C, 0x30, 0x00, 0x61, 0x80, 0x03, 0x0C, 0x00, 0x38, 0x60, - 0x07, 0x83, 0x80, 0x6C, 0x1E, 0x1E, 0x7C, 0x7F, 0xE3, 0xE0, 0xF8, 0x00, - 0x00, 0x7F, 0xC0, 0xFF, 0xFF, 0xF0, 0x3F, 0xF1, 0xC0, 0x00, 0xC0, 0x30, - 0x00, 0x60, 0x0C, 0x00, 0x18, 0x03, 0x00, 0x0C, 0x00, 0xE0, 0x06, 0x00, - 0x18, 0x01, 0x80, 0x06, 0x00, 0xC0, 0x01, 0x80, 0x30, 0x00, 0x60, 0x18, - 0x00, 0x0C, 0x0C, 0x00, 0x03, 0x03, 0x00, 0x00, 0xC1, 0x80, 0x00, 0x30, - 0xC0, 0x00, 0x06, 0x30, 0x00, 0x01, 0x98, 0x00, 0x00, 0x6C, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x07, 0x80, 0x00, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x3F, - 0xCC, 0x00, 0x03, 0x06, 0x00, 0x01, 0x83, 0x00, 0x01, 0x81, 0x81, 0x80, - 0xC0, 0xC1, 0xE0, 0x60, 0x60, 0xF0, 0x60, 0x30, 0xD8, 0x30, 0x18, 0x6C, - 0x30, 0x0C, 0x66, 0x18, 0x06, 0x33, 0x18, 0x03, 0x31, 0x8C, 0x01, 0x98, - 0x66, 0x00, 0xD8, 0x36, 0x00, 0x6C, 0x1B, 0x00, 0x3C, 0x0F, 0x00, 0x1E, - 0x07, 0x80, 0x0E, 0x03, 0x80, 0x07, 0x01, 0xC0, 0x00, 0x07, 0xF0, 0x3F, - 0xC3, 0xFC, 0x0F, 0xF0, 0x38, 0x00, 0x60, 0x07, 0x00, 0x70, 0x00, 0xE0, - 0x38, 0x00, 0x18, 0x1C, 0x00, 0x03, 0x0C, 0x00, 0x00, 0xEE, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xDC, 0x00, - 0x00, 0xE3, 0x80, 0x00, 0x70, 0x70, 0x00, 0x38, 0x0E, 0x00, 0x18, 0x01, - 0x80, 0x1C, 0x00, 0x30, 0x0E, 0x00, 0x0E, 0x0F, 0xF0, 0x3F, 0xE3, 0xFC, - 0x0F, 0xF8, 0x03, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, 0x3F, 0xC0, 0x60, 0x00, - 0x30, 0x01, 0x80, 0x01, 0x80, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, - 0x03, 0x80, 0x0C, 0x00, 0x0C, 0x00, 0xC0, 0x00, 0x60, 0x0C, 0x00, 0x03, - 0x00, 0x60, 0x00, 0x0C, 0x06, 0x00, 0x00, 0x60, 0x60, 0x00, 0x03, 0x06, - 0x00, 0x00, 0x1C, 0x30, 0x00, 0x00, 0x63, 0x00, 0x00, 0x03, 0x30, 0x00, - 0x00, 0x19, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x60, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x30, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x00, - 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xC3, 0x00, 0x0C, 0x18, 0x00, 0xC0, 0xC0, - 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, - 0x00, 0x18, 0x00, 0x01, 0x80, 0x0C, 0x18, 0x00, 0x61, 0x80, 0x02, 0x1F, - 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x00, 0x0E, 0x00, 0x7C, 0x01, 0xC0, 0x03, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x00, - 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x01, 0xC0, 0x0F, 0x00, 0xF8, - 0x01, 0xF0, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x80, - 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, 0x03, - 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x01, 0x80, 0xC0, - 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x40, - 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, - 0x30, 0x18, 0x08, 0x0C, 0x06, 0x03, 0x01, 0x80, 0x80, 0xC0, 0x60, 0x30, - 0x00, 0x01, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, - 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x0C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x7C, 0x03, - 0xC0, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x0E, - 0x00, 0xF8, 0x01, 0xC0, 0x00, 0x0F, 0x00, 0x01, 0xFC, 0x03, 0x70, 0xE0, - 0x7E, 0x07, 0x1E, 0xC0, 0x3F, 0x80, 0x01, 0xE0 }; - -const GFXglyph FreeMonoOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 28, 0, 1 }, // 0x20 ' ' - { 0, 10, 30, 28, 12, -28 }, // 0x21 '!' - { 38, 16, 14, 28, 10, -28 }, // 0x22 '"' - { 66, 22, 32, 28, 6, -29 }, // 0x23 '#' - { 154, 21, 33, 28, 6, -29 }, // 0x24 '$' - { 241, 22, 29, 28, 6, -27 }, // 0x25 '%' - { 321, 19, 25, 28, 6, -23 }, // 0x26 '&' - { 381, 7, 14, 28, 16, -28 }, // 0x27 ''' - { 394, 11, 34, 28, 16, -27 }, // 0x28 '(' - { 441, 11, 34, 28, 7, -27 }, // 0x29 ')' - { 488, 18, 17, 28, 10, -28 }, // 0x2A '*' - { 527, 22, 22, 28, 6, -23 }, // 0x2B '+' - { 588, 12, 14, 28, 5, -6 }, // 0x2C ',' - { 609, 22, 2, 28, 6, -13 }, // 0x2D '-' - { 615, 7, 6, 28, 11, -4 }, // 0x2E '.' - { 621, 24, 35, 28, 5, -30 }, // 0x2F '/' - { 726, 20, 30, 28, 7, -28 }, // 0x30 '0' - { 801, 17, 29, 28, 6, -28 }, // 0x31 '1' - { 863, 23, 29, 28, 4, -28 }, // 0x32 '2' - { 947, 22, 30, 28, 5, -28 }, // 0x33 '3' - { 1030, 19, 28, 28, 7, -27 }, // 0x34 '4' - { 1097, 21, 29, 28, 6, -27 }, // 0x35 '5' - { 1174, 21, 30, 28, 9, -28 }, // 0x36 '6' - { 1253, 18, 28, 28, 10, -27 }, // 0x37 '7' - { 1316, 20, 30, 28, 7, -28 }, // 0x38 '8' - { 1391, 22, 30, 28, 6, -28 }, // 0x39 '9' - { 1474, 10, 21, 28, 11, -19 }, // 0x3A ':' - { 1501, 15, 27, 28, 5, -19 }, // 0x3B ';' - { 1552, 23, 22, 28, 6, -23 }, // 0x3C '<' - { 1616, 25, 9, 28, 4, -17 }, // 0x3D '=' - { 1645, 24, 22, 28, 4, -23 }, // 0x3E '>' - { 1711, 16, 28, 28, 11, -26 }, // 0x3F '?' - { 1767, 19, 32, 28, 7, -28 }, // 0x40 '@' - { 1843, 27, 26, 28, 1, -25 }, // 0x41 'A' - { 1931, 26, 26, 28, 2, -25 }, // 0x42 'B' - { 2016, 25, 28, 28, 5, -26 }, // 0x43 'C' - { 2104, 26, 26, 28, 2, -25 }, // 0x44 'D' - { 2189, 27, 26, 28, 2, -25 }, // 0x45 'E' - { 2277, 28, 26, 28, 2, -25 }, // 0x46 'F' - { 2368, 25, 28, 28, 5, -26 }, // 0x47 'G' - { 2456, 27, 26, 28, 3, -25 }, // 0x48 'H' - { 2544, 22, 26, 28, 6, -25 }, // 0x49 'I' - { 2616, 28, 27, 28, 5, -25 }, // 0x4A 'J' - { 2711, 29, 26, 28, 2, -25 }, // 0x4B 'K' - { 2806, 25, 26, 28, 3, -25 }, // 0x4C 'L' - { 2888, 32, 26, 28, 1, -25 }, // 0x4D 'M' - { 2992, 30, 26, 28, 2, -25 }, // 0x4E 'N' - { 3090, 24, 28, 28, 5, -26 }, // 0x4F 'O' - { 3174, 26, 26, 28, 2, -25 }, // 0x50 'P' - { 3259, 24, 32, 28, 5, -26 }, // 0x51 'Q' - { 3355, 26, 26, 28, 2, -25 }, // 0x52 'R' - { 3440, 24, 28, 28, 5, -26 }, // 0x53 'S' - { 3524, 24, 26, 28, 7, -25 }, // 0x54 'T' - { 3602, 26, 27, 28, 6, -25 }, // 0x55 'U' - { 3690, 27, 26, 28, 6, -25 }, // 0x56 'V' - { 3778, 27, 26, 28, 6, -25 }, // 0x57 'W' - { 3866, 29, 26, 28, 2, -25 }, // 0x58 'X' - { 3961, 24, 26, 28, 7, -25 }, // 0x59 'Y' - { 4039, 23, 26, 28, 5, -25 }, // 0x5A 'Z' - { 4114, 15, 34, 28, 12, -27 }, // 0x5B '[' - { 4178, 10, 35, 28, 12, -30 }, // 0x5C '\' - { 4222, 15, 34, 28, 6, -27 }, // 0x5D ']' - { 4286, 18, 12, 28, 9, -28 }, // 0x5E '^' - { 4313, 28, 2, 28, -1, 5 }, // 0x5F '_' - { 4320, 6, 7, 28, 13, -29 }, // 0x60 '`' - { 4326, 22, 22, 28, 4, -20 }, // 0x61 'a' - { 4387, 27, 29, 28, 1, -27 }, // 0x62 'b' - { 4485, 22, 22, 28, 6, -20 }, // 0x63 'c' - { 4546, 25, 29, 28, 5, -27 }, // 0x64 'd' - { 4637, 22, 22, 28, 5, -20 }, // 0x65 'e' - { 4698, 26, 28, 28, 5, -27 }, // 0x66 'f' - { 4789, 25, 30, 28, 5, -20 }, // 0x67 'g' - { 4883, 24, 28, 28, 3, -27 }, // 0x68 'h' - { 4967, 19, 29, 28, 5, -28 }, // 0x69 'i' - { 5036, 20, 38, 28, 4, -28 }, // 0x6A 'j' - { 5131, 24, 28, 28, 3, -27 }, // 0x6B 'k' - { 5215, 19, 28, 28, 5, -27 }, // 0x6C 'l' - { 5282, 27, 21, 28, 1, -20 }, // 0x6D 'm' - { 5353, 23, 21, 28, 3, -20 }, // 0x6E 'n' - { 5414, 22, 22, 28, 5, -20 }, // 0x6F 'o' - { 5475, 29, 30, 28, -1, -20 }, // 0x70 'p' - { 5584, 26, 30, 28, 5, -20 }, // 0x71 'q' - { 5682, 25, 20, 28, 4, -19 }, // 0x72 'r' - { 5745, 21, 22, 28, 5, -20 }, // 0x73 's' - { 5803, 17, 27, 28, 7, -25 }, // 0x74 't' - { 5861, 21, 21, 28, 6, -19 }, // 0x75 'u' - { 5917, 26, 20, 28, 5, -19 }, // 0x76 'v' - { 5982, 25, 20, 28, 6, -19 }, // 0x77 'w' - { 6045, 26, 20, 28, 3, -19 }, // 0x78 'x' - { 6110, 29, 29, 28, 1, -19 }, // 0x79 'y' - { 6216, 21, 20, 28, 5, -19 }, // 0x7A 'z' - { 6269, 15, 34, 28, 10, -27 }, // 0x7B '{' - { 6333, 9, 35, 28, 12, -28 }, // 0x7C '|' - { 6373, 15, 34, 28, 8, -27 }, // 0x7D '}' - { 6437, 20, 6, 28, 7, -15 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique24pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique24pt7bBitmaps, - (GFXglyph *)FreeMonoOblique24pt7bGlyphs, - 0x20, 0x7E, 47 }; - -// Approx. 7124 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h deleted file mode 100644 index a00ca8290..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h +++ /dev/null @@ -1,187 +0,0 @@ -const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { - 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, - 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, - 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, - 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, - 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, - 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, - 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, - 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, - 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, - 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, - 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, - 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, - 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, - 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, - 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, - 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, - 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, - 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, - 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, - 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, - 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, - 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, - 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, - 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, - 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, - 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, - 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, - 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, - 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, - 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, - 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, - 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, - 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, - 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, - 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, - 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, - 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, - 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, - 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, - 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, - 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, - 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, - 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, - 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, - 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, - 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, - 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, - 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, - 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, - 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, - 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, - 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, - 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, - 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, - 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, - 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, - 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, - 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, - 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, - 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, - 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, - 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, - 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, - 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, - 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, - 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, - 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, - 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, - 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, - 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, - 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, - 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, - 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, - 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, - 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, - 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, - 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, - 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, - 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, - 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, - 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, - 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30 }; - -const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 11, 0, 1 }, // 0x20 ' ' - { 0, 4, 11, 11, 4, -10 }, // 0x21 '!' - { 6, 5, 5, 11, 4, -10 }, // 0x22 '"' - { 10, 9, 12, 11, 2, -10 }, // 0x23 '#' - { 24, 8, 12, 11, 3, -10 }, // 0x24 '$' - { 36, 9, 11, 11, 2, -10 }, // 0x25 '%' - { 49, 7, 10, 11, 2, -9 }, // 0x26 '&' - { 58, 2, 5, 11, 6, -10 }, // 0x27 ''' - { 60, 4, 13, 11, 6, -10 }, // 0x28 '(' - { 67, 4, 13, 11, 3, -10 }, // 0x29 ')' - { 74, 7, 7, 11, 4, -10 }, // 0x2A '*' - { 81, 9, 8, 11, 2, -8 }, // 0x2B '+' - { 90, 4, 5, 11, 2, -1 }, // 0x2C ',' - { 93, 9, 1, 11, 2, -5 }, // 0x2D '-' - { 95, 2, 2, 11, 4, -1 }, // 0x2E '.' - { 96, 9, 13, 11, 2, -11 }, // 0x2F '/' - { 111, 7, 11, 11, 3, -10 }, // 0x30 '0' - { 121, 7, 11, 11, 2, -10 }, // 0x31 '1' - { 131, 9, 11, 11, 2, -10 }, // 0x32 '2' - { 144, 9, 11, 11, 2, -10 }, // 0x33 '3' - { 157, 8, 11, 11, 2, -10 }, // 0x34 '4' - { 168, 9, 11, 11, 2, -10 }, // 0x35 '5' - { 181, 8, 11, 11, 3, -10 }, // 0x36 '6' - { 192, 7, 11, 11, 4, -10 }, // 0x37 '7' - { 202, 8, 11, 11, 3, -10 }, // 0x38 '8' - { 213, 8, 11, 11, 3, -10 }, // 0x39 '9' - { 224, 3, 8, 11, 4, -7 }, // 0x3A ':' - { 227, 5, 11, 11, 2, -7 }, // 0x3B ';' - { 234, 9, 8, 11, 2, -8 }, // 0x3C '<' - { 243, 9, 4, 11, 2, -6 }, // 0x3D '=' - { 248, 9, 8, 11, 2, -8 }, // 0x3E '>' - { 257, 7, 10, 11, 4, -9 }, // 0x3F '?' - { 266, 7, 12, 11, 3, -10 }, // 0x40 '@' - { 277, 11, 10, 11, 0, -9 }, // 0x41 'A' - { 291, 10, 10, 11, 1, -9 }, // 0x42 'B' - { 304, 9, 10, 11, 2, -9 }, // 0x43 'C' - { 316, 10, 10, 11, 1, -9 }, // 0x44 'D' - { 329, 10, 10, 11, 1, -9 }, // 0x45 'E' - { 342, 11, 10, 11, 1, -9 }, // 0x46 'F' - { 356, 9, 10, 11, 2, -9 }, // 0x47 'G' - { 368, 11, 10, 11, 1, -9 }, // 0x48 'H' - { 382, 9, 10, 11, 2, -9 }, // 0x49 'I' - { 394, 11, 10, 11, 2, -9 }, // 0x4A 'J' - { 408, 11, 10, 11, 1, -9 }, // 0x4B 'K' - { 422, 10, 10, 11, 1, -9 }, // 0x4C 'L' - { 435, 13, 10, 11, 0, -9 }, // 0x4D 'M' - { 452, 11, 10, 11, 1, -9 }, // 0x4E 'N' - { 466, 9, 10, 11, 2, -9 }, // 0x4F 'O' - { 478, 10, 10, 11, 1, -9 }, // 0x50 'P' - { 491, 9, 13, 11, 2, -9 }, // 0x51 'Q' - { 506, 10, 10, 11, 1, -9 }, // 0x52 'R' - { 519, 9, 10, 11, 2, -9 }, // 0x53 'S' - { 531, 9, 10, 11, 3, -9 }, // 0x54 'T' - { 543, 10, 10, 11, 2, -9 }, // 0x55 'U' - { 556, 11, 10, 11, 2, -9 }, // 0x56 'V' - { 570, 11, 10, 11, 2, -9 }, // 0x57 'W' - { 584, 11, 10, 11, 1, -9 }, // 0x58 'X' - { 598, 9, 10, 11, 3, -9 }, // 0x59 'Y' - { 610, 9, 10, 11, 2, -9 }, // 0x5A 'Z' - { 622, 5, 13, 11, 5, -10 }, // 0x5B '[' - { 631, 4, 14, 11, 4, -11 }, // 0x5C '\' - { 638, 5, 13, 11, 2, -10 }, // 0x5D ']' - { 647, 7, 5, 11, 3, -10 }, // 0x5E '^' - { 652, 11, 1, 11, 0, 2 }, // 0x5F '_' - { 654, 2, 3, 11, 5, -11 }, // 0x60 '`' - { 655, 9, 8, 11, 2, -7 }, // 0x61 'a' - { 664, 11, 11, 11, 0, -10 }, // 0x62 'b' - { 680, 10, 8, 11, 2, -7 }, // 0x63 'c' - { 690, 9, 11, 11, 2, -10 }, // 0x64 'd' - { 703, 9, 8, 11, 2, -7 }, // 0x65 'e' - { 712, 10, 11, 11, 2, -10 }, // 0x66 'f' - { 726, 10, 11, 11, 2, -7 }, // 0x67 'g' - { 740, 10, 11, 11, 1, -10 }, // 0x68 'h' - { 754, 8, 11, 11, 2, -10 }, // 0x69 'i' - { 765, 9, 14, 11, 1, -10 }, // 0x6A 'j' - { 781, 9, 11, 11, 1, -10 }, // 0x6B 'k' - { 794, 8, 11, 11, 2, -10 }, // 0x6C 'l' - { 805, 11, 8, 11, 0, -7 }, // 0x6D 'm' - { 816, 9, 8, 11, 1, -7 }, // 0x6E 'n' - { 825, 9, 8, 11, 2, -7 }, // 0x6F 'o' - { 834, 11, 11, 11, 0, -7 }, // 0x70 'p' - { 850, 10, 11, 11, 2, -7 }, // 0x71 'q' - { 864, 9, 8, 11, 2, -7 }, // 0x72 'r' - { 873, 8, 8, 11, 2, -7 }, // 0x73 's' - { 881, 7, 10, 11, 2, -9 }, // 0x74 't' - { 890, 9, 8, 11, 2, -7 }, // 0x75 'u' - { 899, 10, 8, 11, 2, -7 }, // 0x76 'v' - { 909, 10, 8, 11, 2, -7 }, // 0x77 'w' - { 919, 10, 8, 11, 1, -7 }, // 0x78 'x' - { 929, 12, 11, 11, 0, -7 }, // 0x79 'y' - { 946, 8, 8, 11, 2, -7 }, // 0x7A 'z' - { 954, 6, 13, 11, 4, -10 }, // 0x7B '{' - { 964, 3, 12, 11, 5, -9 }, // 0x7C '|' - { 969, 6, 13, 11, 3, -10 }, // 0x7D '}' - { 979, 7, 3, 11, 3, -6 } }; // 0x7E '~' - -const GFXfont FreeMonoOblique9pt7b PROGMEM = { - (uint8_t *)FreeMonoOblique9pt7bBitmaps, - (GFXglyph *)FreeMonoOblique9pt7bGlyphs, - 0x20, 0x7E, 18 }; - -// Approx. 1654 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h deleted file mode 100644 index 9ecbb8fb0..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h +++ /dev/null @@ -1,270 +0,0 @@ -const uint8_t FreeSans12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x06, 0x30, - 0x31, 0x03, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x03, 0x18, 0x18, - 0xC7, 0xFF, 0xBF, 0xFC, 0x31, 0x01, 0x18, 0x18, 0xC0, 0xC6, 0x06, 0x30, - 0x04, 0x03, 0xE1, 0xFF, 0x72, 0x6C, 0x47, 0x88, 0xF1, 0x07, 0x20, 0x7E, - 0x03, 0xF0, 0x17, 0x02, 0x3C, 0x47, 0x88, 0xF1, 0x1B, 0x26, 0x7F, 0xC3, - 0xE0, 0x10, 0x02, 0x00, 0x00, 0x06, 0x03, 0xC0, 0x40, 0x7E, 0x0C, 0x0E, - 0x70, 0x80, 0xC3, 0x18, 0x0C, 0x31, 0x00, 0xE7, 0x30, 0x07, 0xE6, 0x00, - 0x3C, 0x40, 0x00, 0x0C, 0x7C, 0x00, 0x8F, 0xE0, 0x19, 0xC7, 0x01, 0x18, - 0x30, 0x31, 0x83, 0x02, 0x1C, 0x70, 0x40, 0xFE, 0x04, 0x07, 0xC0, 0x0F, - 0x00, 0x7E, 0x03, 0x9C, 0x0C, 0x30, 0x30, 0xC0, 0xE7, 0x01, 0xF8, 0x03, - 0x80, 0x3E, 0x01, 0xCC, 0x6E, 0x19, 0xB0, 0x7C, 0xC0, 0xF3, 0x03, 0xCE, - 0x1F, 0x9F, 0xE6, 0x1E, 0x1C, 0xFF, 0xA0, 0x08, 0x8C, 0x66, 0x31, 0x98, - 0xC6, 0x31, 0x8C, 0x63, 0x08, 0x63, 0x08, 0x61, 0x0C, 0x20, 0x82, 0x18, - 0xC3, 0x18, 0xC3, 0x18, 0xC6, 0x31, 0x8C, 0x62, 0x31, 0x88, 0xC4, 0x62, - 0x00, 0x10, 0x23, 0x5B, 0xE3, 0x8D, 0x91, 0x00, 0x0C, 0x03, 0x00, 0xC0, - 0x30, 0xFF, 0xFF, 0xF0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0xF5, 0x60, - 0xFF, 0xF0, 0xF0, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x02, 0x0C, 0x10, 0x20, - 0xC1, 0x02, 0x0C, 0x10, 0x20, 0xC1, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, - 0x6E, 0x0F, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, - 0x0E, 0xC1, 0x9C, 0x71, 0xFC, 0x1F, 0x00, 0x08, 0xCF, 0xFF, 0x8C, 0x63, - 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0x1F, 0x0F, 0xF9, 0x87, 0x60, 0x7C, - 0x06, 0x00, 0xC0, 0x18, 0x07, 0x01, 0xC0, 0xF0, 0x78, 0x1C, 0x06, 0x00, - 0x80, 0x30, 0x07, 0xFF, 0xFF, 0xE0, 0x3F, 0x0F, 0xF3, 0x87, 0x60, 0x6C, - 0x0C, 0x01, 0x80, 0x70, 0x7C, 0x0F, 0x80, 0x18, 0x01, 0x80, 0x3C, 0x07, - 0x80, 0xD8, 0x73, 0xFC, 0x1F, 0x00, 0x01, 0x80, 0x70, 0x0E, 0x03, 0xC0, - 0xD8, 0x1B, 0x06, 0x61, 0x8C, 0x21, 0x8C, 0x33, 0x06, 0x7F, 0xFF, 0xFE, - 0x03, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x3F, 0xCF, 0xF9, 0x80, 0x30, 0x06, - 0x00, 0xDE, 0x1F, 0xE7, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x07, - 0x81, 0xF8, 0x73, 0xFC, 0x1F, 0x00, 0x0F, 0x07, 0xF9, 0xC3, 0x30, 0x74, - 0x01, 0x80, 0x33, 0xC7, 0xFE, 0xF0, 0xDC, 0x1F, 0x01, 0xE0, 0x3C, 0x06, - 0xC1, 0xDC, 0x71, 0xFC, 0x1F, 0x00, 0xFF, 0xFF, 0xFC, 0x01, 0x00, 0x60, - 0x18, 0x02, 0x00, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x30, 0x04, 0x01, 0x80, - 0x30, 0x06, 0x01, 0x80, 0x30, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x30, 0x66, - 0x0C, 0xC1, 0x8C, 0x61, 0xFC, 0x3F, 0x8E, 0x3B, 0x01, 0xE0, 0x3C, 0x07, - 0x80, 0xD8, 0x31, 0xFC, 0x1F, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x6C, - 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x61, 0xEF, 0xFC, 0x79, 0x80, 0x30, 0x05, - 0x81, 0x98, 0x73, 0xFC, 0x1E, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0xF0, 0x00, - 0x0F, 0x56, 0x00, 0x00, 0x07, 0x01, 0xE0, 0xF8, 0x3C, 0x0F, 0x00, 0xE0, - 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xFF, 0xFF, 0xFF, 0x00, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x0E, 0x00, 0x78, 0x01, 0xF0, 0x07, - 0xC0, 0x0F, 0x00, 0x70, 0x1E, 0x0F, 0x03, 0xC0, 0xF0, 0x08, 0x00, 0x1F, - 0x1F, 0xEE, 0x1B, 0x03, 0xC0, 0xC0, 0x30, 0x0C, 0x06, 0x03, 0x81, 0xC0, - 0xE0, 0x30, 0x0C, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x00, 0x00, 0xFE, - 0x00, 0x0F, 0xFE, 0x00, 0xF0, 0x3E, 0x07, 0x00, 0x3C, 0x38, 0x00, 0x30, - 0xC1, 0xE0, 0x66, 0x0F, 0xD9, 0xD8, 0x61, 0xC3, 0xC3, 0x07, 0x0F, 0x1C, - 0x1C, 0x3C, 0x60, 0x60, 0xF1, 0x81, 0x83, 0xC6, 0x06, 0x1B, 0x18, 0x38, - 0xEE, 0x71, 0xE7, 0x18, 0xFD, 0xF8, 0x71, 0xE7, 0xC0, 0xE0, 0x00, 0x01, - 0xE0, 0x00, 0x01, 0xFF, 0xC0, 0x01, 0xFC, 0x00, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x07, 0xE0, 0x06, 0x60, 0x06, 0x60, 0x0E, 0x70, 0x0C, 0x30, - 0x0C, 0x30, 0x1C, 0x38, 0x18, 0x18, 0x1F, 0xF8, 0x3F, 0xFC, 0x30, 0x1C, - 0x30, 0x0C, 0x70, 0x0E, 0x60, 0x06, 0x60, 0x06, 0xFF, 0xC7, 0xFF, 0x30, - 0x19, 0x80, 0x6C, 0x03, 0x60, 0x1B, 0x00, 0xD8, 0x0C, 0xFF, 0xC7, 0xFF, - 0x30, 0x0D, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x06, 0xFF, 0xF7, - 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xF0, 0xE0, 0x73, 0x80, 0x66, 0x00, 0x6C, - 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, - 0x06, 0x00, 0x6C, 0x00, 0xDC, 0x03, 0x1E, 0x0E, 0x1F, 0xF8, 0x0F, 0xC0, - 0xFF, 0x83, 0xFF, 0x8C, 0x07, 0x30, 0x0E, 0xC0, 0x1B, 0x00, 0x7C, 0x00, - 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x00, - 0x6C, 0x03, 0xB0, 0x1C, 0xFF, 0xE3, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, - 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xEF, 0xFE, 0xC0, - 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xFF, 0xDF, - 0xFB, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x00, - 0x07, 0xF0, 0x1F, 0xFC, 0x3C, 0x1E, 0x70, 0x06, 0x60, 0x03, 0xE0, 0x00, - 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x7F, 0xC0, 0x7F, 0xC0, 0x03, 0xC0, 0x03, - 0x60, 0x03, 0x60, 0x07, 0x30, 0x0F, 0x3C, 0x1F, 0x1F, 0xFB, 0x07, 0xE1, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0xFF, 0xFF, 0xFF, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, - 0x3C, 0x1E, 0x0F, 0x07, 0xC7, 0x7F, 0x1F, 0x00, 0xC0, 0x3B, 0x01, 0xCC, - 0x0E, 0x30, 0x70, 0xC3, 0x83, 0x1C, 0x0C, 0xE0, 0x33, 0x80, 0xDE, 0x03, - 0xDC, 0x0E, 0x38, 0x30, 0x60, 0xC1, 0xC3, 0x03, 0x8C, 0x06, 0x30, 0x1C, - 0xC0, 0x3B, 0x00, 0x60, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, - 0xFF, 0xFF, 0xF0, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xD0, - 0x0F, 0xD8, 0x1B, 0xD8, 0x1B, 0xD8, 0x1B, 0xCC, 0x33, 0xCC, 0x33, 0xCC, - 0x33, 0xC6, 0x63, 0xC6, 0x63, 0xC6, 0x63, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC1, 0x83, 0xE0, 0x1F, 0x00, 0xFC, 0x07, 0xE0, 0x3D, 0x81, 0xEE, - 0x0F, 0x30, 0x79, 0xC3, 0xC6, 0x1E, 0x18, 0xF0, 0xE7, 0x83, 0x3C, 0x1D, - 0xE0, 0x6F, 0x01, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, 0xC0, 0x03, 0xE0, 0x0F, - 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, - 0x33, 0x00, 0x18, 0xC0, 0x18, 0x78, 0x3C, 0x1F, 0xFC, 0x03, 0xF8, 0x00, - 0xFF, 0x8F, 0xFE, 0xC0, 0x6C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x07, - 0xFF, 0xEF, 0xFC, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, - 0xC0, 0x0C, 0x00, 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0x07, 0x86, 0x00, 0xC6, - 0x00, 0x33, 0x00, 0x1B, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x36, 0x00, 0x33, 0x01, 0x98, 0xC0, 0xFC, 0x78, - 0x3C, 0x1F, 0xFF, 0x03, 0xF9, 0x80, 0x00, 0x40, 0xFF, 0xC3, 0xFF, 0xCC, - 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x0C, 0xFF, 0xE3, - 0xFF, 0xCC, 0x03, 0xB0, 0x06, 0xC0, 0x1B, 0x00, 0x6C, 0x01, 0xB0, 0x06, - 0xC0, 0x1B, 0x00, 0x70, 0x0F, 0xE0, 0x7F, 0xC3, 0x83, 0x9C, 0x07, 0x60, - 0x0D, 0x80, 0x06, 0x00, 0x1E, 0x00, 0x3F, 0x80, 0x3F, 0xC0, 0x0F, 0x80, - 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0xDE, 0x0E, 0x3F, 0xF0, 0x3F, 0x80, - 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x80, 0xEE, 0x0E, 0x3F, 0xE0, 0x7C, 0x00, 0x60, 0x06, 0xC0, - 0x1D, 0xC0, 0x31, 0x80, 0x63, 0x01, 0xC7, 0x03, 0x06, 0x06, 0x0C, 0x1C, - 0x1C, 0x30, 0x18, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x66, 0x00, 0xDC, 0x01, - 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0xE0, 0x30, 0x1D, 0x80, 0xE0, - 0x76, 0x07, 0x81, 0xD8, 0x1E, 0x06, 0x70, 0x7C, 0x18, 0xC1, 0xB0, 0xE3, - 0x0C, 0xC3, 0x8C, 0x33, 0x0C, 0x38, 0xC6, 0x30, 0x67, 0x18, 0xC1, 0x98, - 0x67, 0x06, 0x61, 0xD8, 0x1D, 0x83, 0x60, 0x3C, 0x0D, 0x80, 0xF0, 0x3E, - 0x03, 0xC0, 0x70, 0x0F, 0x01, 0xC0, 0x18, 0x07, 0x00, 0x70, 0x0E, 0x60, - 0x38, 0xE0, 0x60, 0xE1, 0xC0, 0xC3, 0x01, 0xCC, 0x01, 0xF8, 0x01, 0xE0, - 0x03, 0x80, 0x07, 0x80, 0x1F, 0x00, 0x33, 0x00, 0xE7, 0x03, 0x86, 0x06, - 0x0E, 0x1C, 0x0E, 0x70, 0x0C, 0xC0, 0x1C, 0x60, 0x06, 0x70, 0x0E, 0x30, - 0x1C, 0x38, 0x18, 0x1C, 0x38, 0x0C, 0x30, 0x0E, 0x70, 0x06, 0x60, 0x03, - 0xC0, 0x03, 0xC0, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x0E, - 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, - 0x80, 0x38, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCF, - 0xF0, 0x81, 0x81, 0x02, 0x06, 0x04, 0x08, 0x18, 0x10, 0x20, 0x60, 0x40, - 0x81, 0x81, 0x02, 0x06, 0x04, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x3F, 0xF0, 0x0C, 0x0E, 0x05, 0x86, 0xC3, 0x21, 0x19, - 0x8C, 0x83, 0xC1, 0x80, 0xFF, 0xFE, 0xE3, 0x8C, 0x30, 0x3F, 0x07, 0xF8, - 0xE1, 0xCC, 0x0C, 0x00, 0xC0, 0x1C, 0x3F, 0xCF, 0x8C, 0xC0, 0xCC, 0x0C, - 0xE3, 0xC7, 0xEF, 0x3C, 0x70, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, - 0x0C, 0xF8, 0xDF, 0xCF, 0x0E, 0xE0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xE0, 0x6F, 0x0E, 0xDF, 0xCC, 0xF8, 0x1F, 0x0F, 0xE7, 0x1B, - 0x83, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x38, 0x37, 0x1C, 0xFE, 0x1F, - 0x00, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x3C, 0xCF, 0xFB, 0x8F, - 0xE0, 0xF8, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x3B, 0x8F, 0x3F, - 0x63, 0xCC, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x3C, 0x07, 0xFF, 0xFF, 0xFE, - 0x00, 0xC0, 0x1C, 0x0D, 0xC3, 0x1F, 0xE1, 0xF0, 0x3B, 0xD8, 0xC6, 0x7F, - 0xEC, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x00, 0x1E, 0x67, 0xFD, 0xC7, - 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x9F, - 0xB1, 0xE6, 0x00, 0xC0, 0x3E, 0x0E, 0x7F, 0xC7, 0xE0, 0xC0, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x33, 0xCD, 0xFB, 0xC7, 0xE0, 0xF0, 0x3C, 0x0F, 0x03, - 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x30, 0xF0, 0x3F, 0xFF, 0xFF, - 0xF0, 0x33, 0x00, 0x03, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x3F, - 0xE0, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x01, 0x83, 0x30, 0xC6, 0x30, - 0xCC, 0x1B, 0x83, 0xF0, 0x77, 0x0C, 0x61, 0x8E, 0x30, 0xE6, 0x0C, 0xC1, - 0xD8, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xCF, 0x1F, 0x6F, 0xDF, 0xFC, - 0x78, 0xFC, 0x18, 0x3C, 0x0C, 0x1E, 0x06, 0x0F, 0x03, 0x07, 0x81, 0x83, - 0xC0, 0xC1, 0xE0, 0x60, 0xF0, 0x30, 0x78, 0x18, 0x3C, 0x0C, 0x18, 0xCF, - 0x37, 0xEF, 0x1F, 0x83, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xC0, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, - 0xF0, 0x1E, 0x03, 0xC0, 0x7C, 0x1D, 0xC7, 0x1F, 0xC1, 0xF0, 0xCF, 0x8D, - 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3E, - 0x07, 0xF0, 0xEF, 0xFC, 0xCF, 0x8C, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x00, - 0x1E, 0x67, 0xFD, 0xC7, 0xF0, 0x7C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, - 0x7C, 0x1D, 0xC7, 0x9F, 0xF1, 0xE6, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, - 0xCF, 0x7F, 0x38, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC0, 0x3E, 0x1F, - 0xEE, 0x1B, 0x00, 0xC0, 0x3C, 0x07, 0xF0, 0x3E, 0x01, 0xF0, 0x3E, 0x1D, - 0xFE, 0x3E, 0x00, 0x63, 0x19, 0xFF, 0xB1, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0xE7, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x7E, 0x3D, 0xFB, 0x3C, 0xC0, 0xE0, 0x66, 0x06, 0x60, 0x67, 0x0C, - 0x30, 0xC3, 0x0C, 0x39, 0x81, 0x98, 0x19, 0x81, 0xF0, 0x0F, 0x00, 0xE0, - 0x0E, 0x00, 0xC1, 0xC1, 0xB0, 0xE1, 0xD8, 0x70, 0xCC, 0x2C, 0x66, 0x36, - 0x31, 0x9B, 0x18, 0xCD, 0x98, 0x64, 0x6C, 0x16, 0x36, 0x0F, 0x1A, 0x07, - 0x8F, 0x03, 0x83, 0x80, 0xC1, 0xC0, 0x60, 0xEE, 0x18, 0xC6, 0x0C, 0xC1, - 0xF0, 0x1C, 0x01, 0x80, 0x78, 0x1B, 0x03, 0x30, 0xC7, 0x30, 0x66, 0x06, - 0xE0, 0x6C, 0x0D, 0x83, 0x38, 0x63, 0x0C, 0x63, 0x0E, 0x60, 0xCC, 0x1B, - 0x03, 0x60, 0x3C, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x78, 0x0E, - 0x00, 0xFF, 0xFF, 0xF0, 0x18, 0x0C, 0x07, 0x03, 0x81, 0xC0, 0x60, 0x30, - 0x18, 0x0E, 0x03, 0xFF, 0xFF, 0xC0, 0x19, 0xCC, 0x63, 0x18, 0xC6, 0x31, - 0x99, 0x86, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x1C, 0x60, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0xC7, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x0C, 0x33, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x73, 0x00, 0x70, 0x3E, 0x09, 0xE4, 0x1F, 0x03, - 0x80 }; - -const GFXglyph FreeSans12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 2, 18, 8, 3, -17 }, // 0x21 '!' - { 5, 6, 6, 8, 1, -16 }, // 0x22 '"' - { 10, 13, 16, 13, 0, -15 }, // 0x23 '#' - { 36, 11, 20, 13, 1, -17 }, // 0x24 '$' - { 64, 20, 17, 21, 1, -16 }, // 0x25 '%' - { 107, 14, 17, 16, 1, -16 }, // 0x26 '&' - { 137, 2, 6, 5, 1, -16 }, // 0x27 ''' - { 139, 5, 23, 8, 2, -17 }, // 0x28 '(' - { 154, 5, 23, 8, 1, -17 }, // 0x29 ')' - { 169, 7, 7, 9, 1, -17 }, // 0x2A '*' - { 176, 10, 11, 14, 2, -10 }, // 0x2B '+' - { 190, 2, 6, 7, 2, -1 }, // 0x2C ',' - { 192, 6, 2, 8, 1, -7 }, // 0x2D '-' - { 194, 2, 2, 6, 2, -1 }, // 0x2E '.' - { 195, 7, 18, 7, 0, -17 }, // 0x2F '/' - { 211, 11, 17, 13, 1, -16 }, // 0x30 '0' - { 235, 5, 17, 13, 3, -16 }, // 0x31 '1' - { 246, 11, 17, 13, 1, -16 }, // 0x32 '2' - { 270, 11, 17, 13, 1, -16 }, // 0x33 '3' - { 294, 11, 17, 13, 1, -16 }, // 0x34 '4' - { 318, 11, 17, 13, 1, -16 }, // 0x35 '5' - { 342, 11, 17, 13, 1, -16 }, // 0x36 '6' - { 366, 11, 17, 13, 1, -16 }, // 0x37 '7' - { 390, 11, 17, 13, 1, -16 }, // 0x38 '8' - { 414, 11, 17, 13, 1, -16 }, // 0x39 '9' - { 438, 2, 13, 6, 2, -12 }, // 0x3A ':' - { 442, 2, 16, 6, 2, -11 }, // 0x3B ';' - { 446, 12, 12, 14, 1, -11 }, // 0x3C '<' - { 464, 12, 6, 14, 1, -8 }, // 0x3D '=' - { 473, 12, 12, 14, 1, -11 }, // 0x3E '>' - { 491, 10, 18, 13, 2, -17 }, // 0x3F '?' - { 514, 22, 21, 24, 1, -17 }, // 0x40 '@' - { 572, 16, 18, 16, 0, -17 }, // 0x41 'A' - { 608, 13, 18, 16, 2, -17 }, // 0x42 'B' - { 638, 15, 18, 17, 1, -17 }, // 0x43 'C' - { 672, 14, 18, 17, 2, -17 }, // 0x44 'D' - { 704, 12, 18, 15, 2, -17 }, // 0x45 'E' - { 731, 11, 18, 14, 2, -17 }, // 0x46 'F' - { 756, 16, 18, 18, 1, -17 }, // 0x47 'G' - { 792, 13, 18, 17, 2, -17 }, // 0x48 'H' - { 822, 2, 18, 7, 2, -17 }, // 0x49 'I' - { 827, 9, 18, 13, 1, -17 }, // 0x4A 'J' - { 848, 14, 18, 16, 2, -17 }, // 0x4B 'K' - { 880, 10, 18, 14, 2, -17 }, // 0x4C 'L' - { 903, 16, 18, 20, 2, -17 }, // 0x4D 'M' - { 939, 13, 18, 18, 2, -17 }, // 0x4E 'N' - { 969, 17, 18, 19, 1, -17 }, // 0x4F 'O' - { 1008, 12, 18, 16, 2, -17 }, // 0x50 'P' - { 1035, 17, 19, 19, 1, -17 }, // 0x51 'Q' - { 1076, 14, 18, 17, 2, -17 }, // 0x52 'R' - { 1108, 14, 18, 16, 1, -17 }, // 0x53 'S' - { 1140, 12, 18, 15, 1, -17 }, // 0x54 'T' - { 1167, 13, 18, 17, 2, -17 }, // 0x55 'U' - { 1197, 15, 18, 15, 0, -17 }, // 0x56 'V' - { 1231, 22, 18, 22, 0, -17 }, // 0x57 'W' - { 1281, 15, 18, 16, 0, -17 }, // 0x58 'X' - { 1315, 16, 18, 16, 0, -17 }, // 0x59 'Y' - { 1351, 13, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1381, 4, 23, 7, 2, -17 }, // 0x5B '[' - { 1393, 7, 18, 7, 0, -17 }, // 0x5C '\' - { 1409, 4, 23, 7, 1, -17 }, // 0x5D ']' - { 1421, 9, 9, 11, 1, -16 }, // 0x5E '^' - { 1432, 15, 1, 13, -1, 4 }, // 0x5F '_' - { 1434, 5, 4, 6, 1, -17 }, // 0x60 '`' - { 1437, 12, 13, 13, 1, -12 }, // 0x61 'a' - { 1457, 12, 18, 13, 1, -17 }, // 0x62 'b' - { 1484, 10, 13, 12, 1, -12 }, // 0x63 'c' - { 1501, 11, 18, 13, 1, -17 }, // 0x64 'd' - { 1526, 11, 13, 13, 1, -12 }, // 0x65 'e' - { 1544, 5, 18, 7, 1, -17 }, // 0x66 'f' - { 1556, 11, 18, 13, 1, -12 }, // 0x67 'g' - { 1581, 10, 18, 13, 1, -17 }, // 0x68 'h' - { 1604, 2, 18, 5, 2, -17 }, // 0x69 'i' - { 1609, 4, 23, 6, 0, -17 }, // 0x6A 'j' - { 1621, 11, 18, 12, 1, -17 }, // 0x6B 'k' - { 1646, 2, 18, 5, 1, -17 }, // 0x6C 'l' - { 1651, 17, 13, 19, 1, -12 }, // 0x6D 'm' - { 1679, 10, 13, 13, 1, -12 }, // 0x6E 'n' - { 1696, 11, 13, 13, 1, -12 }, // 0x6F 'o' - { 1714, 12, 17, 13, 1, -12 }, // 0x70 'p' - { 1740, 11, 17, 13, 1, -12 }, // 0x71 'q' - { 1764, 6, 13, 8, 1, -12 }, // 0x72 'r' - { 1774, 10, 13, 12, 1, -12 }, // 0x73 's' - { 1791, 5, 16, 7, 1, -15 }, // 0x74 't' - { 1801, 10, 13, 13, 1, -12 }, // 0x75 'u' - { 1818, 12, 13, 12, 0, -12 }, // 0x76 'v' - { 1838, 17, 13, 17, 0, -12 }, // 0x77 'w' - { 1866, 11, 13, 11, 0, -12 }, // 0x78 'x' - { 1884, 11, 18, 11, 0, -12 }, // 0x79 'y' - { 1909, 10, 13, 12, 1, -12 }, // 0x7A 'z' - { 1926, 5, 23, 8, 1, -17 }, // 0x7B '{' - { 1941, 2, 23, 6, 2, -17 }, // 0x7C '|' - { 1947, 5, 23, 8, 2, -17 }, // 0x7D '}' - { 1962, 10, 5, 12, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSans12pt7b PROGMEM = { - (uint8_t *)FreeSans12pt7bBitmaps, - (GFXglyph *)FreeSans12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2641 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h deleted file mode 100644 index 3fdc5911e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h +++ /dev/null @@ -1,452 +0,0 @@ -const uint8_t FreeSans18pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE9, 0x20, 0x3F, 0xFC, 0xE3, 0xF1, - 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, 0x82, 0x41, 0x00, 0x01, 0xC3, 0x80, - 0x38, 0x70, 0x06, 0x0E, 0x00, 0xC1, 0x80, 0x38, 0x70, 0x07, 0x0E, 0x0F, - 0xFF, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE0, 0xE1, 0xC0, 0x1C, 0x38, 0x03, - 0x87, 0x00, 0x70, 0xE0, 0x0C, 0x18, 0x3F, 0xFF, 0xF7, 0xFF, 0xFE, 0xFF, - 0xFF, 0xC1, 0xC3, 0x80, 0x30, 0x60, 0x06, 0x0C, 0x01, 0xC3, 0x80, 0x38, - 0x70, 0x07, 0x0E, 0x00, 0xC1, 0x80, 0x03, 0x00, 0x0F, 0xC0, 0x3F, 0xF0, - 0x3F, 0xF8, 0x7B, 0x3C, 0xF3, 0x1C, 0xE3, 0x0E, 0xE3, 0x0E, 0xE3, 0x0E, - 0xE3, 0x00, 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x00, 0x7F, 0x80, 0x1F, 0xF0, - 0x07, 0xFC, 0x03, 0x7E, 0x03, 0x0F, 0x03, 0x07, 0xE3, 0x07, 0xE3, 0x07, - 0xE3, 0x07, 0xE3, 0x0F, 0x73, 0x3E, 0x7F, 0xFC, 0x3F, 0xF8, 0x0F, 0xE0, - 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x78, 0x00, - 0xE0, 0x0F, 0xF0, 0x06, 0x00, 0xFF, 0xC0, 0x70, 0x07, 0x0E, 0x07, 0x00, - 0x70, 0x38, 0x38, 0x03, 0x00, 0xC3, 0x80, 0x18, 0x06, 0x1C, 0x00, 0xE0, - 0x71, 0xC0, 0x03, 0x87, 0x8C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x86, - 0x00, 0x01, 0xF8, 0x70, 0x00, 0x00, 0x03, 0x03, 0xC0, 0x00, 0x38, 0x7F, - 0x80, 0x01, 0x87, 0xFE, 0x00, 0x1C, 0x38, 0x70, 0x00, 0xC3, 0x81, 0xC0, - 0x0E, 0x18, 0x06, 0x00, 0xE0, 0xC0, 0x30, 0x07, 0x07, 0x03, 0x80, 0x70, - 0x1C, 0x38, 0x03, 0x80, 0xFF, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, 0x07, - 0x80, 0x01, 0xF0, 0x00, 0x7F, 0x80, 0x0F, 0xFC, 0x01, 0xE1, 0xE0, 0x1C, - 0x0E, 0x01, 0xC0, 0xE0, 0x1C, 0x0E, 0x01, 0xE1, 0xE0, 0x0E, 0x3C, 0x00, - 0x77, 0x80, 0x07, 0xF0, 0x00, 0x7C, 0x00, 0x0F, 0xE0, 0x03, 0xCF, 0x1C, - 0x78, 0x79, 0xC7, 0x03, 0xDC, 0xE0, 0x1F, 0x8E, 0x00, 0xF8, 0xE0, 0x0F, - 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x87, 0xC3, 0xFC, 0x7F, 0xFD, 0xC3, 0xFF, - 0x0E, 0x0F, 0xC0, 0xF0, 0xFF, 0xFF, 0xFA, 0x40, 0x06, 0x06, 0x0C, 0x0C, - 0x18, 0x18, 0x38, 0x30, 0x70, 0x70, 0x70, 0x60, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x70, 0x70, 0x30, 0x38, 0x18, - 0x18, 0x0C, 0x0C, 0x06, 0x03, 0xC0, 0x60, 0x30, 0x30, 0x38, 0x18, 0x1C, - 0x0C, 0x0E, 0x0E, 0x0E, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x06, 0x0E, 0x0E, 0x0E, 0x0C, 0x1C, 0x18, 0x38, 0x30, 0x30, - 0x60, 0xC0, 0x0C, 0x03, 0x00, 0xC3, 0xB7, 0xFF, 0xC7, 0x81, 0xE0, 0xEC, - 0x73, 0x88, 0x40, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0xFF, - 0xF6, 0xDA, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xC0, 0x30, 0x18, - 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x06, 0x01, 0x80, 0x60, 0x30, 0x0C, - 0x03, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x00, 0xC0, 0x30, 0x18, 0x06, - 0x01, 0x80, 0xC0, 0x30, 0x00, 0x07, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, - 0x3C, 0x78, 0x1E, 0x70, 0x0E, 0x70, 0x0E, 0xE0, 0x07, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3C, - 0x3C, 0x1F, 0xF8, 0x1F, 0xF0, 0x07, 0xE0, 0x03, 0x03, 0x07, 0x0F, 0x3F, - 0xFF, 0xFF, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE0, 0x1F, 0xF8, - 0x3F, 0xFC, 0x7C, 0x3E, 0x70, 0x0F, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, - 0x03, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x70, 0x00, - 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xF0, - 0x07, 0xFE, 0x07, 0xFF, 0x87, 0x83, 0xC3, 0x80, 0xF3, 0x80, 0x39, 0xC0, - 0x1C, 0xE0, 0x0E, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x3F, 0x00, - 0x1F, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xF0, 0x01, - 0xF8, 0x00, 0xFE, 0x00, 0x77, 0x00, 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, - 0xF8, 0x07, 0xF0, 0x00, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0xF8, - 0x00, 0xF8, 0x01, 0xF8, 0x03, 0xB8, 0x03, 0x38, 0x07, 0x38, 0x0E, 0x38, - 0x1C, 0x38, 0x18, 0x38, 0x38, 0x38, 0x70, 0x38, 0x60, 0x38, 0xE0, 0x38, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x1F, 0xFF, 0x0F, 0xFF, 0x8F, 0xFF, - 0xC7, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x39, - 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0x83, 0xE7, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xFC, 0x00, - 0xEF, 0x00, 0x73, 0xC0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xE0, 0x00, - 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3C, 0x1E, 0x38, 0x0E, 0x70, 0x0E, - 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, 0xFF, 0xFC, - 0xFC, 0x3E, 0xF0, 0x0E, 0xF0, 0x0F, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, - 0x60, 0x07, 0x70, 0x0F, 0x70, 0x0E, 0x3C, 0x3E, 0x3F, 0xFC, 0x1F, 0xF8, - 0x07, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x06, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x18, 0x00, 0x38, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, - 0x00, 0xC0, 0x01, 0xC0, 0x01, 0x80, 0x03, 0x80, 0x03, 0x80, 0x07, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, - 0xC7, 0x80, 0xF3, 0x80, 0x39, 0xC0, 0x1C, 0xE0, 0x0E, 0x78, 0x0F, 0x1E, - 0x0F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xE0, 0xF9, 0xC0, 0x1D, - 0xC0, 0x0F, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xF7, 0x00, - 0x73, 0xE0, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, 0xE0, - 0x1F, 0xF8, 0x3F, 0xFC, 0x7C, 0x3C, 0x70, 0x0E, 0xF0, 0x0E, 0xE0, 0x06, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0x70, 0x0F, 0x78, 0x3F, - 0x3F, 0xFF, 0x1F, 0xF7, 0x07, 0xC7, 0x00, 0x07, 0x00, 0x06, 0x00, 0x0E, - 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xF8, 0x1F, 0xF0, 0x07, 0xC0, - 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x80, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x07, 0xFF, 0xB6, 0xD6, 0x00, 0x00, 0x80, 0x03, 0xC0, 0x07, 0xE0, - 0x0F, 0xC0, 0x3F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x00, 0xE0, 0x00, - 0x7C, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x07, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0x00, 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x80, 0x80, 0x00, 0x70, 0x00, 0x3E, 0x00, 0x0F, 0xE0, 0x00, 0xFC, - 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, - 0x1F, 0x80, 0x7F, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x01, 0xC0, 0x00, - 0x80, 0x00, 0x00, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE3, 0xC3, 0xEF, 0x01, - 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0x00, 0x0E, 0x00, 0x38, 0x00, 0xF0, - 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x00, - 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x0F, 0xE0, 0x03, 0xE0, 0x01, 0xF0, - 0x07, 0x80, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x1E, - 0x3C, 0x03, 0xE0, 0x1E, 0x38, 0x0F, 0xF3, 0x8E, 0x78, 0x1E, 0x3F, 0x0F, - 0x70, 0x38, 0x1F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, - 0xE0, 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1C, 0x07, - 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x38, 0x1C, - 0xF0, 0x70, 0x78, 0x3C, 0x70, 0x78, 0xFC, 0x78, 0x78, 0x3F, 0xDF, 0xF0, - 0x38, 0x1F, 0x0F, 0xC0, 0x3C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x0E, 0x00, 0x01, 0xFF, 0xFE, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xDC, 0x00, 0x07, 0x78, - 0x00, 0x3C, 0xE0, 0x00, 0xE3, 0x80, 0x03, 0x8F, 0x00, 0x1E, 0x1C, 0x00, - 0x70, 0x70, 0x01, 0xC1, 0xE0, 0x0E, 0x03, 0x80, 0x38, 0x0E, 0x00, 0xE0, - 0x3C, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFF, 0xFF, 0x83, 0xC0, 0x0E, - 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xF1, 0xE0, 0x01, 0xC7, 0x00, 0x07, 0xBC, - 0x00, 0x1E, 0xF0, 0x00, 0x3B, 0x80, 0x00, 0xF0, 0xFF, 0xFC, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFE, 0x70, 0x03, 0xCE, 0x00, 0x3D, 0xC0, 0x03, 0xB8, 0x00, - 0x77, 0x00, 0x0E, 0xE0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1E, 0x7F, 0xFF, - 0x8F, 0xFF, 0xF1, 0xFF, 0xFF, 0x38, 0x00, 0xF7, 0x00, 0x0E, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x03, - 0xF8, 0x00, 0xF7, 0xFF, 0xFC, 0xFF, 0xFF, 0x1F, 0xFF, 0x80, 0x00, 0xFF, - 0x00, 0x0F, 0xFF, 0x00, 0xFF, 0xFE, 0x07, 0xE0, 0x7C, 0x3E, 0x00, 0x78, - 0xF0, 0x00, 0xE7, 0x80, 0x03, 0xDC, 0x00, 0x07, 0x70, 0x00, 0x03, 0x80, - 0x00, 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, - 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x1D, 0xC0, 0x00, 0x77, - 0x00, 0x03, 0xDE, 0x00, 0x0E, 0x3C, 0x00, 0x78, 0xF8, 0x03, 0xC1, 0xF8, - 0x1F, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0xF8, - 0x0F, 0xFF, 0xE0, 0xFF, 0xFF, 0x0E, 0x00, 0xF8, 0xE0, 0x03, 0xCE, 0x00, - 0x1C, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, 0x07, 0xE0, - 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, - 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x0F, 0xE0, 0x00, 0xEE, 0x00, 0x0E, - 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x0F, 0x8F, 0xFF, 0xF0, 0xFF, 0xFE, - 0x0F, 0xFF, 0x80, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, - 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xEE, 0x00, - 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, - 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x1F, 0xFF, 0xCF, 0xFF, 0xE7, 0xFF, 0xF3, 0x80, 0x01, 0xC0, 0x00, - 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x7F, - 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x0F, 0x80, 0xFC, 0x1E, 0x00, - 0x3E, 0x3C, 0x00, 0x0E, 0x78, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x70, 0x00, - 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xE0, 0x03, - 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x0F, 0x78, 0x00, 0x0F, 0x3C, 0x00, - 0x1F, 0x1E, 0x00, 0x3F, 0x0F, 0xC0, 0xF7, 0x07, 0xFF, 0xE7, 0x03, 0xFF, - 0xC3, 0x00, 0xFF, 0x03, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, - 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, - 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, - 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, - 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1C, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, - 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1F, 0x80, 0x7E, - 0x01, 0xF8, 0x07, 0xE0, 0x1F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, - 0x3F, 0x00, 0xE0, 0x01, 0xEE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0xF0, - 0xE0, 0x1E, 0x0E, 0x03, 0xE0, 0xE0, 0x7C, 0x0E, 0x0F, 0x80, 0xE1, 0xF0, - 0x0E, 0x1E, 0x00, 0xE3, 0xC0, 0x0E, 0x7C, 0x00, 0xEF, 0xE0, 0x0F, 0xCE, - 0x00, 0xF8, 0xF0, 0x0F, 0x07, 0x80, 0xE0, 0x3C, 0x0E, 0x03, 0xC0, 0xE0, - 0x1E, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0x78, 0xE0, 0x03, 0xCE, - 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0F, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, - 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, - 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, 0x00, 0x1F, 0xF8, - 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFC, 0x00, 0x3F, 0xFC, - 0x00, 0x3F, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xEE, 0x00, 0x77, 0xE7, - 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE7, 0x00, 0xE7, 0xE3, 0x81, 0xC7, 0xE3, - 0x81, 0xC7, 0xE3, 0x81, 0xC7, 0xE1, 0xC3, 0x87, 0xE1, 0xC3, 0x87, 0xE1, - 0xC3, 0x87, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, 0xE7, 0x07, 0xE0, - 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3C, 0x07, 0xE0, - 0x3C, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xC0, 0x07, - 0xFC, 0x00, 0x7F, 0xE0, 0x07, 0xEF, 0x00, 0x7E, 0x70, 0x07, 0xE7, 0x80, - 0x7E, 0x3C, 0x07, 0xE1, 0xC0, 0x7E, 0x1E, 0x07, 0xE0, 0xE0, 0x7E, 0x0F, - 0x07, 0xE0, 0x78, 0x7E, 0x03, 0x87, 0xE0, 0x3C, 0x7E, 0x01, 0xE7, 0xE0, - 0x0E, 0x7E, 0x00, 0xF7, 0xE0, 0x07, 0xFE, 0x00, 0x3F, 0xE0, 0x03, 0xFE, - 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, - 0x00, 0xF1, 0xE0, 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xB8, 0x00, 0x03, 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x01, 0xE3, 0xC0, 0x01, - 0xE0, 0xF0, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x3F, 0xFF, 0x8F, 0xFF, 0xF3, - 0x80, 0x3E, 0xE0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, - 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1E, 0xFF, 0xFF, 0x3F, 0xFF, - 0x8F, 0xFF, 0xC3, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, - 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xFF, - 0xFC, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x03, 0xC1, 0xE0, 0x00, 0xF1, 0xE0, - 0x00, 0x3C, 0xE0, 0x00, 0x0E, 0x70, 0x00, 0x07, 0x70, 0x00, 0x01, 0xF8, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x03, - 0x9C, 0x00, 0x01, 0xCF, 0x00, 0x39, 0xE3, 0xC0, 0x1F, 0xE0, 0xF0, 0x07, - 0xE0, 0x3E, 0x03, 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xEE, 0x00, 0x3F, - 0x83, 0x80, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x20, 0xFF, 0xFE, 0x0F, 0xFF, - 0xF8, 0xFF, 0xFF, 0xCE, 0x00, 0x3C, 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, - 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x01, 0xCE, - 0x00, 0x3C, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8E, 0x00, 0x3C, - 0xE0, 0x01, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, - 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xEE, 0x00, 0x0E, 0xE0, 0x00, 0xFE, 0x00, - 0x0F, 0x03, 0xFC, 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xE0, 0x7C, 0x38, - 0x01, 0xE7, 0x00, 0x0E, 0x70, 0x00, 0xE7, 0x00, 0x00, 0x70, 0x00, 0x07, - 0x80, 0x00, 0x3E, 0x00, 0x01, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x3F, 0xF8, - 0x00, 0x3F, 0xE0, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x00, - 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x77, 0x80, 0x0E, 0x7C, 0x03, 0xE3, 0xFF, - 0xFC, 0x1F, 0xFF, 0x80, 0x3F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x80, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, - 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, - 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0xFC, 0x00, - 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, - 0x3F, 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x1E, 0xF0, 0x07, - 0x9F, 0x01, 0xF1, 0xFF, 0xFC, 0x1F, 0xFE, 0x00, 0x7F, 0x00, 0xE0, 0x00, - 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x1C, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x3C, - 0x00, 0x70, 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x1C, 0x01, 0xC0, 0xE0, 0x0E, - 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x83, 0x80, 0x1C, - 0x1C, 0x00, 0xE0, 0xE0, 0x07, 0x8E, 0x00, 0x1C, 0x70, 0x00, 0xE3, 0x80, - 0x07, 0xB8, 0x00, 0x1D, 0xC0, 0x00, 0xEE, 0x00, 0x07, 0xE0, 0x00, 0x1F, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0x80, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x70, - 0x03, 0xC0, 0x0F, 0x78, 0x03, 0xE0, 0x0F, 0x78, 0x03, 0xE0, 0x0E, 0x38, - 0x07, 0xE0, 0x0E, 0x38, 0x07, 0xF0, 0x1E, 0x3C, 0x07, 0x70, 0x1E, 0x3C, - 0x07, 0x70, 0x1C, 0x1C, 0x0E, 0x70, 0x1C, 0x1C, 0x0E, 0x38, 0x3C, 0x1C, - 0x0E, 0x38, 0x3C, 0x1E, 0x1E, 0x38, 0x38, 0x0E, 0x1C, 0x38, 0x38, 0x0E, - 0x1C, 0x1C, 0x38, 0x0E, 0x1C, 0x1C, 0x78, 0x0F, 0x3C, 0x1C, 0x70, 0x07, - 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, 0x38, 0x0E, 0x70, 0x07, - 0x70, 0x0E, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xF0, 0x07, 0xE0, 0x03, - 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xC0, 0x01, - 0xE0, 0x03, 0xC0, 0xF0, 0x00, 0x7B, 0xC0, 0x07, 0x8F, 0x00, 0x38, 0x78, - 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x1E, 0x00, 0xF1, 0xE0, - 0x03, 0x8E, 0x00, 0x1E, 0xF0, 0x00, 0x7F, 0x00, 0x01, 0xF0, 0x00, 0x0F, - 0x80, 0x00, 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x3B, 0x80, 0x03, 0xDE, 0x00, - 0x3C, 0x78, 0x01, 0xC1, 0xC0, 0x1E, 0x0F, 0x01, 0xE0, 0x3C, 0x0E, 0x00, - 0xE0, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0x70, 0x00, 0xF7, 0x80, 0x03, 0xC0, - 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0x81, - 0xE0, 0x0F, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x07, - 0x83, 0x80, 0x07, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0F, 0x78, 0x00, 0x0E, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, - 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x70, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, - 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, - 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xF8, 0xE3, 0x8E, 0x38, 0xE3, - 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, - 0x8E, 0x38, 0xE3, 0x8F, 0xFF, 0xFC, 0xC0, 0x30, 0x06, 0x01, 0x80, 0x60, - 0x0C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x03, 0x00, - 0x40, 0x18, 0x06, 0x01, 0x80, 0x30, 0x0C, 0x03, 0x00, 0x60, 0x18, 0x06, - 0x00, 0xC0, 0x30, 0xFF, 0xFF, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, - 0x1C, 0x7F, 0xFF, 0xFC, 0x07, 0x00, 0x78, 0x03, 0xC0, 0x3F, 0x01, 0xD8, - 0x0C, 0xE0, 0xE3, 0x06, 0x1C, 0x70, 0xE3, 0x83, 0x18, 0x1D, 0xC0, 0x6C, - 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF0, 0xF0, 0xE0, 0xE0, - 0xE0, 0x07, 0xF0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0x03, 0xC7, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0xFE, 0x0F, 0xFF, 0x1F, 0xF3, - 0x9F, 0x01, 0xCF, 0x00, 0xE7, 0x00, 0x73, 0x80, 0x79, 0xE0, 0xFC, 0x7F, - 0xEF, 0x9F, 0xE3, 0xC7, 0xE1, 0xE0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE3, 0xE0, 0xEF, 0xF8, - 0xFF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, - 0xF8, 0x1E, 0xFC, 0x3C, 0xEF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0x07, 0xF0, - 0x1F, 0xF8, 0x3F, 0xFC, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x07, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x07, - 0x70, 0x07, 0x78, 0x0E, 0x7C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, - 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, - 0x1C, 0x00, 0x0E, 0x0F, 0xC7, 0x1F, 0xFB, 0x9F, 0xFF, 0xDF, 0x07, 0xEF, - 0x01, 0xF7, 0x00, 0x7F, 0x80, 0x3F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, - 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x77, 0x00, 0x7B, 0xC0, 0x7D, 0xF0, - 0x7E, 0x7F, 0xFB, 0x1F, 0xF9, 0x83, 0xF0, 0xC0, 0x07, 0xE0, 0x1F, 0xF8, - 0x3F, 0xFC, 0x7C, 0x1E, 0x70, 0x0E, 0x60, 0x06, 0xE0, 0x07, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x07, - 0x78, 0x0E, 0x3C, 0x1E, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, 0x0E, 0x3C, - 0xF9, 0xC3, 0x87, 0x0E, 0x7F, 0xFF, 0xFC, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, - 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x0E, 0x1C, 0x38, 0x70, 0x07, 0xC7, 0x1F, - 0xF7, 0x3F, 0xFF, 0x3C, 0x3F, 0x78, 0x0F, 0x70, 0x0F, 0xE0, 0x07, 0xE0, - 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0x70, - 0x0F, 0x78, 0x0F, 0x7C, 0x3F, 0x3F, 0xF7, 0x1F, 0xE7, 0x07, 0xC7, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x0E, 0x70, 0x0E, 0x78, 0x1E, 0x3F, 0xFC, 0x1F, - 0xF8, 0x07, 0xE0, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x71, 0xF8, 0xE7, 0xFD, 0xDF, 0xFB, 0xF0, 0xFF, - 0xC0, 0xFF, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, - 0xE0, 0x0F, 0xC0, 0x1C, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFC, 0x1C, 0x71, 0xC7, 0x00, 0x00, 0x07, 0x1C, 0x71, 0xC7, 0x1C, - 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, - 0x73, 0xFF, 0xFB, 0xC0, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x3C, 0xE0, 0x78, 0xE0, 0xF0, - 0xE1, 0xE0, 0xE3, 0xC0, 0xE7, 0x80, 0xEF, 0x00, 0xEF, 0x80, 0xFF, 0x80, - 0xFB, 0xC0, 0xF1, 0xE0, 0xE0, 0xE0, 0xE0, 0xF0, 0xE0, 0x70, 0xE0, 0x78, - 0xE0, 0x3C, 0xE0, 0x1C, 0xE0, 0x1E, 0xE0, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE3, 0xE0, 0xF8, 0xE7, 0xF1, 0xFE, - 0xEF, 0xFB, 0xFE, 0xF8, 0x7F, 0x0F, 0xF0, 0x3E, 0x07, 0xF0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, 0xE0, 0x1C, 0x07, - 0xE0, 0x1C, 0x07, 0xE3, 0xF1, 0xCF, 0xFB, 0xBF, 0xF7, 0xE1, 0xFF, 0x81, - 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, - 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x38, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0x83, 0xC7, - 0x80, 0xF3, 0x80, 0x3B, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, - 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3B, 0x80, 0x39, 0xE0, 0x3C, 0x78, - 0x3C, 0x3F, 0xFE, 0x0F, 0xFE, 0x01, 0xFC, 0x00, 0xE3, 0xE0, 0xE7, 0xF8, - 0xEF, 0xFC, 0xFC, 0x3E, 0xF8, 0x1E, 0xF0, 0x0E, 0xE0, 0x0F, 0xE0, 0x07, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xF0, 0x0E, - 0xF8, 0x1E, 0xFC, 0x3E, 0xFF, 0xFC, 0xEF, 0xF8, 0xE3, 0xE0, 0xE0, 0x00, - 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0x07, 0xE1, - 0x8F, 0xFC, 0xCF, 0xFF, 0x67, 0x83, 0xF7, 0x80, 0xFB, 0x80, 0x3F, 0xC0, - 0x1F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, - 0x00, 0x3B, 0x80, 0x3D, 0xE0, 0x3E, 0xF8, 0x3F, 0x3F, 0xFF, 0x8F, 0xFD, - 0xC1, 0xF8, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x03, 0x80, 0xE3, 0xF7, 0xFB, 0xFF, 0x8F, 0x07, 0x83, 0x81, - 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, - 0x38, 0x00, 0x0F, 0xC0, 0xFF, 0x87, 0xFF, 0x3C, 0x1E, 0xE0, 0x3B, 0x80, - 0x0E, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0x7F, 0x00, - 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x1F, 0x7F, 0xF8, 0xFF, 0xC1, 0xFC, 0x00, - 0x38, 0x70, 0xE1, 0xCF, 0xFF, 0xFF, 0x9C, 0x38, 0x70, 0xE1, 0xC3, 0x87, - 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xE7, 0xC7, 0x80, 0xE0, 0x0F, 0xC0, - 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, 0x07, - 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, 0xFC, 0x03, 0xFC, - 0x0F, 0xFC, 0x3F, 0x7F, 0xEE, 0xFF, 0x9C, 0x7E, 0x38, 0x70, 0x03, 0xB8, - 0x03, 0x9C, 0x01, 0xC7, 0x00, 0xE3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x38, - 0x38, 0x38, 0x1C, 0x1C, 0x07, 0x0E, 0x03, 0x8E, 0x01, 0xC7, 0x00, 0x77, - 0x00, 0x3B, 0x80, 0x1D, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0x70, 0x00, 0xF0, 0x1C, 0x03, 0xB8, 0x1F, 0x03, 0xDC, 0x0F, 0x81, 0xCE, - 0x07, 0xC0, 0xE7, 0x83, 0xE0, 0x71, 0xC3, 0xB8, 0x70, 0xE1, 0xDC, 0x38, - 0x70, 0xEE, 0x1C, 0x1C, 0x63, 0x0E, 0x0E, 0x71, 0xCE, 0x07, 0x38, 0xE7, - 0x03, 0x9C, 0x73, 0x80, 0xEC, 0x19, 0x80, 0x7E, 0x0F, 0xC0, 0x3F, 0x07, - 0xE0, 0x0F, 0x83, 0xF0, 0x07, 0x80, 0xF0, 0x03, 0xC0, 0x78, 0x01, 0xE0, - 0x3C, 0x00, 0x70, 0x07, 0x38, 0x0E, 0x3C, 0x1C, 0x1C, 0x1C, 0x0E, 0x38, - 0x0F, 0x70, 0x07, 0x70, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xC0, 0x03, 0xE0, - 0x07, 0xE0, 0x07, 0x70, 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x1C, 0x38, 0x1E, - 0x78, 0x0E, 0x70, 0x07, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC7, 0x01, - 0xC3, 0x80, 0xE1, 0xC0, 0x70, 0x70, 0x70, 0x38, 0x38, 0x1C, 0x3C, 0x07, - 0x1C, 0x03, 0x8E, 0x01, 0xCE, 0x00, 0x77, 0x00, 0x3B, 0x80, 0x1F, 0x80, - 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, - 0x00, 0x00, 0x7F, 0xFC, 0xFF, 0xF9, 0xFF, 0xF0, 0x00, 0xE0, 0x03, 0x80, - 0x0E, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF8, 0x07, 0x0F, 0x1F, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0xF8, 0xE0, 0xF8, 0x38, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1F, 0x0F, 0x07, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0xF0, 0xF8, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x1C, 0x1F, - 0x07, 0x1F, 0x1C, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0xF8, 0xF0, 0xE0, 0x38, 0x00, 0xFC, 0x03, 0xFC, 0x1F, 0x3E, - 0x3C, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00 }; - -const GFXglyph FreeSans18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 3, 26, 12, 4, -25 }, // 0x21 '!' - { 10, 9, 9, 12, 1, -24 }, // 0x22 '"' - { 21, 19, 24, 19, 0, -23 }, // 0x23 '#' - { 78, 16, 30, 19, 2, -26 }, // 0x24 '$' - { 138, 29, 25, 31, 1, -24 }, // 0x25 '%' - { 229, 20, 25, 23, 2, -24 }, // 0x26 '&' - { 292, 3, 9, 7, 2, -24 }, // 0x27 ''' - { 296, 8, 33, 12, 3, -25 }, // 0x28 '(' - { 329, 8, 33, 12, 1, -25 }, // 0x29 ')' - { 362, 10, 10, 14, 2, -25 }, // 0x2A '*' - { 375, 16, 16, 20, 2, -15 }, // 0x2B '+' - { 407, 3, 9, 10, 3, -3 }, // 0x2C ',' - { 411, 8, 3, 12, 2, -10 }, // 0x2D '-' - { 414, 3, 4, 9, 3, -3 }, // 0x2E '.' - { 416, 10, 26, 10, 0, -25 }, // 0x2F '/' - { 449, 16, 25, 19, 2, -24 }, // 0x30 '0' - { 499, 8, 25, 19, 4, -24 }, // 0x31 '1' - { 524, 16, 25, 19, 2, -24 }, // 0x32 '2' - { 574, 17, 25, 19, 1, -24 }, // 0x33 '3' - { 628, 16, 25, 19, 1, -24 }, // 0x34 '4' - { 678, 17, 25, 19, 1, -24 }, // 0x35 '5' - { 732, 16, 25, 19, 2, -24 }, // 0x36 '6' - { 782, 16, 25, 19, 2, -24 }, // 0x37 '7' - { 832, 17, 25, 19, 1, -24 }, // 0x38 '8' - { 886, 16, 25, 19, 1, -24 }, // 0x39 '9' - { 936, 3, 19, 9, 3, -18 }, // 0x3A ':' - { 944, 3, 24, 9, 3, -18 }, // 0x3B ';' - { 953, 17, 17, 20, 2, -16 }, // 0x3C '<' - { 990, 17, 9, 20, 2, -12 }, // 0x3D '=' - { 1010, 17, 17, 20, 2, -16 }, // 0x3E '>' - { 1047, 15, 26, 19, 3, -25 }, // 0x3F '?' - { 1096, 32, 31, 36, 1, -25 }, // 0x40 '@' - { 1220, 22, 26, 23, 1, -25 }, // 0x41 'A' - { 1292, 19, 26, 23, 3, -25 }, // 0x42 'B' - { 1354, 22, 26, 25, 1, -25 }, // 0x43 'C' - { 1426, 20, 26, 24, 3, -25 }, // 0x44 'D' - { 1491, 18, 26, 22, 3, -25 }, // 0x45 'E' - { 1550, 17, 26, 21, 3, -25 }, // 0x46 'F' - { 1606, 24, 26, 27, 1, -25 }, // 0x47 'G' - { 1684, 19, 26, 25, 3, -25 }, // 0x48 'H' - { 1746, 3, 26, 10, 4, -25 }, // 0x49 'I' - { 1756, 14, 26, 18, 1, -25 }, // 0x4A 'J' - { 1802, 20, 26, 24, 3, -25 }, // 0x4B 'K' - { 1867, 15, 26, 20, 3, -25 }, // 0x4C 'L' - { 1916, 24, 26, 30, 3, -25 }, // 0x4D 'M' - { 1994, 20, 26, 26, 3, -25 }, // 0x4E 'N' - { 2059, 25, 26, 27, 1, -25 }, // 0x4F 'O' - { 2141, 18, 26, 23, 3, -25 }, // 0x50 'P' - { 2200, 25, 28, 27, 1, -25 }, // 0x51 'Q' - { 2288, 20, 26, 25, 3, -25 }, // 0x52 'R' - { 2353, 20, 26, 23, 1, -25 }, // 0x53 'S' - { 2418, 19, 26, 22, 1, -25 }, // 0x54 'T' - { 2480, 19, 26, 25, 3, -25 }, // 0x55 'U' - { 2542, 21, 26, 23, 1, -25 }, // 0x56 'V' - { 2611, 32, 26, 33, 0, -25 }, // 0x57 'W' - { 2715, 21, 26, 23, 1, -25 }, // 0x58 'X' - { 2784, 23, 26, 24, 0, -25 }, // 0x59 'Y' - { 2859, 19, 26, 22, 1, -25 }, // 0x5A 'Z' - { 2921, 6, 33, 10, 2, -25 }, // 0x5B '[' - { 2946, 10, 26, 10, 0, -25 }, // 0x5C '\' - { 2979, 6, 33, 10, 1, -25 }, // 0x5D ']' - { 3004, 13, 13, 16, 2, -24 }, // 0x5E '^' - { 3026, 21, 2, 19, -1, 5 }, // 0x5F '_' - { 3032, 7, 5, 9, 1, -25 }, // 0x60 '`' - { 3037, 17, 19, 19, 1, -18 }, // 0x61 'a' - { 3078, 16, 26, 20, 2, -25 }, // 0x62 'b' - { 3130, 16, 19, 18, 1, -18 }, // 0x63 'c' - { 3168, 17, 26, 20, 1, -25 }, // 0x64 'd' - { 3224, 16, 19, 19, 1, -18 }, // 0x65 'e' - { 3262, 7, 26, 10, 1, -25 }, // 0x66 'f' - { 3285, 16, 27, 19, 1, -18 }, // 0x67 'g' - { 3339, 15, 26, 19, 2, -25 }, // 0x68 'h' - { 3388, 3, 26, 8, 2, -25 }, // 0x69 'i' - { 3398, 6, 34, 9, 0, -25 }, // 0x6A 'j' - { 3424, 16, 26, 18, 2, -25 }, // 0x6B 'k' - { 3476, 3, 26, 7, 2, -25 }, // 0x6C 'l' - { 3486, 24, 19, 28, 2, -18 }, // 0x6D 'm' - { 3543, 15, 19, 19, 2, -18 }, // 0x6E 'n' - { 3579, 17, 19, 19, 1, -18 }, // 0x6F 'o' - { 3620, 16, 25, 20, 2, -18 }, // 0x70 'p' - { 3670, 17, 25, 20, 1, -18 }, // 0x71 'q' - { 3724, 9, 19, 12, 2, -18 }, // 0x72 'r' - { 3746, 14, 19, 17, 2, -18 }, // 0x73 's' - { 3780, 7, 23, 10, 1, -22 }, // 0x74 't' - { 3801, 15, 19, 19, 2, -18 }, // 0x75 'u' - { 3837, 17, 19, 17, 0, -18 }, // 0x76 'v' - { 3878, 25, 19, 25, 0, -18 }, // 0x77 'w' - { 3938, 16, 19, 17, 0, -18 }, // 0x78 'x' - { 3976, 17, 27, 17, 0, -18 }, // 0x79 'y' - { 4034, 15, 19, 17, 1, -18 }, // 0x7A 'z' - { 4070, 8, 33, 12, 1, -25 }, // 0x7B '{' - { 4103, 2, 33, 9, 3, -25 }, // 0x7C '|' - { 4112, 8, 33, 12, 3, -25 }, // 0x7D '}' - { 4145, 15, 7, 18, 1, -15 } }; // 0x7E '~' - -const GFXfont FreeSans18pt7b PROGMEM = { - (uint8_t *)FreeSans18pt7bBitmaps, - (GFXglyph *)FreeSans18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4831 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h deleted file mode 100644 index ff2d174fb..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h +++ /dev/null @@ -1,727 +0,0 @@ -const uint8_t FreeSans24pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, - 0x66, 0x00, 0x0F, 0xFF, 0xFF, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xFF, 0x1F, - 0xE3, 0xFC, 0x7F, 0x8F, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x60, 0x00, 0x70, - 0x3C, 0x00, 0x70, 0x3C, 0x00, 0xF0, 0x38, 0x00, 0xF0, 0x38, 0x00, 0xF0, - 0x78, 0x00, 0xE0, 0x78, 0x00, 0xE0, 0x78, 0x01, 0xE0, 0x70, 0x01, 0xE0, - 0x70, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x03, 0xC0, - 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0xC0, 0xE0, 0x03, 0x81, 0xE0, 0x03, 0x81, - 0xE0, 0x03, 0x81, 0xE0, 0x07, 0x81, 0xC0, 0x07, 0x81, 0xC0, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x0F, 0x03, 0x80, 0x0F, 0x03, - 0x80, 0x0F, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x0E, 0x07, 0x80, 0x1E, 0x07, - 0x00, 0x1E, 0x07, 0x00, 0x1E, 0x07, 0x00, 0x1C, 0x0F, 0x00, 0x1C, 0x0F, - 0x00, 0x00, 0x38, 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xFE, 0x00, 0x7F, 0xFE, - 0x01, 0xFF, 0xFE, 0x07, 0xE7, 0x3E, 0x0F, 0x8E, 0x3C, 0x3E, 0x1C, 0x3C, - 0x78, 0x38, 0x38, 0xF0, 0x70, 0x71, 0xE0, 0xE0, 0xE3, 0xC1, 0xC0, 0x07, - 0x83, 0x80, 0x0F, 0x87, 0x00, 0x0F, 0x8E, 0x00, 0x1F, 0xDC, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xFF, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0x80, 0x03, - 0xFF, 0x80, 0x07, 0x1F, 0x80, 0x0E, 0x1F, 0x00, 0x1C, 0x1F, 0x00, 0x38, - 0x1F, 0xC0, 0x70, 0x3F, 0x80, 0xE0, 0x7F, 0x81, 0xC0, 0xFF, 0x03, 0x81, - 0xEF, 0x07, 0x07, 0x9F, 0x0E, 0x0F, 0x3E, 0x1C, 0x3E, 0x3F, 0x39, 0xF8, - 0x3F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0x80, 0x00, - 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x3F, 0xE0, 0x00, - 0xE0, 0x01, 0xFF, 0xE0, 0x03, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0x00, 0x0F, - 0x87, 0xC0, 0x1C, 0x00, 0x3C, 0x03, 0xC0, 0x38, 0x00, 0x70, 0x03, 0x80, - 0xE0, 0x00, 0xE0, 0x07, 0x03, 0xC0, 0x01, 0xC0, 0x0E, 0x07, 0x00, 0x03, - 0x80, 0x1C, 0x1E, 0x00, 0x07, 0x80, 0x78, 0x38, 0x00, 0x07, 0xC3, 0xE0, - 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xC0, 0x00, 0x0F, 0xFF, 0x07, 0x80, 0x00, - 0x0F, 0xFC, 0x0E, 0x00, 0x00, 0x07, 0xE0, 0x38, 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x01, 0xC0, 0x3F, 0x00, 0x00, 0x03, 0x80, 0xFF, - 0x80, 0x00, 0x0E, 0x07, 0xFF, 0x80, 0x00, 0x3C, 0x0F, 0xFF, 0x80, 0x00, - 0x70, 0x3E, 0x1F, 0x00, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x03, 0x81, 0xC0, - 0x0E, 0x00, 0x0F, 0x03, 0x80, 0x1C, 0x00, 0x1C, 0x07, 0x00, 0x38, 0x00, - 0x78, 0x0E, 0x00, 0x70, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x03, 0x80, 0x1F, - 0x0F, 0x80, 0x07, 0x00, 0x1F, 0xFF, 0x00, 0x1C, 0x00, 0x3F, 0xFC, 0x00, - 0x38, 0x00, 0x1F, 0xF0, 0x00, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, - 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0xFC, 0x00, 0x07, - 0xC3, 0xC0, 0x00, 0xF8, 0x1E, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, - 0x00, 0x0F, 0x00, 0xE0, 0x00, 0xF0, 0x0E, 0x00, 0x07, 0x81, 0xE0, 0x00, - 0x7C, 0x3C, 0x00, 0x03, 0xEF, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0x1E, 0x07, 0x83, 0xE0, 0xF0, 0x78, 0x7C, 0x0F, 0x8F, 0x87, 0x80, - 0x7C, 0xF0, 0xF0, 0x03, 0xFF, 0x0F, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0xFE, - 0x0F, 0x00, 0x0F, 0xC0, 0xF0, 0x00, 0x7E, 0x0F, 0x80, 0x0F, 0xF0, 0x7C, - 0x01, 0xFF, 0x07, 0xF0, 0x7D, 0xF8, 0x3F, 0xFF, 0x8F, 0xC1, 0xFF, 0xF0, - 0x7E, 0x0F, 0xFE, 0x03, 0xE0, 0x3F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF6, 0x66, 0x01, 0xC0, 0x70, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, - 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x70, 0x3C, - 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, - 0xC0, 0x70, 0x1E, 0x07, 0x81, 0xE0, 0x38, 0x0F, 0x03, 0xC0, 0x70, 0x1E, - 0x03, 0x80, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x18, 0x07, 0xE0, 0x38, 0x07, - 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0E, 0x03, 0x80, 0xF0, 0x1C, - 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x03, 0x80, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, - 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x07, 0x81, 0xE0, 0x78, - 0x1E, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0xE0, 0x38, - 0x1C, 0x06, 0x03, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x63, - 0x1B, 0xFF, 0xFF, 0xFF, 0xC3, 0xF0, 0x07, 0x80, 0x3F, 0x01, 0xCE, 0x07, - 0x3C, 0x38, 0x70, 0x21, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, - 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0xF3, - 0x33, 0x36, 0xEC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, - 0x00, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x07, 0x00, 0x30, 0x03, 0x80, - 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0E, - 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0xE0, 0x07, 0x00, - 0x30, 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x06, 0x00, 0x70, 0x03, 0x80, 0x18, - 0x01, 0xC0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0xFC, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x87, 0xE0, 0xF8, - 0x07, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x79, 0xE0, 0x01, - 0xE7, 0x80, 0x07, 0xBC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, - 0xDE, 0x00, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x01, 0xE7, 0xC0, 0x0F, 0x8F, - 0x00, 0x3C, 0x3E, 0x01, 0xF0, 0x7C, 0x1F, 0x81, 0xFF, 0xFE, 0x03, 0xFF, - 0xF0, 0x03, 0xFF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x60, 0x1C, 0x03, 0x80, - 0xF0, 0x3E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x3C, 0x07, 0x80, 0xF0, - 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x01, 0xFF, - 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0x03, 0xF9, 0xF0, 0x03, 0xE7, 0x80, 0x07, - 0xFE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, - 0x7C, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x00, 0x3F, 0xC0, - 0x03, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, - 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, - 0xF0, 0x1F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, 0x3C, 0x00, 0x1E, 0x78, - 0x00, 0x3C, 0xF0, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, - 0xE0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x03, - 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xE7, 0xC0, 0x07, 0xC7, - 0xE0, 0x3F, 0x0F, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x07, 0xFF, 0xC0, 0x03, - 0xFC, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, - 0xE0, 0x00, 0x7B, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x00, 0x0F, 0x1E, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x03, 0xC0, 0xF0, 0x07, 0x81, 0xE0, - 0x1E, 0x03, 0xC0, 0x78, 0x07, 0x81, 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, - 0x00, 0x3C, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, 0xC1, 0xFF, 0xFF, 0x07, 0xFF, 0xFC, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x1F, 0x3F, 0x80, 0x7B, 0xFF, - 0x81, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x1F, 0x80, 0xFC, 0x78, 0x01, 0xF8, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF1, 0xFC, 0x0F, 0xC3, - 0xFF, 0xFE, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0x7F, 0xFC, 0x03, 0xFF, 0xF8, 0x1F, 0x83, - 0xF0, 0xF8, 0x07, 0xC3, 0xC0, 0x0F, 0x8F, 0x00, 0x1E, 0x78, 0x00, 0x79, - 0xE0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0xFE, 0x03, 0xCF, - 0xFE, 0x0F, 0x7F, 0xFE, 0x3F, 0xFF, 0xFC, 0xFF, 0x03, 0xF3, 0xF0, 0x03, - 0xEF, 0x80, 0x07, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x70, 0x00, 0x3D, 0xC0, 0x00, 0xF7, 0x80, - 0x07, 0x9F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0xFC, 0x0F, 0xC1, 0xFF, 0xFE, - 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, - 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, - 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xFF, 0xFC, 0x07, 0xFF, 0xF8, 0x3F, - 0x03, 0xF1, 0xF0, 0x03, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0x78, 0x00, - 0x79, 0xE0, 0x01, 0xE7, 0x80, 0x0F, 0x8F, 0x00, 0x3C, 0x3F, 0x03, 0xF0, - 0x7F, 0xFF, 0x80, 0x7F, 0xF8, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0xFC, - 0x0F, 0xC7, 0xC0, 0x0F, 0x9E, 0x00, 0x1E, 0xF8, 0x00, 0x7F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x80, 0x07, 0xDE, 0x00, 0x1E, 0x7C, 0x00, 0xF8, 0xFC, 0x0F, 0xC3, 0xFF, - 0xFF, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0x80, 0x07, 0xF8, 0x00, 0x01, 0xFC, - 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x83, 0xF0, 0x7E, 0x3E, - 0x00, 0xF1, 0xE0, 0x07, 0xCF, 0x00, 0x1E, 0xF0, 0x00, 0x77, 0x80, 0x03, - 0xBC, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, - 0x03, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF9, 0xF8, 0x3F, 0xCF, 0xFF, 0xFE, - 0x3F, 0xFE, 0xF0, 0xFF, 0xE7, 0x80, 0xFC, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x9E, 0x00, 0x3C, 0xF0, 0x03, 0xC7, - 0xC0, 0x3E, 0x1F, 0x03, 0xE0, 0xFF, 0xFE, 0x03, 0xFF, 0xE0, 0x0F, 0xFE, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xF3, 0x33, 0x36, 0xEC, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xC0, - 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x80, 0x03, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xF0, - 0x00, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0xC0, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x3F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0xC0, 0x03, 0xFC, 0x00, 0x1F, - 0xE0, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0xFC, 0x00, - 0x0F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0xFF, 0xF0, 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x7E, 0x0F, 0xE7, 0x80, - 0x3E, 0x78, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xC0, - 0x00, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, - 0x07, 0xFC, 0x03, 0xFF, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7E, - 0x00, 0x00, 0x7F, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, - 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xF0, 0x3C, 0x00, 0x7E, 0x00, - 0x3E, 0x0F, 0x00, 0x3F, 0xE3, 0xC3, 0xE3, 0xE0, 0x1F, 0xFE, 0x78, 0x3C, - 0x78, 0x07, 0xE1, 0xFF, 0x07, 0xDF, 0x01, 0xF0, 0x1F, 0xC0, 0xFB, 0xC0, - 0x7C, 0x01, 0xF8, 0x0F, 0x78, 0x0F, 0x00, 0x3F, 0x01, 0xEF, 0x03, 0xC0, - 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x00, 0xF8, 0x07, 0xF8, 0x0F, 0x00, 0x1F, - 0x00, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x1F, 0xE0, 0x78, 0x00, 0x78, 0x07, - 0xFC, 0x0F, 0x00, 0x1F, 0x00, 0xF7, 0x81, 0xE0, 0x03, 0xC0, 0x1E, 0xF0, - 0x3C, 0x00, 0x78, 0x07, 0x9E, 0x07, 0x80, 0x1F, 0x01, 0xF3, 0xE0, 0xF8, - 0x07, 0xC0, 0x3C, 0x3C, 0x0F, 0x81, 0xF8, 0x0F, 0x87, 0x81, 0xF8, 0x7F, - 0x87, 0xE0, 0xF8, 0x1F, 0xFE, 0xFF, 0xF8, 0x0F, 0x01, 0xFF, 0x1F, 0xFC, - 0x01, 0xF0, 0x0F, 0x80, 0xFE, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, - 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0xF8, - 0x00, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xF7, 0xC0, 0x00, 0x03, - 0xDF, 0x00, 0x00, 0x1F, 0x3C, 0x00, 0x00, 0x78, 0xF8, 0x00, 0x01, 0xE3, - 0xE0, 0x00, 0x0F, 0x87, 0x80, 0x00, 0x3C, 0x1F, 0x00, 0x01, 0xF0, 0x7C, - 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, 0x03, 0xE0, 0x00, 0xF8, 0x0F, 0x80, - 0x03, 0xC0, 0x1E, 0x00, 0x0F, 0x00, 0x7C, 0x00, 0x7C, 0x01, 0xF0, 0x01, - 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFE, 0x00, 0xFF, - 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x07, 0xC0, 0x78, 0x00, - 0x0F, 0x83, 0xE0, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x01, - 0xF1, 0xF0, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x3E, - 0xF8, 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xE0, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0x0F, 0x00, 0x0F, 0xC7, - 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF9, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, - 0x78, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x9E, 0x00, 0x07, 0x8F, 0x00, 0x03, - 0xC7, 0x80, 0x07, 0xC3, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, - 0xF8, 0x7F, 0xFF, 0xFE, 0x3C, 0x00, 0x0F, 0x9E, 0x00, 0x03, 0xEF, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, - 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x01, 0xFF, - 0x00, 0x01, 0xF7, 0x80, 0x01, 0xFB, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xF8, - 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFE, 0x01, - 0xF8, 0x07, 0xC0, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3C, - 0x3C, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x07, 0x9E, 0x00, 0x00, 0x3C, 0xF0, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, 0x78, 0x00, - 0x00, 0x7B, 0xC0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x3C, 0x78, 0x00, 0x01, - 0xE3, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x81, - 0xFE, 0x03, 0xF8, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, 0xF8, 0x00, 0x3F, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0x80, 0x1F, 0xFF, 0xFE, - 0x03, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, 0x00, 0x0F, 0xE1, 0xE0, - 0x00, 0x7E, 0x3C, 0x00, 0x07, 0xE7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x0F, 0x78, 0x00, 0x01, 0xEF, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, - 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x07, 0xF8, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF7, - 0x80, 0x00, 0x1E, 0xF0, 0x00, 0x03, 0xDE, 0x00, 0x00, 0xFB, 0xC0, 0x00, - 0x3E, 0x78, 0x00, 0x0F, 0xCF, 0x00, 0x03, 0xF1, 0xE0, 0x01, 0xFC, 0x3F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, - 0xFE, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0x80, 0x7F, - 0x01, 0xF8, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x1F, 0x0F, 0x80, 0x00, 0x1E, - 0x3E, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x3D, 0xF0, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0x00, - 0x07, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x07, 0xBC, 0x00, - 0x00, 0x0F, 0x78, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, 0x00, - 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xF3, 0xF0, 0x00, 0x07, 0xE3, 0xF0, 0x00, - 0x1F, 0xC3, 0xF0, 0x00, 0xFF, 0x83, 0xFC, 0x07, 0xEF, 0x03, 0xFF, 0xFF, - 0x9E, 0x03, 0xFF, 0xFE, 0x1C, 0x01, 0xFF, 0xF0, 0x38, 0x00, 0x7F, 0x80, - 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x01, 0xE0, - 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, - 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, - 0x07, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xF0, 0x0F, 0x9F, 0x83, 0xF1, 0xFF, - 0xFC, 0x3F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x7C, 0x78, 0x00, 0x1F, 0x0F, 0x00, - 0x07, 0xC1, 0xE0, 0x01, 0xF0, 0x3C, 0x00, 0x7C, 0x07, 0x80, 0x1F, 0x00, - 0xF0, 0x07, 0xC0, 0x1E, 0x01, 0xF0, 0x03, 0xC0, 0x7C, 0x00, 0x78, 0x1F, - 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE1, 0xF0, 0x00, 0x3C, 0x7E, 0x00, 0x07, - 0x9F, 0xE0, 0x00, 0xF7, 0xFE, 0x00, 0x1F, 0xF7, 0xC0, 0x03, 0xFC, 0x7C, - 0x00, 0x7F, 0x07, 0xC0, 0x0F, 0xC0, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x3C, - 0x00, 0xF8, 0x07, 0x80, 0x1F, 0x80, 0xF0, 0x01, 0xF0, 0x1E, 0x00, 0x1F, - 0x03, 0xC0, 0x03, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x03, 0xE1, 0xE0, - 0x00, 0x3E, 0x3C, 0x00, 0x07, 0xC7, 0x80, 0x00, 0x7C, 0xF0, 0x00, 0x07, - 0xDE, 0x00, 0x00, 0xFC, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFC, 0x00, - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, 0x7F, 0xFE, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, - 0x00, 0xFF, 0xF7, 0x00, 0x00, 0xEF, 0xF7, 0x80, 0x01, 0xEF, 0xF7, 0x80, - 0x01, 0xEF, 0xF3, 0xC0, 0x01, 0xCF, 0xF3, 0xC0, 0x03, 0xCF, 0xF3, 0xC0, - 0x03, 0xCF, 0xF1, 0xE0, 0x03, 0x8F, 0xF1, 0xE0, 0x07, 0x8F, 0xF1, 0xE0, - 0x07, 0x8F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x0F, 0xF0, 0xF0, - 0x0F, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, 0x1E, 0x0F, 0xF0, 0x78, - 0x1E, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, 0x3C, 0x0F, 0xF0, 0x3C, - 0x3C, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x1E, 0x78, 0x0F, 0xF0, 0x0E, - 0x78, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x07, - 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x03, - 0xE0, 0x0F, 0xF8, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x3F, - 0xF8, 0x00, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0xF8, 0x00, - 0x3F, 0xDE, 0x00, 0x0F, 0xF7, 0xC0, 0x03, 0xFC, 0xF8, 0x00, 0xFF, 0x1E, - 0x00, 0x3F, 0xC7, 0xC0, 0x0F, 0xF0, 0xF0, 0x03, 0xFC, 0x3E, 0x00, 0xFF, - 0x07, 0xC0, 0x3F, 0xC0, 0xF0, 0x0F, 0xF0, 0x3E, 0x03, 0xFC, 0x07, 0xC0, - 0xFF, 0x00, 0xF0, 0x3F, 0xC0, 0x3E, 0x0F, 0xF0, 0x07, 0x83, 0xFC, 0x01, - 0xF0, 0xFF, 0x00, 0x3E, 0x3F, 0xC0, 0x07, 0x8F, 0xF0, 0x01, 0xF3, 0xFC, - 0x00, 0x3E, 0xFF, 0x00, 0x07, 0xBF, 0xC0, 0x01, 0xFF, 0xF0, 0x00, 0x3F, - 0xFC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, - 0x0F, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, - 0x80, 0x00, 0x7F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, - 0xFF, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, - 0x00, 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, - 0x00, 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, - 0x3E, 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0x07, 0x87, 0xC0, 0x00, 0x07, - 0xC1, 0xF0, 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0x3F, 0x00, 0x07, - 0xE0, 0x0F, 0xF0, 0x1F, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xF0, 0x00, - 0xFE, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, - 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, - 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x3E, 0xF0, 0x00, 0xFE, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xC0, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, - 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xFF, - 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x7E, 0x00, 0x03, 0xF0, 0x3E, 0x00, 0x00, - 0xF8, 0x3E, 0x00, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x00, - 0x07, 0xCF, 0x00, 0x00, 0x01, 0xE7, 0x80, 0x00, 0x00, 0xF7, 0xC0, 0x00, - 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x00, - 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x00, 0x3E, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x0F, 0x3E, - 0x00, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0x87, 0x87, 0xC0, 0x03, 0xE7, 0xC1, - 0xF0, 0x00, 0xFF, 0xC0, 0xFC, 0x00, 0x3F, 0xE0, 0x3F, 0x00, 0x0F, 0xE0, - 0x0F, 0xF0, 0x1F, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, - 0x00, 0x1F, 0xFF, 0xC7, 0xC0, 0x01, 0xFF, 0x01, 0xE0, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, 0x10, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, 0x3F, 0x3C, 0x00, 0x07, - 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, 0x00, - 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, 0xF0, 0x00, 0x07, 0xBC, - 0x00, 0x03, 0xCF, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0xF8, 0xFF, 0xFF, 0xFC, - 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xF8, 0xF0, 0x00, - 0x3F, 0x3C, 0x00, 0x03, 0xCF, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x1E, 0xF0, - 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x1E, - 0xF0, 0x00, 0x07, 0xBC, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x7B, 0xC0, 0x00, - 0x1E, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xC0, 0x00, - 0x7F, 0xFF, 0x00, 0x1F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x81, 0xF8, 0x07, - 0xF0, 0x7C, 0x00, 0x1F, 0x0F, 0x00, 0x01, 0xE3, 0xE0, 0x00, 0x3E, 0x78, - 0x00, 0x03, 0xCF, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, - 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0xF8, - 0x00, 0x03, 0xFF, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xF7, 0x80, 0x00, 0x3E, 0xF8, 0x00, - 0x07, 0x9F, 0x80, 0x01, 0xF1, 0xFE, 0x01, 0xFC, 0x1F, 0xFF, 0xFF, 0x01, - 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x7D, 0xE0, 0x00, 0x1E, 0x7C, 0x00, 0x0F, 0x9F, - 0x80, 0x07, 0xE3, 0xF8, 0x07, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, - 0x00, 0xFF, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0xF8, 0x00, 0x00, 0xF7, 0xC0, - 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x03, 0xC7, 0xC0, 0x00, - 0x3E, 0x1E, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, - 0x1E, 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3C, 0x07, 0xC0, 0x03, 0xE0, 0x1E, - 0x00, 0x1F, 0x00, 0xF8, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, - 0x7C, 0x00, 0xF8, 0x03, 0xC0, 0x03, 0xC0, 0x1E, 0x00, 0x1F, 0x01, 0xF0, - 0x00, 0xF8, 0x0F, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x1F, 0x07, 0x80, 0x00, - 0xF8, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1F, 0x1E, 0x00, 0x00, 0x78, - 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x1F, 0x78, 0x00, 0x00, 0x7B, 0xC0, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x01, 0xFF, 0x80, 0x03, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFC, 0x00, 0x1E, 0x7C, 0x00, 0x7F, 0x80, - 0x0F, 0x9F, 0x00, 0x1F, 0xE0, 0x03, 0xE7, 0xC0, 0x07, 0xF8, 0x00, 0xF8, - 0xF0, 0x01, 0xFF, 0x00, 0x3C, 0x3E, 0x00, 0xF3, 0xC0, 0x1F, 0x0F, 0x80, - 0x3C, 0xF0, 0x07, 0xC3, 0xE0, 0x0F, 0x3C, 0x01, 0xF0, 0x78, 0x07, 0xC7, - 0x80, 0x78, 0x1F, 0x01, 0xE1, 0xE0, 0x1E, 0x07, 0xC0, 0x78, 0x78, 0x0F, - 0x80, 0xF0, 0x1E, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0xF0, 0x0F, - 0x83, 0xC0, 0xF0, 0x3C, 0x03, 0xE0, 0xF0, 0x3C, 0x1F, 0x00, 0x78, 0x3C, - 0x0F, 0x87, 0xC0, 0x1E, 0x1E, 0x01, 0xE1, 0xE0, 0x07, 0x87, 0x80, 0x78, - 0x78, 0x01, 0xF1, 0xE0, 0x1E, 0x1E, 0x00, 0x3C, 0xF8, 0x03, 0xCF, 0x80, - 0x0F, 0x3C, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF0, 0x00, 0xFB, - 0xC0, 0x0F, 0xBC, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, - 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xF8, - 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x00, - 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x01, 0xF3, 0xF0, 0x00, 0x1F, 0x8F, 0x80, 0x00, 0xF8, 0x3E, 0x00, 0x0F, - 0x80, 0xF8, 0x00, 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x00, - 0x7C, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x3E, - 0x3E, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x1F, 0xF0, - 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x07, - 0xDF, 0x00, 0x00, 0x7C, 0x78, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x3E, 0x0F, - 0x80, 0x03, 0xE0, 0x3E, 0x00, 0x1F, 0x01, 0xF0, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0x3F, 0x00, 0xF8, 0x00, 0xF8, 0x0F, 0x80, 0x03, 0xE0, 0xF8, - 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7C, 0x7C, 0x00, 0x01, 0xF7, 0xC0, 0x00, - 0x0F, 0xC0, 0xFC, 0x00, 0x00, 0xFD, 0xF0, 0x00, 0x03, 0xE7, 0xE0, 0x00, - 0x1F, 0x0F, 0x80, 0x00, 0x7C, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x1F, - 0x00, 0xF8, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x0F, 0x80, 0x7C, 0x00, 0x1E, 0x01, 0xE0, 0x00, 0x7C, 0x0F, 0x80, 0x00, - 0xF8, 0x7C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, - 0x3C, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3F, 0xFF, - 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0xE0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, 0x07, 0x00, 0x18, 0x00, 0xE0, - 0x07, 0x00, 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x07, 0x00, - 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x06, 0x00, 0x38, 0x01, - 0xC0, 0x06, 0x00, 0x38, 0x01, 0xC0, 0x06, 0x00, 0x30, 0x01, 0xC0, 0x0E, - 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0xFF, 0xFF, - 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3F, - 0x00, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xCE, 0x00, 0x73, 0x80, 0x3C, 0x70, - 0x0E, 0x1C, 0x07, 0x87, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x38, 0x07, 0x0E, - 0x01, 0xC7, 0x80, 0x79, 0xC0, 0x0E, 0x70, 0x03, 0xB8, 0x00, 0x70, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, 0x01, 0xE0, 0x3C, 0x07, - 0x00, 0xE0, 0x1C, 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xE0, - 0x3F, 0xFF, 0xF0, 0x7E, 0x03, 0xF8, 0x7C, 0x00, 0xF8, 0x78, 0x00, 0x78, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, - 0x00, 0x03, 0xF8, 0x00, 0xFF, 0xF8, 0x0F, 0xFF, 0xF8, 0x3F, 0xFE, 0x78, - 0x7F, 0x80, 0x78, 0xFC, 0x00, 0x78, 0xF8, 0x00, 0x78, 0xF0, 0x00, 0x78, - 0xF0, 0x00, 0xF8, 0xF0, 0x00, 0xF8, 0xF8, 0x03, 0xF8, 0x7E, 0x0F, 0xF8, - 0x7F, 0xFF, 0x7F, 0x3F, 0xFE, 0x3F, 0x1F, 0xFC, 0x3F, 0x07, 0xE0, 0x1F, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x7E, - 0x03, 0xC7, 0xFE, 0x0F, 0x7F, 0xFC, 0x3D, 0xFF, 0xF8, 0xFF, 0x07, 0xF3, - 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, - 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, - 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, - 0x7F, 0x3B, 0xFF, 0xF8, 0xE7, 0xFF, 0xC3, 0x8F, 0xFE, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x3F, 0xFF, 0xC3, - 0xF0, 0x3F, 0x1F, 0x00, 0xF9, 0xF0, 0x03, 0xCF, 0x00, 0x0F, 0x78, 0x00, - 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x1E, 0x00, 0x1E, 0xF0, 0x00, 0xF7, 0xC0, 0x0F, 0x9F, 0x00, 0xF8, 0xFC, - 0x0F, 0xC3, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x3F, 0xFC, 0x00, 0x7F, 0x00, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, - 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x01, - 0xFC, 0x1E, 0x0F, 0xFE, 0x3C, 0x3F, 0xFF, 0x78, 0xFF, 0xFF, 0xF3, 0xF8, - 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, - 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, - 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xF7, 0x0F, 0xFF, 0xCE, 0x0F, - 0xFF, 0x1C, 0x07, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xFE, 0x00, 0xFF, - 0xFC, 0x07, 0xFF, 0xF8, 0x1F, 0x83, 0xF0, 0xF8, 0x07, 0xC7, 0xC0, 0x0F, - 0x9E, 0x00, 0x1E, 0x78, 0x00, 0x7B, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, - 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x1E, - 0x7C, 0x00, 0x78, 0xF8, 0x03, 0xE3, 0xF0, 0x3F, 0x07, 0xFF, 0xF8, 0x0F, - 0xFF, 0xE0, 0x1F, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x03, 0xC3, 0xF0, 0xFC, - 0x7F, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0x1E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, - 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, - 0x1E, 0x07, 0x80, 0x00, 0xFC, 0x00, 0x1F, 0xF8, 0xF0, 0xFF, 0xFB, 0xC7, - 0xFF, 0xFF, 0x3F, 0x83, 0xFC, 0xF8, 0x07, 0xF7, 0xC0, 0x0F, 0xDE, 0x00, - 0x1F, 0x78, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, - 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, - 0x00, 0x3F, 0xC0, 0x00, 0xF7, 0x80, 0x07, 0xDE, 0x00, 0x1F, 0x7C, 0x00, - 0xFC, 0xF8, 0x07, 0xF3, 0xF8, 0x3F, 0xC7, 0xFF, 0xEF, 0x0F, 0xFF, 0x3C, - 0x1F, 0xF8, 0xF0, 0x1F, 0x83, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x79, 0xE0, - 0x01, 0xE7, 0xC0, 0x0F, 0x8F, 0x80, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, - 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0x80, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, - 0x00, 0xF0, 0xFE, 0x1E, 0x3F, 0xE3, 0xCF, 0xFF, 0x7B, 0xFF, 0xEF, 0xF0, - 0xFF, 0xF8, 0x07, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, 0xF8, 0x01, 0xFE, 0x00, - 0x3F, 0xC0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, - 0x7F, 0x80, 0x0F, 0xF0, 0x01, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF8, 0x00, - 0xFF, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x80, 0x0F, 0xF0, 0x01, - 0xFE, 0x00, 0x3C, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, - 0xFF, 0xFE, 0xFE, 0xF8, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x1F, 0x3C, 0x01, 0xF1, 0xE0, 0x1F, 0x0F, - 0x01, 0xF0, 0x78, 0x1F, 0x03, 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0xF1, 0xF0, - 0x07, 0x9F, 0x00, 0x3D, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x7F, - 0x7C, 0x03, 0xF1, 0xF0, 0x1F, 0x07, 0xC0, 0xF0, 0x3E, 0x07, 0x80, 0xF8, - 0x3C, 0x03, 0xC1, 0xE0, 0x1F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, - 0x0F, 0x9E, 0x00, 0x3C, 0xF0, 0x01, 0xF7, 0x80, 0x07, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0x00, 0xFC, 0x03, 0xF0, 0xE3, 0xFE, 0x0F, 0xFC, 0xE7, - 0xFF, 0x1F, 0xFE, 0xEF, 0xFF, 0xBF, 0xFE, 0xFE, 0x0F, 0xF8, 0x3F, 0xFC, - 0x07, 0xF0, 0x1F, 0xF8, 0x03, 0xE0, 0x0F, 0xF8, 0x03, 0xE0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, - 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0xF0, 0x03, 0xC0, 0x0F, 0x00, - 0x7E, 0x0E, 0x1F, 0xF8, 0xE7, 0xFF, 0xCE, 0xFF, 0xFE, 0xEF, 0x07, 0xFF, - 0xE0, 0x1F, 0xFC, 0x01, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x0F, - 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, - 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x0F, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, 0x3F, 0xFF, - 0x80, 0xFF, 0xFF, 0x83, 0xF8, 0x3F, 0x87, 0xC0, 0x1F, 0x1F, 0x00, 0x1F, - 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, - 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, - 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xF3, 0xC0, - 0x01, 0xE7, 0xC0, 0x07, 0xC7, 0xC0, 0x1F, 0x0F, 0xE0, 0xFE, 0x0F, 0xFF, - 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFE, - 0x03, 0x8F, 0xFE, 0x0E, 0x7F, 0xFC, 0x3B, 0xFF, 0xF8, 0xFF, 0x87, 0xF3, - 0xF8, 0x07, 0xCF, 0xC0, 0x0F, 0xBE, 0x00, 0x1E, 0xF8, 0x00, 0x7B, 0xE0, - 0x01, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x01, 0xFF, - 0x80, 0x07, 0xBE, 0x00, 0x1E, 0xFC, 0x00, 0xFB, 0xF8, 0x07, 0xCF, 0xF0, - 0x7F, 0x3F, 0xFF, 0xF8, 0xF7, 0xFF, 0xC3, 0xC7, 0xFE, 0x0F, 0x07, 0xE0, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, - 0xFE, 0x00, 0x07, 0xFF, 0x1C, 0x3F, 0xFF, 0x38, 0xFF, 0xFF, 0x73, 0xF8, - 0x3F, 0xE7, 0xC0, 0x1F, 0xDF, 0x00, 0x1F, 0xBE, 0x00, 0x1F, 0x78, 0x00, - 0x3F, 0xF0, 0x00, 0x7F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, - 0xF0, 0x00, 0x7D, 0xE0, 0x00, 0xFB, 0xC0, 0x01, 0xF7, 0xC0, 0x07, 0xE7, - 0xC0, 0x1F, 0xCF, 0xE0, 0xFF, 0x8F, 0xFF, 0xEF, 0x0F, 0xFF, 0xDE, 0x0F, - 0xFE, 0x3C, 0x07, 0xF0, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0xFE, 0x1F, 0xE7, 0xFE, 0xFF, 0xFF, 0x8F, - 0xC0, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0x01, 0xFC, 0x00, 0xFF, 0xF0, - 0x1F, 0xFF, 0x83, 0xFF, 0xFC, 0x3E, 0x07, 0xE7, 0xC0, 0x3E, 0x78, 0x01, - 0xE7, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xFC, - 0x00, 0x1F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x03, 0xFE, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, - 0x80, 0x1F, 0x7E, 0x07, 0xE7, 0xFF, 0xFE, 0x3F, 0xFF, 0xC1, 0xFF, 0xF0, - 0x03, 0xFC, 0x00, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x8F, 0xFF, - 0xFF, 0xFF, 0xC7, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, - 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, 0x07, 0x81, - 0xE0, 0x78, 0x1F, 0xC7, 0xF0, 0xFC, 0x1F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, - 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, - 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x00, 0xFF, 0x00, 0x1F, 0xF0, 0x01, 0xFF, 0x00, 0x3F, 0xF8, 0x07, 0xFF, - 0xE0, 0xFF, 0x7F, 0xFF, 0x77, 0xFF, 0xE7, 0x1F, 0xFC, 0x70, 0x7E, 0x00, - 0x78, 0x00, 0x3E, 0xF0, 0x00, 0x79, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xE3, - 0xC0, 0x07, 0x87, 0xC0, 0x0F, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0x78, 0x1F, - 0x01, 0xF0, 0x1E, 0x03, 0xC0, 0x3C, 0x07, 0x80, 0x7C, 0x1F, 0x00, 0x78, - 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, - 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x0F, 0x70, 0x00, 0x0F, 0xE0, - 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, - 0xF8, 0x03, 0xE0, 0x07, 0x9E, 0x00, 0xFC, 0x01, 0xE7, 0x80, 0x3F, 0x00, - 0x79, 0xF0, 0x0F, 0xC0, 0x3E, 0x3C, 0x07, 0xF0, 0x0F, 0x0F, 0x01, 0xFE, - 0x03, 0xC3, 0xC0, 0x7F, 0x80, 0xF0, 0x78, 0x1D, 0xE0, 0x78, 0x1E, 0x0F, - 0x38, 0x1E, 0x07, 0x83, 0xCF, 0x07, 0x81, 0xE0, 0xF3, 0xC1, 0xE0, 0x3C, - 0x38, 0xF0, 0xF0, 0x0F, 0x1E, 0x1C, 0x3C, 0x03, 0xC7, 0x87, 0x8F, 0x00, - 0x71, 0xE1, 0xE3, 0x80, 0x1E, 0x70, 0x79, 0xE0, 0x07, 0xBC, 0x0E, 0x78, - 0x01, 0xEF, 0x03, 0xDE, 0x00, 0x3B, 0xC0, 0xF7, 0x00, 0x0F, 0xE0, 0x3F, - 0xC0, 0x03, 0xF8, 0x07, 0xF0, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x1F, 0x80, - 0x7E, 0x00, 0x07, 0xC0, 0x1F, 0x80, 0x01, 0xF0, 0x03, 0xC0, 0x00, 0x7C, - 0x00, 0x78, 0xF0, 0x03, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, 0x78, 0x0F, 0x03, - 0xE0, 0x1E, 0x0F, 0x00, 0x7C, 0x78, 0x00, 0xF3, 0xE0, 0x01, 0xEF, 0x00, - 0x07, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x1E, - 0x00, 0x78, 0x7C, 0x03, 0xE0, 0xF0, 0x0F, 0x03, 0xE0, 0x78, 0x07, 0xC3, - 0xE0, 0x0F, 0x1F, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, 0x00, 0x3D, 0xE0, - 0x01, 0xF7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0xF0, 0xF0, 0x03, - 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x78, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, - 0xF0, 0x3C, 0x03, 0xC0, 0xF0, 0x07, 0x87, 0xC0, 0x1E, 0x1E, 0x00, 0x78, - 0x78, 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0xE0, - 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, - 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, - 0x00, 0x01, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x00, - 0x3F, 0xC0, 0x00, 0xFE, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0xF7, - 0xFF, 0xFF, 0x7F, 0xFF, 0xF7, 0xFF, 0xFF, 0x00, 0x01, 0xE0, 0x00, 0x3E, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, - 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x01, 0xE0, 0xFC, 0x1F, 0x87, 0x80, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, - 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0xC0, 0x3C, 0x03, 0x80, - 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, - 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xFC, 0x1F, 0x80, - 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x1F, 0x83, 0xF0, 0x0F, 0x00, - 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, 0x3E, 0x03, - 0xC0, 0x78, 0x1F, 0x07, 0x80, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x70, 0x1E, 0x1F, 0x83, 0xF0, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0xF0, 0x0D, - 0xFF, 0x01, 0xF0, 0xF8, 0x7C, 0x0F, 0xFD, 0x80, 0x7F, 0x80, 0x03, 0xE0 }; - -const GFXglyph FreeSans24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 4, 34, 16, 6, -33 }, // 0x21 '!' - { 17, 11, 12, 16, 2, -32 }, // 0x22 '"' - { 34, 24, 33, 26, 1, -31 }, // 0x23 '#' - { 133, 23, 41, 26, 1, -34 }, // 0x24 '$' - { 251, 39, 34, 42, 1, -32 }, // 0x25 '%' - { 417, 28, 34, 31, 2, -32 }, // 0x26 '&' - { 536, 4, 12, 9, 2, -32 }, // 0x27 ''' - { 542, 10, 44, 16, 3, -33 }, // 0x28 '(' - { 597, 10, 44, 16, 2, -33 }, // 0x29 ')' - { 652, 14, 14, 18, 2, -33 }, // 0x2A '*' - { 677, 23, 22, 27, 2, -21 }, // 0x2B '+' - { 741, 4, 12, 13, 4, -4 }, // 0x2C ',' - { 747, 11, 4, 16, 2, -14 }, // 0x2D '-' - { 753, 4, 5, 12, 4, -4 }, // 0x2E '.' - { 756, 13, 35, 13, 0, -33 }, // 0x2F '/' - { 813, 22, 34, 26, 2, -32 }, // 0x30 '0' - { 907, 11, 33, 26, 5, -32 }, // 0x31 '1' - { 953, 22, 33, 26, 2, -32 }, // 0x32 '2' - { 1044, 23, 34, 26, 1, -32 }, // 0x33 '3' - { 1142, 23, 33, 26, 1, -32 }, // 0x34 '4' - { 1237, 22, 34, 26, 2, -32 }, // 0x35 '5' - { 1331, 22, 34, 26, 2, -32 }, // 0x36 '6' - { 1425, 21, 33, 26, 2, -32 }, // 0x37 '7' - { 1512, 22, 34, 26, 2, -32 }, // 0x38 '8' - { 1606, 21, 34, 26, 2, -32 }, // 0x39 '9' - { 1696, 4, 25, 12, 4, -24 }, // 0x3A ':' - { 1709, 4, 32, 12, 4, -24 }, // 0x3B ';' - { 1725, 23, 23, 27, 2, -22 }, // 0x3C '<' - { 1792, 23, 12, 27, 2, -16 }, // 0x3D '=' - { 1827, 23, 23, 27, 2, -22 }, // 0x3E '>' - { 1894, 20, 35, 26, 4, -34 }, // 0x3F '?' - { 1982, 43, 42, 48, 2, -34 }, // 0x40 '@' - { 2208, 30, 34, 31, 1, -33 }, // 0x41 'A' - { 2336, 25, 34, 31, 4, -33 }, // 0x42 'B' - { 2443, 29, 36, 33, 2, -34 }, // 0x43 'C' - { 2574, 27, 34, 33, 4, -33 }, // 0x44 'D' - { 2689, 24, 34, 30, 4, -33 }, // 0x45 'E' - { 2791, 22, 34, 28, 4, -33 }, // 0x46 'F' - { 2885, 31, 36, 36, 2, -34 }, // 0x47 'G' - { 3025, 26, 34, 34, 4, -33 }, // 0x48 'H' - { 3136, 4, 34, 13, 5, -33 }, // 0x49 'I' - { 3153, 19, 35, 25, 2, -33 }, // 0x4A 'J' - { 3237, 27, 34, 32, 4, -33 }, // 0x4B 'K' - { 3352, 21, 34, 26, 4, -33 }, // 0x4C 'L' - { 3442, 32, 34, 40, 4, -33 }, // 0x4D 'M' - { 3578, 26, 34, 34, 4, -33 }, // 0x4E 'N' - { 3689, 33, 36, 37, 2, -34 }, // 0x4F 'O' - { 3838, 24, 34, 31, 4, -33 }, // 0x50 'P' - { 3940, 33, 38, 37, 2, -34 }, // 0x51 'Q' - { 4097, 26, 34, 33, 4, -33 }, // 0x52 'R' - { 4208, 27, 36, 31, 2, -34 }, // 0x53 'S' - { 4330, 26, 34, 30, 2, -33 }, // 0x54 'T' - { 4441, 26, 35, 34, 4, -33 }, // 0x55 'U' - { 4555, 29, 34, 30, 1, -33 }, // 0x56 'V' - { 4679, 42, 34, 44, 1, -33 }, // 0x57 'W' - { 4858, 29, 34, 31, 1, -33 }, // 0x58 'X' - { 4982, 30, 34, 32, 1, -33 }, // 0x59 'Y' - { 5110, 27, 34, 29, 1, -33 }, // 0x5A 'Z' - { 5225, 8, 44, 13, 3, -33 }, // 0x5B '[' - { 5269, 13, 35, 13, 0, -33 }, // 0x5C '\' - { 5326, 8, 44, 13, 1, -33 }, // 0x5D ']' - { 5370, 18, 18, 22, 2, -32 }, // 0x5E '^' - { 5411, 28, 2, 26, -1, 7 }, // 0x5F '_' - { 5418, 10, 7, 12, 1, -34 }, // 0x60 '`' - { 5427, 24, 27, 26, 1, -25 }, // 0x61 'a' - { 5508, 22, 35, 26, 3, -33 }, // 0x62 'b' - { 5605, 21, 27, 24, 1, -25 }, // 0x63 'c' - { 5676, 23, 35, 26, 1, -33 }, // 0x64 'd' - { 5777, 22, 27, 25, 1, -25 }, // 0x65 'e' - { 5852, 10, 34, 13, 1, -33 }, // 0x66 'f' - { 5895, 22, 36, 26, 1, -25 }, // 0x67 'g' - { 5994, 19, 34, 25, 3, -33 }, // 0x68 'h' - { 6075, 4, 34, 10, 3, -33 }, // 0x69 'i' - { 6092, 8, 44, 11, 0, -33 }, // 0x6A 'j' - { 6136, 21, 34, 24, 3, -33 }, // 0x6B 'k' - { 6226, 4, 34, 10, 3, -33 }, // 0x6C 'l' - { 6243, 32, 26, 38, 3, -25 }, // 0x6D 'm' - { 6347, 20, 26, 25, 3, -25 }, // 0x6E 'n' - { 6412, 23, 27, 25, 1, -25 }, // 0x6F 'o' - { 6490, 22, 35, 26, 3, -25 }, // 0x70 'p' - { 6587, 23, 35, 26, 1, -25 }, // 0x71 'q' - { 6688, 12, 26, 16, 3, -25 }, // 0x72 'r' - { 6727, 20, 27, 23, 1, -25 }, // 0x73 's' - { 6795, 10, 32, 13, 1, -30 }, // 0x74 't' - { 6835, 20, 26, 25, 3, -24 }, // 0x75 'u' - { 6900, 23, 25, 23, 0, -24 }, // 0x76 'v' - { 6972, 34, 25, 34, 0, -24 }, // 0x77 'w' - { 7079, 22, 25, 22, 0, -24 }, // 0x78 'x' - { 7148, 22, 35, 22, 0, -24 }, // 0x79 'y' - { 7245, 20, 25, 23, 1, -24 }, // 0x7A 'z' - { 7308, 11, 44, 16, 2, -33 }, // 0x7B '{' - { 7369, 3, 44, 12, 4, -33 }, // 0x7C '|' - { 7386, 11, 44, 16, 2, -33 }, // 0x7D '}' - { 7447, 19, 7, 24, 2, -19 } }; // 0x7E '~' - -const GFXfont FreeSans24pt7b PROGMEM = { - (uint8_t *)FreeSans24pt7bBitmaps, - (GFXglyph *)FreeSans24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h deleted file mode 100644 index 1f006a189..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h +++ /dev/null @@ -1,201 +0,0 @@ -const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, - 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, - 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, - 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, - 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, - 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, - 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, - 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, - 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, - 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, - 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, - 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, - 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, - 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, - 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, - 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, - 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, - 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, - 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, - 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, - 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, - 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, - 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, - 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, - 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, - 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, - 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, - 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, - 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, - 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, - 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, - 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, - 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, - 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, - 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, - 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, - 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, - 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, - 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, - 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, - 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, - 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, - 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, - 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, - 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, - 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, - 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, - 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, - 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, - 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, - 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, - 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, - 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, - 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, - 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, - 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, - 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, - 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, - 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, - 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, - 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, - 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, - 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, - 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, - 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, - 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, - 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, - 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, - 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, - 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, - 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, - 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, - 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, - 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, - 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, - 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, - 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, - 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, - 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, - 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, - 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, - 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, - 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, - 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, - 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38 }; - -const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 2, 13, 6, 2, -12 }, // 0x21 '!' - { 4, 5, 4, 6, 1, -12 }, // 0x22 '"' - { 7, 10, 12, 10, 0, -11 }, // 0x23 '#' - { 22, 9, 16, 10, 1, -13 }, // 0x24 '$' - { 40, 16, 13, 16, 1, -12 }, // 0x25 '%' - { 66, 11, 13, 12, 1, -12 }, // 0x26 '&' - { 84, 2, 4, 4, 1, -12 }, // 0x27 ''' - { 85, 4, 17, 6, 1, -12 }, // 0x28 '(' - { 94, 4, 17, 6, 1, -12 }, // 0x29 ')' - { 103, 5, 5, 7, 1, -12 }, // 0x2A '*' - { 107, 6, 8, 11, 3, -7 }, // 0x2B '+' - { 113, 2, 4, 5, 2, 0 }, // 0x2C ',' - { 114, 4, 1, 6, 1, -4 }, // 0x2D '-' - { 115, 2, 1, 5, 1, 0 }, // 0x2E '.' - { 116, 5, 13, 5, 0, -12 }, // 0x2F '/' - { 125, 8, 13, 10, 1, -12 }, // 0x30 '0' - { 138, 4, 13, 10, 3, -12 }, // 0x31 '1' - { 145, 9, 13, 10, 1, -12 }, // 0x32 '2' - { 160, 8, 13, 10, 1, -12 }, // 0x33 '3' - { 173, 7, 13, 10, 2, -12 }, // 0x34 '4' - { 185, 9, 13, 10, 1, -12 }, // 0x35 '5' - { 200, 9, 13, 10, 1, -12 }, // 0x36 '6' - { 215, 8, 13, 10, 0, -12 }, // 0x37 '7' - { 228, 9, 13, 10, 1, -12 }, // 0x38 '8' - { 243, 8, 13, 10, 1, -12 }, // 0x39 '9' - { 256, 2, 10, 5, 1, -9 }, // 0x3A ':' - { 259, 3, 12, 5, 1, -8 }, // 0x3B ';' - { 264, 9, 9, 11, 1, -8 }, // 0x3C '<' - { 275, 9, 4, 11, 1, -5 }, // 0x3D '=' - { 280, 9, 9, 11, 1, -8 }, // 0x3E '>' - { 291, 9, 13, 10, 1, -12 }, // 0x3F '?' - { 306, 17, 16, 18, 1, -12 }, // 0x40 '@' - { 340, 12, 13, 12, 0, -12 }, // 0x41 'A' - { 360, 11, 13, 12, 1, -12 }, // 0x42 'B' - { 378, 11, 13, 13, 1, -12 }, // 0x43 'C' - { 396, 11, 13, 13, 1, -12 }, // 0x44 'D' - { 414, 9, 13, 11, 1, -12 }, // 0x45 'E' - { 429, 8, 13, 11, 1, -12 }, // 0x46 'F' - { 442, 12, 13, 14, 1, -12 }, // 0x47 'G' - { 462, 11, 13, 13, 1, -12 }, // 0x48 'H' - { 480, 2, 13, 5, 2, -12 }, // 0x49 'I' - { 484, 7, 13, 10, 1, -12 }, // 0x4A 'J' - { 496, 11, 13, 12, 1, -12 }, // 0x4B 'K' - { 514, 8, 13, 10, 1, -12 }, // 0x4C 'L' - { 527, 13, 13, 15, 1, -12 }, // 0x4D 'M' - { 549, 11, 13, 13, 1, -12 }, // 0x4E 'N' - { 567, 13, 13, 14, 1, -12 }, // 0x4F 'O' - { 589, 10, 13, 12, 1, -12 }, // 0x50 'P' - { 606, 13, 14, 14, 1, -12 }, // 0x51 'Q' - { 629, 12, 13, 13, 1, -12 }, // 0x52 'R' - { 649, 10, 13, 12, 1, -12 }, // 0x53 'S' - { 666, 9, 13, 11, 1, -12 }, // 0x54 'T' - { 681, 11, 13, 13, 1, -12 }, // 0x55 'U' - { 699, 11, 13, 12, 0, -12 }, // 0x56 'V' - { 717, 17, 13, 17, 0, -12 }, // 0x57 'W' - { 745, 12, 13, 12, 0, -12 }, // 0x58 'X' - { 765, 12, 13, 12, 0, -12 }, // 0x59 'Y' - { 785, 10, 13, 11, 1, -12 }, // 0x5A 'Z' - { 802, 3, 17, 5, 1, -12 }, // 0x5B '[' - { 809, 5, 13, 5, 0, -12 }, // 0x5C '\' - { 818, 3, 17, 5, 0, -12 }, // 0x5D ']' - { 825, 7, 7, 8, 1, -12 }, // 0x5E '^' - { 832, 10, 1, 10, 0, 3 }, // 0x5F '_' - { 834, 4, 3, 5, 0, -12 }, // 0x60 '`' - { 836, 9, 10, 10, 1, -9 }, // 0x61 'a' - { 848, 9, 13, 10, 1, -12 }, // 0x62 'b' - { 863, 8, 10, 9, 1, -9 }, // 0x63 'c' - { 873, 8, 13, 10, 1, -12 }, // 0x64 'd' - { 886, 8, 10, 10, 1, -9 }, // 0x65 'e' - { 896, 4, 13, 5, 1, -12 }, // 0x66 'f' - { 903, 8, 14, 10, 1, -9 }, // 0x67 'g' - { 917, 8, 13, 10, 1, -12 }, // 0x68 'h' - { 930, 2, 13, 4, 1, -12 }, // 0x69 'i' - { 934, 4, 17, 4, 0, -12 }, // 0x6A 'j' - { 943, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 958, 2, 13, 4, 1, -12 }, // 0x6C 'l' - { 962, 13, 10, 15, 1, -9 }, // 0x6D 'm' - { 979, 8, 10, 10, 1, -9 }, // 0x6E 'n' - { 989, 8, 10, 10, 1, -9 }, // 0x6F 'o' - { 999, 9, 13, 10, 1, -9 }, // 0x70 'p' - { 1014, 8, 13, 10, 1, -9 }, // 0x71 'q' - { 1027, 5, 10, 6, 1, -9 }, // 0x72 'r' - { 1034, 8, 10, 9, 1, -9 }, // 0x73 's' - { 1044, 4, 12, 5, 1, -11 }, // 0x74 't' - { 1050, 8, 10, 10, 1, -9 }, // 0x75 'u' - { 1060, 9, 10, 9, 0, -9 }, // 0x76 'v' - { 1072, 13, 10, 13, 0, -9 }, // 0x77 'w' - { 1089, 8, 10, 9, 0, -9 }, // 0x78 'x' - { 1099, 9, 14, 9, 0, -9 }, // 0x79 'y' - { 1115, 7, 10, 9, 1, -9 }, // 0x7A 'z' - { 1124, 4, 17, 6, 1, -12 }, // 0x7B '{' - { 1133, 2, 17, 4, 2, -12 }, // 0x7C '|' - { 1138, 4, 17, 6, 1, -12 }, // 0x7D '}' - { 1147, 7, 3, 9, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSans9pt7b PROGMEM = { - (uint8_t *)FreeSans9pt7bBitmaps, - (GFXglyph *)FreeSans9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1822 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h deleted file mode 100644 index e0922be27..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h +++ /dev/null @@ -1,288 +0,0 @@ -const uint8_t FreeSansBold12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0x76, 0x66, 0x60, 0xFF, 0xF0, 0xF3, 0xFC, 0xFF, - 0x3F, 0xCF, 0x61, 0x98, 0x60, 0x0E, 0x70, 0x73, 0x83, 0x18, 0xFF, 0xF7, - 0xFF, 0xBF, 0xFC, 0x73, 0x83, 0x18, 0x18, 0xC7, 0xFF, 0xBF, 0xFD, 0xFF, - 0xE3, 0x18, 0x39, 0xC1, 0xCE, 0x0E, 0x70, 0x02, 0x00, 0x7E, 0x0F, 0xF8, - 0x7F, 0xE7, 0xAF, 0xB9, 0x3D, 0xC8, 0x0F, 0x40, 0x3F, 0x00, 0xFF, 0x00, - 0xFC, 0x05, 0xFF, 0x27, 0xF9, 0x3F, 0xEB, 0xEF, 0xFE, 0x3F, 0xE0, 0x7C, - 0x00, 0x80, 0x04, 0x00, 0x3C, 0x06, 0x0F, 0xC1, 0x81, 0xFC, 0x30, 0x73, - 0x8C, 0x0C, 0x31, 0x81, 0xCE, 0x60, 0x1F, 0xCC, 0x03, 0xF3, 0x00, 0x3C, - 0x67, 0x80, 0x19, 0xF8, 0x02, 0x7F, 0x80, 0xCE, 0x70, 0x11, 0x86, 0x06, - 0x39, 0xC1, 0x87, 0xF8, 0x30, 0x7E, 0x0C, 0x07, 0x80, 0x07, 0x80, 0x1F, - 0xC0, 0x3F, 0xE0, 0x3C, 0xE0, 0x3C, 0xE0, 0x3E, 0xE0, 0x0F, 0xC0, 0x07, - 0x00, 0x3F, 0x8C, 0x7F, 0xCC, 0xF1, 0xFC, 0xF0, 0xF8, 0xF0, 0x78, 0xF8, - 0xF8, 0x7F, 0xFC, 0x3F, 0xDE, 0x1F, 0x8E, 0xFF, 0xFF, 0x66, 0x0C, 0x73, - 0x8E, 0x71, 0xC7, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x1C, 0x71, 0xC3, - 0x8E, 0x18, 0x70, 0xC3, 0x87, 0x1C, 0x38, 0xE3, 0x87, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0xCE, 0x38, 0xE7, 0x1C, 0x63, 0x80, 0x10, 0x23, 0x5F, 0xF3, - 0x87, 0x1B, 0x14, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x0F, 0xFF, 0xFF, 0xFF, - 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x00, 0xFF, 0xF3, 0x36, 0xC0, 0xFF, - 0xFF, 0xC0, 0xFF, 0xF0, 0x0C, 0x30, 0x86, 0x18, 0x61, 0x0C, 0x30, 0xC2, - 0x18, 0x61, 0x84, 0x30, 0xC0, 0x1F, 0x83, 0xFC, 0x7F, 0xE7, 0x9E, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, - 0xF7, 0x9E, 0x7F, 0xE3, 0xFC, 0x0F, 0x00, 0x06, 0x1C, 0x7F, 0xFF, 0xE3, - 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0x8F, 0x1E, 0x1F, 0x83, - 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xE0, - 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x03, 0x80, 0x7F, 0xF7, 0xFF, 0x7F, 0xF0, - 0x1F, 0x07, 0xFC, 0xFF, 0xEF, 0x1E, 0xF1, 0xE0, 0x1E, 0x03, 0xC0, 0x78, - 0x07, 0xC0, 0x1E, 0x00, 0xF0, 0x0F, 0xF0, 0xFF, 0x1F, 0x7F, 0xE7, 0xFC, - 0x1F, 0x80, 0x03, 0xC0, 0xF8, 0x1F, 0x07, 0xE1, 0xBC, 0x27, 0x8C, 0xF3, - 0x1E, 0x63, 0xD8, 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x3F, 0xE7, 0xFE, 0x7F, 0xE7, 0x00, 0x60, 0x06, 0xF8, 0x7F, - 0xCF, 0xFE, 0xF1, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xFE, 0x1E, 0xFF, - 0xE7, 0xFC, 0x3F, 0x00, 0x0F, 0x83, 0xFC, 0x7F, 0xE7, 0x9F, 0xF0, 0x0F, - 0x78, 0xFF, 0xCF, 0xFE, 0xF9, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF7, - 0x9F, 0x7F, 0xE3, 0xFC, 0x0F, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, - 0x1C, 0x07, 0x01, 0xE0, 0x38, 0x0F, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xE0, - 0x38, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x0F, 0x03, 0xFC, 0x7F, 0xC7, 0x9E, - 0x70, 0xE7, 0x0E, 0x39, 0xC1, 0xF8, 0x3F, 0xC7, 0x9E, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x9F, 0x7F, 0xE3, 0xFC, 0x1F, 0x80, 0x1F, 0x03, 0xFC, 0x7F, - 0xEF, 0x9E, 0xF0, 0xEF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF9, 0xF7, 0xFF, 0x3F, - 0xF1, 0xEF, 0x00, 0xEF, 0x1E, 0x7F, 0xE7, 0xFC, 0x1F, 0x00, 0xFF, 0xF0, - 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0x11, 0x6C, - 0x00, 0x10, 0x07, 0x03, 0xF1, 0xFC, 0x7E, 0x0F, 0x80, 0xE0, 0x0F, 0xC0, - 0x3F, 0x80, 0x7F, 0x00, 0xF0, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x0E, 0x00, 0xFC, - 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0x00, 0xF0, 0x7F, 0x1F, 0x8F, 0xE0, 0xF0, - 0x08, 0x00, 0x1F, 0x07, 0xFC, 0x7F, 0xEF, 0x9F, 0xF0, 0xFF, 0x0F, 0x00, - 0xF0, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x0E, 0x00, 0xE0, 0x00, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xFC, 0x03, 0xC0, - 0xF0, 0x38, 0x01, 0xC3, 0x80, 0x07, 0x18, 0x3D, 0x99, 0x87, 0xEC, 0x6C, - 0x71, 0xC3, 0xC3, 0x06, 0x1E, 0x18, 0x30, 0xF1, 0x81, 0x87, 0x8C, 0x18, - 0x7C, 0x60, 0xC3, 0x63, 0x8E, 0x3B, 0x8F, 0xDF, 0x8C, 0x3C, 0xF0, 0x70, - 0x00, 0x01, 0xC0, 0x00, 0x07, 0x80, 0x80, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, - 0x00, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, - 0x70, 0x0F, 0x78, 0x0E, 0x78, 0x0E, 0x38, 0x1E, 0x3C, 0x1C, 0x3C, 0x3F, - 0xFC, 0x3F, 0xFE, 0x3F, 0xFE, 0x78, 0x0E, 0x78, 0x0F, 0x70, 0x0F, 0xF0, - 0x07, 0xFF, 0xC3, 0xFF, 0xCF, 0xFF, 0x3C, 0x3E, 0xF0, 0x7B, 0xC1, 0xEF, - 0x0F, 0xBF, 0xFC, 0xFF, 0xE3, 0xFF, 0xCF, 0x07, 0xBC, 0x0F, 0xF0, 0x3F, - 0xC0, 0xFF, 0x07, 0xFF, 0xFE, 0xFF, 0xFB, 0xFF, 0x80, 0x07, 0xE0, 0x1F, - 0xF8, 0x3F, 0xFC, 0x7C, 0x3E, 0x78, 0x1F, 0xF8, 0x0F, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF8, 0x0F, 0x78, - 0x1F, 0x7C, 0x3E, 0x3F, 0xFE, 0x1F, 0xFC, 0x07, 0xF0, 0xFF, 0xE1, 0xFF, - 0xE3, 0xFF, 0xE7, 0x83, 0xEF, 0x03, 0xDE, 0x07, 0xFC, 0x07, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x07, 0xBC, - 0x1F, 0x7F, 0xFC, 0xFF, 0xF1, 0xFF, 0x80, 0xFF, 0xF7, 0xFF, 0xBF, 0xFD, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFC, 0xFF, 0xE7, 0xFF, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0xFE, 0xFF, 0xEF, 0xFE, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0x03, 0xF0, 0x0F, 0xFC, 0x3F, 0xFE, 0x3E, 0x1F, - 0x78, 0x07, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, 0xF0, 0x7F, - 0xF0, 0x7F, 0xF0, 0x07, 0x78, 0x07, 0x7C, 0x0F, 0x3E, 0x1F, 0x3F, 0xFB, - 0x0F, 0xFB, 0x03, 0xE3, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, - 0x3F, 0xC0, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFC, - 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF0, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0x3C, - 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, - 0xF8, 0xFF, 0x1F, 0xE3, 0xFC, 0x7B, 0xFE, 0x7F, 0xC3, 0xE0, 0xF0, 0x3E, - 0xF0, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, 0xF1, 0xE0, 0xF3, 0xC0, 0xF7, 0x80, - 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0x80, 0xFB, 0xC0, 0xF1, 0xE0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0x78, 0xF0, 0x3C, 0xF0, 0x3E, 0xF0, 0x1E, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0xFF, 0xFF, 0xFF, 0xFC, 0xF8, - 0x1F, 0xFE, 0x0F, 0xFF, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xFF, 0xE1, 0xFF, - 0xF9, 0xFF, 0xFC, 0xEF, 0xFE, 0x77, 0xFB, 0x3B, 0xFD, 0xDD, 0xFE, 0xFC, - 0xFF, 0x7E, 0x7F, 0x9F, 0x3F, 0xCF, 0x9F, 0xE7, 0x8F, 0xF3, 0xC7, 0xF8, - 0xE3, 0xC0, 0xF0, 0x1F, 0xF0, 0x3F, 0xF0, 0x7F, 0xE0, 0xFF, 0xE1, 0xFF, - 0xC3, 0xFD, 0xC7, 0xFB, 0x8F, 0xF3, 0x9F, 0xE7, 0x3F, 0xC7, 0x7F, 0x8F, - 0xFF, 0x0F, 0xFE, 0x1F, 0xFC, 0x1F, 0xF8, 0x1F, 0xF0, 0x3F, 0xE0, 0x3C, - 0x03, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, - 0x7B, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, - 0x00, 0xF7, 0x80, 0xF3, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFC, - 0x03, 0xF8, 0x00, 0xFF, 0xE3, 0xFF, 0xEF, 0xFF, 0xBC, 0x1F, 0xF0, 0x3F, - 0xC0, 0xFF, 0x03, 0xFC, 0x1F, 0xFF, 0xFB, 0xFF, 0xCF, 0xFE, 0x3C, 0x00, - 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x00, 0x03, - 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x87, 0xC7, 0xC7, 0x80, 0xF3, 0xC0, 0x7B, - 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x01, 0xFE, 0x04, - 0xF7, 0x87, 0xF3, 0xC3, 0xF8, 0xF0, 0xF8, 0x7F, 0xFC, 0x1F, 0xFF, 0x83, - 0xF1, 0x80, 0x00, 0x00, 0xFF, 0xF8, 0xFF, 0xFC, 0xFF, 0xFC, 0xF0, 0x3E, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xFF, 0xF8, 0xFF, 0xF0, - 0xFF, 0xF8, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x3C, - 0xF0, 0x3C, 0xF0, 0x1F, 0x0F, 0xC0, 0x7F, 0xE1, 0xFF, 0xE7, 0xC3, 0xEF, - 0x03, 0xDE, 0x00, 0x3C, 0x00, 0x7F, 0x00, 0x7F, 0xF0, 0x3F, 0xF8, 0x0F, - 0xF8, 0x01, 0xF0, 0x01, 0xFE, 0x03, 0xDE, 0x0F, 0xBF, 0xFE, 0x3F, 0xF8, - 0x1F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, - 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, - 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xF7, 0x87, 0x9F, 0xFE, 0x3F, 0xF0, 0x3F, - 0x00, 0x70, 0x0E, 0xF0, 0x3D, 0xE0, 0x79, 0xC0, 0xE3, 0x81, 0xC7, 0x87, - 0x87, 0x0E, 0x0E, 0x1C, 0x1E, 0x78, 0x1C, 0xE0, 0x39, 0xC0, 0x73, 0x80, - 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x70, - 0x38, 0x1C, 0xE0, 0xF0, 0x79, 0xE1, 0xF0, 0xF3, 0xC3, 0xE1, 0xE3, 0x87, - 0xC3, 0x87, 0x0F, 0x87, 0x0E, 0x3B, 0x9E, 0x1E, 0x77, 0x38, 0x1C, 0xEE, - 0x70, 0x39, 0xCC, 0xE0, 0x73, 0x99, 0xC0, 0x6E, 0x3F, 0x00, 0xFC, 0x7E, - 0x01, 0xF8, 0xFC, 0x03, 0xF0, 0xF8, 0x03, 0xE1, 0xE0, 0x07, 0x83, 0xC0, - 0x0F, 0x07, 0x80, 0xF0, 0x3C, 0xF0, 0xF9, 0xE1, 0xE1, 0xE7, 0x83, 0xCF, - 0x03, 0xFC, 0x03, 0xF0, 0x07, 0xE0, 0x07, 0x80, 0x0F, 0x00, 0x3F, 0x00, - 0xFF, 0x01, 0xFE, 0x07, 0x9E, 0x0F, 0x1E, 0x3C, 0x3C, 0xF8, 0x3D, 0xE0, - 0x78, 0xF0, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x78, 0x1E, - 0x78, 0x0E, 0x70, 0x0F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x03, 0xC0, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, - 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x7C, 0x03, 0xC0, 0x3C, 0x03, - 0xC0, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0xF3, 0xCF, - 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xFF, 0xFF, - 0xC0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x10, 0x30, 0x60, 0x40, - 0xC1, 0x81, 0x03, 0x06, 0xFF, 0xFF, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, - 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0xFF, 0xFF, 0xC0, 0x0F, 0x00, - 0xF0, 0x0F, 0x01, 0xF8, 0x1B, 0x83, 0x9C, 0x39, 0xC3, 0x0C, 0x70, 0xE7, - 0x0E, 0xE0, 0x70, 0xFF, 0xFF, 0xFF, 0xFC, 0xE6, 0x30, 0x1F, 0x83, 0xFF, - 0x1F, 0xFD, 0xE1, 0xE0, 0x0F, 0x03, 0xF9, 0xFF, 0xDF, 0x1E, 0xF0, 0xF7, - 0x8F, 0xBF, 0xFC, 0xFF, 0xE3, 0xCF, 0x80, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x7B, 0xC3, 0xFF, 0x9F, 0xFE, 0xF8, 0xF7, 0x83, 0xFC, - 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3F, 0xE3, 0xDF, 0xFE, 0xFF, 0xE7, 0xBE, - 0x00, 0x0F, 0x83, 0xFE, 0x7F, 0xF7, 0x8F, 0xF0, 0x7F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x77, 0x8F, 0x7F, 0xF3, 0xFE, 0x0F, 0x80, 0x00, 0x78, 0x03, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x8F, 0xBC, 0xFF, 0xEF, 0xFF, 0x78, 0xFF, - 0x83, 0xFC, 0x1F, 0xE0, 0xFF, 0x07, 0xF8, 0x3D, 0xE3, 0xEF, 0xFF, 0x3F, - 0xF8, 0xFB, 0xC0, 0x1F, 0x81, 0xFE, 0x1F, 0xF9, 0xF1, 0xCF, 0x07, 0x7F, - 0xFB, 0xFF, 0xDE, 0x00, 0xF0, 0x03, 0xC3, 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, - 0x00, 0x3E, 0xFD, 0xFB, 0xC7, 0x9F, 0xBF, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, - 0x8F, 0x1E, 0x3C, 0x78, 0xF0, 0x1E, 0x79, 0xFB, 0xDF, 0xFE, 0xF1, 0xFF, - 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xDF, 0xFE, 0x7F, - 0xF1, 0xF7, 0x80, 0x3C, 0x01, 0xFF, 0x1E, 0x7F, 0xF0, 0xFE, 0x00, 0xF0, - 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x7C, 0xFF, 0xEF, 0xFF, 0xF9, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, - 0xFF, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3C, - 0xF3, 0xC0, 0x00, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, 0xF3, 0xCF, 0x3C, - 0xF3, 0xCF, 0xFF, 0xFF, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, - 0x0F, 0x0F, 0xF1, 0xEF, 0x3C, 0xF7, 0x8F, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, - 0x8F, 0x3C, 0xF1, 0xCF, 0x1E, 0xF0, 0xEF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0x8F, 0x9F, 0xFB, 0xFB, 0xFF, 0xFF, - 0xFC, 0xF8, 0xFF, 0x1E, 0x1F, 0xE3, 0xC3, 0xFC, 0x78, 0x7F, 0x8F, 0x0F, - 0xF1, 0xE1, 0xFE, 0x3C, 0x3F, 0xC7, 0x87, 0xF8, 0xF0, 0xFF, 0x1E, 0x1E, - 0xF7, 0xCF, 0xFE, 0xFF, 0xFF, 0x9F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xF0, 0x0F, 0x81, 0xFF, 0x1F, - 0xFC, 0xF1, 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7B, 0xC7, - 0x9F, 0xFC, 0x7F, 0xC0, 0xF8, 0x00, 0xF7, 0xC7, 0xFF, 0x3F, 0xFD, 0xF1, - 0xEF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7F, 0xC7, 0xBF, 0xFD, - 0xFF, 0xCF, 0x78, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x00, - 0x0F, 0x79, 0xFF, 0xDF, 0xFE, 0xF1, 0xFF, 0x07, 0xF8, 0x3F, 0xC1, 0xFE, - 0x0F, 0xF0, 0x7B, 0xC7, 0xDF, 0xFE, 0x7F, 0xF1, 0xF7, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0xF3, 0xF7, 0xFF, 0xF8, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0x1F, 0x87, 0xFC, 0xFF, 0xEF, - 0x0F, 0xF8, 0x0F, 0xF0, 0x7F, 0xE0, 0xFF, 0x01, 0xFF, 0x0F, 0xFF, 0xE7, - 0xFE, 0x1F, 0x80, 0x79, 0xE7, 0xBF, 0xFD, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, - 0x7D, 0xF3, 0xC0, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, - 0xF0, 0xFF, 0x0F, 0xF0, 0xFF, 0x1F, 0xFF, 0xF7, 0xFF, 0x3E, 0xF0, 0xF0, - 0x7B, 0x83, 0x9E, 0x1C, 0xF1, 0xE3, 0x8E, 0x1C, 0x70, 0x77, 0x83, 0xB8, - 0x1D, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0x70, 0x00, 0xF0, 0xE1, 0xDC, - 0x78, 0x77, 0x1F, 0x3D, 0xE7, 0xCF, 0x79, 0xB3, 0x8E, 0x6C, 0xE3, 0xBB, - 0x38, 0xEE, 0xFC, 0x1F, 0x3F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x78, - 0x0E, 0x1E, 0x00, 0x78, 0xF3, 0xC7, 0x8F, 0x78, 0x3B, 0x81, 0xFC, 0x07, - 0xC0, 0x1E, 0x01, 0xF0, 0x1F, 0xC0, 0xEF, 0x0F, 0x78, 0xF1, 0xE7, 0x87, - 0x00, 0xF0, 0x7B, 0x83, 0x9E, 0x1C, 0x71, 0xE3, 0x8E, 0x1E, 0x70, 0x73, - 0x83, 0xB8, 0x1F, 0xC0, 0x7E, 0x03, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, - 0x3C, 0x07, 0xC0, 0x3E, 0x01, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFC, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0F, 0xFF, 0xFF, 0xFF, 0xC0, - 0x1C, 0xF3, 0xCE, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBC, 0xF0, 0xE3, 0x8E, - 0x38, 0xE3, 0x8E, 0x3C, 0xF1, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0xE3, 0x8F, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x0F, 0x3D, 0xC7, 0x1C, - 0x71, 0xC7, 0x1C, 0xF3, 0xCE, 0x00, 0x78, 0x0F, 0xE0, 0xCF, 0x30, 0x7F, - 0x01, 0xE0 }; - -const GFXglyph FreeSansBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 4, 17, 8, 3, -16 }, // 0x21 '!' - { 9, 10, 6, 11, 1, -17 }, // 0x22 '"' - { 17, 13, 16, 13, 0, -15 }, // 0x23 '#' - { 43, 13, 20, 13, 0, -17 }, // 0x24 '$' - { 76, 19, 17, 21, 1, -16 }, // 0x25 '%' - { 117, 16, 17, 17, 1, -16 }, // 0x26 '&' - { 151, 4, 6, 6, 1, -17 }, // 0x27 ''' - { 154, 6, 22, 8, 1, -17 }, // 0x28 '(' - { 171, 6, 22, 8, 1, -17 }, // 0x29 ')' - { 188, 7, 8, 9, 1, -17 }, // 0x2A '*' - { 195, 11, 11, 14, 2, -10 }, // 0x2B '+' - { 211, 4, 7, 6, 1, -2 }, // 0x2C ',' - { 215, 6, 3, 8, 1, -7 }, // 0x2D '-' - { 218, 4, 3, 6, 1, -2 }, // 0x2E '.' - { 220, 6, 17, 7, 0, -16 }, // 0x2F '/' - { 233, 12, 17, 13, 1, -16 }, // 0x30 '0' - { 259, 7, 17, 14, 3, -16 }, // 0x31 '1' - { 274, 12, 17, 13, 1, -16 }, // 0x32 '2' - { 300, 12, 17, 13, 1, -16 }, // 0x33 '3' - { 326, 11, 17, 13, 1, -16 }, // 0x34 '4' - { 350, 12, 17, 13, 1, -16 }, // 0x35 '5' - { 376, 12, 17, 13, 1, -16 }, // 0x36 '6' - { 402, 11, 17, 13, 1, -16 }, // 0x37 '7' - { 426, 12, 17, 13, 1, -16 }, // 0x38 '8' - { 452, 12, 17, 13, 1, -16 }, // 0x39 '9' - { 478, 4, 12, 6, 1, -11 }, // 0x3A ':' - { 484, 4, 16, 6, 1, -11 }, // 0x3B ';' - { 492, 12, 12, 14, 1, -11 }, // 0x3C '<' - { 510, 12, 9, 14, 1, -9 }, // 0x3D '=' - { 524, 12, 12, 14, 1, -11 }, // 0x3E '>' - { 542, 12, 18, 15, 2, -17 }, // 0x3F '?' - { 569, 21, 21, 23, 1, -17 }, // 0x40 '@' - { 625, 16, 18, 17, 0, -17 }, // 0x41 'A' - { 661, 14, 18, 17, 2, -17 }, // 0x42 'B' - { 693, 16, 18, 17, 1, -17 }, // 0x43 'C' - { 729, 15, 18, 17, 2, -17 }, // 0x44 'D' - { 763, 13, 18, 16, 2, -17 }, // 0x45 'E' - { 793, 12, 18, 15, 2, -17 }, // 0x46 'F' - { 820, 16, 18, 18, 1, -17 }, // 0x47 'G' - { 856, 14, 18, 18, 2, -17 }, // 0x48 'H' - { 888, 4, 18, 7, 2, -17 }, // 0x49 'I' - { 897, 11, 18, 14, 1, -17 }, // 0x4A 'J' - { 922, 16, 18, 17, 2, -17 }, // 0x4B 'K' - { 958, 11, 18, 15, 2, -17 }, // 0x4C 'L' - { 983, 17, 18, 21, 2, -17 }, // 0x4D 'M' - { 1022, 15, 18, 18, 2, -17 }, // 0x4E 'N' - { 1056, 17, 18, 19, 1, -17 }, // 0x4F 'O' - { 1095, 14, 18, 16, 2, -17 }, // 0x50 'P' - { 1127, 17, 19, 19, 1, -17 }, // 0x51 'Q' - { 1168, 16, 18, 17, 2, -17 }, // 0x52 'R' - { 1204, 15, 18, 16, 1, -17 }, // 0x53 'S' - { 1238, 12, 18, 15, 2, -17 }, // 0x54 'T' - { 1265, 14, 18, 18, 2, -17 }, // 0x55 'U' - { 1297, 15, 18, 16, 0, -17 }, // 0x56 'V' - { 1331, 23, 18, 23, 0, -17 }, // 0x57 'W' - { 1383, 15, 18, 16, 1, -17 }, // 0x58 'X' - { 1417, 16, 18, 15, 0, -17 }, // 0x59 'Y' - { 1453, 13, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1483, 6, 23, 8, 2, -17 }, // 0x5B '[' - { 1501, 7, 17, 7, 0, -16 }, // 0x5C '\' - { 1516, 6, 23, 8, 0, -17 }, // 0x5D ']' - { 1534, 12, 11, 14, 1, -16 }, // 0x5E '^' - { 1551, 15, 2, 13, -1, 4 }, // 0x5F '_' - { 1555, 4, 3, 6, 0, -17 }, // 0x60 '`' - { 1557, 13, 13, 14, 1, -12 }, // 0x61 'a' - { 1579, 13, 18, 15, 2, -17 }, // 0x62 'b' - { 1609, 12, 13, 13, 1, -12 }, // 0x63 'c' - { 1629, 13, 18, 15, 1, -17 }, // 0x64 'd' - { 1659, 13, 13, 14, 1, -12 }, // 0x65 'e' - { 1681, 7, 18, 8, 1, -17 }, // 0x66 'f' - { 1697, 13, 18, 15, 1, -12 }, // 0x67 'g' - { 1727, 12, 18, 14, 2, -17 }, // 0x68 'h' - { 1754, 4, 18, 7, 2, -17 }, // 0x69 'i' - { 1763, 6, 23, 7, 0, -17 }, // 0x6A 'j' - { 1781, 12, 18, 14, 2, -17 }, // 0x6B 'k' - { 1808, 4, 18, 6, 2, -17 }, // 0x6C 'l' - { 1817, 19, 13, 21, 2, -12 }, // 0x6D 'm' - { 1848, 12, 13, 15, 2, -12 }, // 0x6E 'n' - { 1868, 13, 13, 15, 1, -12 }, // 0x6F 'o' - { 1890, 13, 18, 15, 2, -12 }, // 0x70 'p' - { 1920, 13, 18, 15, 1, -12 }, // 0x71 'q' - { 1950, 8, 13, 9, 2, -12 }, // 0x72 'r' - { 1963, 12, 13, 13, 1, -12 }, // 0x73 's' - { 1983, 6, 15, 8, 1, -14 }, // 0x74 't' - { 1995, 12, 13, 15, 2, -12 }, // 0x75 'u' - { 2015, 13, 13, 13, 0, -12 }, // 0x76 'v' - { 2037, 18, 13, 19, 0, -12 }, // 0x77 'w' - { 2067, 13, 13, 13, 0, -12 }, // 0x78 'x' - { 2089, 13, 18, 13, 0, -12 }, // 0x79 'y' - { 2119, 10, 13, 12, 1, -12 }, // 0x7A 'z' - { 2136, 6, 23, 9, 1, -17 }, // 0x7B '{' - { 2154, 2, 22, 7, 2, -17 }, // 0x7C '|' - { 2160, 6, 23, 9, 3, -17 }, // 0x7D '}' - { 2178, 12, 5, 12, 0, -7 } }; // 0x7E '~' - -const GFXfont FreeSansBold12pt7b PROGMEM = { - (uint8_t *)FreeSansBold12pt7bBitmaps, - (GFXglyph *)FreeSansBold12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2858 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h deleted file mode 100644 index d5927cde4..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h +++ /dev/null @@ -1,481 +0,0 @@ -const uint8_t FreeSansBold18pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xE7, 0x39, 0xCE, 0x73, 0x80, - 0x0F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xC7, 0xFE, 0x3F, 0xF1, 0xFF, 0x8F, - 0xFC, 0x7D, 0xC1, 0xCE, 0x0E, 0x70, 0x70, 0x03, 0xC3, 0x80, 0x3C, 0x78, - 0x03, 0xC7, 0x80, 0x38, 0x78, 0x07, 0x87, 0x07, 0xFF, 0xFF, 0x7F, 0xFF, - 0xF7, 0xFF, 0xFF, 0x7F, 0xFF, 0xF0, 0xF0, 0xE0, 0x0F, 0x0E, 0x00, 0xF1, - 0xE0, 0x0F, 0x1E, 0x00, 0xE1, 0xE0, 0xFF, 0xFF, 0xCF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xCF, 0xFF, 0xFC, 0x1C, 0x3C, 0x03, 0xC3, 0x80, 0x3C, 0x78, 0x03, - 0xC7, 0x80, 0x38, 0x78, 0x03, 0x87, 0x80, 0x00, 0x60, 0x00, 0x7F, 0x80, - 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xFF, 0xFC, 0xFC, 0xDF, 0x9F, 0x19, 0xFB, - 0xC3, 0x1F, 0x78, 0x63, 0xEF, 0x8C, 0x01, 0xFD, 0x80, 0x1F, 0xF0, 0x01, - 0xFF, 0xC0, 0x1F, 0xFE, 0x00, 0x7F, 0xE0, 0x03, 0xFE, 0x00, 0x67, 0xE0, - 0x0C, 0x7F, 0xE1, 0x8F, 0xFC, 0x31, 0xFF, 0xC6, 0x3E, 0xFC, 0xDF, 0x9F, - 0xFF, 0xF1, 0xFF, 0xFC, 0x0F, 0xFF, 0x00, 0x7F, 0x80, 0x01, 0x80, 0x00, - 0x30, 0x00, 0x06, 0x00, 0x0F, 0x00, 0x1C, 0x01, 0xFE, 0x00, 0xE0, 0x1F, - 0xF8, 0x0E, 0x00, 0xFF, 0xC0, 0x70, 0x0F, 0x0F, 0x07, 0x00, 0x70, 0x38, - 0x38, 0x03, 0x81, 0xC3, 0x80, 0x1C, 0x0E, 0x3C, 0x00, 0xF0, 0xF1, 0xC0, - 0x03, 0xFF, 0x1C, 0x00, 0x1F, 0xF8, 0xE0, 0x00, 0x7F, 0x8E, 0x00, 0x00, - 0xF0, 0x70, 0xF8, 0x00, 0x07, 0x1F, 0xF0, 0x00, 0x39, 0xFF, 0xC0, 0x03, - 0x8F, 0xFE, 0x00, 0x1C, 0xF0, 0x78, 0x01, 0xC7, 0x01, 0xC0, 0x0C, 0x38, - 0x0E, 0x00, 0xE1, 0xC0, 0x70, 0x06, 0x0F, 0x07, 0x80, 0x70, 0x3F, 0xF8, - 0x07, 0x01, 0xFF, 0xC0, 0x38, 0x07, 0xFC, 0x03, 0x80, 0x0F, 0x80, 0x01, - 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xC0, 0x03, 0xFF, 0x80, 0x1F, 0x1E, - 0x00, 0x7C, 0x78, 0x01, 0xF1, 0xE0, 0x07, 0xE7, 0x80, 0x0F, 0xBC, 0x00, - 0x1F, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0xF0, 0xFF, - 0xE3, 0xC7, 0xE7, 0xCF, 0x3F, 0x0F, 0xF8, 0xF8, 0x3F, 0xE3, 0xE0, 0x7F, - 0x8F, 0x80, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x3F, 0xE1, 0xFF, 0xFF, 0x83, - 0xFF, 0xFF, 0x07, 0xFE, 0x7E, 0x07, 0xF0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFD, - 0xCE, 0x70, 0x07, 0x87, 0x83, 0xC3, 0xC1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, - 0x3C, 0x1E, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, - 0x0F, 0x03, 0x81, 0xE0, 0xF0, 0x78, 0x1E, 0x0F, 0x03, 0x81, 0xE0, 0x70, - 0x3C, 0x0E, 0x07, 0x80, 0xF0, 0x38, 0x1E, 0x07, 0x83, 0xC0, 0xF0, 0x78, - 0x3C, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, - 0xC1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x0F, 0x0F, 0x07, 0x87, 0x83, - 0xC1, 0xC1, 0xE0, 0xE0, 0xF0, 0x00, 0x06, 0x00, 0x60, 0x06, 0x07, 0x6E, - 0x7F, 0xE3, 0xFC, 0x0F, 0x01, 0xF8, 0x1F, 0x83, 0x9C, 0x10, 0x80, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xC0, 0x03, 0xC0, 0x03, - 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0xFF, 0xFF, 0xFF, 0x8C, 0x63, - 0x37, 0xB0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x80, 0x01, - 0x81, 0xC0, 0xC0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x06, 0x03, 0x01, - 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, - 0x81, 0xC0, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, - 0xC7, 0xE3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, - 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, - 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xDF, 0x07, 0xCF, 0x83, 0xE7, 0xE3, - 0xF1, 0xFF, 0xF0, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x01, 0xC0, - 0xF0, 0x3C, 0x1F, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0xC1, 0xF0, 0x7C, - 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC0, 0x07, 0xF0, 0x0F, 0xFE, 0x0F, 0xFF, - 0x8F, 0xFF, 0xE7, 0xE3, 0xF7, 0xE0, 0xFF, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x03, 0xF0, - 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x07, 0xC0, 0x07, 0xC0, - 0x03, 0xE0, 0x03, 0xFF, 0xFD, 0xFF, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF, 0x80, - 0x07, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xCF, 0xC3, 0xF7, 0xC0, - 0xFB, 0xE0, 0x7D, 0xF0, 0x3E, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x0F, 0x80, - 0x3F, 0x80, 0x1F, 0xC0, 0x0F, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, - 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0xFC, 0x01, 0xFC, - 0x01, 0xFC, 0x03, 0xFC, 0x07, 0x7C, 0x07, 0x7C, 0x0E, 0x7C, 0x0E, 0x7C, - 0x1C, 0x7C, 0x18, 0x7C, 0x38, 0x7C, 0x70, 0x7C, 0x60, 0x7C, 0xE0, 0x7C, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x7C, 0x00, 0x7C, - 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7C, 0x1F, 0xFF, 0x0F, 0xFF, - 0x8F, 0xFF, 0xC7, 0xFF, 0xE3, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, - 0x00, 0x79, 0xF0, 0x3F, 0xFE, 0x1F, 0xFF, 0x8F, 0xFF, 0xE7, 0xC3, 0xF0, - 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xFE, 0x03, - 0xFF, 0x03, 0xFF, 0xC3, 0xF3, 0xFF, 0xF1, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, - 0xE0, 0x00, 0x03, 0xF8, 0x03, 0xFF, 0x81, 0xFF, 0xF0, 0xFF, 0xFE, 0x3E, - 0x1F, 0x9F, 0x03, 0xE7, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, - 0x8F, 0xFF, 0xF3, 0xFF, 0xFE, 0xFE, 0x1F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, - 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xF7, 0x80, 0x7D, 0xF0, 0x3E, 0x7E, - 0x1F, 0x8F, 0xFF, 0xC1, 0xFF, 0xF0, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x00, 0xF8, - 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, - 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x0F, 0xFF, 0x07, - 0xFF, 0xC7, 0xC3, 0xF3, 0xC0, 0xF9, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x1F, - 0x1E, 0x1F, 0x07, 0xFF, 0x01, 0xFF, 0x03, 0xFF, 0xE3, 0xF1, 0xF9, 0xF0, - 0x7D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, 0xF7, - 0xC3, 0xF3, 0xFF, 0xF8, 0xFF, 0xF8, 0x3F, 0xF8, 0x07, 0xF0, 0x00, 0x07, - 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x0F, 0xFF, 0xC7, 0xE3, 0xF7, 0xE0, 0xFB, - 0xE0, 0x3D, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x83, - 0xF7, 0xE3, 0xFB, 0xFF, 0xFC, 0xFF, 0xFE, 0x3F, 0xDF, 0x07, 0xCF, 0x80, - 0x07, 0x80, 0x03, 0xDF, 0x03, 0xE7, 0xC3, 0xE3, 0xFF, 0xF0, 0xFF, 0xF0, - 0x3F, 0xF0, 0x07, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC6, 0x33, 0x9B, 0xD8, 0x00, 0x00, 0xC0, 0x00, - 0xF0, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0x07, 0xFE, 0x0F, 0xFC, 0x03, - 0xF8, 0x00, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x07, - 0xFF, 0x00, 0x3F, 0xF0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x00, 0xC0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xC0, 0x00, 0x3C, 0x00, 0x0F, 0xE0, 0x03, 0xFF, 0x00, 0x3F, 0xF0, - 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xC0, 0x07, 0xF0, - 0x0F, 0xFC, 0x1F, 0xF8, 0x3F, 0xF8, 0x3F, 0xF0, 0x0F, 0xE0, 0x03, 0xC0, - 0x00, 0xC0, 0x00, 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0xFF, 0xF1, 0xFF, - 0xFC, 0x7E, 0x3F, 0xBF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, - 0xC0, 0x03, 0xF0, 0x01, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0xC0, 0x01, 0xF8, 0x07, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x07, - 0x80, 0x00, 0x7C, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x03, 0xE3, 0x9E, 0x3C, - 0x0F, 0xF7, 0x8E, 0x38, 0x1F, 0xFF, 0x0E, 0x78, 0x3E, 0x1F, 0x07, 0x70, - 0x38, 0x0F, 0x07, 0x70, 0x78, 0x0F, 0x07, 0xE0, 0x70, 0x0E, 0x07, 0xE0, - 0x70, 0x0E, 0x07, 0xE0, 0xE0, 0x0E, 0x07, 0xE0, 0xE0, 0x1E, 0x0F, 0xE0, - 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x3C, 0x1E, 0xE0, 0xF0, 0x3C, 0x3C, 0xF0, - 0xF0, 0xFC, 0x7C, 0x70, 0x7F, 0xFF, 0xF8, 0x78, 0x3F, 0xCF, 0xF0, 0x3C, - 0x1F, 0x07, 0xC0, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x01, 0x00, 0x07, 0xF0, 0x0F, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x80, 0x01, 0xFF, - 0x80, 0x01, 0xFF, 0x80, 0x01, 0xF7, 0xC0, 0x03, 0xE7, 0xC0, 0x03, 0xE7, - 0xC0, 0x03, 0xE3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC3, 0xE0, 0x07, 0xC1, - 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0x81, 0xF0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xF8, 0x1F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x3E, 0x00, 0x7C, 0x3E, 0x00, - 0x7E, 0x3E, 0x00, 0x3E, 0x7C, 0x00, 0x3E, 0x7C, 0x00, 0x3F, 0x7C, 0x00, - 0x1F, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0xFF, 0xFF, 0x8F, 0xFF, 0xFC, 0xF8, - 0x07, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, 0x80, 0x3E, 0xF8, 0x03, 0xEF, - 0x80, 0x3E, 0xF8, 0x07, 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xCF, 0x80, 0x7E, 0xF8, 0x01, 0xEF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, 0xFF, 0xFF, 0xEF, 0xFF, - 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0x80, - 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xF8, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, - 0x80, 0x1F, 0x3E, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7D, 0xF0, 0x00, - 0xFB, 0xF0, 0x03, 0xF3, 0xF0, 0x0F, 0xC7, 0xF0, 0x3F, 0x87, 0xFF, 0xFE, - 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xC0, 0x01, 0xFE, 0x00, 0xFF, 0xFC, 0x07, - 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x8F, 0x80, 0xFE, 0x7C, 0x01, - 0xF3, 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x07, 0xFE, - 0x00, 0x3F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x03, - 0xFF, 0x00, 0x1F, 0xF8, 0x00, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7D, 0xF0, - 0x03, 0xEF, 0x80, 0x3E, 0x7C, 0x07, 0xF3, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, - 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xDF, 0xFF, 0xFB, 0xFF, - 0xFF, 0x7F, 0xFF, 0xEF, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7F, 0xFF, 0xCF, 0xFF, - 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE7, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, - 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0xFF, 0xEF, 0xFF, 0xF7, - 0xFF, 0xFB, 0xFF, 0xFD, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x03, 0xFF, 0xE0, 0x07, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xC0, 0xFE, 0x3F, 0x00, 0x7E, 0x7E, 0x00, - 0x3F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, 0x03, - 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x0F, 0x7C, 0x00, 0x1F, 0x7C, 0x00, - 0x1F, 0x7E, 0x00, 0x3F, 0x3F, 0x00, 0x7F, 0x1F, 0xC1, 0xFF, 0x0F, 0xFF, - 0xFF, 0x07, 0xFF, 0xE7, 0x03, 0xFF, 0xC7, 0x00, 0xFF, 0x07, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, - 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, - 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, 0xF8, 0x1F, - 0xF8, 0x1F, 0xFC, 0x3F, 0x7F, 0xFE, 0x3F, 0xFC, 0x1F, 0xF8, 0x07, 0xE0, - 0xF8, 0x01, 0xFB, 0xE0, 0x0F, 0xCF, 0x80, 0x7E, 0x3E, 0x03, 0xF0, 0xF8, - 0x1F, 0x83, 0xE0, 0xFC, 0x0F, 0x87, 0xE0, 0x3E, 0x3F, 0x00, 0xF8, 0xF8, - 0x03, 0xE7, 0xE0, 0x0F, 0xBF, 0x00, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, 0x03, - 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x3F, 0xBF, 0x00, 0xFC, 0x7E, 0x03, 0xE0, - 0xFC, 0x0F, 0x81, 0xF8, 0x3E, 0x07, 0xE0, 0xF8, 0x0F, 0xC3, 0xE0, 0x1F, - 0x8F, 0x80, 0x7F, 0x3E, 0x00, 0xFC, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF0, - 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, - 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, - 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0x00, 0xFF, 0xFF, - 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x81, 0xFF, 0xFB, 0xC3, 0xDF, 0xFB, - 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xFB, 0xC3, 0xDF, 0xF9, 0xC7, 0xDF, 0xF9, - 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF9, 0xE7, 0x9F, 0xF8, - 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, 0xFF, 0x1F, 0xF8, - 0x7F, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, 0x7E, 0x1F, 0xF8, - 0x3E, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x1F, 0xFE, 0x01, 0xFF, 0xE0, 0x1F, - 0xFF, 0x01, 0xFF, 0xF0, 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x1F, 0xFF, 0xC1, - 0xFF, 0xBC, 0x1F, 0xFB, 0xE1, 0xFF, 0x9F, 0x1F, 0xF9, 0xF1, 0xFF, 0x8F, - 0x9F, 0xF8, 0x79, 0xFF, 0x87, 0xDF, 0xF8, 0x3D, 0xFF, 0x83, 0xFF, 0xF8, - 0x1F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x07, 0xFF, - 0x80, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x1F, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, - 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x00, 0x0F, - 0xBE, 0x00, 0x0F, 0x9F, 0x00, 0x07, 0xCF, 0xC0, 0x07, 0xE3, 0xF0, 0x07, - 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0xE3, 0xFF, 0xFE, - 0x7F, 0xFF, 0xEF, 0x80, 0xFF, 0xF0, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, - 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, 0xFC, 0x07, 0xEF, 0xFF, 0xFD, - 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFF, 0xE0, 0xF8, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, - 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, - 0xF0, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x01, 0xFC, 0x1F, 0xC1, 0xF8, - 0x03, 0xF1, 0xF8, 0x00, 0xFC, 0xF8, 0x00, 0x3E, 0x7C, 0x00, 0x1F, 0x7C, - 0x00, 0x07, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, - 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0xF8, 0x01, 0x0F, - 0xBE, 0x01, 0xCF, 0x9F, 0x01, 0xFF, 0xCF, 0xC0, 0x7F, 0xE3, 0xF0, 0x1F, - 0xE0, 0xFE, 0x0F, 0xF0, 0x7F, 0xFF, 0xF8, 0x0F, 0xFF, 0xFE, 0x03, 0xFF, - 0xEF, 0x80, 0x3F, 0xC3, 0x80, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0x07, 0xFF, - 0xFE, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, 0x80, 0x3F, 0x7C, 0x00, 0xFB, - 0xE0, 0x07, 0xDF, 0x00, 0x3E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0x3E, 0x00, - 0xF9, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0xC3, 0xFF, 0xFF, 0x1F, - 0x00, 0xFC, 0xF8, 0x03, 0xE7, 0xC0, 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, - 0xCF, 0x80, 0x3E, 0x7C, 0x01, 0xF3, 0xE0, 0x0F, 0x9F, 0x00, 0x7C, 0xF8, - 0x03, 0xF7, 0xC0, 0x0F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, - 0x87, 0xFF, 0xFC, 0x7E, 0x0F, 0xCF, 0xC0, 0x7E, 0xF8, 0x03, 0xEF, 0x80, - 0x3E, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFF, 0xC0, 0x3F, - 0xFF, 0x81, 0xFF, 0xFC, 0x03, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7E, - 0x7F, 0xFF, 0xE3, 0xFF, 0xFC, 0x1F, 0xFF, 0x00, 0x3F, 0xC0, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x1F, 0x00, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, - 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, - 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x01, 0xFF, - 0x80, 0x1F, 0x7C, 0x03, 0xE7, 0xE0, 0x7E, 0x3F, 0xFF, 0xC3, 0xFF, 0xFC, - 0x0F, 0xFF, 0x00, 0x3F, 0xC0, 0xF8, 0x00, 0xFB, 0xE0, 0x03, 0xE7, 0xC0, - 0x1F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xE0, 0x3E, - 0x0F, 0x80, 0xF8, 0x1E, 0x03, 0xE0, 0x7C, 0x1F, 0x01, 0xF0, 0x7C, 0x03, - 0xC1, 0xF0, 0x0F, 0x87, 0x80, 0x3E, 0x3E, 0x00, 0xF8, 0xF8, 0x01, 0xE3, - 0xC0, 0x07, 0xCF, 0x00, 0x1F, 0x7C, 0x00, 0x3D, 0xE0, 0x00, 0xFF, 0x80, - 0x03, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x07, 0xC0, 0x3F, 0xF8, 0x07, 0xE0, - 0x3E, 0xFC, 0x07, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, 0x3E, 0x7C, 0x0F, 0xE0, - 0x7E, 0x7C, 0x0F, 0xE0, 0x7C, 0x7C, 0x0F, 0xF0, 0x7C, 0x3E, 0x0F, 0xF0, - 0x7C, 0x3E, 0x1E, 0xF0, 0x78, 0x3E, 0x1E, 0x70, 0xF8, 0x1E, 0x1E, 0x70, - 0xF8, 0x1E, 0x1E, 0x78, 0xF8, 0x1F, 0x1E, 0x78, 0xF0, 0x1F, 0x3C, 0x78, - 0xF0, 0x0F, 0x3C, 0x39, 0xF0, 0x0F, 0x3C, 0x3D, 0xF0, 0x0F, 0x3C, 0x3D, - 0xE0, 0x0F, 0xBC, 0x3D, 0xE0, 0x07, 0xF8, 0x3D, 0xE0, 0x07, 0xF8, 0x1F, - 0xE0, 0x07, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, - 0xC0, 0x03, 0xF0, 0x0F, 0x80, 0x03, 0xF0, 0x0F, 0x80, 0x01, 0xF0, 0x0F, - 0x80, 0xFE, 0x01, 0xF9, 0xF8, 0x07, 0xE3, 0xF0, 0x3F, 0x0F, 0xC0, 0xF8, - 0x1F, 0x87, 0xE0, 0x7E, 0x3F, 0x00, 0xFC, 0xFC, 0x01, 0xF7, 0xE0, 0x07, - 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0xFC, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0x80, 0x03, 0xFF, 0x00, - 0x1F, 0x7E, 0x00, 0xFC, 0xF8, 0x03, 0xE3, 0xF0, 0x1F, 0x87, 0xC0, 0x7C, - 0x1F, 0x83, 0xF0, 0x3F, 0x1F, 0x80, 0xFC, 0x7E, 0x01, 0xFB, 0xF0, 0x07, - 0xF0, 0xFC, 0x01, 0xFF, 0xE0, 0x0F, 0x9F, 0x00, 0xFC, 0xFC, 0x07, 0xC3, - 0xE0, 0x7E, 0x1F, 0x83, 0xE0, 0x7C, 0x1F, 0x03, 0xF1, 0xF0, 0x0F, 0x8F, - 0x80, 0x7E, 0xF8, 0x01, 0xF7, 0xC0, 0x0F, 0xFC, 0x00, 0x3F, 0xE0, 0x00, - 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x7E, 0x00, 0x1F, - 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF8, - 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x00, - 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, - 0xFC, 0x00, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, - 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, - 0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x38, 0x06, - 0x01, 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, - 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, 0x03, 0x80, - 0x60, 0x18, 0x07, 0x01, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, - 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0xFF, 0xFF, - 0xFF, 0xFF, 0x03, 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, - 0x78, 0x1E, 0x78, 0x1E, 0x70, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xF0, 0xF0, 0xE0, 0xE0, 0x07, 0xF8, 0x07, - 0xFF, 0x83, 0xFF, 0xF1, 0xFF, 0xFE, 0x7C, 0x1F, 0xBE, 0x03, 0xE0, 0x00, - 0xF8, 0x01, 0xFE, 0x0F, 0xFF, 0x8F, 0xFF, 0xE7, 0xF8, 0xFB, 0xF0, 0x3E, - 0xF8, 0x0F, 0xBE, 0x07, 0xEF, 0xC3, 0xFB, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, - 0xFB, 0xF1, 0xF8, 0xFC, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE7, 0xE0, 0xFB, 0xFC, - 0x3F, 0xFF, 0xCF, 0xFF, 0xF3, 0xF8, 0x7E, 0xFC, 0x0F, 0xBF, 0x03, 0xFF, - 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xF0, - 0x3F, 0xFC, 0x0F, 0xBF, 0x87, 0xEF, 0xFF, 0xF3, 0xFF, 0xFC, 0xFB, 0xFC, - 0x3E, 0x7E, 0x00, 0x03, 0xF0, 0x07, 0xFE, 0x0F, 0xFF, 0x87, 0xFF, 0xE7, - 0xE1, 0xFB, 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0xFB, 0xE0, 0x7D, 0xF8, 0x7E, 0x7F, - 0xFE, 0x3F, 0xFE, 0x0F, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x1F, 0x0F, 0xFB, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xBF, 0x8F, - 0xF7, 0xC0, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, - 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFE, 0x03, 0xF7, 0xC0, 0x7E, 0xFC, 0x3F, - 0xCF, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, 0xFB, 0xE0, 0xFC, 0x7C, 0x07, 0xE0, - 0x07, 0xFE, 0x03, 0xFF, 0xE0, 0xFF, 0xF8, 0x7E, 0x1F, 0x1F, 0x03, 0xCF, - 0x80, 0xFB, 0xE0, 0x1E, 0xFF, 0xFF, 0xBF, 0xFF, 0xEF, 0xFF, 0xFB, 0xE0, - 0x00, 0xF8, 0x00, 0x3F, 0x03, 0xE7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, - 0x07, 0xFF, 0x00, 0x7F, 0x00, 0x0F, 0xC7, 0xF3, 0xFC, 0xFF, 0x3E, 0x0F, - 0x83, 0xE3, 0xFE, 0xFF, 0xBF, 0xE3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, - 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, - 0x0F, 0x80, 0x07, 0xC7, 0xC3, 0xFD, 0xF3, 0xFF, 0xFC, 0xFF, 0xFF, 0x7E, - 0x1F, 0xDF, 0x03, 0xFF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, 0xFE, 0x01, - 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xDF, 0x03, 0xF7, 0xE1, 0xFD, - 0xFF, 0xFF, 0x3F, 0xFF, 0xC7, 0xFD, 0xF0, 0x7C, 0x7C, 0x00, 0x1F, 0x00, - 0x07, 0xFF, 0x03, 0xF7, 0xE1, 0xF9, 0xFF, 0xFC, 0x3F, 0xFE, 0x01, 0xFE, - 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, - 0xC0, 0x03, 0xE0, 0x01, 0xF1, 0xF0, 0xFB, 0xFE, 0x7F, 0xFF, 0xBF, 0xFF, - 0xDF, 0xC3, 0xFF, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, - 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, - 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0x3E, 0x7C, 0xF9, 0xF0, 0x00, 0x00, 0x1F, 0x3E, 0x7C, 0xF9, - 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, - 0x7C, 0xF9, 0xF3, 0xFF, 0xFF, 0xFE, 0xF8, 0xF8, 0x00, 0x7C, 0x00, 0x3E, - 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x3E, - 0xF8, 0x3E, 0x7C, 0x3F, 0x3E, 0x3F, 0x1F, 0x3F, 0x0F, 0x9F, 0x07, 0xDF, - 0x03, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xF0, 0x7F, 0xF8, 0x3F, 0x7E, 0x1F, - 0x1F, 0x0F, 0x87, 0xC7, 0xC3, 0xF3, 0xE0, 0xF9, 0xF0, 0x7E, 0xF8, 0x1F, - 0x7C, 0x0F, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0xF8, 0x3F, 0x1F, - 0x7F, 0x9F, 0xF3, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xC3, 0xF8, - 0x7F, 0xF8, 0x3F, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, 0xF8, 0x1F, 0xF8, - 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xFC, 0x0F, 0x81, - 0xFF, 0x81, 0xF0, 0x3F, 0xF0, 0x3E, 0x07, 0xFE, 0x07, 0xC0, 0xFF, 0xC0, - 0xF8, 0x1F, 0xF8, 0x1F, 0x03, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, - 0x80, 0xF8, 0xF8, 0x7D, 0xFF, 0x3F, 0xFF, 0xDF, 0xFF, 0xEF, 0xE1, 0xFF, - 0xE0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, - 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, - 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xE0, 0x03, 0xF8, 0x01, 0xFF, 0xC0, 0x7F, - 0xFC, 0x1F, 0xFF, 0xC7, 0xF0, 0xFC, 0xF8, 0x0F, 0xBF, 0x01, 0xFF, 0xC0, - 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, - 0x7E, 0xF8, 0x0F, 0x9F, 0x87, 0xF1, 0xFF, 0xFC, 0x1F, 0xFF, 0x01, 0xFF, - 0xC0, 0x0F, 0xE0, 0x00, 0xF8, 0xF8, 0x3E, 0xFF, 0x8F, 0xFF, 0xF3, 0xFF, - 0xFC, 0xFE, 0x1F, 0xBF, 0x03, 0xEF, 0xC0, 0xFF, 0xE0, 0x1F, 0xF8, 0x07, - 0xFE, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xFC, 0x0F, 0xFF, 0x03, 0xEF, - 0xE1, 0xFB, 0xFF, 0xFC, 0xFF, 0xFF, 0x3E, 0xFF, 0x0F, 0x8F, 0x83, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0xE3, 0xE1, 0xFF, 0x7C, 0x7F, 0xFF, 0x9F, 0xFF, - 0xF7, 0xF1, 0xFE, 0xF8, 0x0F, 0xFF, 0x01, 0xFF, 0xC0, 0x1F, 0xF8, 0x03, - 0xFF, 0x00, 0x7F, 0xE0, 0x0F, 0xFC, 0x01, 0xFF, 0xC0, 0x7E, 0xF8, 0x0F, - 0xDF, 0x83, 0xF9, 0xFF, 0xFF, 0x3F, 0xFF, 0xE1, 0xFF, 0x7C, 0x1F, 0x8F, - 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0xF8, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xE1, - 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, - 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x00, 0x07, 0xF0, 0x0F, 0xFE, - 0x0F, 0xFF, 0x87, 0xFF, 0xE7, 0xE1, 0xF3, 0xE0, 0x79, 0xF8, 0x00, 0xFF, - 0x80, 0x3F, 0xFC, 0x1F, 0xFF, 0x83, 0xFF, 0xC0, 0x3F, 0xF0, 0x01, 0xFF, - 0xC0, 0x7D, 0xF0, 0x7E, 0xFF, 0xFE, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0xFE, - 0x00, 0x3E, 0x1F, 0x0F, 0x87, 0xC3, 0xE7, 0xFF, 0xFF, 0xFF, 0x3E, 0x1F, - 0x0F, 0x87, 0xC3, 0xE1, 0xF0, 0xF8, 0x7C, 0x3E, 0x1F, 0x0F, 0x87, 0xF3, - 0xF8, 0xFC, 0x3E, 0xF8, 0x0F, 0xFC, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, - 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x1F, 0xF8, 0x0F, 0xFC, 0x07, - 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0xFF, 0xF0, 0xFF, 0xFF, - 0xFF, 0x7F, 0xFF, 0x9F, 0xF7, 0xC7, 0xE3, 0xE0, 0x7C, 0x07, 0xCF, 0x80, - 0xF9, 0xF0, 0x1F, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0x83, - 0xC0, 0xF8, 0xF8, 0x1F, 0x1F, 0x01, 0xE3, 0xC0, 0x3E, 0x78, 0x07, 0xDF, - 0x00, 0x7B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x03, 0xF8, - 0x00, 0x7F, 0x00, 0x07, 0xC0, 0x00, 0xFC, 0x1F, 0x03, 0xEF, 0x83, 0xE0, - 0x7D, 0xF0, 0x7E, 0x1F, 0x3E, 0x0F, 0xC3, 0xE3, 0xC3, 0xF8, 0x7C, 0x7C, - 0x7F, 0x0F, 0x0F, 0x8F, 0xF3, 0xE1, 0xF1, 0xDE, 0x7C, 0x1E, 0x7B, 0xCF, - 0x83, 0xEF, 0x39, 0xE0, 0x7D, 0xE7, 0x3C, 0x07, 0xB8, 0xFF, 0x80, 0xF7, - 0x1F, 0xE0, 0x1F, 0xE3, 0xFC, 0x03, 0xFC, 0x3F, 0x80, 0x3F, 0x07, 0xF0, - 0x07, 0xE0, 0xFC, 0x00, 0xFC, 0x1F, 0x80, 0x0F, 0x83, 0xF0, 0x00, 0xFC, - 0x1F, 0x9F, 0x07, 0xE7, 0xE3, 0xF0, 0xF8, 0xF8, 0x1F, 0x7E, 0x07, 0xDF, - 0x00, 0xFF, 0x80, 0x1F, 0xE0, 0x07, 0xF0, 0x00, 0xF8, 0x00, 0x7F, 0x00, - 0x3F, 0xE0, 0x0F, 0xF8, 0x07, 0xDF, 0x03, 0xF7, 0xE0, 0xF8, 0xF8, 0x7E, - 0x3F, 0x1F, 0x07, 0xEF, 0xC0, 0xF8, 0x7C, 0x03, 0xEF, 0x80, 0xF9, 0xF8, - 0x1F, 0x1F, 0x03, 0xE3, 0xE0, 0xF8, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, - 0x78, 0x0F, 0x1F, 0x01, 0xF3, 0xC0, 0x3E, 0x78, 0x03, 0xDF, 0x00, 0x7F, - 0xC0, 0x0F, 0xF8, 0x00, 0xFF, 0x00, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x07, 0xF8, - 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x03, 0xE0, 0x00, 0x7F, 0xFE, 0x7F, 0xFE, - 0x7F, 0xFE, 0x7F, 0xFE, 0x00, 0x7E, 0x00, 0xFC, 0x01, 0xF8, 0x03, 0xF0, - 0x03, 0xF0, 0x07, 0xE0, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, 0x7E, 0x00, - 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x87, - 0xC7, 0xE3, 0xF1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, - 0xE0, 0xF0, 0xF9, 0xF8, 0xF0, 0x7E, 0x0F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, - 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xFC, 0x7E, 0x1F, 0x07, 0x80, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0xF0, 0x7C, 0x3E, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, - 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x1F, 0x83, 0xC7, 0xE7, 0xC3, - 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC7, 0xE3, 0xE1, - 0xF0, 0xF0, 0x00, 0x3C, 0x00, 0xFE, 0x0F, 0xFE, 0x1E, 0x1F, 0xFC, 0x0F, - 0xC0, 0x0F, 0x00 }; - -const GFXglyph FreeSansBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 5, 25, 12, 4, -24 }, // 0x21 '!' - { 16, 13, 9, 17, 2, -25 }, // 0x22 '"' - { 31, 20, 24, 19, 0, -23 }, // 0x23 '#' - { 91, 19, 29, 19, 0, -25 }, // 0x24 '$' - { 160, 29, 25, 31, 1, -24 }, // 0x25 '%' - { 251, 22, 25, 25, 2, -24 }, // 0x26 '&' - { 320, 5, 9, 9, 2, -25 }, // 0x27 ''' - { 326, 9, 33, 12, 1, -25 }, // 0x28 '(' - { 364, 9, 33, 12, 1, -25 }, // 0x29 ')' - { 402, 12, 11, 14, 0, -25 }, // 0x2A '*' - { 419, 16, 16, 20, 2, -15 }, // 0x2B '+' - { 451, 5, 11, 9, 2, -4 }, // 0x2C ',' - { 458, 9, 4, 12, 1, -10 }, // 0x2D '-' - { 463, 5, 5, 9, 2, -4 }, // 0x2E '.' - { 467, 9, 25, 10, 0, -24 }, // 0x2F '/' - { 496, 17, 25, 19, 1, -24 }, // 0x30 '0' - { 550, 10, 25, 19, 3, -24 }, // 0x31 '1' - { 582, 17, 25, 19, 1, -24 }, // 0x32 '2' - { 636, 17, 25, 19, 1, -24 }, // 0x33 '3' - { 690, 16, 25, 19, 2, -24 }, // 0x34 '4' - { 740, 17, 25, 19, 1, -24 }, // 0x35 '5' - { 794, 18, 25, 19, 1, -24 }, // 0x36 '6' - { 851, 17, 25, 19, 1, -24 }, // 0x37 '7' - { 905, 17, 25, 19, 1, -24 }, // 0x38 '8' - { 959, 17, 25, 19, 1, -24 }, // 0x39 '9' - { 1013, 5, 18, 9, 2, -17 }, // 0x3A ':' - { 1025, 5, 24, 9, 2, -17 }, // 0x3B ';' - { 1040, 18, 17, 20, 1, -16 }, // 0x3C '<' - { 1079, 17, 12, 20, 2, -13 }, // 0x3D '=' - { 1105, 18, 17, 20, 1, -16 }, // 0x3E '>' - { 1144, 18, 26, 21, 2, -25 }, // 0x3F '?' - { 1203, 32, 31, 34, 1, -25 }, // 0x40 '@' - { 1327, 24, 26, 24, 0, -25 }, // 0x41 'A' - { 1405, 20, 26, 25, 3, -25 }, // 0x42 'B' - { 1470, 23, 26, 25, 1, -25 }, // 0x43 'C' - { 1545, 21, 26, 25, 3, -25 }, // 0x44 'D' - { 1614, 19, 26, 23, 3, -25 }, // 0x45 'E' - { 1676, 17, 26, 22, 3, -25 }, // 0x46 'F' - { 1732, 24, 26, 27, 1, -25 }, // 0x47 'G' - { 1810, 20, 26, 26, 3, -25 }, // 0x48 'H' - { 1875, 5, 26, 11, 3, -25 }, // 0x49 'I' - { 1892, 16, 26, 20, 1, -25 }, // 0x4A 'J' - { 1944, 22, 26, 25, 3, -25 }, // 0x4B 'K' - { 2016, 17, 26, 22, 3, -25 }, // 0x4C 'L' - { 2072, 24, 26, 30, 3, -25 }, // 0x4D 'M' - { 2150, 20, 26, 26, 3, -25 }, // 0x4E 'N' - { 2215, 25, 26, 27, 1, -25 }, // 0x4F 'O' - { 2297, 19, 26, 24, 3, -25 }, // 0x50 'P' - { 2359, 25, 27, 27, 1, -25 }, // 0x51 'Q' - { 2444, 21, 26, 25, 3, -25 }, // 0x52 'R' - { 2513, 20, 26, 24, 2, -25 }, // 0x53 'S' - { 2578, 19, 26, 23, 2, -25 }, // 0x54 'T' - { 2640, 20, 26, 26, 3, -25 }, // 0x55 'U' - { 2705, 22, 26, 23, 1, -25 }, // 0x56 'V' - { 2777, 32, 26, 34, 1, -25 }, // 0x57 'W' - { 2881, 22, 26, 24, 1, -25 }, // 0x58 'X' - { 2953, 21, 26, 22, 1, -25 }, // 0x59 'Y' - { 3022, 19, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3084, 8, 33, 12, 2, -25 }, // 0x5B '[' - { 3117, 10, 25, 10, 0, -24 }, // 0x5C '\' - { 3149, 8, 33, 12, 1, -25 }, // 0x5D ']' - { 3182, 16, 15, 20, 2, -23 }, // 0x5E '^' - { 3212, 21, 3, 19, -1, 5 }, // 0x5F '_' - { 3220, 7, 5, 9, 1, -25 }, // 0x60 '`' - { 3225, 18, 19, 20, 1, -18 }, // 0x61 'a' - { 3268, 18, 26, 22, 2, -25 }, // 0x62 'b' - { 3327, 17, 19, 20, 1, -18 }, // 0x63 'c' - { 3368, 19, 26, 22, 1, -25 }, // 0x64 'd' - { 3430, 18, 19, 20, 1, -18 }, // 0x65 'e' - { 3473, 10, 26, 12, 1, -25 }, // 0x66 'f' - { 3506, 18, 26, 21, 1, -18 }, // 0x67 'g' - { 3565, 17, 26, 21, 2, -25 }, // 0x68 'h' - { 3621, 5, 26, 10, 2, -25 }, // 0x69 'i' - { 3638, 7, 33, 10, 0, -25 }, // 0x6A 'j' - { 3667, 17, 26, 20, 2, -25 }, // 0x6B 'k' - { 3723, 5, 26, 9, 2, -25 }, // 0x6C 'l' - { 3740, 27, 19, 31, 2, -18 }, // 0x6D 'm' - { 3805, 17, 19, 21, 2, -18 }, // 0x6E 'n' - { 3846, 19, 19, 21, 1, -18 }, // 0x6F 'o' - { 3892, 18, 26, 22, 2, -18 }, // 0x70 'p' - { 3951, 19, 26, 22, 1, -18 }, // 0x71 'q' - { 4013, 11, 19, 14, 2, -18 }, // 0x72 'r' - { 4040, 17, 19, 19, 1, -18 }, // 0x73 's' - { 4081, 9, 23, 12, 1, -22 }, // 0x74 't' - { 4107, 17, 19, 21, 2, -18 }, // 0x75 'u' - { 4148, 19, 19, 19, 0, -18 }, // 0x76 'v' - { 4194, 27, 19, 27, 0, -18 }, // 0x77 'w' - { 4259, 18, 19, 19, 1, -18 }, // 0x78 'x' - { 4302, 19, 26, 19, 0, -18 }, // 0x79 'y' - { 4364, 16, 19, 18, 1, -18 }, // 0x7A 'z' - { 4402, 9, 33, 14, 1, -25 }, // 0x7B '{' - { 4440, 3, 33, 10, 4, -25 }, // 0x7C '|' - { 4453, 9, 33, 14, 3, -25 }, // 0x7D '}' - { 4491, 15, 6, 18, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSansBold18pt7b PROGMEM = { - (uint8_t *)FreeSansBold18pt7bBitmaps, - (GFXglyph *)FreeSansBold18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5175 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h deleted file mode 100644 index aadc9a1dc..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h +++ /dev/null @@ -1,784 +0,0 @@ -const uint8_t FreeSansBold24pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xDF, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xC7, 0x0E, 0x1C, 0x00, 0x00, 0x07, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, - 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x87, 0xFF, 0xE1, 0xFD, 0xF0, 0x3E, - 0x7C, 0x0F, 0x9F, 0x03, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x00, 0xF8, 0x3E, - 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, - 0x7C, 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC1, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, - 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x1F, 0x00, 0x1F, 0x07, - 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, 0x00, 0x7C, 0x1F, 0x03, 0xFF, - 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xFC, 0x0F, 0x87, 0xC0, 0x07, 0xC1, 0xF0, 0x01, 0xF0, 0x7C, - 0x00, 0x7C, 0x1F, 0x00, 0x1F, 0x07, 0xC0, 0x07, 0xC3, 0xE0, 0x03, 0xE0, - 0xF8, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0x73, 0xFE, 0x7F, 0x38, - 0xFF, 0x3F, 0x1C, 0x3F, 0xDF, 0x8E, 0x0F, 0xEF, 0xC7, 0x07, 0xF7, 0xE3, - 0x80, 0x03, 0xF9, 0xC0, 0x01, 0xFE, 0xE0, 0x00, 0x7F, 0xF0, 0x00, 0x3F, - 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x80, - 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xE7, 0xFC, 0x00, 0x71, 0xFF, - 0x00, 0x38, 0x7F, 0xFF, 0x1C, 0x1F, 0xFF, 0x8E, 0x0F, 0xFF, 0xC7, 0x07, - 0xFF, 0xE3, 0x87, 0xFB, 0xF9, 0xC3, 0xF9, 0xFE, 0xE7, 0xFC, 0x7F, 0xFF, - 0xFC, 0x3F, 0xFF, 0xFC, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x00, 0x3F, - 0xE0, 0x00, 0x03, 0x80, 0x00, 0x01, 0xC0, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0x70, 0x00, 0x03, 0xE0, 0x00, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x78, 0x00, - 0x7F, 0xF8, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0x03, 0xC0, 0x07, 0xFF, 0xF0, - 0x0F, 0x00, 0x0F, 0x83, 0xE0, 0x1E, 0x00, 0x3E, 0x03, 0xE0, 0x78, 0x00, - 0x78, 0x03, 0xC0, 0xF0, 0x00, 0xF0, 0x07, 0x83, 0xC0, 0x01, 0xE0, 0x0F, - 0x07, 0x80, 0x03, 0xE0, 0x3E, 0x1E, 0x00, 0x03, 0xE0, 0xF8, 0x3C, 0x00, - 0x07, 0xFF, 0xF0, 0xF0, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x07, 0xFF, - 0x07, 0x80, 0x00, 0x07, 0xFC, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0xFF, 0x80, 0x00, - 0x07, 0x87, 0xFF, 0xC0, 0x00, 0x0F, 0x0F, 0xFF, 0x80, 0x00, 0x3C, 0x3F, - 0xFF, 0x80, 0x00, 0x78, 0xFC, 0x1F, 0x00, 0x01, 0xE1, 0xF0, 0x1F, 0x00, - 0x03, 0xC3, 0xC0, 0x1E, 0x00, 0x0F, 0x07, 0x80, 0x3C, 0x00, 0x1E, 0x0F, - 0x00, 0x78, 0x00, 0x78, 0x1F, 0x01, 0xF0, 0x00, 0xF0, 0x1F, 0x07, 0xC0, - 0x03, 0xC0, 0x3F, 0xFF, 0x80, 0x07, 0x80, 0x3F, 0xFE, 0x00, 0x1E, 0x00, - 0x7F, 0xF8, 0x00, 0x7C, 0x00, 0x3F, 0xE0, 0x00, 0xF0, 0x00, 0x1F, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xCF, 0xC0, 0x00, 0xFE, - 0x1F, 0x00, 0x03, 0xF8, 0x7C, 0x00, 0x0F, 0xE1, 0xF0, 0x00, 0x3F, 0xC7, - 0xC0, 0x00, 0x7F, 0x3E, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xC0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x07, 0xFF, 0x03, 0xE0, 0x3F, 0xFE, 0x0F, 0x83, 0xFF, 0xF8, 0x3E, 0x1F, - 0xF3, 0xF1, 0xF8, 0x7F, 0x07, 0xE7, 0xE3, 0xFC, 0x1F, 0xFF, 0x0F, 0xE0, - 0x3F, 0xFC, 0x3F, 0x80, 0x7F, 0xF0, 0xFE, 0x01, 0xFF, 0x83, 0xF8, 0x03, - 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0x3F, 0xE0, 0x7F, 0xE0, 0x7F, 0xC3, 0xFF, - 0xC1, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFB, 0xFC, - 0x0F, 0xFF, 0xC7, 0xF8, 0x1F, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBE, 0x7C, 0xF8, 0xE1, 0xC0, 0x00, - 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, - 0x1F, 0x80, 0xF8, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, - 0xC0, 0xFC, 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, - 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0x3F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0x01, - 0xF8, 0x07, 0xC0, 0x3F, 0x01, 0xF8, 0x07, 0xC0, 0x3F, 0x00, 0xF8, 0x07, - 0xE0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x1F, 0x00, 0x7C, 0x01, 0xE0, 0x78, - 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, - 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, - 0x7E, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, - 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, 0x01, 0xF8, - 0x0F, 0xC0, 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x1F, 0x80, 0xF8, 0x0F, - 0xC0, 0x7C, 0x07, 0xE0, 0x3E, 0x03, 0xF0, 0x1F, 0x01, 0xF0, 0x00, 0x03, - 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x06, 0x38, 0xDF, 0xFF, 0xFF, 0xFF, - 0x9F, 0xFE, 0x07, 0xC0, 0x1F, 0xC0, 0x3F, 0x80, 0xF7, 0x83, 0xC7, 0x87, - 0x8F, 0x02, 0x08, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, - 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x87, 0x0E, 0x1C, 0x78, 0xEF, 0xDF, 0x38, 0x00, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x38, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, - 0xE0, 0x07, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x01, 0xE0, 0x0E, 0x00, 0x70, - 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x00, 0x00, - 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x1F, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFE, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x81, 0xFE, 0x3F, - 0xC3, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x0F, - 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0x3C, 0x01, 0xF0, - 0x07, 0xC0, 0x3F, 0x01, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, - 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, - 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x01, 0xFE, 0x00, 0x0F, 0xFF, 0x80, - 0x3F, 0xFF, 0x80, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x9F, - 0xE0, 0xFF, 0x7F, 0x80, 0xFF, 0xFE, 0x01, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, - 0x03, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x7F, - 0xC0, 0x01, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, - 0xFC, 0x00, 0x03, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFC, 0x01, 0xFE, 0x00, 0x0F, - 0xFF, 0x80, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0x8F, 0xFF, - 0xFF, 0x1F, 0xE1, 0xFF, 0x7F, 0x81, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, 0x03, - 0xFB, 0xF8, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7F, - 0x00, 0x01, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0xC0, - 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, - 0x07, 0xFF, 0xF8, 0x0F, 0xF7, 0xF8, 0x3F, 0xCF, 0xFF, 0xFF, 0x9F, 0xFF, - 0xFE, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x07, 0xF8, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF8, - 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x7B, 0xF8, 0x01, - 0xEF, 0xE0, 0x0F, 0x3F, 0x80, 0x78, 0xFE, 0x01, 0xE3, 0xF8, 0x0F, 0x0F, - 0xE0, 0x38, 0x3F, 0x81, 0xE0, 0xFE, 0x07, 0x03, 0xF8, 0x3C, 0x0F, 0xE1, - 0xE0, 0x3F, 0x87, 0x00, 0xFE, 0x3C, 0x03, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, - 0x00, 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, 0xFC, 0x3F, - 0xFF, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0x8F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xF1, 0xF8, 0x03, 0xEF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, - 0x1F, 0xFF, 0xFE, 0x7F, 0xFF, 0xFC, 0xFE, 0x07, 0xFC, 0x00, 0x07, 0xF8, - 0x00, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, - 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xF8, - 0x0F, 0xF7, 0xF8, 0x3F, 0xEF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0x0F, 0xFF, - 0xFC, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x00, 0xFF, - 0x00, 0x07, 0xFF, 0x80, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xFF, 0xFF, - 0x87, 0xFF, 0xFF, 0x8F, 0xF0, 0xFF, 0x3F, 0xC0, 0xFE, 0x7F, 0x00, 0x00, - 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE3, 0xF0, 0x1F, - 0xDF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0xFF, 0xFF, 0xF9, 0xFF, - 0x87, 0xFB, 0xFC, 0x07, 0xF7, 0xF8, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, - 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0x7E, 0x00, 0xFE, 0xFC, 0x01, - 0xFD, 0xFC, 0x07, 0xFB, 0xF8, 0x0F, 0xE3, 0xFC, 0x7F, 0xC7, 0xFF, 0xFF, - 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x07, 0xFF, 0x80, - 0x03, 0xF8, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x00, 0x3F, 0x00, - 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x7F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, - 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xF0, - 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x7F, 0x83, 0xFC, 0x7F, - 0x00, 0xFC, 0x7E, 0x00, 0xFC, 0x7E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7E, - 0x00, 0xFC, 0x3F, 0x00, 0xF8, 0x3F, 0x83, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, - 0xFF, 0xC0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, - 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, - 0x00, 0xFE, 0x7F, 0x83, 0xFE, 0x7F, 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, - 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xC3, 0xFC, 0x7F, 0x01, 0xFE, 0xFF, - 0x00, 0xFE, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0x7F, - 0x01, 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, - 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xFC, 0x7E, 0x00, - 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x01, 0xFC, 0x7F, - 0x83, 0xFC, 0x7F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF0, 0x1F, - 0xFF, 0xE0, 0x07, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFE, 0x1C, 0x38, 0x71, 0xE7, 0xBF, 0x7C, 0xE0, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xF0, 0x01, - 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0xFF, 0xFC, 0x0F, 0xFF, 0xC0, 0x7F, 0xFC, - 0x01, 0xFF, 0xC0, 0x03, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xE0, 0x00, - 0x1F, 0xF8, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, - 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x80, 0x00, - 0x01, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xFE, 0x00, - 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x7F, 0xFC, - 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xE0, - 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0xFF, 0xF8, 0x0F, 0xFF, 0x80, 0xFF, - 0xFC, 0x03, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x1E, 0x00, - 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xFF, 0xC0, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, - 0x83, 0xFE, 0x7F, 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFE, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x00, - 0x01, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, - 0x3F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x7F, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x00, 0x3F, 0xFF, 0xE0, - 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, - 0x03, 0xFE, 0x01, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x07, 0xF0, 0x00, - 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x3F, 0x00, 0x00, 0x00, - 0x3E, 0x0F, 0xC0, 0x07, 0xE3, 0xC3, 0xE1, 0xF0, 0x03, 0xFE, 0xF8, 0x3C, - 0x7E, 0x01, 0xFF, 0xFF, 0x07, 0x8F, 0x80, 0x7E, 0x1F, 0xC0, 0x7B, 0xF0, - 0x1F, 0x81, 0xF8, 0x0F, 0x7C, 0x03, 0xE0, 0x1F, 0x01, 0xEF, 0x80, 0xF8, - 0x03, 0xC0, 0x3F, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xFC, 0x07, 0xC0, 0x0F, - 0x00, 0xFF, 0x80, 0xF0, 0x01, 0xE0, 0x1F, 0xF0, 0x1E, 0x00, 0x38, 0x07, - 0xFE, 0x07, 0xC0, 0x0F, 0x00, 0xFF, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0xF8, - 0x1F, 0x00, 0x38, 0x07, 0xDF, 0x03, 0xE0, 0x0F, 0x00, 0xF3, 0xF0, 0x7C, - 0x03, 0xE0, 0x3E, 0x3E, 0x0F, 0xC0, 0xFC, 0x0F, 0x87, 0xC0, 0xFC, 0x3F, - 0xC7, 0xF0, 0xFC, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xC1, 0xFF, 0xEF, 0xFF, - 0x01, 0xFC, 0x1F, 0xF8, 0xFF, 0x80, 0x1F, 0xC0, 0xFC, 0x07, 0xC0, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, - 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x7F, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, - 0x0F, 0xF8, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0x1F, 0xFC, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, - 0x3F, 0xFE, 0x00, 0x00, 0x3F, 0x7E, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, - 0x7F, 0x7F, 0x00, 0x00, 0x7E, 0x3F, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x00, - 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x1F, 0x80, 0x01, 0xFC, 0x1F, 0xC0, 0x01, - 0xF8, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, 0xF8, 0x0F, 0xE0, 0x03, - 0xF0, 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF0, 0x07, 0xFF, 0xFF, 0xF0, 0x07, - 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x1F, - 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, - 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x00, 0xFE, 0x3F, 0x80, 0x00, 0xFE, 0x7F, - 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, - 0x8F, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0x3F, 0x80, 0x1F, 0xF7, 0xF0, - 0x01, 0xFE, 0xFE, 0x00, 0x1F, 0xDF, 0xC0, 0x03, 0xFB, 0xF8, 0x00, 0x7F, - 0x7F, 0x00, 0x1F, 0xCF, 0xE0, 0x07, 0xF9, 0xFF, 0xFF, 0xFE, 0x3F, 0xFF, - 0xFF, 0x87, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x1F, 0xFF, 0xFF, 0xE3, - 0xFF, 0xFF, 0xFE, 0x7F, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, - 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, - 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x1F, 0xEF, 0xFF, 0xFF, - 0xFD, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFC, 0x1F, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0xC1, 0xFF, 0x81, 0xFF, 0x0F, 0xF8, 0x01, 0xFE, - 0x3F, 0xC0, 0x07, 0xF9, 0xFE, 0x00, 0x0F, 0xE7, 0xF8, 0x00, 0x1F, 0xDF, - 0xC0, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0x7F, 0x00, 0x01, 0xFD, 0xFC, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, - 0xF0, 0x00, 0xFE, 0x3F, 0xE0, 0x07, 0xF8, 0x7F, 0xE0, 0x7F, 0xC0, 0xFF, - 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x07, 0xFF, - 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, - 0x0F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFC, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0xFE, 0x00, 0xFF, 0xCF, 0xE0, 0x03, - 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, - 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, - 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, - 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x1F, - 0xEF, 0xE0, 0x01, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x0F, 0xFC, 0xFF, - 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF7, - 0xFF, 0xFF, 0xFB, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFE, 0x7F, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x9F, 0xC0, 0x00, 0x0F, 0xE0, - 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFC, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xFF, - 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, - 0x07, 0xFE, 0x03, 0xFF, 0x0F, 0xF0, 0x01, 0xFE, 0x3F, 0xC0, 0x01, 0xFC, - 0x7F, 0x00, 0x01, 0xFD, 0xFE, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x00, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xF8, - 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xC0, - 0x07, 0xFF, 0xFF, 0xC0, 0x00, 0x1F, 0xBF, 0x80, 0x00, 0x3F, 0x7F, 0x00, - 0x00, 0x7E, 0xFF, 0x00, 0x01, 0xFC, 0xFF, 0x00, 0x03, 0xF9, 0xFF, 0x00, - 0x0F, 0xF1, 0xFF, 0x00, 0x3F, 0xE3, 0xFF, 0x83, 0xFF, 0xC3, 0xFF, 0xFF, - 0xFF, 0x83, 0xFF, 0xFF, 0xDF, 0x03, 0xFF, 0xFF, 0x9E, 0x03, 0xFF, 0xFE, - 0x3C, 0x01, 0xFF, 0xF0, 0x78, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x0F, - 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, - 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, - 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, - 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, - 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, - 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, - 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, - 0xFF, 0xC0, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x01, - 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, - 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, - 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, - 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0xE0, - 0x1F, 0xFF, 0x80, 0x7F, 0xFE, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xE0, 0x1F, - 0xFF, 0xC0, 0xFF, 0xFF, 0x87, 0xFD, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFC, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0xFE, - 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x7F, 0x8F, 0xE0, 0x03, 0xFC, 0x3F, 0x80, - 0x1F, 0xE0, 0xFE, 0x00, 0xFF, 0x83, 0xF8, 0x07, 0xFC, 0x0F, 0xE0, 0x1F, - 0xE0, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x07, 0xF8, 0x03, 0xF8, 0x3F, 0xC0, - 0x0F, 0xE1, 0xFE, 0x00, 0x3F, 0x8F, 0xF0, 0x00, 0xFE, 0x7F, 0x80, 0x03, - 0xFB, 0xFC, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0xFF, - 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x3F, 0xF7, - 0xF8, 0x00, 0xFF, 0x8F, 0xF0, 0x03, 0xFC, 0x3F, 0xC0, 0x0F, 0xE0, 0x7F, - 0x80, 0x3F, 0x80, 0xFF, 0x00, 0xFE, 0x01, 0xFE, 0x03, 0xF8, 0x07, 0xFC, - 0x0F, 0xE0, 0x0F, 0xF0, 0x3F, 0x80, 0x1F, 0xE0, 0xFE, 0x00, 0x3F, 0xC3, - 0xF8, 0x00, 0xFF, 0x8F, 0xE0, 0x01, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0xFE, - 0x00, 0x07, 0xFB, 0xF8, 0x00, 0x1F, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, - 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, - 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, - 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, - 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, - 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFF, 0xE0, 0x03, - 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, - 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xFC, - 0x07, 0xFF, 0xFF, 0xBE, 0x03, 0xEF, 0xFF, 0xDF, 0x01, 0xF7, 0xFF, 0xEF, - 0x80, 0xFB, 0xFF, 0xF7, 0xC0, 0xFD, 0xFF, 0xFB, 0xF0, 0x7C, 0xFF, 0xFC, - 0xF8, 0x3E, 0x7F, 0xFE, 0x7C, 0x1F, 0x3F, 0xFF, 0x3E, 0x0F, 0x9F, 0xFF, - 0x9F, 0x8F, 0x8F, 0xFF, 0xC7, 0xC7, 0xC7, 0xFF, 0xE3, 0xE3, 0xE3, 0xFF, - 0xF1, 0xF1, 0xF1, 0xFF, 0xF8, 0xFC, 0xF8, 0xFF, 0xFC, 0x3E, 0xF8, 0x7F, - 0xFE, 0x1F, 0x7C, 0x3F, 0xFF, 0x0F, 0xBE, 0x1F, 0xFF, 0x87, 0xDF, 0x0F, - 0xFF, 0xC3, 0xFF, 0x07, 0xFF, 0xE0, 0xFF, 0x83, 0xFF, 0xF0, 0x7F, 0xC1, - 0xFF, 0xF8, 0x3F, 0xE0, 0xFF, 0xFC, 0x1F, 0xF0, 0x7F, 0xFE, 0x07, 0xF0, - 0x3F, 0xFF, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, - 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0xC0, 0x07, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xF0, - 0x07, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xEF, 0xC0, 0x7F, - 0xFE, 0xFE, 0x07, 0xFF, 0xE7, 0xE0, 0x7F, 0xFE, 0x7F, 0x07, 0xFF, 0xE3, - 0xF0, 0x7F, 0xFE, 0x1F, 0x87, 0xFF, 0xE1, 0xFC, 0x7F, 0xFE, 0x0F, 0xC7, - 0xFF, 0xE0, 0xFE, 0x7F, 0xFE, 0x07, 0xE7, 0xFF, 0xE0, 0x3F, 0x7F, 0xFE, - 0x03, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xE0, 0x0F, - 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, - 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, - 0x0F, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, - 0x80, 0x00, 0x7F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, - 0x0F, 0xF8, 0x3F, 0xC0, 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, - 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, - 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, - 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, - 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, - 0xFC, 0x00, 0x01, 0xFE, 0xFE, 0x00, 0x00, 0xFE, 0x7F, 0x00, 0x00, 0x7F, - 0x3F, 0xC0, 0x00, 0x7F, 0x8F, 0xE0, 0x00, 0x3F, 0x87, 0xF8, 0x00, 0x3F, - 0xC1, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, - 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0xFF, - 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xEF, 0xE0, 0x0F, 0xFB, 0xF8, 0x00, 0xFF, - 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xF8, 0x00, - 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF8, - 0x03, 0xFE, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xF3, - 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, - 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x7F, 0xFF, - 0xE0, 0x00, 0x7F, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, - 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x3F, 0xC0, - 0x01, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, - 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xF8, - 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, 0xFF, - 0x00, 0x00, 0x1F, 0xFF, 0x80, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x01, 0xFF, 0xFC, 0x00, 0x21, 0xFE, - 0xFE, 0x00, 0x38, 0xFE, 0x7F, 0x00, 0x3E, 0x7F, 0x3F, 0xC0, 0x3F, 0xFF, - 0x8F, 0xE0, 0x0F, 0xFF, 0x87, 0xF8, 0x03, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, - 0xC0, 0xFF, 0xC0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, - 0xCF, 0xC0, 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x8F, 0xFF, 0xFF, 0xF8, - 0xFF, 0xFF, 0xFF, 0xCF, 0xFF, 0xFF, 0xFC, 0xFE, 0x00, 0x3F, 0xEF, 0xE0, - 0x01, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, - 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0xFC, 0xFE, - 0x00, 0x3F, 0xCF, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x8F, - 0xE0, 0x07, 0xF8, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, - 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, - 0xFE, 0x00, 0x1F, 0xCF, 0xE0, 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xCF, 0xE0, - 0x01, 0xFC, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xC0, - 0x00, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xFC, 0x7F, 0xC0, 0xFF, 0xCF, 0xF0, 0x03, - 0xFE, 0xFE, 0x00, 0x1F, 0xEF, 0xE0, 0x00, 0xFE, 0xFE, 0x00, 0x0F, 0xEF, - 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xFC, - 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xF0, - 0x07, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, - 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, - 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, - 0x00, 0x0F, 0xE7, 0xFC, 0x03, 0xFE, 0x7F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFC, 0x00, - 0x07, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, - 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, - 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, 0x00, 0x3F, 0xFF, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x80, 0x03, - 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, - 0x00, 0x3F, 0xFF, 0x00, 0x07, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, 0x1F, - 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0xC0, - 0x01, 0xFF, 0xFC, 0x00, 0x7F, 0xBF, 0xC0, 0x1F, 0xE7, 0xFC, 0x07, 0xFC, - 0x7F, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, - 0xFE, 0x00, 0x7F, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, 0xFE, 0x00, 0x0F, 0xE7, - 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x03, 0xF0, 0xFE, 0x00, 0x3F, 0x87, 0xF0, - 0x01, 0xFC, 0x1F, 0xC0, 0x0F, 0xC0, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x07, - 0xF0, 0x1F, 0x80, 0x3F, 0x00, 0xFE, 0x03, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, - 0x1F, 0x80, 0xFC, 0x00, 0xFE, 0x07, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x1F, - 0x83, 0xF0, 0x00, 0xFE, 0x1F, 0x80, 0x03, 0xF1, 0xF8, 0x00, 0x1F, 0x8F, - 0xC0, 0x00, 0xFC, 0x7E, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x1F, 0xBF, 0x00, - 0x00, 0xFD, 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, - 0xFF, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFF, - 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0xFF, 0xE0, 0x07, 0xF0, 0x03, 0xFD, - 0xFC, 0x01, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xE0, 0x0F, 0xE7, 0xF0, - 0x07, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0xFF, 0x80, 0x7F, 0x8F, 0xE0, 0x1F, - 0xF0, 0x0F, 0xE1, 0xFC, 0x07, 0xFF, 0x01, 0xFC, 0x3F, 0x80, 0xFB, 0xE0, - 0x3F, 0x83, 0xF0, 0x1F, 0x7C, 0x07, 0xE0, 0x7F, 0x03, 0xEF, 0x81, 0xFC, - 0x0F, 0xE0, 0x7D, 0xF0, 0x3F, 0x80, 0xFC, 0x1F, 0x9F, 0x07, 0xF0, 0x1F, - 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0x7C, 0x7C, 0x1F, 0x80, 0x7F, 0x0F, - 0x8F, 0x87, 0xF0, 0x07, 0xE1, 0xF0, 0xF8, 0xFC, 0x00, 0xFC, 0x7E, 0x1F, - 0x1F, 0x80, 0x1F, 0x8F, 0x83, 0xE3, 0xF0, 0x01, 0xF9, 0xF0, 0x7C, 0x7E, - 0x00, 0x3F, 0x3E, 0x0F, 0x9F, 0x80, 0x07, 0xE7, 0xC0, 0xFB, 0xF0, 0x00, - 0xFD, 0xF0, 0x1F, 0x7E, 0x00, 0x0F, 0xBE, 0x03, 0xEF, 0xC0, 0x01, 0xFF, - 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, 0xFE, 0x00, 0x03, 0xFF, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x00, 0x0F, 0xF8, 0x03, 0xFE, - 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, - 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0x07, - 0xE0, 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x07, 0xF9, 0xFF, 0x00, 0x3F, 0xC3, - 0xFC, 0x00, 0xFF, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x1F, 0xC0, 0x3F, - 0xC0, 0xFF, 0x00, 0xFF, 0x07, 0xF8, 0x01, 0xFE, 0x1F, 0xE0, 0x03, 0xF8, - 0xFF, 0x00, 0x0F, 0xF3, 0xF8, 0x00, 0x1F, 0xDF, 0xE0, 0x00, 0x3F, 0xFF, - 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFF, 0x00, - 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x7F, 0xF8, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x7F, 0x7F, 0x80, 0x03, 0xF8, - 0xFF, 0x00, 0x1F, 0xE1, 0xFC, 0x00, 0x7F, 0x07, 0xF8, 0x03, 0xFC, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0x7F, 0x83, 0xFC, 0x01, 0xFE, - 0x0F, 0xF0, 0x03, 0xFC, 0x7F, 0x80, 0x0F, 0xFB, 0xFE, 0x00, 0x1F, 0xE0, - 0xFF, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x7F, 0x9F, 0xE0, 0x03, 0xFC, 0xFF, - 0x00, 0x3F, 0xC3, 0xFC, 0x01, 0xFE, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, - 0xFF, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x7F, 0x80, 0x3F, 0x83, 0xF8, - 0x01, 0xFC, 0x3F, 0xC0, 0x07, 0xF1, 0xFC, 0x00, 0x3F, 0x8F, 0xE0, 0x00, - 0xFE, 0xFE, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, - 0xF8, 0x00, 0x03, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, - 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xC0, 0x00, - 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFE, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, - 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, - 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, - 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, - 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0xE0, 0x03, 0xC0, 0x07, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, - 0x00, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, - 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, - 0x03, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, - 0xFE, 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, - 0x1F, 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, - 0xC3, 0xF8, 0x7F, 0x0F, 0xE1, 0xFC, 0x3F, 0x87, 0xF0, 0xFE, 0x1F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xF0, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, - 0x7D, 0xF0, 0x01, 0xF7, 0xC0, 0x0F, 0xDF, 0x80, 0x3E, 0x3E, 0x00, 0xF8, - 0xFC, 0x07, 0xE1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x1F, 0x83, 0xE0, 0x3E, - 0x0F, 0x80, 0xFC, 0x7E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, 0xC0, 0x1F, 0xBE, - 0x00, 0x3E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3E, 0x0F, 0x83, 0xC0, 0xF0, 0x38, 0x1E, - 0x01, 0xFF, 0x00, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, - 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x7F, 0x03, 0xFC, 0x7E, 0x01, 0xFC, - 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xFC, - 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, 0xC1, 0xFC, 0xFF, 0x01, 0xFC, - 0xFE, 0x01, 0xFC, 0xFE, 0x03, 0xFC, 0xFE, 0x03, 0xFC, 0xFF, 0x07, 0xFC, - 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x7F, 0xFF, 0xFC, 0x3F, 0xFD, 0xFE, - 0x1F, 0xF0, 0xFF, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, - 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x0F, - 0xC0, 0x3F, 0x9F, 0xF8, 0x1F, 0xDF, 0xFF, 0x0F, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0xE3, 0xFF, 0xFF, 0xF9, 0xFF, 0x83, 0xFE, 0xFF, 0x80, 0xFF, 0x7F, - 0x80, 0x3F, 0xBF, 0xC0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, - 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x3F, - 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xDF, 0xF0, 0x1F, 0xEF, 0xFC, 0x1F, - 0xF7, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF1, 0xFF, 0xFF, 0xF8, 0xFE, 0xFF, - 0xF8, 0x7F, 0x3F, 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x07, - 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0x9F, 0xF0, 0x7F, 0xBF, 0xC0, 0x7F, 0x7F, 0x00, 0x7F, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0xFD, - 0xFE, 0x03, 0xFB, 0xFE, 0x0F, 0xF3, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, - 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, - 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0xFF, 0xCF, 0xE1, 0xFF, 0xF7, - 0xF1, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0x83, - 0xFF, 0x7F, 0x80, 0xFF, 0xBF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, - 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, - 0x00, 0x7F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xDF, 0xC0, 0x1F, 0xEF, - 0xF0, 0x1F, 0xF7, 0xFC, 0x1F, 0xF9, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFE, - 0x3F, 0xFF, 0xFF, 0x0F, 0xFF, 0xBF, 0x81, 0xFF, 0x9F, 0xC0, 0x3F, 0x00, - 0x00, 0x00, 0xFE, 0x00, 0x03, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, - 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xC3, 0xF8, 0x7F, 0x80, 0xFC, 0x7F, 0x00, - 0xFC, 0x7F, 0x00, 0x7C, 0xFE, 0x00, 0x7E, 0xFE, 0x00, 0x7E, 0xFF, 0xFF, - 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFE, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x7F, 0x00, - 0xFE, 0x3F, 0xC1, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, - 0xF0, 0x03, 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x01, 0xFC, 0x1F, 0xF0, 0xFF, - 0xC3, 0xFF, 0x1F, 0xFC, 0x7F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, - 0x0F, 0xFF, 0xBF, 0xFE, 0xFF, 0xFB, 0xFF, 0xE1, 0xFC, 0x07, 0xF0, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, - 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, - 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x00, 0x00, 0xF8, 0x7F, 0x07, 0xFE, - 0x7F, 0x0F, 0xFF, 0x7F, 0x1F, 0xFF, 0x7F, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x7F, 0xC3, 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, - 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFF, 0x00, - 0xFF, 0x7F, 0x81, 0xFF, 0x7F, 0xC3, 0xFF, 0x3F, 0xFF, 0xFF, 0x3F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFF, 0x0F, 0xFF, 0x7F, 0x07, 0xFE, 0x7F, 0x01, 0xF8, - 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x7F, 0x00, - 0xFF, 0x7F, 0x01, 0xFE, 0x7F, 0xC3, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, - 0xF8, 0x0F, 0xFF, 0xE0, 0x01, 0xFF, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x3F, 0x83, - 0xF8, 0xFF, 0xC7, 0xF7, 0xFF, 0xCF, 0xEF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0x01, 0xFF, 0xFE, 0x01, 0xFF, 0xF8, - 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, - 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, - 0xFF, 0xF0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, - 0xFF, 0x00, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFC, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF0, 0x00, - 0x00, 0x00, 0x07, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, - 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, - 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, 0x1F, 0xC7, 0xF1, 0xFC, 0x7F, - 0x1F, 0xC7, 0xF1, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFE, 0xFE, 0x00, - 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, - 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, 0x00, 0xFE, - 0x00, 0x01, 0xFC, 0x03, 0xFB, 0xF8, 0x0F, 0xE7, 0xF0, 0x3F, 0xCF, 0xE0, - 0xFF, 0x1F, 0xC3, 0xFC, 0x3F, 0x87, 0xF0, 0x7F, 0x1F, 0xC0, 0xFE, 0x7F, - 0x01, 0xFD, 0xFC, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xE0, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xE0, 0x7F, 0xDF, 0xC0, 0xFF, 0x3F, 0xC1, - 0xFC, 0x3F, 0x83, 0xF8, 0x3F, 0x87, 0xF0, 0x7F, 0x8F, 0xE0, 0x7F, 0x1F, - 0xC0, 0xFF, 0x3F, 0x80, 0xFE, 0x7F, 0x01, 0xFE, 0xFE, 0x01, 0xFD, 0xFC, - 0x03, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFE, 0x1F, 0x80, 0x7E, - 0x0F, 0xE7, 0xFE, 0x1F, 0xF8, 0xFE, 0xFF, 0xF3, 0xFF, 0xCF, 0xFF, 0xFF, - 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x83, 0xFF, 0x0F, 0xFF, 0xF0, 0x1F, 0xE0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, - 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, - 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, - 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, - 0x01, 0xFC, 0x07, 0xFF, 0xE0, 0x1F, 0xC0, 0x7F, 0xFE, 0x01, 0xFC, 0x07, - 0xF0, 0xFE, 0x1F, 0xC1, 0xFC, 0xFF, 0xE3, 0xFB, 0xFF, 0xE7, 0xFF, 0xFF, - 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0xFF, - 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, - 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, - 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xE0, - 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, 0xFE, 0x00, - 0xFE, 0x00, 0x7F, 0x80, 0x01, 0xFF, 0xF0, 0x01, 0xFF, 0xFE, 0x01, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF1, 0xFF, 0x07, 0xFC, 0xFF, - 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, - 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, - 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, - 0xCF, 0xF8, 0x3F, 0xE3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, - 0xF0, 0x0F, 0xFF, 0xF0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0xFE, - 0x1F, 0x80, 0x7F, 0x3F, 0xF0, 0x3F, 0xBF, 0xFE, 0x1F, 0xDF, 0xFF, 0x8F, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF3, 0xFF, 0x07, 0xFD, 0xFF, 0x01, 0xFE, - 0xFF, 0x00, 0x7F, 0x7F, 0x80, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x07, - 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xBF, 0xE0, 0x3F, 0xDF, 0xF8, - 0x3F, 0xCF, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xE3, 0xFB, 0xFF, 0xE1, 0xFD, - 0xFF, 0xF0, 0xFE, 0x7F, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x3F, 0x81, 0xFF, 0x9F, 0xC3, 0xFF, - 0xEF, 0xE1, 0xFF, 0xF7, 0xF1, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFD, 0xFF, - 0x07, 0xFE, 0xFF, 0x01, 0xFF, 0x7F, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, - 0x80, 0x0F, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x01, 0xFF, - 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xBF, 0x80, 0x3F, - 0xDF, 0xE0, 0x3F, 0xEF, 0xF8, 0x3F, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, - 0xFC, 0x7F, 0xFE, 0xFE, 0x1F, 0xFF, 0x7F, 0x03, 0xFF, 0x3F, 0x80, 0x7E, - 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0xFE, 0x1F, 0xFC, - 0x7F, 0xFB, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x7F, 0x80, - 0xFF, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, 0x3F, - 0x80, 0x7F, 0x00, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, - 0x1F, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x07, - 0xFF, 0xE0, 0x0F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x7F, - 0x81, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0x00, 0xFE, 0x7F, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x07, - 0xFF, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0x00, - 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x81, 0xFE, 0x7F, - 0xFF, 0xFE, 0x3F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, 0x0F, 0xFF, 0xF0, 0x01, - 0xFF, 0x80, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF3, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, - 0x83, 0xF8, 0x3F, 0x83, 0xF8, 0x3F, 0x83, 0xFF, 0x3F, 0xF1, 0xFF, 0x0F, - 0xF0, 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, - 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, - 0x7F, 0xFE, 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xF8, 0x03, 0xFF, 0xF0, 0x07, - 0xFF, 0xE0, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x3F, 0xFF, 0x00, 0x7F, - 0xFE, 0x00, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xDF, 0xFF, 0xBF, 0x9F, 0xFF, 0x7F, 0x1F, - 0xFC, 0xFE, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0x9F, - 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xE1, 0xFC, 0x07, 0xF0, - 0x7E, 0x03, 0xF8, 0x3F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x07, 0xE0, 0xFE, - 0x03, 0xF8, 0x7E, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x1F, - 0x80, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xF7, 0xE0, 0x00, 0xFF, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, 0x07, - 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0xFC, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, 0xF8, 0x0F, 0xE0, - 0x3F, 0x3F, 0x03, 0xFE, 0x07, 0xE7, 0xE0, 0x7F, 0xC1, 0xFC, 0xFE, 0x0F, - 0xF8, 0x3F, 0x9F, 0xC1, 0xFF, 0x07, 0xE1, 0xF8, 0x3D, 0xE0, 0xFC, 0x3F, - 0x0F, 0xBE, 0x3F, 0x87, 0xF1, 0xF7, 0xC7, 0xE0, 0x7E, 0x3E, 0xF8, 0xFC, - 0x0F, 0xC7, 0xDF, 0x1F, 0x81, 0xF9, 0xF1, 0xE3, 0xF0, 0x3F, 0x3E, 0x3E, - 0xFC, 0x03, 0xF7, 0xC7, 0xDF, 0x80, 0x7E, 0xF8, 0xFB, 0xF0, 0x0F, 0xDE, - 0x1F, 0x7C, 0x00, 0xFF, 0xC1, 0xFF, 0x80, 0x1F, 0xF8, 0x3F, 0xF0, 0x03, - 0xFF, 0x07, 0xFE, 0x00, 0x7F, 0xC0, 0xFF, 0x80, 0x07, 0xF8, 0x1F, 0xF0, - 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, - 0xF0, 0x00, 0xFF, 0x00, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x81, 0xFC, 0x3F, - 0xC3, 0xFC, 0x1F, 0xC3, 0xF8, 0x0F, 0xE7, 0xF0, 0x0F, 0xEF, 0xF0, 0x07, - 0xFF, 0xE0, 0x03, 0xFF, 0xC0, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x03, - 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xE7, 0xF0, 0x1F, - 0xE7, 0xF0, 0x1F, 0xC3, 0xF8, 0x3F, 0xC3, 0xFC, 0x7F, 0x81, 0xFC, 0x7F, - 0x01, 0xFE, 0xFF, 0x00, 0xFF, 0x7F, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xDF, - 0xC0, 0x0F, 0xC7, 0xF0, 0x07, 0xE3, 0xF8, 0x07, 0xF1, 0xFC, 0x03, 0xF0, - 0x7F, 0x01, 0xF8, 0x3F, 0x81, 0xFC, 0x0F, 0xC0, 0xFC, 0x07, 0xF0, 0x7E, - 0x03, 0xF8, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0x7E, 0x1F, 0x80, 0x3F, 0x8F, - 0xC0, 0x0F, 0xCF, 0xC0, 0x07, 0xE7, 0xE0, 0x03, 0xFB, 0xF0, 0x00, 0xFD, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFC, 0x00, 0x07, - 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x0F, 0xFC, 0x00, - 0x07, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0xFF, - 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xBF, - 0xFF, 0xFC, 0x00, 0x3F, 0xE0, 0x03, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, - 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, - 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, 0x1F, 0xE0, 0x01, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF8, 0x01, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0xFF, - 0x87, 0xE0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, - 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3F, - 0x0F, 0xF0, 0x7F, 0x03, 0xF8, 0x1F, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, - 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xE0, 0x3F, 0xE0, 0xFF, 0x07, 0xF8, 0x1F, - 0xC0, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFC, 0x07, 0xF0, 0x3F, 0xC1, 0xFE, 0x0F, 0xF8, 0x0F, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x80, 0x7F, 0x81, 0xFC, - 0x0F, 0xE0, 0xFF, 0x0F, 0xC0, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, - 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, - 0x0F, 0xC3, 0xFE, 0x1F, 0xE0, 0xFF, 0x07, 0xF0, 0x3F, 0x00, 0x1F, 0x00, - 0x03, 0xFE, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0xFF, 0x0F, 0xFF, 0xF0, - 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xF8 }; - -const GFXglyph FreeSansBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 7, 34, 16, 5, -33 }, // 0x21 '!' - { 30, 18, 12, 22, 2, -33 }, // 0x22 '"' - { 57, 26, 33, 26, 0, -31 }, // 0x23 '#' - { 165, 25, 40, 26, 1, -34 }, // 0x24 '$' - { 290, 39, 34, 42, 1, -32 }, // 0x25 '%' - { 456, 30, 35, 34, 3, -33 }, // 0x26 '&' - { 588, 7, 12, 12, 3, -33 }, // 0x27 ''' - { 599, 13, 44, 16, 2, -33 }, // 0x28 '(' - { 671, 13, 44, 16, 1, -33 }, // 0x29 ')' - { 743, 15, 15, 18, 1, -33 }, // 0x2A '*' - { 772, 23, 22, 27, 2, -21 }, // 0x2B '+' - { 836, 7, 15, 12, 2, -6 }, // 0x2C ',' - { 850, 13, 6, 16, 1, -15 }, // 0x2D '-' - { 860, 7, 7, 12, 2, -6 }, // 0x2E '.' - { 867, 13, 34, 13, 0, -32 }, // 0x2F '/' - { 923, 24, 35, 26, 1, -33 }, // 0x30 '0' - { 1028, 14, 33, 26, 4, -32 }, // 0x31 '1' - { 1086, 23, 34, 26, 2, -33 }, // 0x32 '2' - { 1184, 23, 35, 26, 2, -33 }, // 0x33 '3' - { 1285, 22, 33, 26, 2, -32 }, // 0x34 '4' - { 1376, 23, 34, 26, 2, -32 }, // 0x35 '5' - { 1474, 23, 35, 26, 2, -33 }, // 0x36 '6' - { 1575, 23, 33, 26, 1, -32 }, // 0x37 '7' - { 1670, 24, 35, 26, 1, -33 }, // 0x38 '8' - { 1775, 24, 35, 26, 1, -33 }, // 0x39 '9' - { 1880, 7, 25, 12, 2, -24 }, // 0x3A ':' - { 1902, 7, 33, 12, 2, -24 }, // 0x3B ';' - { 1931, 23, 23, 27, 2, -22 }, // 0x3C '<' - { 1998, 23, 18, 27, 2, -19 }, // 0x3D '=' - { 2050, 23, 23, 27, 2, -22 }, // 0x3E '>' - { 2117, 24, 35, 29, 3, -34 }, // 0x3F '?' - { 2222, 43, 41, 46, 1, -34 }, // 0x40 '@' - { 2443, 32, 34, 33, 0, -33 }, // 0x41 'A' - { 2579, 27, 34, 33, 4, -33 }, // 0x42 'B' - { 2694, 30, 36, 34, 2, -34 }, // 0x43 'C' - { 2829, 28, 34, 34, 4, -33 }, // 0x44 'D' - { 2948, 25, 34, 31, 4, -33 }, // 0x45 'E' - { 3055, 24, 34, 30, 4, -33 }, // 0x46 'F' - { 3157, 31, 36, 36, 2, -34 }, // 0x47 'G' - { 3297, 27, 34, 35, 4, -33 }, // 0x48 'H' - { 3412, 7, 34, 15, 4, -33 }, // 0x49 'I' - { 3442, 22, 35, 27, 1, -33 }, // 0x4A 'J' - { 3539, 30, 34, 34, 4, -33 }, // 0x4B 'K' - { 3667, 23, 34, 29, 4, -33 }, // 0x4C 'L' - { 3765, 33, 34, 41, 4, -33 }, // 0x4D 'M' - { 3906, 28, 34, 35, 4, -33 }, // 0x4E 'N' - { 4025, 33, 36, 37, 2, -34 }, // 0x4F 'O' - { 4174, 26, 34, 32, 4, -33 }, // 0x50 'P' - { 4285, 33, 37, 37, 2, -34 }, // 0x51 'Q' - { 4438, 28, 34, 34, 4, -33 }, // 0x52 'R' - { 4557, 28, 36, 32, 2, -34 }, // 0x53 'S' - { 4683, 27, 34, 30, 2, -33 }, // 0x54 'T' - { 4798, 27, 35, 35, 4, -33 }, // 0x55 'U' - { 4917, 29, 34, 31, 1, -33 }, // 0x56 'V' - { 5041, 43, 34, 45, 1, -33 }, // 0x57 'W' - { 5224, 30, 34, 32, 1, -33 }, // 0x58 'X' - { 5352, 29, 34, 30, 1, -33 }, // 0x59 'Y' - { 5476, 26, 34, 29, 1, -33 }, // 0x5A 'Z' - { 5587, 11, 43, 16, 3, -33 }, // 0x5B '[' - { 5647, 14, 34, 13, -1, -32 }, // 0x5C '\' - { 5707, 11, 43, 16, 1, -33 }, // 0x5D ']' - { 5767, 22, 20, 27, 3, -32 }, // 0x5E '^' - { 5822, 28, 4, 26, -1, 6 }, // 0x5F '_' - { 5836, 9, 7, 12, 1, -35 }, // 0x60 '`' - { 5844, 24, 26, 27, 2, -24 }, // 0x61 'a' - { 5922, 25, 35, 29, 3, -33 }, // 0x62 'b' - { 6032, 23, 26, 26, 2, -24 }, // 0x63 'c' - { 6107, 25, 35, 29, 2, -33 }, // 0x64 'd' - { 6217, 24, 26, 27, 2, -24 }, // 0x65 'e' - { 6295, 14, 34, 16, 1, -33 }, // 0x66 'f' - { 6355, 24, 36, 29, 2, -24 }, // 0x67 'g' - { 6463, 23, 34, 28, 3, -33 }, // 0x68 'h' - { 6561, 7, 34, 13, 3, -33 }, // 0x69 'i' - { 6591, 10, 45, 13, 0, -33 }, // 0x6A 'j' - { 6648, 23, 34, 27, 3, -33 }, // 0x6B 'k' - { 6746, 7, 34, 13, 3, -33 }, // 0x6C 'l' - { 6776, 36, 25, 42, 3, -24 }, // 0x6D 'm' - { 6889, 23, 25, 29, 3, -24 }, // 0x6E 'n' - { 6961, 25, 26, 29, 2, -24 }, // 0x6F 'o' - { 7043, 25, 36, 29, 3, -24 }, // 0x70 'p' - { 7156, 25, 36, 29, 2, -24 }, // 0x71 'q' - { 7269, 15, 25, 18, 3, -24 }, // 0x72 'r' - { 7316, 24, 26, 26, 1, -24 }, // 0x73 's' - { 7394, 12, 32, 16, 2, -30 }, // 0x74 't' - { 7442, 23, 26, 29, 3, -24 }, // 0x75 'u' - { 7517, 25, 25, 25, 0, -24 }, // 0x76 'v' - { 7596, 35, 25, 37, 1, -24 }, // 0x77 'w' - { 7706, 24, 25, 26, 1, -24 }, // 0x78 'x' - { 7781, 25, 36, 26, 0, -24 }, // 0x79 'y' - { 7894, 21, 25, 24, 1, -24 }, // 0x7A 'z' - { 7960, 13, 43, 18, 2, -33 }, // 0x7B '{' - { 8030, 4, 44, 13, 5, -33 }, // 0x7C '|' - { 8052, 13, 43, 18, 3, -33 }, // 0x7D '}' - { 8122, 21, 8, 23, 1, -14 } }; // 0x7E '~' - -const GFXfont FreeSansBold24pt7b PROGMEM = { - (uint8_t *)FreeSansBold24pt7bBitmaps, - (GFXglyph *)FreeSansBold24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8815 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h deleted file mode 100644 index aeea463e7..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h +++ /dev/null @@ -1,208 +0,0 @@ -const uint8_t FreeSansBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFF, 0xFE, 0x48, 0x7E, 0xEF, 0xDF, 0xBF, 0x74, 0x40, 0x19, 0x86, - 0x67, 0xFD, 0xFF, 0x33, 0x0C, 0xC3, 0x33, 0xFE, 0xFF, 0x99, 0x86, 0x61, - 0x90, 0x10, 0x1F, 0x1F, 0xDE, 0xFF, 0x3F, 0x83, 0xC0, 0xFC, 0x1F, 0x09, - 0xFC, 0xFE, 0xF7, 0xF1, 0xE0, 0x40, 0x38, 0x10, 0x7C, 0x30, 0xC6, 0x20, - 0xC6, 0x40, 0xC6, 0x40, 0x7C, 0x80, 0x39, 0x9C, 0x01, 0x3E, 0x03, 0x63, - 0x02, 0x63, 0x04, 0x63, 0x0C, 0x3E, 0x08, 0x1C, 0x0E, 0x01, 0xF8, 0x3B, - 0x83, 0xB8, 0x3F, 0x01, 0xE0, 0x3E, 0x67, 0x76, 0xE3, 0xEE, 0x1C, 0xF3, - 0xC7, 0xFE, 0x3F, 0x70, 0xFF, 0xF4, 0x18, 0x63, 0x1C, 0x73, 0x8E, 0x38, - 0xE3, 0x8E, 0x18, 0x70, 0xC3, 0x06, 0x08, 0x61, 0x83, 0x0E, 0x38, 0x71, - 0xC7, 0x1C, 0x71, 0xC6, 0x38, 0xE3, 0x18, 0x40, 0x21, 0x3E, 0x45, 0x28, - 0x38, 0x70, 0xE7, 0xFF, 0xE7, 0x0E, 0x1C, 0xFC, 0x9C, 0xFF, 0xC0, 0xFC, - 0x08, 0xC4, 0x23, 0x10, 0x84, 0x62, 0x11, 0x88, 0x00, 0x3E, 0x3F, 0x9D, - 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xF1, 0xDD, 0xCF, 0xE3, 0xE0, - 0x08, 0xFF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x80, 0x3E, 0x3F, 0xB8, - 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x0F, 0xF7, 0xF8, - 0x3C, 0x7F, 0xE7, 0xE7, 0x07, 0x0C, 0x0E, 0x07, 0x07, 0xE7, 0xE7, 0x7E, - 0x3C, 0x0E, 0x1E, 0x1E, 0x2E, 0x2E, 0x4E, 0x4E, 0x8E, 0xFF, 0xFF, 0x0E, - 0x0E, 0x0E, 0x7F, 0x3F, 0x90, 0x18, 0x0D, 0xE7, 0xFB, 0x9E, 0x07, 0x03, - 0x81, 0xF1, 0xFF, 0xE7, 0xC0, 0x3E, 0x3F, 0x9C, 0xFC, 0x0E, 0xE7, 0xFB, - 0xDF, 0xC7, 0xE3, 0xF1, 0xDD, 0xEF, 0xE3, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, - 0xE0, 0x60, 0x70, 0x30, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, 0x80, 0x3F, - 0x1F, 0xEE, 0x3F, 0x87, 0xE3, 0xCF, 0xC7, 0xFB, 0xCF, 0xE1, 0xF8, 0x7F, - 0x3D, 0xFE, 0x3F, 0x00, 0x3E, 0x3F, 0xBD, 0xDC, 0x7E, 0x3F, 0x1F, 0xDE, - 0xFF, 0x3B, 0x81, 0xF9, 0xCF, 0xE3, 0xC0, 0xFC, 0x00, 0x07, 0xE0, 0xFC, - 0x00, 0x07, 0xE5, 0xE0, 0x00, 0x83, 0xC7, 0xDF, 0x0C, 0x07, 0x80, 0xF8, - 0x1F, 0x01, 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x70, - 0x3F, 0x03, 0xE0, 0x38, 0x7D, 0xF1, 0xE0, 0x80, 0x00, 0x3E, 0x3F, 0xB8, - 0xFC, 0x70, 0x38, 0x1C, 0x1C, 0x1C, 0x1C, 0x0E, 0x00, 0x03, 0x81, 0xC0, - 0x03, 0xF0, 0x0F, 0xFC, 0x1E, 0x0E, 0x38, 0x02, 0x70, 0xE9, 0x63, 0x19, - 0xC2, 0x19, 0xC6, 0x11, 0xC6, 0x33, 0xC6, 0x32, 0x63, 0xFE, 0x73, 0xDC, - 0x3C, 0x00, 0x1F, 0xF8, 0x07, 0xF0, 0x07, 0x00, 0xF0, 0x0F, 0x80, 0xF8, - 0x1D, 0x81, 0x9C, 0x19, 0xC3, 0x8C, 0x3F, 0xE7, 0xFE, 0x70, 0x66, 0x07, - 0xE0, 0x70, 0xFF, 0x9F, 0xFB, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0x3F, 0xF7, - 0x06, 0xE0, 0xFC, 0x1F, 0x83, 0xFF, 0xEF, 0xF8, 0x1F, 0x83, 0xFE, 0x78, - 0xE7, 0x07, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x07, 0x07, 0x78, - 0xF3, 0xFE, 0x1F, 0x80, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0x7E, - 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, 0x0E, 0xE0, 0xEF, 0xFC, 0xFF, 0x80, - 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, 0xE0, 0x70, 0x38, - 0x1F, 0xFF, 0xF8, 0xFF, 0xFF, 0xF8, 0x1C, 0x0E, 0x07, 0xFB, 0xFD, 0xC0, - 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x00, 0x0F, 0x87, 0xF9, 0xE3, 0xB8, 0x3E, - 0x01, 0xC0, 0x38, 0xFF, 0x1F, 0xE0, 0x6E, 0x0D, 0xE3, 0x9F, 0xD0, 0xF2, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xFF, 0xFF, 0xFF, 0x07, 0xE0, - 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0xE7, 0xE7, 0xE7, 0x7E, 0x3C, - 0xE0, 0xEE, 0x1C, 0xE3, 0x8E, 0x70, 0xEE, 0x0F, 0xC0, 0xFE, 0x0F, 0x70, - 0xE7, 0x0E, 0x38, 0xE1, 0xCE, 0x0E, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xE1, - 0xFF, 0x87, 0xFE, 0x1F, 0xEC, 0x7F, 0xB3, 0x7E, 0xCD, 0xFB, 0x37, 0xEC, - 0xDF, 0x9E, 0x7E, 0x79, 0xF9, 0xE7, 0xE7, 0x9C, 0xE0, 0xFE, 0x1F, 0xC3, - 0xFC, 0x7F, 0xCF, 0xD9, 0xFB, 0xBF, 0x37, 0xE7, 0xFC, 0x7F, 0x87, 0xF0, - 0xFE, 0x0E, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, 0xEE, 0x03, 0xF0, 0x1F, - 0x80, 0xFC, 0x07, 0xE0, 0x3B, 0x83, 0x9E, 0x3C, 0x7F, 0xC0, 0xF8, 0x00, - 0xFF, 0x9F, 0xFB, 0x87, 0xF0, 0x7E, 0x0F, 0xC3, 0xFF, 0xF7, 0xFC, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x0F, 0x81, 0xFF, 0x1E, 0x3C, 0xE0, - 0xEE, 0x03, 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xE1, 0xBB, 0x8F, 0x9E, 0x3C, - 0x7F, 0xE0, 0xFB, 0x80, 0x08, 0xFF, 0x8F, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, - 0xEE, 0x0E, 0xFF, 0xCF, 0xFC, 0xE0, 0xEE, 0x0E, 0xE0, 0xEE, 0x0E, 0xE0, - 0xF0, 0x3F, 0x0F, 0xFB, 0xC7, 0xF0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, - 0x00, 0xFC, 0x1D, 0xC7, 0xBF, 0xE1, 0xF8, 0xFF, 0xFF, 0xC7, 0x03, 0x81, - 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0xFC, - 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, - 0xC7, 0xBF, 0xE1, 0xF0, 0x60, 0x67, 0x0E, 0x70, 0xE3, 0x0C, 0x30, 0xC3, - 0x9C, 0x19, 0x81, 0x98, 0x1F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x06, 0x00, - 0x61, 0xC3, 0xB8, 0xE1, 0x9C, 0x70, 0xCE, 0x3C, 0xE3, 0x36, 0x71, 0x9B, - 0x30, 0xED, 0x98, 0x36, 0x7C, 0x1B, 0x3C, 0x0F, 0x1E, 0x07, 0x8F, 0x01, - 0xC3, 0x80, 0xE1, 0x80, 0x70, 0xE7, 0x8E, 0x39, 0xC1, 0xF8, 0x1F, 0x80, - 0xF0, 0x07, 0x00, 0xF0, 0x1F, 0x81, 0x9C, 0x39, 0xC7, 0x0E, 0x70, 0xE0, - 0xE0, 0xFC, 0x39, 0xC7, 0x18, 0xC3, 0xB8, 0x36, 0x07, 0xC0, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0xFF, 0xFF, 0xC0, 0xE0, 0xE0, 0xF0, - 0x70, 0x70, 0x70, 0x78, 0x38, 0x38, 0x1F, 0xFF, 0xF8, 0xFF, 0xEE, 0xEE, - 0xEE, 0xEE, 0xEE, 0xEE, 0xEF, 0xF0, 0x86, 0x10, 0x86, 0x10, 0x84, 0x30, - 0x84, 0x30, 0x80, 0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x7F, 0xF0, - 0x18, 0x1C, 0x3C, 0x3E, 0x36, 0x66, 0x63, 0xC3, 0xFF, 0xC0, 0xCC, 0x3F, - 0x1F, 0xEE, 0x38, 0x0E, 0x3F, 0x9E, 0xEE, 0x3B, 0x9E, 0xFF, 0x9E, 0xE0, - 0xE0, 0x38, 0x0E, 0x03, 0xBC, 0xFF, 0xBC, 0xEE, 0x1F, 0x87, 0xE1, 0xF8, - 0x7F, 0x3B, 0xFE, 0xEF, 0x00, 0x1F, 0x3F, 0xDC, 0x7C, 0x0E, 0x07, 0x03, - 0x80, 0xE3, 0x7F, 0x8F, 0x00, 0x03, 0x81, 0xC0, 0xE7, 0x77, 0xFB, 0xBF, - 0x8F, 0xC7, 0xE3, 0xF1, 0xFD, 0xEF, 0xF3, 0xB8, 0x3E, 0x3F, 0x9C, 0xDC, - 0x3F, 0xFF, 0xFF, 0x81, 0xC3, 0x7F, 0x8F, 0x00, 0x3B, 0xDD, 0xFF, 0xB9, - 0xCE, 0x73, 0x9C, 0xE7, 0x00, 0x3B, 0xBF, 0xDD, 0xFC, 0x7E, 0x3F, 0x1F, - 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xFC, 0x77, 0xF1, 0xF0, 0xE0, 0x70, 0x38, - 0x1D, 0xEF, 0xFF, 0x9F, 0x8F, 0xC7, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, 0x38, - 0xFC, 0x7F, 0xFF, 0xFF, 0xFE, 0x77, 0x07, 0x77, 0x77, 0x77, 0x77, 0x77, - 0x7F, 0xE0, 0xE0, 0x70, 0x38, 0x1C, 0x7E, 0x77, 0x73, 0xF1, 0xF8, 0xFE, - 0x77, 0x39, 0xDC, 0x6E, 0x38, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xEF, 0x7B, - 0xFF, 0xFE, 0x39, 0xF8, 0xE7, 0xE3, 0x9F, 0x8E, 0x7E, 0x39, 0xF8, 0xE7, - 0xE3, 0x9F, 0x8E, 0x70, 0xEF, 0x7F, 0xF8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, - 0xC7, 0xE3, 0xF1, 0xC0, 0x1E, 0x1F, 0xE7, 0x3B, 0x87, 0xE1, 0xF8, 0x7E, - 0x1D, 0xCE, 0x7F, 0x87, 0x80, 0xEF, 0x3F, 0xEF, 0x3B, 0x87, 0xE1, 0xF8, - 0x7E, 0x1F, 0xCE, 0xFF, 0xBB, 0xCE, 0x03, 0x80, 0xE0, 0x38, 0x00, 0x3B, - 0xBF, 0xFD, 0xFC, 0x7E, 0x3F, 0x1F, 0x8F, 0xEF, 0x7F, 0x9D, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0xEF, 0xFF, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x80, 0x3E, - 0x3F, 0xB8, 0xFC, 0x0F, 0xC3, 0xFC, 0x3F, 0xC7, 0xFF, 0x1F, 0x00, 0x73, - 0xBF, 0xF7, 0x39, 0xCE, 0x73, 0x9E, 0x70, 0xE3, 0xF1, 0xF8, 0xFC, 0x7E, - 0x3F, 0x1F, 0x8F, 0xC7, 0xFF, 0xBD, 0xC0, 0xE1, 0x98, 0x67, 0x39, 0xCC, - 0x33, 0x0D, 0xC3, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xE3, 0x1D, 0x9E, 0x66, - 0x79, 0x99, 0xE6, 0x77, 0xB8, 0xD2, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, - 0x73, 0x80, 0x73, 0x9C, 0xE3, 0xF0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0xFC, - 0x73, 0x9C, 0xE0, 0xE1, 0xD8, 0x67, 0x39, 0xCE, 0x33, 0x0E, 0xC3, 0xE0, - 0x78, 0x1E, 0x03, 0x00, 0xC0, 0x70, 0x38, 0x0E, 0x00, 0xFE, 0xFE, 0x0E, - 0x1C, 0x38, 0x38, 0x70, 0xE0, 0xFF, 0xFF, 0x37, 0x66, 0x66, 0x6E, 0xE6, - 0x66, 0x66, 0x67, 0x30, 0xFF, 0xFF, 0x80, 0xCE, 0x66, 0x66, 0x67, 0x76, - 0x66, 0x66, 0x6E, 0xC0, 0x71, 0x8E }; - -const GFXglyph FreeSansBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 3, 13, 6, 2, -12 }, // 0x21 '!' - { 5, 7, 5, 9, 1, -12 }, // 0x22 '"' - { 10, 10, 12, 10, 0, -11 }, // 0x23 '#' - { 25, 9, 15, 10, 1, -13 }, // 0x24 '$' - { 42, 16, 13, 16, 0, -12 }, // 0x25 '%' - { 68, 12, 13, 13, 1, -12 }, // 0x26 '&' - { 88, 3, 5, 5, 1, -12 }, // 0x27 ''' - { 90, 6, 17, 6, 1, -12 }, // 0x28 '(' - { 103, 6, 17, 6, 0, -12 }, // 0x29 ')' - { 116, 5, 6, 7, 1, -12 }, // 0x2A '*' - { 120, 7, 8, 11, 2, -7 }, // 0x2B '+' - { 127, 3, 5, 4, 1, -1 }, // 0x2C ',' - { 129, 5, 2, 6, 0, -5 }, // 0x2D '-' - { 131, 3, 2, 4, 1, -1 }, // 0x2E '.' - { 132, 5, 13, 5, 0, -12 }, // 0x2F '/' - { 141, 9, 13, 10, 1, -12 }, // 0x30 '0' - { 156, 5, 13, 10, 2, -12 }, // 0x31 '1' - { 165, 9, 13, 10, 1, -12 }, // 0x32 '2' - { 180, 8, 13, 10, 1, -12 }, // 0x33 '3' - { 193, 8, 13, 10, 2, -12 }, // 0x34 '4' - { 206, 9, 13, 10, 1, -12 }, // 0x35 '5' - { 221, 9, 13, 10, 1, -12 }, // 0x36 '6' - { 236, 9, 13, 10, 0, -12 }, // 0x37 '7' - { 251, 10, 13, 10, 0, -12 }, // 0x38 '8' - { 268, 9, 13, 10, 1, -12 }, // 0x39 '9' - { 283, 3, 9, 4, 1, -8 }, // 0x3A ':' - { 287, 3, 12, 4, 1, -8 }, // 0x3B ';' - { 292, 9, 9, 11, 1, -8 }, // 0x3C '<' - { 303, 9, 6, 11, 1, -6 }, // 0x3D '=' - { 310, 9, 9, 11, 1, -8 }, // 0x3E '>' - { 321, 9, 13, 11, 1, -12 }, // 0x3F '?' - { 336, 16, 15, 18, 0, -12 }, // 0x40 '@' - { 366, 12, 13, 13, 0, -12 }, // 0x41 'A' - { 386, 11, 13, 13, 1, -12 }, // 0x42 'B' - { 404, 12, 13, 13, 1, -12 }, // 0x43 'C' - { 424, 12, 13, 13, 1, -12 }, // 0x44 'D' - { 444, 9, 13, 12, 1, -12 }, // 0x45 'E' - { 459, 9, 13, 11, 1, -12 }, // 0x46 'F' - { 474, 11, 13, 14, 1, -12 }, // 0x47 'G' - { 492, 11, 13, 13, 1, -12 }, // 0x48 'H' - { 510, 3, 13, 6, 1, -12 }, // 0x49 'I' - { 515, 8, 13, 10, 1, -12 }, // 0x4A 'J' - { 528, 12, 13, 13, 1, -12 }, // 0x4B 'K' - { 548, 8, 13, 11, 1, -12 }, // 0x4C 'L' - { 561, 14, 13, 16, 1, -12 }, // 0x4D 'M' - { 584, 11, 13, 14, 1, -12 }, // 0x4E 'N' - { 602, 13, 13, 14, 1, -12 }, // 0x4F 'O' - { 624, 11, 13, 12, 1, -12 }, // 0x50 'P' - { 642, 13, 14, 14, 1, -12 }, // 0x51 'Q' - { 665, 12, 13, 13, 1, -12 }, // 0x52 'R' - { 685, 11, 13, 12, 1, -12 }, // 0x53 'S' - { 703, 9, 13, 12, 2, -12 }, // 0x54 'T' - { 718, 11, 13, 13, 1, -12 }, // 0x55 'U' - { 736, 12, 13, 12, 0, -12 }, // 0x56 'V' - { 756, 17, 13, 17, 0, -12 }, // 0x57 'W' - { 784, 12, 13, 12, 0, -12 }, // 0x58 'X' - { 804, 11, 13, 12, 1, -12 }, // 0x59 'Y' - { 822, 9, 13, 11, 1, -12 }, // 0x5A 'Z' - { 837, 4, 17, 6, 1, -12 }, // 0x5B '[' - { 846, 5, 13, 5, 0, -12 }, // 0x5C '\' - { 855, 4, 17, 6, 0, -12 }, // 0x5D ']' - { 864, 8, 8, 11, 1, -12 }, // 0x5E '^' - { 872, 10, 1, 10, 0, 4 }, // 0x5F '_' - { 874, 3, 2, 5, 0, -12 }, // 0x60 '`' - { 875, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 888, 10, 13, 11, 1, -12 }, // 0x62 'b' - { 905, 9, 10, 10, 1, -9 }, // 0x63 'c' - { 917, 9, 13, 11, 1, -12 }, // 0x64 'd' - { 932, 9, 10, 10, 1, -9 }, // 0x65 'e' - { 944, 5, 13, 6, 1, -12 }, // 0x66 'f' - { 953, 9, 14, 11, 1, -9 }, // 0x67 'g' - { 969, 9, 13, 11, 1, -12 }, // 0x68 'h' - { 984, 3, 13, 5, 1, -12 }, // 0x69 'i' - { 989, 4, 17, 5, 0, -12 }, // 0x6A 'j' - { 998, 9, 13, 10, 1, -12 }, // 0x6B 'k' - { 1013, 3, 13, 5, 1, -12 }, // 0x6C 'l' - { 1018, 14, 10, 16, 1, -9 }, // 0x6D 'm' - { 1036, 9, 10, 11, 1, -9 }, // 0x6E 'n' - { 1048, 10, 10, 11, 1, -9 }, // 0x6F 'o' - { 1061, 10, 14, 11, 1, -9 }, // 0x70 'p' - { 1079, 9, 14, 11, 1, -9 }, // 0x71 'q' - { 1095, 6, 10, 7, 1, -9 }, // 0x72 'r' - { 1103, 9, 10, 10, 1, -9 }, // 0x73 's' - { 1115, 5, 12, 6, 1, -11 }, // 0x74 't' - { 1123, 9, 10, 11, 1, -9 }, // 0x75 'u' - { 1135, 10, 10, 10, 0, -9 }, // 0x76 'v' - { 1148, 14, 10, 14, 0, -9 }, // 0x77 'w' - { 1166, 10, 10, 10, 0, -9 }, // 0x78 'x' - { 1179, 10, 14, 10, 0, -9 }, // 0x79 'y' - { 1197, 8, 10, 9, 1, -9 }, // 0x7A 'z' - { 1207, 4, 17, 7, 1, -12 }, // 0x7B '{' - { 1216, 1, 17, 5, 2, -12 }, // 0x7C '|' - { 1219, 4, 17, 7, 2, -12 }, // 0x7D '}' - { 1228, 8, 2, 9, 0, -4 } }; // 0x7E '~' - -const GFXfont FreeSansBold9pt7b PROGMEM = { - (uint8_t *)FreeSansBold9pt7bBitmaps, - (GFXglyph *)FreeSansBold9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1902 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h deleted file mode 100644 index fabbad3f4..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h +++ /dev/null @@ -1,317 +0,0 @@ -const uint8_t FreeSansBoldOblique12pt7bBitmaps[] PROGMEM = { - 0x1C, 0x3C, 0x78, 0xE1, 0xC3, 0x8F, 0x1C, 0x38, 0x70, 0xC1, 0x83, 0x00, - 0x1C, 0x78, 0xF0, 0x71, 0xFC, 0xFE, 0x3B, 0x8E, 0xC3, 0x30, 0xC0, 0x01, - 0x8C, 0x07, 0x38, 0x0C, 0x61, 0xFF, 0xF3, 0xFF, 0xE7, 0xFF, 0x83, 0x9C, - 0x0E, 0x70, 0x1C, 0xE1, 0xFF, 0xF3, 0xFF, 0xC7, 0xFF, 0x83, 0x18, 0x0E, - 0x70, 0x18, 0xC0, 0x73, 0x80, 0x00, 0x40, 0x07, 0xF0, 0x3F, 0xF0, 0xFF, - 0xF3, 0xC9, 0xE7, 0xB3, 0xCF, 0x60, 0x1F, 0xC0, 0x3F, 0xC0, 0x3F, 0xE0, - 0x1F, 0xE0, 0x1B, 0xE0, 0x33, 0xDE, 0x47, 0xBC, 0x8F, 0x7F, 0x7C, 0x7F, - 0xF0, 0x7F, 0x80, 0x18, 0x00, 0x20, 0x00, 0xC0, 0x00, 0x00, 0x01, 0x87, - 0x80, 0xC3, 0xF0, 0x61, 0xFE, 0x10, 0xE1, 0x8C, 0x30, 0x66, 0x0C, 0x3B, - 0x03, 0xFC, 0x80, 0x7E, 0x60, 0x0F, 0x30, 0x00, 0x18, 0x70, 0x0C, 0x7E, - 0x03, 0x1F, 0xC1, 0x8E, 0x30, 0xC3, 0x1C, 0x60, 0xFE, 0x18, 0x1F, 0x8C, - 0x07, 0x80, 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xE0, 0x79, 0xC0, 0xF3, 0x81, - 0xEE, 0x01, 0xF8, 0x01, 0xE0, 0x1F, 0xC6, 0x7B, 0xDD, 0xE3, 0xF7, 0x87, - 0xEF, 0x07, 0x9F, 0x1F, 0x3F, 0xFF, 0x3F, 0xDE, 0x3F, 0x1C, 0x7F, 0xEE, - 0xCC, 0x03, 0x83, 0x81, 0x81, 0xC1, 0xC0, 0xE0, 0xE0, 0x70, 0x70, 0x38, - 0x3C, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x18, 0x0E, 0x07, - 0x01, 0x80, 0x06, 0x03, 0x81, 0xC0, 0x60, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x1C, 0x0E, 0x0E, 0x06, - 0x07, 0x07, 0x00, 0x0C, 0x0C, 0x4F, 0xFF, 0x1C, 0x3C, 0x6C, 0x44, 0x03, - 0x80, 0x38, 0x07, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0xE0, 0x0E, - 0x00, 0xE0, 0x0C, 0x00, 0x7B, 0xDC, 0x23, 0x33, 0x00, 0x7F, 0xFF, 0xF0, - 0x7F, 0xE0, 0x00, 0xC0, 0x30, 0x18, 0x04, 0x03, 0x00, 0x80, 0x60, 0x10, - 0x0C, 0x02, 0x01, 0x80, 0x40, 0x30, 0x08, 0x06, 0x01, 0x00, 0xC0, 0x00, - 0x03, 0xC0, 0x7F, 0x87, 0xFC, 0x78, 0xF3, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, - 0x0F, 0xF0, 0x7F, 0x87, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x78, 0xF3, 0xFF, - 0x0F, 0xF0, 0x3E, 0x00, 0x03, 0x83, 0x83, 0xCF, 0xEF, 0xF0, 0x78, 0x38, - 0x1C, 0x0E, 0x0F, 0x07, 0x03, 0x81, 0xC1, 0xE0, 0xF0, 0x70, 0x38, 0x00, - 0x03, 0xF0, 0x0F, 0xF8, 0x7F, 0xF8, 0xF1, 0xF3, 0xC1, 0xE7, 0x83, 0xC0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x00, 0x7C, 0x01, 0xE0, - 0x07, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0xFF, 0xF0, 0x07, 0xE0, 0xFF, 0x8F, - 0xFE, 0xF8, 0xF7, 0x87, 0x80, 0x78, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x0F, - 0x80, 0x3C, 0x01, 0xEF, 0x0F, 0x78, 0xF3, 0xFF, 0x8F, 0xF8, 0x3F, 0x00, - 0x00, 0x78, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x37, 0x03, 0x38, 0x31, 0xC3, - 0x9E, 0x38, 0xF1, 0x87, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0xF0, 0x07, - 0x00, 0x38, 0x03, 0xC0, 0x07, 0xFC, 0x1F, 0xF0, 0xFF, 0xC3, 0x00, 0x1C, - 0x00, 0x7F, 0x81, 0xFF, 0x0F, 0xFE, 0x38, 0xF8, 0x01, 0xE0, 0x07, 0x80, - 0x1E, 0xF0, 0xF3, 0xC7, 0xCF, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x03, 0xE0, - 0x7F, 0x87, 0xFE, 0x78, 0xF3, 0xC0, 0x3D, 0xE1, 0xFF, 0x8F, 0xFE, 0xF8, - 0xF7, 0xC7, 0xBC, 0x3D, 0xE1, 0xEF, 0x1E, 0x7C, 0xF3, 0xFF, 0x0F, 0xF0, - 0x1F, 0x00, 0x7F, 0xFB, 0xFF, 0xDF, 0xFE, 0x00, 0xE0, 0x0E, 0x00, 0xE0, - 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, - 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x00, 0x03, 0xF0, 0x1F, 0xE0, 0xFF, 0xC7, - 0x8F, 0x1C, 0x3C, 0x71, 0xE0, 0xFF, 0x03, 0xF8, 0x3F, 0xF1, 0xF1, 0xE7, - 0x87, 0xBC, 0x1E, 0xF0, 0x7B, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, - 0x03, 0xE0, 0x3F, 0xE1, 0xFF, 0x8F, 0x9F, 0x3C, 0x3D, 0xE0, 0xF7, 0x83, - 0xDE, 0x1F, 0x78, 0xFD, 0xFF, 0xE3, 0xFF, 0x87, 0xDE, 0x00, 0xF3, 0xC7, - 0x8F, 0xFE, 0x1F, 0xF0, 0x3F, 0x00, 0x1C, 0xF3, 0x80, 0x00, 0x00, 0x00, - 0x01, 0xCF, 0x38, 0x0E, 0x3C, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF1, - 0xE3, 0x81, 0x06, 0x18, 0x60, 0x00, 0x00, 0x01, 0xC0, 0x7E, 0x1F, 0xE7, - 0xF8, 0x7E, 0x03, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x00, 0x78, 0x00, - 0xC0, 0x3F, 0xFC, 0xFF, 0xF3, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, - 0xFF, 0x9F, 0xFC, 0x7F, 0xF0, 0x30, 0x01, 0xE0, 0x0F, 0xE0, 0x3F, 0xC0, - 0x7F, 0x80, 0x7C, 0x07, 0xE1, 0xFE, 0x7F, 0x87, 0xE0, 0x38, 0x00, 0x00, - 0x00, 0x0F, 0xC1, 0xFF, 0x8F, 0xFC, 0xF1, 0xFF, 0x07, 0xF0, 0x3C, 0x01, - 0xE0, 0x1E, 0x01, 0xE0, 0x3E, 0x03, 0xE0, 0x1C, 0x01, 0xC0, 0x0E, 0x00, - 0x00, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, - 0x80, 0x3C, 0x0F, 0x01, 0xC0, 0x0E, 0x0E, 0x00, 0x1C, 0x70, 0xF7, 0x73, - 0x87, 0xF8, 0xCC, 0x31, 0xE3, 0x61, 0x87, 0x0D, 0x8C, 0x1C, 0x3C, 0x30, - 0x61, 0xB1, 0x81, 0x86, 0xC6, 0x0C, 0x3B, 0x18, 0x71, 0xCC, 0x63, 0xCE, - 0x31, 0xFB, 0xF0, 0xE3, 0xCF, 0x01, 0xC0, 0x00, 0x03, 0xC0, 0xC0, 0x07, - 0xFF, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x1F, 0x80, - 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, 0x7C, 0x07, 0x1E, 0x03, 0x8F, - 0x03, 0x87, 0x83, 0xC3, 0xC1, 0xFF, 0xE1, 0xFF, 0xF0, 0xFF, 0xFC, 0xF0, - 0x1E, 0x70, 0x0F, 0x78, 0x07, 0xB8, 0x03, 0xC0, 0x0F, 0xFE, 0x0F, 0xFF, - 0x87, 0xFF, 0xE3, 0xC0, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x3C, 0x7F, - 0xFC, 0x3F, 0xFC, 0x1F, 0xFF, 0x0E, 0x07, 0xCF, 0x01, 0xE7, 0x80, 0xF3, - 0x80, 0x79, 0xC0, 0x79, 0xFF, 0xF8, 0xFF, 0xFC, 0x7F, 0xF8, 0x00, 0x01, - 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xF3, 0xC0, 0x79, 0xE0, 0x3D, - 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x0F, 0x00, 0xE7, 0x80, 0xF3, 0xE0, 0xF0, 0xFF, 0xF8, 0x3F, 0xF0, 0x07, - 0xE0, 0x00, 0x1F, 0xFC, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0x81, 0xF1, 0xC0, - 0x79, 0xE0, 0x3C, 0xF0, 0x1E, 0x78, 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xDE, - 0x03, 0xCF, 0x01, 0xE7, 0x81, 0xF3, 0x80, 0xF1, 0xC1, 0xF1, 0xFF, 0xF0, - 0xFF, 0xF0, 0x7F, 0xE0, 0x00, 0x0F, 0xFF, 0x1F, 0xFF, 0x1F, 0xFF, 0x1C, - 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, - 0xF8, 0xFF, 0xF8, 0xFF, 0xF8, 0x1F, 0xFF, 0x1F, 0xFE, 0x1F, 0xFE, 0x1C, - 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0xF8, 0x3F, 0xF8, 0x3F, - 0xF8, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x01, 0xFC, 0x03, 0xFF, 0x03, 0xFF, 0xC3, - 0xE0, 0xF3, 0xC0, 0x39, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0xF0, 0x7F, - 0x78, 0x3F, 0xBC, 0x1F, 0xDE, 0x01, 0xCF, 0x00, 0xE7, 0xC0, 0xF1, 0xF0, - 0xF8, 0xFF, 0xFC, 0x3F, 0xEC, 0x07, 0xE6, 0x00, 0x1E, 0x03, 0x8F, 0x01, - 0xC7, 0x01, 0xE3, 0x80, 0xF3, 0xC0, 0x79, 0xE0, 0x38, 0xF0, 0x1C, 0x7F, - 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x9E, 0x03, 0x8F, 0x01, 0xC7, 0x01, 0xE3, - 0x80, 0xF3, 0xC0, 0x71, 0xE0, 0x38, 0xF0, 0x3C, 0x70, 0x1E, 0x00, 0x1E, - 0x3C, 0x78, 0xE1, 0xC7, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x8E, 0x1C, - 0x78, 0xF1, 0xE0, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x38, - 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xC0, 0x07, 0x3C, 0x3C, - 0xF0, 0xF3, 0xC3, 0x8F, 0x1E, 0x3F, 0xF8, 0x7F, 0xC0, 0xFC, 0x00, 0x1E, - 0x07, 0xC7, 0x83, 0xE1, 0xE1, 0xE0, 0x70, 0xF0, 0x1C, 0x78, 0x0F, 0x3C, - 0x03, 0xDE, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x07, 0xDE, 0x01, - 0xE7, 0xC0, 0x78, 0xF0, 0x1C, 0x3E, 0x0F, 0x07, 0x83, 0xC0, 0xF0, 0xF0, - 0x3C, 0x38, 0x07, 0x80, 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, - 0x0E, 0x00, 0xF0, 0x07, 0x80, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x38, 0x01, 0xC0, 0x1F, 0xFE, 0xFF, 0xF7, 0xFF, 0x80, 0x1F, 0x03, - 0xF1, 0xF0, 0x3F, 0x1F, 0x07, 0xF1, 0xF0, 0x7F, 0x3F, 0x0F, 0xE3, 0xF0, - 0xEE, 0x3B, 0x1E, 0xE3, 0xB1, 0xDE, 0x3B, 0x1D, 0xE7, 0xB3, 0x9C, 0x7B, - 0x39, 0xC7, 0x37, 0x9C, 0x73, 0x73, 0xCF, 0x3F, 0x3C, 0xF3, 0xE3, 0x8F, - 0x3E, 0x38, 0xE3, 0xC3, 0x8E, 0x3C, 0x78, 0x1E, 0x03, 0x87, 0xC0, 0xE1, - 0xF0, 0x38, 0x7C, 0x1E, 0x1F, 0x87, 0x8F, 0xE1, 0xC3, 0xB8, 0x70, 0xEF, - 0x1C, 0x39, 0xCF, 0x1E, 0x73, 0xC7, 0x8E, 0xE1, 0xC3, 0xB8, 0x70, 0xEE, - 0x1C, 0x1F, 0x8F, 0x07, 0xE3, 0xC1, 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x00, - 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, 0xC0, 0xF9, 0xE0, - 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x03, 0xDE, - 0x01, 0xEF, 0x00, 0xF7, 0xC0, 0xF1, 0xF0, 0xF0, 0xFF, 0xF0, 0x3F, 0xF0, - 0x07, 0xE0, 0x00, 0x1F, 0xFC, 0x1F, 0xFE, 0x1F, 0xFF, 0x1C, 0x1F, 0x1C, - 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x1E, 0x3F, 0xFC, 0x3F, 0xFC, 0x7F, - 0xF0, 0x78, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE3, 0xE3, - 0xC0, 0xF9, 0xC0, 0x3D, 0xE0, 0x1E, 0xF0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, - 0xFC, 0x03, 0xDE, 0x09, 0xEF, 0x0E, 0xE7, 0xC7, 0xF1, 0xF1, 0xF0, 0xFF, - 0xF8, 0x3F, 0xFE, 0x07, 0xE6, 0x00, 0x02, 0x00, 0x0F, 0xFE, 0x0F, 0xFF, - 0x87, 0xFF, 0xE3, 0x81, 0xF1, 0xC0, 0x78, 0xE0, 0x3C, 0xF0, 0x1C, 0x78, - 0x1E, 0x3F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFF, 0x8F, 0x03, 0xC7, 0x81, 0xE3, - 0x80, 0xF1, 0xC0, 0xF1, 0xE0, 0x78, 0xF0, 0x3C, 0x78, 0x1F, 0x00, 0x03, - 0xF8, 0x0F, 0xFE, 0x1F, 0xFF, 0x1E, 0x1F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, - 0x00, 0x3F, 0x00, 0x1F, 0xF0, 0x0F, 0xFC, 0x01, 0xFE, 0x00, 0x3E, 0xF0, - 0x1E, 0xF0, 0x1E, 0xF8, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x7F, - 0xFE, 0xFF, 0xFD, 0xFF, 0xF8, 0x1C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, - 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x01, - 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x1E, 0x07, 0x1C, - 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x3C, 0x0E, 0x38, 0x0E, 0x78, 0x1E, 0x78, - 0x1E, 0x78, 0x1E, 0x78, 0x1C, 0x70, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, - 0x38, 0xF8, 0x78, 0xFF, 0xF0, 0x7F, 0xE0, 0x1F, 0x80, 0xF0, 0x1F, 0xE0, - 0x39, 0xC0, 0xF3, 0x81, 0xC7, 0x07, 0x8E, 0x0E, 0x1C, 0x3C, 0x3C, 0x70, - 0x79, 0xE0, 0xF3, 0x80, 0xEF, 0x01, 0xDC, 0x03, 0xB8, 0x07, 0xE0, 0x0F, - 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x70, 0x7F, 0x87, 0x83, - 0xFC, 0x3C, 0x3D, 0xE1, 0xE1, 0xEF, 0x1F, 0x0E, 0x78, 0xD8, 0xF3, 0xC6, - 0xC7, 0x0E, 0x76, 0x78, 0x73, 0x33, 0x83, 0xB9, 0x9C, 0x1D, 0xCD, 0xC0, - 0xEC, 0x6E, 0x07, 0xE3, 0xE0, 0x3E, 0x1F, 0x01, 0xF0, 0xF0, 0x0F, 0x87, - 0x80, 0x78, 0x38, 0x03, 0xC1, 0xC0, 0x00, 0x0F, 0x03, 0xC3, 0xC1, 0xE0, - 0xF8, 0xF0, 0x1E, 0x78, 0x07, 0x9E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x0F, - 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xF0, - 0x07, 0x9E, 0x03, 0xC7, 0x80, 0xF0, 0xF0, 0x78, 0x3C, 0x3C, 0x0F, 0x80, - 0x78, 0x1E, 0xF0, 0x79, 0xE0, 0xF3, 0xC3, 0xC3, 0xCF, 0x07, 0x9E, 0x0F, - 0x78, 0x0F, 0xE0, 0x1F, 0x80, 0x3F, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, - 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x1F, 0xFF, - 0x0F, 0xFF, 0x87, 0xFF, 0xC0, 0x03, 0xC0, 0x03, 0xE0, 0x03, 0xE0, 0x03, - 0xE0, 0x03, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, - 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xFF, 0xF0, 0xFF, 0xF8, 0x7F, 0xFC, - 0x00, 0x0F, 0xC3, 0xF0, 0xFC, 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, - 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, - 0x03, 0x80, 0xFC, 0x3F, 0x0F, 0xC0, 0x08, 0x88, 0xC4, 0x44, 0x66, 0x66, - 0x66, 0x62, 0x22, 0x33, 0x33, 0x30, 0x0F, 0xC3, 0xF0, 0xFC, 0x07, 0x03, - 0xC0, 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x03, 0xC0, - 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE0, 0x70, 0xFC, 0x3F, 0x0F, 0xC0, 0x03, - 0x80, 0xF0, 0x1E, 0x07, 0xE1, 0xDC, 0x3B, 0x8E, 0x71, 0x86, 0x70, 0xFC, - 0x1F, 0x83, 0x80, 0x7F, 0xFE, 0xFF, 0xFC, 0xE6, 0x30, 0x07, 0xE0, 0xFF, - 0x8F, 0xFE, 0x70, 0xE0, 0x07, 0x03, 0xF8, 0xFF, 0xCF, 0x9E, 0xF0, 0xF7, - 0x8F, 0x3F, 0xF8, 0xFF, 0xC3, 0xDF, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x9F, 0x07, 0xFF, 0x0F, 0xFF, 0x3E, 0x3E, - 0x78, 0x3C, 0xF0, 0x79, 0xC0, 0xF3, 0x81, 0xEF, 0x07, 0x9F, 0x1F, 0x3F, - 0xFC, 0x7F, 0xF0, 0xEF, 0x80, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF8, 0xF7, - 0x87, 0xB8, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0xF7, 0x8F, 0x1F, 0xF8, 0xFF, - 0x81, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, - 0xC0, 0xF7, 0x87, 0xFE, 0x1F, 0xFC, 0x7C, 0x78, 0xF0, 0x73, 0xC0, 0xE7, - 0x81, 0x8F, 0x07, 0x1E, 0x0E, 0x3E, 0x3C, 0x7F, 0xF8, 0x7F, 0xE0, 0x7D, - 0xC0, 0x07, 0xC0, 0xFF, 0x8F, 0xFE, 0xF0, 0xF7, 0x87, 0xFF, 0xFF, 0xFF, - 0xFE, 0x00, 0xF0, 0x07, 0xC7, 0x9F, 0xF8, 0xFF, 0x81, 0xF0, 0x00, 0x07, - 0x87, 0xC7, 0xE3, 0xC1, 0xC3, 0xF9, 0xFC, 0x78, 0x3C, 0x1C, 0x0E, 0x07, - 0x07, 0x83, 0x81, 0xC0, 0xE0, 0xF0, 0x78, 0x00, 0x03, 0xDE, 0x1F, 0xF8, - 0x7F, 0xF1, 0xF1, 0xE3, 0xC1, 0xCF, 0x03, 0x9E, 0x06, 0x3C, 0x0C, 0x78, - 0x38, 0xF8, 0xF1, 0xFF, 0xC1, 0xFF, 0x81, 0xF7, 0x00, 0x0E, 0x3C, 0x3C, - 0x78, 0xF0, 0x7F, 0xC0, 0x7E, 0x00, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x07, - 0x00, 0x3C, 0x00, 0xF7, 0xC3, 0xBF, 0x8F, 0xFF, 0x3C, 0x3D, 0xE0, 0xE7, - 0x83, 0x9C, 0x0E, 0x70, 0x79, 0xC1, 0xEF, 0x07, 0x3C, 0x1C, 0xE0, 0x73, - 0x83, 0xC0, 0x0E, 0x3C, 0x70, 0x00, 0x03, 0x8F, 0x1E, 0x38, 0x71, 0xE3, - 0xC7, 0x0E, 0x1C, 0x78, 0xF1, 0xC0, 0x03, 0xC0, 0xE0, 0x38, 0x00, 0x00, - 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0x38, 0x0E, 0x03, 0x81, - 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0xF0, 0xF8, 0x3E, 0x0F, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x87, 0x87, 0x1E, - 0x0E, 0x78, 0x3D, 0xE0, 0x7F, 0x80, 0xFE, 0x01, 0xFE, 0x03, 0xFC, 0x0F, - 0x38, 0x1E, 0x78, 0x38, 0xF0, 0x70, 0xF0, 0xE1, 0xE0, 0x0E, 0x3C, 0x78, - 0xE1, 0xC3, 0x8F, 0x1E, 0x38, 0x71, 0xE3, 0xC7, 0x0E, 0x1C, 0x78, 0xF1, - 0xC0, 0x1C, 0xF1, 0xE0, 0xEF, 0xDF, 0x87, 0xFF, 0xFE, 0x7C, 0x78, 0xF3, - 0xC3, 0x87, 0x9C, 0x1C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x78, 0x70, - 0xF3, 0xC3, 0x87, 0x9C, 0x3C, 0x38, 0xE1, 0xE1, 0xC7, 0x0E, 0x0E, 0x00, - 0x3D, 0xF0, 0xEF, 0xE3, 0xFF, 0xCF, 0x0F, 0x78, 0x39, 0xC0, 0xE7, 0x03, - 0x9C, 0x1E, 0xF0, 0x7B, 0xC1, 0xCE, 0x07, 0x38, 0x1C, 0xE0, 0xF0, 0x07, - 0xE0, 0x7F, 0xE3, 0xFF, 0x9F, 0x1F, 0x78, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, - 0x1F, 0xF0, 0x7B, 0xE3, 0xE7, 0xFF, 0x1F, 0xF8, 0x1F, 0x80, 0x0E, 0x7C, - 0x0F, 0xFE, 0x0F, 0xFF, 0x1F, 0x1F, 0x1E, 0x0F, 0x1E, 0x0F, 0x1C, 0x0F, - 0x1C, 0x0F, 0x3C, 0x1E, 0x3E, 0x3E, 0x3F, 0xFC, 0x3F, 0xF8, 0x7B, 0xE0, - 0x78, 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xF0, 0x00, 0x07, 0xBC, - 0x7F, 0xF3, 0xFF, 0x9F, 0x1E, 0x78, 0x3B, 0xC0, 0xEF, 0x03, 0x3C, 0x0C, - 0xF0, 0x73, 0xE3, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0x03, 0x80, 0x1E, - 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3D, 0xCE, 0xE3, 0xF8, 0xF0, 0x78, - 0x1E, 0x07, 0x01, 0xC0, 0xF0, 0x3C, 0x0E, 0x03, 0x80, 0xE0, 0x00, 0x1F, - 0xC3, 0xFE, 0x7F, 0xFF, 0x0F, 0xF0, 0x0F, 0xE0, 0x7F, 0xC1, 0xFE, 0x03, - 0xEE, 0x1E, 0xFF, 0xC7, 0xFC, 0x3F, 0x00, 0x1E, 0x1E, 0x1C, 0x7F, 0xFF, - 0x3C, 0x38, 0x38, 0x38, 0x78, 0x78, 0x70, 0x7C, 0xF8, 0x78, 0x38, 0x3C, - 0xE0, 0xE3, 0x83, 0x9E, 0x0E, 0x70, 0x79, 0xC1, 0xE7, 0x07, 0x3C, 0x1C, - 0xF0, 0xF3, 0xE7, 0xCF, 0xFF, 0x1F, 0xF8, 0x3C, 0xE0, 0xF0, 0x77, 0x87, - 0xBC, 0x38, 0xE3, 0xC7, 0x1C, 0x39, 0xE1, 0xCE, 0x0E, 0xE0, 0x77, 0x03, - 0xF0, 0x0F, 0x80, 0x78, 0x03, 0xC0, 0x00, 0xF1, 0xC3, 0xF8, 0xE3, 0xFC, - 0xF1, 0xDE, 0x79, 0xEF, 0x3C, 0xE7, 0xB6, 0x73, 0xDB, 0x70, 0xED, 0xB8, - 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3C, 0x0F, 0x1E, 0x07, 0x8E, 0x00, 0x0F, - 0x1E, 0x0F, 0x3C, 0x0F, 0x38, 0x07, 0x70, 0x07, 0xF0, 0x03, 0xE0, 0x03, - 0xC0, 0x07, 0xC0, 0x0F, 0xE0, 0x1E, 0xE0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, - 0x78, 0x3C, 0x1C, 0x78, 0x78, 0xF0, 0xE1, 0xE3, 0xC1, 0xC7, 0x03, 0x9E, - 0x07, 0x38, 0x0E, 0xE0, 0x1D, 0xC0, 0x3F, 0x00, 0x7E, 0x00, 0x78, 0x00, - 0xF0, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xE0, 0x00, 0x1F, - 0xF9, 0xFF, 0xCF, 0xFC, 0x01, 0xE0, 0x3E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3F, 0xF9, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0x87, 0xC3, - 0xE3, 0xC1, 0xC0, 0xE0, 0x70, 0x38, 0x3C, 0x1C, 0x0E, 0x1E, 0x0F, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0F, 0x87, 0xC1, 0xC0, 0x0C, - 0x30, 0x86, 0x18, 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x61, 0x86, 0x18, 0x63, - 0x0C, 0x30, 0xC2, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE0, 0x70, 0x38, 0x3C, - 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xE0, 0xF0, 0xE0, 0x70, 0x78, 0x38, 0x1C, - 0x0E, 0x07, 0x07, 0x8F, 0x87, 0xC3, 0xC0, 0x3C, 0x07, 0xE0, 0xC7, 0x30, - 0x7E, 0x01, 0xC0 }; - -const GFXglyph FreeSansBoldOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 7, 17, 8, 3, -16 }, // 0x21 '!' - { 15, 10, 6, 11, 4, -17 }, // 0x22 '"' - { 23, 15, 16, 13, 1, -15 }, // 0x23 '#' - { 53, 15, 21, 13, 1, -17 }, // 0x24 '$' - { 93, 18, 18, 21, 3, -17 }, // 0x25 '%' - { 134, 15, 17, 17, 2, -16 }, // 0x26 '&' - { 166, 4, 6, 6, 4, -17 }, // 0x27 ''' - { 169, 9, 22, 8, 2, -17 }, // 0x28 '(' - { 194, 9, 22, 8, -1, -16 }, // 0x29 ')' - { 219, 8, 8, 9, 3, -17 }, // 0x2A '*' - { 227, 12, 11, 14, 2, -10 }, // 0x2B '+' - { 244, 5, 7, 7, 1, -2 }, // 0x2C ',' - { 249, 7, 3, 8, 2, -7 }, // 0x2D '-' - { 252, 4, 3, 7, 2, -2 }, // 0x2E '.' - { 254, 10, 17, 7, 0, -16 }, // 0x2F '/' - { 276, 13, 17, 13, 2, -16 }, // 0x30 '0' - { 304, 9, 17, 13, 4, -16 }, // 0x31 '1' - { 324, 15, 17, 13, 1, -16 }, // 0x32 '2' - { 356, 13, 17, 13, 2, -16 }, // 0x33 '3' - { 384, 13, 17, 13, 1, -16 }, // 0x34 '4' - { 412, 14, 17, 13, 1, -16 }, // 0x35 '5' - { 442, 13, 17, 13, 2, -16 }, // 0x36 '6' - { 470, 13, 17, 13, 3, -16 }, // 0x37 '7' - { 498, 14, 17, 13, 1, -16 }, // 0x38 '8' - { 528, 14, 17, 13, 2, -16 }, // 0x39 '9' - { 558, 6, 12, 8, 3, -11 }, // 0x3A ':' - { 567, 7, 16, 8, 2, -11 }, // 0x3B ';' - { 581, 13, 12, 14, 2, -11 }, // 0x3C '<' - { 601, 14, 9, 14, 1, -9 }, // 0x3D '=' - { 617, 13, 12, 14, 1, -10 }, // 0x3E '>' - { 637, 13, 18, 15, 4, -17 }, // 0x3F '?' - { 667, 22, 21, 23, 2, -17 }, // 0x40 '@' - { 725, 17, 18, 17, 0, -17 }, // 0x41 'A' - { 764, 17, 18, 17, 2, -17 }, // 0x42 'B' - { 803, 17, 18, 17, 3, -17 }, // 0x43 'C' - { 842, 17, 18, 17, 2, -17 }, // 0x44 'D' - { 881, 16, 18, 16, 2, -17 }, // 0x45 'E' - { 917, 16, 18, 15, 2, -17 }, // 0x46 'F' - { 953, 17, 18, 19, 3, -17 }, // 0x47 'G' - { 992, 17, 18, 17, 2, -17 }, // 0x48 'H' - { 1031, 7, 18, 7, 2, -17 }, // 0x49 'I' - { 1047, 14, 18, 13, 1, -17 }, // 0x4A 'J' - { 1079, 18, 18, 17, 2, -17 }, // 0x4B 'K' - { 1120, 13, 18, 15, 2, -17 }, // 0x4C 'L' - { 1150, 20, 18, 20, 2, -17 }, // 0x4D 'M' - { 1195, 18, 18, 17, 2, -17 }, // 0x4E 'N' - { 1236, 17, 18, 19, 3, -17 }, // 0x4F 'O' - { 1275, 16, 18, 16, 2, -17 }, // 0x50 'P' - { 1311, 17, 19, 19, 3, -17 }, // 0x51 'Q' - { 1352, 17, 18, 17, 2, -17 }, // 0x52 'R' - { 1391, 16, 18, 16, 2, -17 }, // 0x53 'S' - { 1427, 15, 18, 15, 3, -17 }, // 0x54 'T' - { 1461, 16, 18, 17, 3, -17 }, // 0x55 'U' - { 1497, 15, 18, 16, 4, -17 }, // 0x56 'V' - { 1531, 21, 18, 23, 4, -17 }, // 0x57 'W' - { 1579, 18, 18, 16, 1, -17 }, // 0x58 'X' - { 1620, 15, 18, 16, 4, -17 }, // 0x59 'Y' - { 1654, 17, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1693, 10, 23, 8, 1, -17 }, // 0x5B '[' - { 1722, 4, 23, 7, 3, -22 }, // 0x5C '\' - { 1734, 10, 23, 8, 0, -17 }, // 0x5D ']' - { 1763, 11, 11, 14, 3, -16 }, // 0x5E '^' - { 1779, 15, 2, 13, -2, 4 }, // 0x5F '_' - { 1783, 4, 3, 8, 4, -17 }, // 0x60 '`' - { 1785, 13, 13, 13, 1, -12 }, // 0x61 'a' - { 1807, 15, 18, 15, 1, -17 }, // 0x62 'b' - { 1841, 13, 13, 13, 2, -12 }, // 0x63 'c' - { 1863, 15, 18, 15, 2, -17 }, // 0x64 'd' - { 1897, 13, 13, 13, 2, -12 }, // 0x65 'e' - { 1919, 9, 18, 8, 2, -17 }, // 0x66 'f' - { 1940, 15, 18, 15, 1, -12 }, // 0x67 'g' - { 1974, 14, 18, 15, 2, -17 }, // 0x68 'h' - { 2006, 7, 18, 7, 2, -17 }, // 0x69 'i' - { 2022, 10, 23, 7, -1, -17 }, // 0x6A 'j' - { 2051, 15, 18, 13, 1, -17 }, // 0x6B 'k' - { 2085, 7, 18, 7, 2, -17 }, // 0x6C 'l' - { 2101, 21, 13, 21, 1, -12 }, // 0x6D 'm' - { 2136, 14, 13, 15, 2, -12 }, // 0x6E 'n' - { 2159, 14, 13, 15, 2, -12 }, // 0x6F 'o' - { 2182, 16, 18, 15, 0, -12 }, // 0x70 'p' - { 2218, 14, 18, 15, 2, -12 }, // 0x71 'q' - { 2250, 10, 13, 9, 2, -12 }, // 0x72 'r' - { 2267, 12, 13, 13, 3, -12 }, // 0x73 's' - { 2287, 8, 15, 8, 2, -14 }, // 0x74 't' - { 2302, 14, 13, 15, 2, -12 }, // 0x75 'u' - { 2325, 13, 13, 13, 3, -12 }, // 0x76 'v' - { 2347, 17, 13, 19, 3, -12 }, // 0x77 'w' - { 2375, 16, 13, 13, 0, -12 }, // 0x78 'x' - { 2401, 15, 18, 13, 1, -12 }, // 0x79 'y' - { 2435, 13, 13, 12, 1, -12 }, // 0x7A 'z' - { 2457, 9, 23, 9, 3, -17 }, // 0x7B '{' - { 2483, 6, 23, 7, 1, -17 }, // 0x7C '|' - { 2501, 9, 23, 9, 0, -17 }, // 0x7D '}' - { 2527, 12, 5, 14, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique12pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique12pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 3207 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h deleted file mode 100644 index 79c748c78..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h +++ /dev/null @@ -1,545 +0,0 @@ -const uint8_t FreeSansBoldOblique18pt7bBitmaps[] PROGMEM = { - 0x06, 0x01, 0xC0, 0x7C, 0x1F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x83, - 0xC0, 0xF0, 0x7C, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x01, 0xC0, - 0x60, 0x7C, 0x1F, 0x07, 0xC3, 0xF0, 0xF8, 0x00, 0x78, 0x7B, 0xC3, 0xFE, - 0x3F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0x83, 0x9C, 0x1C, 0xC0, 0xC0, 0x00, - 0x3C, 0x38, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0xF0, - 0xE0, 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0x1F, 0xFF, 0xF8, - 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x00, 0xE1, 0xE0, 0x07, 0x8F, 0x00, 0x1C, - 0x3C, 0x07, 0xFF, 0xFE, 0x1F, 0xFF, 0xF8, 0x7F, 0xFF, 0xE3, 0xFF, 0xFF, - 0x01, 0xE3, 0xC0, 0x0F, 0x0E, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xC0, 0x07, - 0x8F, 0x00, 0x3C, 0x38, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x80, 0x00, 0xFC, - 0x00, 0xFF, 0xC0, 0x3F, 0xFC, 0x0F, 0xFF, 0xC3, 0xE6, 0x78, 0x78, 0xCF, - 0x1E, 0x39, 0xE3, 0xC7, 0x3C, 0x78, 0xC0, 0x0F, 0x98, 0x01, 0xFF, 0x00, - 0x1F, 0xF8, 0x01, 0xFF, 0x80, 0x1F, 0xF8, 0x00, 0x7F, 0x80, 0x0F, 0xF0, - 0x03, 0xBE, 0x00, 0x67, 0xCF, 0x8C, 0xF9, 0xF1, 0x9F, 0x3E, 0x77, 0xC7, - 0xEF, 0xF8, 0x7F, 0xFE, 0x0F, 0xFF, 0x80, 0xFF, 0xE0, 0x03, 0xE0, 0x00, - 0x38, 0x00, 0x06, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x07, 0x01, 0xE0, - 0x03, 0x81, 0xFE, 0x00, 0xC0, 0xFF, 0x80, 0x70, 0x7F, 0xF0, 0x38, 0x1E, - 0x3C, 0x1C, 0x0F, 0x07, 0x06, 0x03, 0x81, 0xC3, 0x80, 0xE0, 0xF1, 0xC0, - 0x3C, 0x78, 0xE0, 0x0F, 0xFE, 0x30, 0x01, 0xFF, 0x1C, 0x00, 0x7F, 0x8E, - 0x00, 0x07, 0x83, 0x00, 0x00, 0x01, 0x83, 0xE0, 0x00, 0xE3, 0xFE, 0x00, - 0x71, 0xFF, 0x80, 0x18, 0xFF, 0xF0, 0x0C, 0x3C, 0x3C, 0x07, 0x1C, 0x07, - 0x03, 0x87, 0x01, 0xC0, 0xC1, 0xE1, 0xE0, 0x60, 0x7F, 0xF8, 0x38, 0x0F, - 0xFC, 0x1C, 0x03, 0xFE, 0x06, 0x00, 0x3E, 0x00, 0x00, 0x1F, 0x00, 0x03, - 0xFC, 0x00, 0x3F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0x3C, 0x01, 0xF1, 0xE0, - 0x0F, 0x8F, 0x00, 0x7C, 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xF8, 0x00, 0x3F, - 0x00, 0x03, 0xF0, 0x00, 0x7F, 0xC7, 0x8F, 0xFE, 0x3C, 0xFC, 0xFB, 0xCF, - 0x83, 0xFE, 0xF8, 0x1F, 0xE7, 0xC0, 0x7E, 0x3E, 0x03, 0xE1, 0xF0, 0x1F, - 0x0F, 0xE3, 0xFC, 0x7F, 0xFF, 0xE1, 0xFF, 0xFF, 0x87, 0xFE, 0x7C, 0x0F, - 0xE1, 0xF0, 0x7B, 0xFF, 0xEF, 0x7B, 0x9C, 0xC0, 0x00, 0x78, 0x07, 0x80, - 0x78, 0x03, 0x80, 0x3C, 0x03, 0xC0, 0x1E, 0x01, 0xE0, 0x1E, 0x00, 0xF0, - 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF0, 0x07, - 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xE0, 0x07, 0x80, - 0x1C, 0x00, 0x01, 0xC0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x01, 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, - 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x1E, - 0x00, 0xF0, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x1E, 0x01, - 0xE0, 0x1E, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x00, 0x03, 0x00, 0x70, 0x07, - 0x04, 0x63, 0xFF, 0xF7, 0xFF, 0x1F, 0x83, 0xF0, 0x3B, 0x87, 0x38, 0x21, - 0x00, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x7C, 0x07, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, - 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x3E, 0x7C, 0xF3, 0xE7, 0xC1, 0x87, 0x0C, 0x39, 0xE3, 0x00, 0x7F, - 0xDF, 0xFF, 0xFB, 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x0E, 0x00, 0x18, - 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x1C, 0x00, 0x30, 0x00, - 0xE0, 0x01, 0x80, 0x07, 0x00, 0x0C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, - 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, - 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xC0, - 0x7F, 0xF8, 0x3F, 0xFE, 0x0F, 0x8F, 0xC7, 0xC1, 0xF1, 0xE0, 0x7C, 0xF8, - 0x1F, 0x3E, 0x07, 0xDF, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x3F, 0x7C, 0x0F, - 0xBF, 0x03, 0xEF, 0x80, 0xFB, 0xE0, 0x3E, 0xF8, 0x1F, 0x3E, 0x07, 0xCF, - 0x81, 0xE3, 0xE0, 0xF8, 0xFC, 0x7C, 0x1F, 0xFF, 0x07, 0xFF, 0x80, 0xFF, - 0xC0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0xFF, - 0x3F, 0xF3, 0xFF, 0x9F, 0xFC, 0x03, 0xE0, 0x1F, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x03, 0xE0, 0x1E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, - 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x3E, 0x00, 0x00, 0x1F, 0x80, - 0x07, 0xFF, 0x00, 0x7F, 0xFC, 0x07, 0xFF, 0xE0, 0x7E, 0x1F, 0x83, 0xE0, - 0x7C, 0x1F, 0x03, 0xE1, 0xF0, 0x1F, 0x0F, 0x80, 0xF8, 0x00, 0x0F, 0x80, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xE0, 0x00, 0xFC, - 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, - 0x00, 0x03, 0xF0, 0x00, 0x1F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xF0, - 0x7F, 0xFF, 0x80, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x03, 0xFF, 0xE0, 0x7F, - 0xFF, 0x0F, 0x83, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, 0xE0, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0xFC, 0x00, 0xFF, 0x80, 0x0F, 0xF0, 0x00, 0xFF, 0x80, - 0x0F, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xCF, 0x80, 0x7C, - 0xF8, 0x07, 0xCF, 0x80, 0xF8, 0xFC, 0x3F, 0x8F, 0xFF, 0xF0, 0x7F, 0xFE, - 0x03, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, - 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xFC, 0x00, 0xEF, 0x80, 0x3D, 0xF0, 0x0F, - 0x7C, 0x03, 0xCF, 0x80, 0xF1, 0xF0, 0x1C, 0x3E, 0x07, 0x07, 0xC1, 0xE1, - 0xF0, 0x78, 0x3E, 0x1E, 0x07, 0xC3, 0xFF, 0xFE, 0x7F, 0xFF, 0xDF, 0xFF, - 0xFB, 0xFF, 0xFF, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0xFF, 0xF0, 0x3F, 0xFF, 0x03, - 0xFF, 0xF0, 0x3F, 0xFF, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x00, - 0xF7, 0xE0, 0x0F, 0xFF, 0x01, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xF0, 0xFC, - 0x3E, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, - 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x8F, 0xC3, 0xF0, 0xFF, 0xFE, 0x07, 0xFF, - 0xC0, 0x3F, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, - 0xFF, 0x03, 0xFF, 0xE0, 0xF8, 0x7E, 0x3E, 0x07, 0xC7, 0x80, 0x01, 0xF0, - 0x00, 0x3C, 0xFC, 0x07, 0xFF, 0xC1, 0xFF, 0xFC, 0x3F, 0xFF, 0xC7, 0xE1, - 0xF8, 0xF8, 0x1F, 0x3E, 0x03, 0xE7, 0x80, 0x7C, 0xF0, 0x0F, 0x9E, 0x01, - 0xE3, 0xC0, 0x7C, 0x78, 0x1F, 0x0F, 0x87, 0xE0, 0xFF, 0xF8, 0x1F, 0xFE, - 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xF9, 0xFF, - 0xFF, 0x7F, 0xFF, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0x80, 0x01, 0xF0, 0x00, 0x7C, - 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0x07, 0xC0, 0x00, 0x00, 0x7F, 0x00, 0x1F, 0xFC, 0x07, 0xFF, 0xE0, 0xFF, - 0xFF, 0x0F, 0x81, 0xF1, 0xF0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1F, - 0x07, 0xE0, 0xFF, 0xFC, 0x07, 0xFF, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, - 0xF0, 0xFC, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x07, 0xCF, 0x80, 0x7C, - 0xF8, 0x0F, 0x8F, 0x80, 0xF8, 0xFC, 0x3F, 0x0F, 0xFF, 0xF0, 0x7F, 0xFE, - 0x03, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, - 0xFF, 0x03, 0xFF, 0xE0, 0xFC, 0x3E, 0x3F, 0x03, 0xC7, 0xC0, 0x79, 0xF0, - 0x0F, 0x3E, 0x01, 0xE7, 0xC0, 0x3C, 0xF8, 0x0F, 0x9F, 0x03, 0xE3, 0xF0, - 0xFC, 0x7F, 0xFF, 0x87, 0xFF, 0xF0, 0x7F, 0xFE, 0x07, 0xE7, 0x80, 0x01, - 0xF0, 0x00, 0x3C, 0x7C, 0x0F, 0x8F, 0xC3, 0xE1, 0xFF, 0xF8, 0x1F, 0xFE, - 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0F, 0x87, 0xC3, 0xC3, 0xE1, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE1, 0xF0, 0xF0, - 0xF8, 0x7C, 0x00, 0x07, 0xC1, 0xF0, 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x83, 0xE0, 0xF0, 0x7C, - 0x1F, 0x00, 0xC0, 0x70, 0x18, 0x0E, 0x0F, 0x03, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x3C, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x3F, 0xFC, 0x3F, 0xFC, 0x1F, - 0xFC, 0x07, 0xFC, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0x80, 0x1F, - 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x78, 0x00, - 0x03, 0x00, 0x1F, 0xFF, 0xF3, 0xFF, 0xFE, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xC7, 0xFF, 0xFC, 0xFF, 0xFF, 0x8F, 0xFF, 0xF8, 0x18, 0x00, 0x03, 0xC0, - 0x00, 0x7F, 0x00, 0x0F, 0xF8, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x3F, - 0xF8, 0x01, 0xFF, 0x00, 0x07, 0xE0, 0x07, 0xFC, 0x07, 0xFF, 0x07, 0xFF, - 0x87, 0xFF, 0x80, 0xFF, 0x80, 0x3F, 0x80, 0x07, 0x80, 0x00, 0x80, 0x00, - 0x00, 0x03, 0xF8, 0x03, 0xFF, 0xC1, 0xFF, 0xF8, 0xFF, 0xFE, 0x7E, 0x1F, - 0xDF, 0x03, 0xFF, 0x80, 0x7F, 0xE0, 0x1F, 0xF8, 0x07, 0xC0, 0x03, 0xE0, - 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, - 0x80, 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x03, 0xFF, 0xFE, - 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xE0, 0x0F, 0x80, 0x00, - 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF1, 0xCF, 0x0F, 0x03, 0xFD, - 0xC7, 0x8F, 0x03, 0xFF, 0xE1, 0xC7, 0x03, 0xE3, 0xE0, 0xE7, 0x03, 0xC0, - 0xF0, 0x73, 0x83, 0xC0, 0x78, 0x3B, 0x81, 0xE0, 0x38, 0x1D, 0xC1, 0xE0, - 0x1C, 0x1C, 0xC0, 0xF0, 0x1C, 0x0E, 0xE0, 0x70, 0x0E, 0x0F, 0x70, 0x78, - 0x0E, 0x07, 0x38, 0x3C, 0x0F, 0x07, 0x1C, 0x1E, 0x0F, 0x87, 0x8E, 0x0F, - 0x8F, 0xCF, 0x87, 0x07, 0xFF, 0xFF, 0x83, 0xC1, 0xFE, 0x7F, 0x00, 0xE0, - 0x3C, 0x1F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x01, 0x00, 0x03, 0xF8, 0x07, 0x80, 0x00, 0xFF, 0xFF, 0xC0, 0x00, - 0x1F, 0xFF, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, - 0x0F, 0xE0, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x03, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1F, 0x7C, 0x00, 0x7E, 0xF8, 0x00, 0xF9, - 0xF0, 0x03, 0xF3, 0xE0, 0x07, 0xC3, 0xE0, 0x1F, 0x87, 0xC0, 0x3E, 0x0F, - 0x80, 0xF8, 0x1F, 0x01, 0xF0, 0x3E, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF8, - 0x3F, 0xFF, 0xF0, 0xFF, 0xFF, 0xF1, 0xF0, 0x03, 0xE7, 0xC0, 0x07, 0xCF, - 0x80, 0x0F, 0xBE, 0x00, 0x1F, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x7C, 0x07, - 0xFF, 0xF0, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, - 0xC0, 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, - 0x80, 0x1E, 0x1F, 0x80, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3F, 0xFF, 0xF8, 0x3E, 0x00, 0xFC, 0x3E, - 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, - 0x00, 0xF8, 0x7C, 0x01, 0xF8, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, - 0xFF, 0xFC, 0x03, 0xFF, 0xFE, 0x07, 0xE0, 0x7F, 0x0F, 0xC0, 0x3F, 0x1F, - 0x80, 0x1F, 0x3F, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x7E, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x7C, 0xF8, - 0x00, 0x7C, 0xFC, 0x00, 0xF8, 0xFC, 0x01, 0xF8, 0x7F, 0x07, 0xF0, 0x7F, - 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x07, - 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xFE, 0x0F, - 0x80, 0x7E, 0x0F, 0x80, 0x3F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, - 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x1F, 0x3F, - 0x00, 0x1F, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, - 0x00, 0x3E, 0x7E, 0x00, 0x7C, 0x7C, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0x7C, - 0x01, 0xF8, 0x7C, 0x07, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xC0, 0xFF, - 0xFF, 0x00, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFE, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x0F, - 0x80, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF0, 0x3F, - 0xFF, 0xF0, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, - 0xFF, 0xF0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xE0, 0xF8, - 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFF, 0xFF, 0x03, 0xFF, 0xFE, - 0x07, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x3F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, 0xFC, 0x03, - 0xFF, 0xFE, 0x07, 0xE0, 0x7E, 0x0F, 0x80, 0x3F, 0x1F, 0x00, 0x1F, 0x3E, - 0x00, 0x1F, 0x3E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0xF8, 0x03, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x07, 0xFE, 0xF8, - 0x07, 0xFE, 0xF8, 0x00, 0x3E, 0xF8, 0x00, 0x3E, 0xFC, 0x00, 0x7E, 0xFC, - 0x00, 0x7C, 0x7E, 0x00, 0xFC, 0x7F, 0x83, 0xFC, 0x3F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xBC, 0x0F, 0xFF, 0x38, 0x03, 0xFC, 0x38, 0x03, 0xE0, 0x07, 0xC0, - 0xF8, 0x01, 0xF0, 0x7E, 0x00, 0x7C, 0x1F, 0x00, 0x3F, 0x07, 0xC0, 0x0F, - 0x81, 0xF0, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x3E, 0x00, 0x3E, 0x0F, 0x80, - 0x1F, 0x83, 0xE0, 0x07, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x1F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC1, 0xF0, 0x03, 0xE0, 0x7C, 0x00, 0xF8, - 0x3F, 0x00, 0x3E, 0x0F, 0x80, 0x0F, 0x83, 0xE0, 0x07, 0xE0, 0xF8, 0x01, - 0xF0, 0x3E, 0x00, 0x7C, 0x1F, 0x80, 0x1F, 0x07, 0xC0, 0x0F, 0xC1, 0xF0, - 0x03, 0xF0, 0x7C, 0x00, 0xF8, 0x3F, 0x00, 0x3E, 0x00, 0x07, 0xC3, 0xF0, - 0xFC, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x7E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, - 0x3F, 0x0F, 0xC3, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, 0xE1, 0xF0, 0x7C, 0x1F, - 0x07, 0xC3, 0xF0, 0xFC, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x01, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x7C, 0x0F, - 0x8F, 0x81, 0xF8, 0xF8, 0x1F, 0x0F, 0x81, 0xF0, 0xF8, 0x1F, 0x0F, 0xC3, - 0xF0, 0xFF, 0xFE, 0x07, 0xFF, 0xC0, 0x3F, 0xF8, 0x01, 0xFC, 0x00, 0x07, - 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0x7C, 0x03, 0xF0, 0x3F, 0x03, 0xF8, - 0x0F, 0x81, 0xF8, 0x03, 0xE0, 0xFC, 0x00, 0xF8, 0x7E, 0x00, 0x7E, 0x3F, - 0x00, 0x1F, 0x1F, 0x80, 0x07, 0xCF, 0xC0, 0x01, 0xF7, 0xE0, 0x00, 0x7F, - 0xF0, 0x00, 0x3F, 0xFC, 0x00, 0x0F, 0xFF, 0x80, 0x03, 0xFF, 0xF0, 0x00, - 0xFE, 0xFC, 0x00, 0x3F, 0x1F, 0x80, 0x1F, 0x87, 0xE0, 0x07, 0xC0, 0xFC, - 0x01, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x01, 0xFC, 0x0F, 0xC0, - 0x3F, 0x03, 0xE0, 0x0F, 0xE0, 0xF8, 0x01, 0xF8, 0x3E, 0x00, 0x3F, 0x00, - 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, - 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xC0, 0x01, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x0F, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, - 0x00, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0x03, - 0xF8, 0x01, 0xFC, 0x07, 0xF0, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0x3F, - 0xC0, 0x3F, 0xE0, 0x7F, 0x80, 0x7F, 0xC0, 0xFF, 0x01, 0xFF, 0x01, 0xFE, - 0x03, 0xFE, 0x07, 0xDC, 0x07, 0x7C, 0x0F, 0xB8, 0x1E, 0xF8, 0x1F, 0x70, - 0x3D, 0xF0, 0x3E, 0xF0, 0xF7, 0xC0, 0xF9, 0xE1, 0xEF, 0x81, 0xF3, 0xC7, - 0x9F, 0x03, 0xE7, 0x8F, 0x3E, 0x07, 0xCF, 0x3C, 0x7C, 0x0F, 0x9E, 0x79, - 0xF0, 0x3E, 0x3C, 0xE3, 0xE0, 0x7C, 0x7B, 0xC7, 0xC0, 0xF8, 0xF7, 0x8F, - 0x81, 0xF1, 0xFE, 0x1E, 0x07, 0xE3, 0xFC, 0x7C, 0x0F, 0x87, 0xF0, 0xF8, - 0x1F, 0x0F, 0xE1, 0xF0, 0x3E, 0x1F, 0x83, 0xE0, 0x7C, 0x3F, 0x0F, 0x81, - 0xF0, 0x7E, 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x7E, 0x00, 0xF8, 0x1F, - 0xC0, 0x1F, 0x03, 0xF8, 0x03, 0xE0, 0x7F, 0x80, 0x7C, 0x0F, 0xF0, 0x1F, - 0x01, 0xFF, 0x03, 0xE0, 0x7F, 0xE0, 0x7C, 0x0F, 0xBC, 0x0F, 0x81, 0xF7, - 0xC1, 0xF0, 0x3E, 0xF8, 0x7C, 0x0F, 0x8F, 0x0F, 0x81, 0xF1, 0xF1, 0xF0, - 0x3E, 0x3E, 0x3E, 0x07, 0xC3, 0xC7, 0xC0, 0xF8, 0x7D, 0xF0, 0x3E, 0x0F, - 0xBE, 0x07, 0xC0, 0xF7, 0xC0, 0xF8, 0x1F, 0xF8, 0x1F, 0x01, 0xFE, 0x03, - 0xC0, 0x3F, 0xC0, 0xF8, 0x07, 0xF8, 0x1F, 0x00, 0x7F, 0x03, 0xE0, 0x0F, - 0xE0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7E, 0x07, 0xF0, - 0x7E, 0x01, 0xF8, 0x7C, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, 0x0F, - 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xFF, 0x80, 0x00, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, 0x00, - 0x1F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, 0x0F, 0x87, 0xE0, - 0x0F, 0x83, 0xF8, 0x1F, 0x80, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0x80, 0x0F, - 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xF0, 0x7F, 0xFF, 0xF0, 0xF8, 0x07, 0xE1, 0xF0, 0x07, 0xC3, - 0xE0, 0x0F, 0x8F, 0xC0, 0x1F, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0xF8, 0x7C, - 0x01, 0xF0, 0xF8, 0x07, 0xC3, 0xFF, 0xFF, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, - 0xF8, 0x1F, 0xFF, 0x80, 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, - 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x3F, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x7F, 0xFF, 0xC0, 0x7F, 0x07, - 0xF0, 0x7E, 0x01, 0xF8, 0x7E, 0x00, 0x7E, 0x3E, 0x00, 0x1F, 0x3E, 0x00, - 0x0F, 0x9E, 0x00, 0x07, 0xDF, 0x00, 0x03, 0xEF, 0x80, 0x01, 0xF7, 0x80, - 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7D, 0xF0, 0x00, 0x3E, 0xF8, - 0x02, 0x1F, 0x7C, 0x03, 0x9F, 0x3E, 0x03, 0xFF, 0x9F, 0x81, 0xFF, 0x87, - 0xE0, 0x7F, 0x83, 0xF8, 0x3F, 0xC0, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF0, - 0x0F, 0xFF, 0xFC, 0x01, 0xFE, 0x1C, 0x00, 0x00, 0x0C, 0x00, 0x07, 0xFF, - 0xF8, 0x07, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0x80, - 0x3F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x0F, 0x80, 0x1F, 0x1F, 0x80, - 0x1E, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7C, 0x1F, 0xFF, 0xF8, 0x1F, 0xFF, - 0xE0, 0x3F, 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x3E, 0x01, 0xF8, 0x3E, 0x00, - 0xF8, 0x3E, 0x00, 0xF8, 0x7E, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x01, - 0xF0, 0x7C, 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0xFC, 0x01, 0xF0, 0xF8, 0x01, - 0xF0, 0xF8, 0x01, 0xF0, 0x00, 0x3F, 0xC0, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, - 0x81, 0xFF, 0xFF, 0x0F, 0xC0, 0xFC, 0x3E, 0x01, 0xF1, 0xF0, 0x07, 0xC7, - 0xC0, 0x1F, 0x1F, 0x00, 0x00, 0x7E, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFF, - 0x80, 0x0F, 0xFF, 0xC0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, 0x03, 0xFE, - 0x00, 0x01, 0xF8, 0x00, 0x03, 0xEF, 0x80, 0x0F, 0xBE, 0x00, 0x3C, 0xFC, - 0x01, 0xF3, 0xF8, 0x1F, 0x87, 0xFF, 0xFE, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, - 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xF0, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, - 0x00, 0x0F, 0x80, 0x1F, 0x1F, 0x80, 0x1F, 0x1F, 0x00, 0x1F, 0x1F, 0x00, - 0x3F, 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x3E, 0x3E, 0x00, 0x3E, 0x3E, 0x00, - 0x7E, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x3E, 0x00, 0x7C, 0x7C, 0x00, - 0x7C, 0x7C, 0x00, 0xFC, 0x7C, 0x00, 0xF8, 0x7C, 0x00, 0xF8, 0x7C, 0x00, - 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x01, 0xF8, 0xF8, 0x01, 0xF0, 0xF8, 0x01, - 0xF0, 0xF8, 0x03, 0xE0, 0xFE, 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0x7F, 0xFF, - 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0xFC, 0x00, 0x7F, 0xF0, 0x03, - 0xE7, 0xC0, 0x0F, 0x9F, 0x00, 0x7C, 0x7C, 0x01, 0xF1, 0xF0, 0x0F, 0x87, - 0xC0, 0x3E, 0x1F, 0x01, 0xF0, 0x7C, 0x07, 0x81, 0xF0, 0x3E, 0x03, 0xC0, - 0xF0, 0x0F, 0x07, 0xC0, 0x3E, 0x1E, 0x00, 0xF8, 0xF8, 0x03, 0xE3, 0xC0, - 0x0F, 0x9F, 0x00, 0x3E, 0x78, 0x00, 0xFB, 0xE0, 0x01, 0xEF, 0x00, 0x07, - 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xE0, - 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x07, 0xE0, 0x1F, 0xF8, - 0x07, 0xE0, 0x3F, 0xF8, 0x0F, 0xE0, 0x3E, 0xF8, 0x0F, 0xE0, 0x7E, 0xF8, - 0x1F, 0xE0, 0x7C, 0xF8, 0x1F, 0xE0, 0x7C, 0xF8, 0x3F, 0xE0, 0xF8, 0xF8, - 0x3D, 0xE0, 0xF8, 0x78, 0x3D, 0xE1, 0xF0, 0x78, 0x79, 0xE1, 0xF0, 0x78, - 0x79, 0xE1, 0xE0, 0x78, 0xF9, 0xE3, 0xE0, 0x78, 0xF1, 0xE3, 0xC0, 0x79, - 0xF1, 0xE7, 0xC0, 0x79, 0xE1, 0xE7, 0x80, 0x79, 0xE1, 0xE7, 0x80, 0x7B, - 0xC1, 0xEF, 0x80, 0x7B, 0xC1, 0xEF, 0x00, 0x7F, 0x81, 0xFF, 0x00, 0x7F, - 0x81, 0xFE, 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x7E, 0x01, 0xF8, 0x00, 0x3E, 0x01, 0xF8, 0x00, 0x3C, - 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xE0, - 0x7E, 0x00, 0xFC, 0x1F, 0x80, 0x1F, 0x83, 0xE0, 0x01, 0xF8, 0xF8, 0x00, - 0x3F, 0x3F, 0x00, 0x03, 0xEF, 0xC0, 0x00, 0x7F, 0xF0, 0x00, 0x0F, 0xFC, - 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x3E, 0xF8, 0x00, 0x0F, 0xDF, 0x80, 0x03, 0xF3, 0xF0, 0x00, 0xFC, - 0x3F, 0x00, 0x3F, 0x07, 0xE0, 0x07, 0xE0, 0xFC, 0x01, 0xF8, 0x0F, 0xC0, - 0x7E, 0x01, 0xF8, 0x1F, 0x80, 0x3F, 0x80, 0x7C, 0x00, 0xFD, 0xF8, 0x07, - 0xE7, 0xE0, 0x1F, 0x1F, 0x80, 0xFC, 0x3E, 0x07, 0xE0, 0xFC, 0x1F, 0x03, - 0xF0, 0xFC, 0x07, 0xC7, 0xE0, 0x1F, 0x1F, 0x00, 0x7E, 0xFC, 0x00, 0xFB, - 0xE0, 0x03, 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x01, - 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xE0, 0x00, - 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0x00, - 0x03, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xF0, 0x7F, 0xFF, 0xF0, 0x00, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, - 0xF0, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x00, 0xE7, 0x39, 0xCE, 0x31, 0x8C, - 0x63, 0x1C, 0xE7, 0x39, 0xCE, 0x31, 0x8C, 0x63, 0x9C, 0xE7, 0x38, 0x01, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x3E, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x1F, 0xF0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, - 0x00, 0x00, 0x7C, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFC, 0x03, 0xFC, 0x03, - 0x9E, 0x07, 0x9E, 0x0F, 0x1E, 0x0F, 0x1E, 0x1E, 0x1E, 0x1C, 0x0F, 0x3C, - 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFE, 0xF3, 0x8C, 0x71, 0x80, 0x01, 0xFE, 0x01, 0xFF, 0xE0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x1F, 0x0F, 0xC7, 0x81, 0xF0, 0x00, 0x7C, 0x00, - 0xFE, 0x07, 0xFF, 0x87, 0xFF, 0xE3, 0xFE, 0xF9, 0xF0, 0x7C, 0xF8, 0x1F, - 0x3E, 0x0F, 0xCF, 0x87, 0xF3, 0xFF, 0xF8, 0xFF, 0xFE, 0x1F, 0xEF, 0x81, - 0xE3, 0xF0, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF9, 0xF8, 0x0F, 0xFF, - 0xC1, 0xFF, 0xFE, 0x1F, 0xFF, 0xE1, 0xFC, 0x3F, 0x1F, 0x83, 0xF1, 0xF0, - 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x1F, 0x3C, 0x01, 0xF3, 0xC0, 0x1F, 0x3C, - 0x03, 0xE7, 0xC0, 0x3E, 0x7E, 0x07, 0xC7, 0xF1, 0xFC, 0x7F, 0xFF, 0x87, - 0xFF, 0xF0, 0xFB, 0xFE, 0x0F, 0x9F, 0x80, 0x00, 0xFC, 0x01, 0xFF, 0xC0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF7, 0xC0, 0x7D, 0xF0, - 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x0F, - 0xBE, 0x07, 0xCF, 0xC3, 0xF1, 0xFF, 0xF8, 0x7F, 0xFC, 0x0F, 0xFE, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, - 0x3E, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x7E, 0x7C, - 0x07, 0xFD, 0xF0, 0x3F, 0xFF, 0xC1, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, - 0x07, 0xE1, 0xF0, 0x1F, 0x87, 0xC0, 0x3C, 0x3E, 0x00, 0xF0, 0xF8, 0x07, - 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, - 0xF0, 0xFE, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x7E, - 0x7C, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xE0, 0x3F, 0xFE, 0x0F, 0xFF, 0xE3, - 0xF0, 0x7E, 0x7C, 0x07, 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0x7F, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x3F, - 0x07, 0xE3, 0xFF, 0xF8, 0x7F, 0xFE, 0x03, 0xFF, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0xF8, 0x1F, 0xC1, 0xFE, 0x0F, 0xF0, 0x7C, 0x07, 0xC0, 0x3E, 0x0F, - 0xFE, 0x7F, 0xF3, 0xFF, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, - 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x78, 0x07, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0x80, 0xF8, 0x07, 0xC0, 0x00, 0x00, 0x7C, 0x7C, 0x07, 0xFD, - 0xF0, 0x3F, 0xF7, 0x81, 0xFF, 0xFE, 0x0F, 0xE3, 0xF8, 0x3E, 0x07, 0xE1, - 0xF8, 0x0F, 0x87, 0xC0, 0x3C, 0x1E, 0x00, 0xF0, 0xF8, 0x03, 0xC3, 0xE0, - 0x1F, 0x0F, 0x80, 0x78, 0x3E, 0x03, 0xE0, 0xF8, 0x1F, 0x83, 0xF0, 0xFE, - 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0x3F, 0xEF, 0x00, 0x3E, 0x7C, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xC3, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3F, 0x0F, - 0xC0, 0x7F, 0xFE, 0x00, 0xFF, 0xF0, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x0F, 0x80, 0x00, 0xF8, 0xF8, 0x0F, 0xBF, 0xE0, 0xFF, 0xFF, 0x0F, - 0xFF, 0xF1, 0xFC, 0x3F, 0x1F, 0x81, 0xF1, 0xF0, 0x1F, 0x1F, 0x01, 0xF1, - 0xE0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, - 0x7C, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, 0x07, - 0xCF, 0x80, 0x78, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, - 0x0F, 0x87, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, - 0x00, 0x3E, 0x00, 0x78, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, - 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x80, - 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, - 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x1F, 0xC0, 0x3F, 0x80, - 0x7E, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, - 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, - 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x07, 0xC7, 0xE0, 0x3E, 0x7E, 0x01, - 0xF7, 0xE0, 0x0F, 0xFE, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x3F, 0xFC, - 0x01, 0xFF, 0xE0, 0x0F, 0xDF, 0x00, 0xFC, 0xFC, 0x07, 0xC3, 0xE0, 0x3E, - 0x1F, 0x01, 0xF0, 0xFC, 0x0F, 0x83, 0xE0, 0xF8, 0x1F, 0x87, 0xC0, 0xFC, - 0x00, 0x07, 0xC1, 0xF0, 0x7C, 0x3E, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x1F, - 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x0F, 0x83, 0xE0, 0xF8, 0x3E, 0x0F, 0x87, - 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC3, 0xE0, 0xF8, 0x3E, 0x00, 0x0F, 0x8F, - 0x83, 0xF0, 0x3E, 0xFF, 0x3F, 0xE0, 0xF7, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, - 0xFF, 0x1F, 0xC7, 0xF8, 0x7C, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, 0x3E, 0x07, - 0xCF, 0x81, 0xF0, 0x3E, 0x3E, 0x07, 0xC0, 0xF8, 0xF8, 0x1F, 0x03, 0xE3, - 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x7C, 0x0F, 0x81, 0xF1, 0xF0, - 0x3E, 0x07, 0xC7, 0xC0, 0xF8, 0x1F, 0x1F, 0x03, 0xE0, 0x7C, 0x7C, 0x0F, - 0x81, 0xE3, 0xE0, 0x7C, 0x0F, 0x8F, 0x81, 0xF0, 0x3E, 0x00, 0x0F, 0x8F, - 0x80, 0xFB, 0xFE, 0x0F, 0xFF, 0xF1, 0xFF, 0xFF, 0x1F, 0xC3, 0xF1, 0xF8, - 0x1F, 0x1F, 0x01, 0xF1, 0xF0, 0x1F, 0x3E, 0x01, 0xF3, 0xE0, 0x3E, 0x3E, - 0x03, 0xE3, 0xE0, 0x3E, 0x3C, 0x03, 0xE7, 0xC0, 0x3E, 0x7C, 0x07, 0xC7, - 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0x80, 0x7C, 0xF8, 0x07, 0x80, 0x00, 0xFE, - 0x00, 0x7F, 0xF0, 0x3F, 0xFF, 0x0F, 0xFF, 0xE3, 0xF8, 0xFE, 0x7C, 0x0F, - 0xDF, 0x00, 0xFB, 0xE0, 0x1F, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xE0, 0x1F, - 0xFC, 0x03, 0xEF, 0x80, 0x7D, 0xF8, 0x1F, 0x3F, 0x07, 0xE3, 0xFF, 0xF8, - 0x7F, 0xFE, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xE7, 0xE0, 0x0F, - 0xBF, 0xC0, 0x7D, 0xFF, 0x81, 0xFF, 0xFE, 0x07, 0xF0, 0xFC, 0x1F, 0x81, - 0xF0, 0x7C, 0x07, 0xC3, 0xE0, 0x1F, 0x0F, 0x80, 0x7C, 0x3E, 0x01, 0xF0, - 0xF0, 0x07, 0xC3, 0xC0, 0x3E, 0x1F, 0x00, 0xF8, 0x7E, 0x07, 0xC1, 0xFC, - 0x7F, 0x07, 0xFF, 0xF8, 0x1F, 0xFF, 0xC0, 0xFB, 0xFE, 0x03, 0xE7, 0xE0, - 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, - 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x01, - 0xF1, 0xF0, 0x7F, 0xDF, 0x0F, 0xFD, 0xF1, 0xFF, 0xFE, 0x3F, 0x8F, 0xE3, - 0xE0, 0x7E, 0x7C, 0x03, 0xE7, 0xC0, 0x3E, 0xF8, 0x03, 0xCF, 0x80, 0x3C, - 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xFC, 0x3F, - 0x87, 0xFF, 0xF8, 0x7F, 0xFF, 0x83, 0xFF, 0xF0, 0x1F, 0x9F, 0x00, 0x01, - 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x0F, 0x8E, 0x1F, 0x7C, 0x3F, - 0xF0, 0xFF, 0xE1, 0xFC, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, - 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, 0x00, 0x01, 0xFC, 0x01, 0xFF, 0xC0, - 0xFF, 0xF8, 0x7F, 0xFF, 0x3F, 0x0F, 0xCF, 0x81, 0xF3, 0xF0, 0x00, 0xFF, - 0x80, 0x3F, 0xFC, 0x07, 0xFF, 0xC0, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1F, - 0xBE, 0x03, 0xEF, 0xC1, 0xFB, 0xFF, 0xFC, 0x7F, 0xFE, 0x0F, 0xFF, 0x00, - 0xFE, 0x00, 0x0F, 0x81, 0xF0, 0x7C, 0x0F, 0x81, 0xF0, 0xFF, 0xBF, 0xF7, - 0xFE, 0x3E, 0x07, 0xC0, 0xF8, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, - 0xF8, 0x1F, 0x03, 0xE0, 0x7F, 0x0F, 0xE1, 0xFC, 0x1F, 0x80, 0x1F, 0x01, - 0xF1, 0xF0, 0x1F, 0x3E, 0x03, 0xE3, 0xE0, 0x3E, 0x3E, 0x03, 0xE3, 0xE0, - 0x3E, 0x3E, 0x03, 0xE7, 0xC0, 0x7C, 0x7C, 0x07, 0xC7, 0xC0, 0x7C, 0x7C, - 0x07, 0xC7, 0xC0, 0x7C, 0xF8, 0x0F, 0x8F, 0x81, 0xF8, 0xF8, 0x3F, 0x8F, - 0xFF, 0xF8, 0xFF, 0xFF, 0x07, 0xFD, 0xF0, 0x3F, 0x1F, 0x00, 0xF8, 0x0F, - 0xFE, 0x03, 0xEF, 0x81, 0xF3, 0xE0, 0x7C, 0xF8, 0x3E, 0x3E, 0x0F, 0x8F, - 0x87, 0xC1, 0xE1, 0xF0, 0x78, 0xF8, 0x1E, 0x3E, 0x07, 0x9F, 0x01, 0xF7, - 0x80, 0x7F, 0xE0, 0x1F, 0xF0, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, - 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xF8, 0x1F, 0x07, 0xFF, 0x03, 0xE0, 0xFB, - 0xE0, 0xFC, 0x1F, 0x7C, 0x1F, 0x87, 0xCF, 0x87, 0xF0, 0xF9, 0xF0, 0xFE, - 0x3E, 0x3E, 0x3D, 0xC7, 0xC3, 0xC7, 0xB9, 0xF0, 0x79, 0xE7, 0x3E, 0x0F, - 0x3C, 0xE7, 0x81, 0xEF, 0x1D, 0xF0, 0x3D, 0xE3, 0xBC, 0x07, 0xBC, 0x7F, - 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE1, 0xFC, 0x03, 0xF8, 0x3F, 0x00, 0x7F, - 0x07, 0xE0, 0x0F, 0xC0, 0xF8, 0x01, 0xF8, 0x1F, 0x00, 0x00, 0x0F, 0xC1, - 0xF8, 0x3F, 0x07, 0xC0, 0x7C, 0x3E, 0x01, 0xF9, 0xF8, 0x03, 0xEF, 0xC0, - 0x0F, 0xBE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x3E, 0xF8, - 0x01, 0xFB, 0xF0, 0x07, 0xC7, 0xC0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, 0x0F, - 0xC0, 0xF8, 0x00, 0x1F, 0x80, 0x7C, 0x3E, 0x03, 0xE0, 0xF8, 0x0F, 0x03, - 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3E, 0x0F, 0x80, 0xF8, 0x3C, 0x03, 0xE1, - 0xF0, 0x07, 0x87, 0x80, 0x1F, 0x3E, 0x00, 0x7C, 0xF0, 0x01, 0xF7, 0xC0, - 0x07, 0xDE, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xC0, 0x01, 0xFE, 0x00, 0x03, - 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x01, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x0F, 0xFF, 0xE1, 0xFF, 0xFC, 0x3F, - 0xFF, 0x87, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, - 0xF0, 0x01, 0xFC, 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, - 0x00, 0x7E, 0x00, 0x1F, 0x80, 0x07, 0xFF, 0xF8, 0xFF, 0xFF, 0x1F, 0xFF, - 0xE3, 0xFF, 0xFC, 0x00, 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, - 0xE0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, - 0xE0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, 0x1F, 0x80, 0x70, 0x01, 0xF8, 0x01, - 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, - 0xF0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xFC, 0x07, 0xE0, 0x0F, 0x80, - 0x1E, 0x00, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0C, 0x0E, - 0x07, 0x03, 0x81, 0xC0, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, - 0x03, 0x81, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x18, 0x1C, 0x0E, 0x07, 0x01, - 0x80, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0xFE, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, - 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x7E, 0x00, 0x38, 0x07, 0xE0, - 0x3E, 0x00, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, - 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x1F, 0x01, 0xF8, 0x0F, 0xE0, 0x3F, 0x00, - 0xF8, 0x00, 0x0F, 0x00, 0x1F, 0xC1, 0xDF, 0xF0, 0xEE, 0x3F, 0xE6, 0x07, - 0xF0, 0x01, 0xE0 }; - -const GFXglyph FreeSansBoldOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 10, 25, 12, 4, -24 }, // 0x21 '!' - { 32, 13, 9, 17, 6, -25 }, // 0x22 '"' - { 47, 22, 24, 19, 1, -23 }, // 0x23 '#' - { 113, 19, 31, 19, 2, -26 }, // 0x24 '$' - { 187, 26, 26, 31, 5, -25 }, // 0x25 '%' - { 272, 21, 25, 25, 3, -24 }, // 0x26 '&' - { 338, 5, 9, 8, 6, -25 }, // 0x27 ''' - { 344, 13, 33, 12, 3, -25 }, // 0x28 '(' - { 398, 13, 33, 12, -1, -25 }, // 0x29 ')' - { 452, 12, 11, 14, 5, -25 }, // 0x2A '*' - { 469, 18, 16, 20, 3, -15 }, // 0x2B '+' - { 505, 7, 11, 10, 1, -4 }, // 0x2C ',' - { 515, 10, 4, 12, 2, -10 }, // 0x2D '-' - { 520, 6, 5, 10, 2, -4 }, // 0x2E '.' - { 524, 15, 25, 10, 0, -24 }, // 0x2F '/' - { 571, 18, 25, 19, 3, -24 }, // 0x30 '0' - { 628, 13, 25, 19, 6, -24 }, // 0x31 '1' - { 669, 21, 25, 19, 1, -24 }, // 0x32 '2' - { 735, 20, 25, 19, 2, -24 }, // 0x33 '3' - { 798, 19, 25, 19, 2, -24 }, // 0x34 '4' - { 858, 20, 24, 19, 2, -23 }, // 0x35 '5' - { 918, 19, 25, 19, 3, -24 }, // 0x36 '6' - { 978, 19, 24, 19, 5, -23 }, // 0x37 '7' - { 1035, 20, 25, 19, 2, -24 }, // 0x38 '8' - { 1098, 19, 25, 19, 2, -24 }, // 0x39 '9' - { 1158, 9, 18, 12, 4, -17 }, // 0x3A ':' - { 1179, 10, 24, 12, 3, -17 }, // 0x3B ';' - { 1209, 19, 17, 20, 3, -16 }, // 0x3C '<' - { 1250, 20, 12, 20, 2, -13 }, // 0x3D '=' - { 1280, 19, 17, 20, 1, -15 }, // 0x3E '>' - { 1321, 18, 26, 21, 6, -25 }, // 0x3F '?' - { 1380, 33, 31, 34, 3, -25 }, // 0x40 '@' - { 1508, 23, 26, 25, 1, -25 }, // 0x41 'A' - { 1583, 24, 26, 25, 3, -25 }, // 0x42 'B' - { 1661, 24, 26, 25, 4, -25 }, // 0x43 'C' - { 1739, 24, 26, 25, 3, -25 }, // 0x44 'D' - { 1817, 24, 26, 23, 3, -25 }, // 0x45 'E' - { 1895, 23, 26, 21, 3, -25 }, // 0x46 'F' - { 1970, 24, 26, 27, 4, -25 }, // 0x47 'G' - { 2048, 26, 26, 25, 2, -25 }, // 0x48 'H' - { 2133, 10, 26, 10, 2, -25 }, // 0x49 'I' - { 2166, 20, 26, 19, 2, -25 }, // 0x4A 'J' - { 2231, 26, 26, 25, 3, -25 }, // 0x4B 'K' - { 2316, 18, 26, 21, 3, -25 }, // 0x4C 'L' - { 2375, 31, 26, 29, 2, -25 }, // 0x4D 'M' - { 2476, 27, 26, 25, 2, -25 }, // 0x4E 'N' - { 2564, 25, 26, 27, 4, -25 }, // 0x4F 'O' - { 2646, 23, 26, 23, 3, -25 }, // 0x50 'P' - { 2721, 25, 27, 27, 4, -25 }, // 0x51 'Q' - { 2806, 24, 26, 25, 3, -25 }, // 0x52 'R' - { 2884, 22, 26, 23, 3, -25 }, // 0x53 'S' - { 2956, 21, 26, 21, 5, -25 }, // 0x54 'T' - { 3025, 24, 26, 25, 4, -25 }, // 0x55 'U' - { 3103, 22, 26, 23, 6, -25 }, // 0x56 'V' - { 3175, 32, 26, 33, 6, -25 }, // 0x57 'W' - { 3279, 27, 26, 23, 1, -25 }, // 0x58 'X' - { 3367, 22, 26, 23, 6, -25 }, // 0x59 'Y' - { 3439, 25, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3521, 15, 33, 12, 1, -25 }, // 0x5B '[' - { 3583, 5, 25, 10, 5, -24 }, // 0x5C '\' - { 3599, 15, 33, 12, -1, -25 }, // 0x5D ']' - { 3661, 16, 15, 20, 4, -23 }, // 0x5E '^' - { 3691, 21, 3, 19, -2, 5 }, // 0x5F '_' - { 3699, 5, 5, 12, 6, -25 }, // 0x60 '`' - { 3703, 18, 19, 19, 2, -18 }, // 0x61 'a' - { 3746, 20, 26, 21, 2, -25 }, // 0x62 'b' - { 3811, 18, 19, 19, 3, -18 }, // 0x63 'c' - { 3854, 22, 26, 21, 3, -25 }, // 0x64 'd' - { 3926, 19, 19, 19, 2, -18 }, // 0x65 'e' - { 3972, 13, 26, 12, 3, -25 }, // 0x66 'f' - { 4015, 22, 27, 21, 1, -18 }, // 0x67 'g' - { 4090, 20, 26, 21, 2, -25 }, // 0x68 'h' - { 4155, 10, 26, 10, 2, -25 }, // 0x69 'i' - { 4188, 15, 34, 10, -2, -25 }, // 0x6A 'j' - { 4252, 21, 26, 19, 2, -25 }, // 0x6B 'k' - { 4321, 10, 26, 10, 2, -25 }, // 0x6C 'l' - { 4354, 30, 19, 31, 2, -18 }, // 0x6D 'm' - { 4426, 20, 19, 21, 2, -18 }, // 0x6E 'n' - { 4474, 19, 19, 21, 3, -18 }, // 0x6F 'o' - { 4520, 22, 27, 21, 0, -18 }, // 0x70 'p' - { 4595, 20, 27, 21, 3, -18 }, // 0x71 'q' - { 4663, 15, 19, 14, 2, -18 }, // 0x72 'r' - { 4699, 18, 19, 19, 2, -18 }, // 0x73 's' - { 4742, 11, 23, 12, 4, -22 }, // 0x74 't' - { 4774, 20, 19, 21, 3, -18 }, // 0x75 'u' - { 4822, 18, 19, 19, 5, -18 }, // 0x76 'v' - { 4865, 27, 19, 27, 4, -18 }, // 0x77 'w' - { 4930, 22, 19, 19, 1, -18 }, // 0x78 'x' - { 4983, 22, 27, 19, 1, -18 }, // 0x79 'y' - { 5058, 19, 19, 17, 1, -18 }, // 0x7A 'z' - { 5104, 14, 33, 14, 2, -25 }, // 0x7B '{' - { 5162, 9, 33, 10, 2, -25 }, // 0x7C '|' - { 5200, 14, 33, 14, 2, -25 }, // 0x7D '}' - { 5258, 17, 6, 20, 3, -10 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique18pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique18pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h deleted file mode 100644 index ea65f9b8d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h +++ /dev/null @@ -1,893 +0,0 @@ -const uint8_t FreeSansBoldOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x07, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, - 0x80, 0xFE, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x1F, - 0x80, 0x7E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x80, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, 0x03, 0xF8, 0x00, - 0x7E, 0x0F, 0xDF, 0x83, 0xF7, 0xE0, 0xFF, 0xF0, 0x7E, 0xFC, 0x1F, 0xBF, - 0x07, 0xEF, 0xC1, 0xFB, 0xE0, 0x7C, 0xF8, 0x1F, 0x3C, 0x07, 0x8F, 0x01, - 0xE3, 0x80, 0x70, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, 0x80, 0x03, - 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x83, - 0xE0, 0x00, 0xF8, 0x3E, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, - 0x7F, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x0F, - 0x83, 0xE0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x3E, 0x0F, - 0x80, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x7C, 0x00, - 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0x07, 0xC0, 0x00, 0xF8, 0x3E, - 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x7C, 0x1F, 0x00, 0x07, 0xC1, 0xF0, 0x00, - 0x3E, 0x0F, 0x80, 0x01, 0xF0, 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0xF8, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0x3F, 0xFF, 0xE0, 0x1F, - 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0x07, 0xF3, 0x9F, 0xC1, 0xF8, 0xE3, 0xF0, - 0x7C, 0x38, 0xFC, 0x3F, 0x0E, 0x3F, 0x0F, 0xC7, 0x8F, 0xC3, 0xF1, 0xC0, - 0x00, 0xFE, 0x70, 0x00, 0x3F, 0xDC, 0x00, 0x0F, 0xFF, 0x00, 0x01, 0xFF, - 0xE0, 0x00, 0x3F, 0xFE, 0x00, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x77, 0xF8, 0x00, 0x1C, 0xFE, - 0x00, 0x07, 0x3F, 0x8F, 0xE3, 0xCF, 0xE3, 0xF8, 0xE3, 0xF8, 0xFE, 0x38, - 0xFC, 0x3F, 0x8E, 0x7F, 0x0F, 0xF3, 0x9F, 0xC3, 0xFD, 0xFF, 0xE0, 0x7F, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x03, 0x80, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x01, 0xF8, 0x00, 0x07, - 0x80, 0x7F, 0xE0, 0x00, 0xF0, 0x0F, 0xFF, 0x00, 0x1E, 0x01, 0xFF, 0xF0, - 0x01, 0xC0, 0x3F, 0xFF, 0x80, 0x3C, 0x07, 0xE1, 0xF8, 0x07, 0x80, 0x78, - 0x07, 0x80, 0xF0, 0x0F, 0x80, 0x78, 0x0E, 0x00, 0xF0, 0x07, 0x81, 0xC0, - 0x0F, 0x00, 0xF8, 0x3C, 0x00, 0xF0, 0x0F, 0x07, 0x80, 0x0F, 0xC3, 0xF0, - 0xF0, 0x00, 0xFF, 0xFE, 0x0E, 0x00, 0x07, 0xFF, 0xC1, 0xE0, 0x00, 0x7F, - 0xF8, 0x3C, 0x00, 0x03, 0xFF, 0x07, 0x80, 0x00, 0x0F, 0xC0, 0x70, 0x00, - 0x00, 0x00, 0x0E, 0x03, 0xF0, 0x00, 0x01, 0xE0, 0xFF, 0xC0, 0x00, 0x3C, - 0x1F, 0xFE, 0x00, 0x03, 0x83, 0xFF, 0xE0, 0x00, 0x70, 0x7F, 0xFF, 0x00, - 0x0F, 0x0F, 0xC3, 0xF0, 0x01, 0xE0, 0xF0, 0x0F, 0x00, 0x3C, 0x1F, 0x00, - 0xF0, 0x03, 0x81, 0xE0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xF0, 0x0F, 0x01, - 0xE0, 0x1E, 0x01, 0xE0, 0x1F, 0x87, 0xE0, 0x1C, 0x01, 0xFF, 0xFC, 0x03, - 0x80, 0x0F, 0xFF, 0x80, 0x78, 0x00, 0xFF, 0xF0, 0x0F, 0x00, 0x07, 0xFE, - 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0xF0, - 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xF8, 0x00, - 0x3F, 0x9F, 0xC0, 0x03, 0xF8, 0x7E, 0x00, 0x1F, 0xC3, 0xF0, 0x00, 0xFE, - 0x1F, 0x00, 0x07, 0xF1, 0xF8, 0x00, 0x3F, 0xCF, 0xC0, 0x01, 0xFE, 0xFC, - 0x00, 0x07, 0xFF, 0xC0, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0x07, 0xC1, 0xFF, - 0xF8, 0x3E, 0x3F, 0xFF, 0xE3, 0xE3, 0xFE, 0x3F, 0x1F, 0x1F, 0xC1, 0xFD, - 0xF1, 0xFC, 0x07, 0xFF, 0x8F, 0xC0, 0x3F, 0xF8, 0xFE, 0x00, 0xFF, 0xC7, - 0xF0, 0x07, 0xFC, 0x3F, 0x80, 0x1F, 0xC1, 0xFC, 0x00, 0xFE, 0x0F, 0xF0, - 0x1F, 0xF8, 0x7F, 0xC1, 0xFF, 0xC1, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, - 0xFC, 0x3F, 0xFF, 0xCF, 0xE0, 0x7F, 0xF8, 0x7F, 0x80, 0xFF, 0x00, 0x00, - 0x7E, 0xFD, 0xFF, 0xEF, 0xDF, 0xBF, 0x7C, 0xF9, 0xE3, 0xC7, 0x00, 0x00, - 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, - 0x07, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, - 0x00, 0xF8, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x03, 0xF0, 0x01, - 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, - 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, - 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x03, 0xE0, 0x01, 0xF0, 0x00, - 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, - 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, - 0x00, 0x1F, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x03, - 0xE0, 0x03, 0xF0, 0x01, 0xF0, 0x01, 0xF8, 0x00, 0xF8, 0x00, 0xFC, 0x00, - 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, - 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x03, 0x80, 0x07, - 0x00, 0x0E, 0x07, 0x3C, 0x6F, 0xFF, 0xFF, 0xFF, 0xBF, 0xFE, 0x0F, 0xE0, - 0x1F, 0xC0, 0x7F, 0x81, 0xEF, 0x87, 0x8F, 0x0E, 0x1E, 0x08, 0x10, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF8, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xC7, 0xF1, 0xF8, 0xFE, 0x3F, - 0x8F, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, 0xF0, 0xFC, 0x3C, 0x0C, - 0x00, 0x7F, 0xFD, 0xFF, 0xF7, 0xFF, 0x9F, 0xFE, 0xFF, 0xFB, 0xFF, 0xE0, - 0x7F, 0x7F, 0x7F, 0x7E, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x70, 0x00, 0x0E, - 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, - 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, - 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, - 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, - 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, - 0x1F, 0xC7, 0xF8, 0x1F, 0xC1, 0xFE, 0x1F, 0xC0, 0x7F, 0x0F, 0xC0, 0x3F, - 0x8F, 0xE0, 0x1F, 0xC7, 0xF0, 0x0F, 0xE3, 0xF0, 0x07, 0xF3, 0xF8, 0x03, - 0xF9, 0xFC, 0x01, 0xFC, 0xFC, 0x01, 0xFE, 0xFE, 0x00, 0xFE, 0x7F, 0x00, - 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0xC0, 0x1F, 0xCF, 0xE0, 0x1F, 0xEF, 0xE0, - 0x0F, 0xE7, 0xF0, 0x07, 0xF3, 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xF8, 0xFE, - 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0xFE, 0x1F, 0xE0, 0x7F, 0x0F, - 0xF8, 0xFF, 0x03, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, - 0x1F, 0xFF, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x0F, - 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x07, 0xE0, 0x0F, 0xF0, 0x3F, 0xF9, 0xFF, - 0xF8, 0xFF, 0xFC, 0xFF, 0xFE, 0x7F, 0xFF, 0x00, 0x3F, 0x80, 0x1F, 0x80, - 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xF8, 0x01, 0xF8, 0x01, 0xFC, - 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x1F, 0xC0, 0x0F, - 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xF8, 0x01, 0xFC, 0x00, 0xFE, 0x00, - 0x7F, 0x00, 0x3F, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x00, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, - 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0x07, 0xFC, 0x07, 0xF0, 0x1F, 0xE0, 0x7F, - 0x00, 0x7F, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0x80, 0x1F, 0xC1, 0xF8, 0x00, - 0xFE, 0x0F, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xF8, 0x00, 0x01, 0xFF, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0xFC, 0x1F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xF0, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x0F, 0xFF, 0x80, 0x0F, 0xFF, 0xF0, 0x07, - 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xC0, 0xFE, 0x1F, 0xF0, 0x7F, 0x01, 0xFC, - 0x1F, 0x80, 0x7F, 0x07, 0xE0, 0x1F, 0xC3, 0xF0, 0x07, 0xF0, 0xFC, 0x01, - 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x80, 0x01, - 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xFF, 0x80, - 0x01, 0xFF, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x3F, 0x80, - 0x3F, 0xCF, 0xE0, 0x0F, 0xE3, 0xF8, 0x07, 0xF8, 0xFF, 0x83, 0xFC, 0x3F, - 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xE0, - 0x03, 0xFF, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x7F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xF0, 0x00, - 0x3F, 0xF8, 0x00, 0x3D, 0xFC, 0x00, 0x3C, 0xFE, 0x00, 0x3E, 0x7E, 0x00, - 0x3E, 0x7F, 0x00, 0x1E, 0x3F, 0x80, 0x1E, 0x1F, 0xC0, 0x1E, 0x0F, 0xC0, - 0x1F, 0x07, 0xE0, 0x1F, 0x07, 0xF0, 0x1F, 0x03, 0xF8, 0x1F, 0x01, 0xFC, - 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFE, 0x0F, 0x80, 0x7F, 0x07, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, - 0xFE, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x7F, 0xFF, 0xE0, 0x0F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, - 0xF0, 0x0F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x7C, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x03, 0xE3, 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xF0, 0x1F, 0xE1, 0xFF, 0x03, 0xF0, 0x1F, 0xE0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0xFE, 0x1F, - 0xC0, 0x3F, 0x83, 0xF8, 0x07, 0xF0, 0x7F, 0x83, 0xFC, 0x0F, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFE, 0x00, 0x0F, - 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, - 0x00, 0x1F, 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0xF8, 0x1F, 0xC3, - 0xFC, 0x1F, 0x80, 0xFE, 0x0F, 0xC0, 0x3F, 0x0F, 0xC0, 0x00, 0x07, 0xE0, - 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xF8, 0xFC, 0x01, 0xF9, - 0xFF, 0x80, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xF8, 0x7F, 0xFF, 0xFC, 0x3F, - 0xE1, 0xFF, 0x1F, 0xE0, 0x7F, 0x8F, 0xE0, 0x1F, 0xCF, 0xE0, 0x0F, 0xE7, - 0xF0, 0x07, 0xF3, 0xF0, 0x03, 0xF9, 0xF8, 0x01, 0xF8, 0xFC, 0x01, 0xFC, - 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0xFE, 0x1F, 0xC0, 0xFF, 0x0F, 0xF0, 0xFF, - 0x03, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, - 0x80, 0x07, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0xFF, 0xFF, 0xCF, - 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x7F, 0xFF, 0xFF, - 0x9F, 0xFF, 0xFF, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xE0, - 0x00, 0x03, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, - 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x0F, 0xFF, 0x80, 0x07, 0xFF, 0xF0, 0x03, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, - 0xC0, 0xFE, 0x0F, 0xF0, 0x3E, 0x01, 0xFC, 0x1F, 0x80, 0x3F, 0x07, 0xC0, - 0x0F, 0xC1, 0xF0, 0x03, 0xF0, 0x7C, 0x01, 0xF8, 0x1F, 0x00, 0xFC, 0x03, - 0xF0, 0x7F, 0x00, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, - 0x07, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0x81, 0xFE, 0x1F, 0xE0, 0xFE, 0x03, - 0xFC, 0x3F, 0x00, 0x7F, 0x1F, 0xC0, 0x1F, 0xC7, 0xE0, 0x07, 0xF3, 0xF8, - 0x01, 0xFC, 0xFE, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x8F, 0xE0, 0x0F, 0xE3, - 0xFC, 0x07, 0xF0, 0xFF, 0x87, 0xFC, 0x3F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, - 0x00, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x00, 0x3F, - 0xC0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x3F, 0xFF, 0x00, - 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0xF0, 0x3F, 0xC3, 0xF8, 0x3F, 0xC0, 0xFE, - 0x1F, 0xC0, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC7, 0xE0, 0x07, - 0xE7, 0xF0, 0x03, 0xF3, 0xF8, 0x01, 0xF9, 0xFC, 0x01, 0xFC, 0xFE, 0x00, - 0xFE, 0x7F, 0x00, 0xFE, 0x3F, 0xC0, 0xFF, 0x1F, 0xF0, 0xFF, 0x87, 0xFF, - 0xFF, 0xC3, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xE0, 0x3F, 0xF3, 0xF0, 0x07, - 0xE3, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7E, 0x1F, 0xC0, 0x7E, 0x0F, 0xF0, 0xFF, 0x07, 0xFF, 0xFF, 0x01, - 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFF, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x7E, 0x0F, 0xE0, - 0xFE, 0x0F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x07, 0xF0, 0x7F, 0x07, - 0xE0, 0xFE, 0x0F, 0xE0, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, - 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, - 0x03, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0xF0, 0x0F, 0xC0, - 0x3C, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0xF8, 0x00, 0x03, 0xFE, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xE0, - 0x1F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0x1F, 0xFF, 0x80, - 0x0F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x3F, 0xFE, - 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xF8, 0x00, - 0x7F, 0xFF, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x01, 0xF8, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, - 0xFF, 0xF1, 0xFF, 0xFF, 0xFC, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, - 0xFF, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xF8, 0xFF, - 0xFF, 0xFE, 0x3F, 0xFF, 0xFF, 0x80, 0x04, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x7F, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, - 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xFC, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0xE0, 0x0F, 0xFF, 0xF0, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, - 0xE0, 0x1F, 0xFF, 0xC0, 0x07, 0xFF, 0x80, 0x01, 0xFF, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, - 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFE, - 0x1F, 0xFF, 0xFE, 0x3F, 0xC1, 0xFF, 0x3F, 0x80, 0xFF, 0x7F, 0x00, 0x7F, - 0x7E, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, - 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, - 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0x00, - 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x00, - 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x1F, 0xF8, 0x00, 0x07, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0x80, 0x07, 0xE0, - 0x00, 0x00, 0xFE, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF0, 0x0F, 0xC0, 0x00, - 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x03, 0xF1, - 0xF1, 0xF0, 0x7C, 0x00, 0xFF, 0xCF, 0x07, 0x87, 0xE0, 0x1F, 0xFF, 0xF8, - 0x3C, 0x7E, 0x01, 0xF8, 0x7F, 0x81, 0xE3, 0xE0, 0x1F, 0x01, 0xF8, 0x0F, - 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x79, 0xF0, 0x1F, 0x00, 0x7C, 0x03, 0xDF, - 0x00, 0xF0, 0x03, 0xE0, 0x1C, 0xF8, 0x0F, 0x80, 0x1E, 0x01, 0xE7, 0xC0, - 0x78, 0x00, 0xF0, 0x0F, 0x3C, 0x07, 0xC0, 0x0F, 0x00, 0xF3, 0xE0, 0x3C, - 0x00, 0x78, 0x07, 0x9F, 0x03, 0xE0, 0x07, 0x80, 0x78, 0xF8, 0x1F, 0x00, - 0x7C, 0x07, 0xC7, 0xC0, 0xF8, 0x07, 0xC0, 0x7C, 0x3E, 0x07, 0xC0, 0x7E, - 0x07, 0xC1, 0xF0, 0x3F, 0x07, 0xF8, 0xFC, 0x0F, 0x81, 0xFF, 0xFF, 0xFF, - 0xC0, 0x7E, 0x07, 0xFF, 0xBF, 0xFC, 0x01, 0xF0, 0x1F, 0xF8, 0xFF, 0x80, - 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x3F, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0x03, 0x80, 0x00, 0x01, 0xFF, - 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, - 0xFE, 0x00, 0x00, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x7F, - 0xF0, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x00, 0xFF, - 0xF0, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x03, 0xFB, - 0xF8, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x07, 0xE3, 0xF8, 0x00, 0x0F, 0xE3, - 0xF8, 0x00, 0x0F, 0xC3, 0xF8, 0x00, 0x1F, 0xC3, 0xF8, 0x00, 0x1F, 0x83, - 0xF8, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x7F, 0x01, - 0xFC, 0x00, 0xFE, 0x01, 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFF, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, - 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x0F, 0xE0, 0x00, - 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x00, - 0xFE, 0x3F, 0x80, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0x00, 0x00, - 0x7F, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0xFF, 0x03, 0xF8, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0x7F, 0x07, 0xF0, 0x00, - 0x7F, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x7E, 0x07, 0xF0, 0x00, - 0xFE, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, - 0xF8, 0x1F, 0xFF, 0xFF, 0xF8, 0x1F, 0xC0, 0x07, 0xFC, 0x1F, 0xC0, 0x01, - 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, - 0xFC, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x7F, 0x00, 0x07, - 0xF8, 0x7F, 0x00, 0x0F, 0xF0, 0x7F, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xFF, - 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x7F, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0x03, 0xFE, 0x07, 0xFC, 0x01, - 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, - 0x7F, 0x1F, 0xC0, 0x00, 0x7F, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xF8, 0xFE, 0x00, 0x03, - 0xF8, 0xFF, 0x00, 0x07, 0xF8, 0xFF, 0x00, 0x07, 0xF0, 0x7F, 0x80, 0x1F, - 0xF0, 0x7F, 0xE0, 0x7F, 0xE0, 0x3F, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, - 0x80, 0x1F, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xF8, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, - 0xE0, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, - 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x03, 0xFE, 0x07, 0xF0, 0x01, - 0xFF, 0x07, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, - 0x7F, 0x0F, 0xF0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, - 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x7F, 0x1F, 0xC0, 0x00, - 0x7F, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0xFE, 0x1F, 0xC0, 0x00, - 0xFE, 0x1F, 0xC0, 0x01, 0xFE, 0x3F, 0x80, 0x01, 0xFC, 0x3F, 0x80, 0x01, - 0xFC, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x07, 0xF8, 0x7F, 0x00, 0x0F, - 0xF0, 0x7F, 0x00, 0x1F, 0xF0, 0x7F, 0x00, 0x7F, 0xE0, 0x7F, 0xFF, 0xFF, - 0xC0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, - 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xFF, - 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, - 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xF8, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x00, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, - 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, - 0xE0, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, 0xFF, 0x01, 0xFF, 0xFF, - 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, - 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, - 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, - 0xC0, 0x0F, 0xFF, 0xFF, 0xC0, 0x0F, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, - 0xF8, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xFF, - 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFC, 0x07, 0xFC, 0x0F, 0xF8, - 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x1F, 0xC7, 0xF0, - 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x7F, - 0x00, 0x3F, 0xFF, 0x3F, 0x00, 0x1F, 0xFF, 0xBF, 0x80, 0x0F, 0xFF, 0x9F, - 0xC0, 0x07, 0xFF, 0xCF, 0xE0, 0x03, 0xFF, 0xE7, 0xF0, 0x03, 0xFF, 0xF3, - 0xF8, 0x00, 0x01, 0xF9, 0xFC, 0x00, 0x01, 0xF8, 0xFF, 0x00, 0x00, 0xFC, - 0x7F, 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, - 0x87, 0xFC, 0x00, 0xFF, 0x81, 0xFF, 0x81, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFE, 0xF8, 0x03, 0xFF, 0xFC, - 0x78, 0x00, 0x7F, 0xFC, 0x3C, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, 0x80, - 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0x3F, - 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, 0x00, - 0x3F, 0x80, 0xFF, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x03, 0xF8, - 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x0F, 0xFF, 0xFF, 0xFE, 0x03, - 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0xF8, 0x0F, 0xE0, 0x00, - 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, 0xF0, - 0x00, 0x7F, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x01, 0xFC, 0x07, - 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x01, 0xFC, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0xFE, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, - 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x7F, 0x00, 0x07, 0xF0, 0x1F, 0xC0, - 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x07, 0xF0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, - 0x0F, 0xE0, 0x3F, 0x81, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, - 0x0F, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, 0xFC, - 0x07, 0xF0, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFE, - 0x03, 0xF8, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0xFE, - 0x03, 0xF8, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x0F, 0xE0, 0xFE, 0x03, 0xFC, 0x1F, 0xC0, 0x7F, 0x03, 0xF8, 0x0F, 0xE0, - 0xFE, 0x01, 0xFC, 0x1F, 0xC0, 0x3F, 0x83, 0xF8, 0x0F, 0xE0, 0x7F, 0x01, - 0xFC, 0x0F, 0xF0, 0xFF, 0x81, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xF8, 0x03, - 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x80, 0x03, 0xFF, 0xE0, 0x00, 0x1F, 0xE0, - 0x00, 0x00, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x00, - 0x7F, 0x00, 0x1F, 0xF0, 0x03, 0xF8, 0x01, 0xFF, 0x00, 0x1F, 0xC0, 0x1F, - 0xE0, 0x00, 0xFE, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x1F, 0xE0, 0x00, 0x7F, - 0x01, 0xFE, 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, - 0x00, 0xFE, 0x1F, 0xE0, 0x00, 0x0F, 0xE3, 0xFE, 0x00, 0x00, 0x7F, 0x3F, - 0xC0, 0x00, 0x03, 0xFB, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, - 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xFF, 0xC0, - 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x01, 0xFF, - 0x9F, 0xE0, 0x00, 0x0F, 0xF8, 0xFF, 0x00, 0x00, 0x7F, 0x83, 0xFC, 0x00, - 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, 0x7F, 0x80, 0x01, 0xFC, 0x01, - 0xFE, 0x00, 0x0F, 0xE0, 0x0F, 0xF0, 0x00, 0x7F, 0x00, 0x3F, 0xC0, 0x03, - 0xF8, 0x01, 0xFF, 0x00, 0x3F, 0x80, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3F, - 0xE0, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x7F, 0x00, 0x07, 0xFC, 0x03, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xF8, - 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, - 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, - 0x00, 0x0F, 0xE0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, - 0x00, 0x1F, 0xC0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, - 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x7F, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, - 0x80, 0x03, 0xFF, 0x80, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x7F, 0xE0, 0x01, - 0xFF, 0xC0, 0x3F, 0xF0, 0x00, 0xFF, 0xE0, 0x3F, 0xF8, 0x00, 0xFF, 0xF0, - 0x1F, 0xFC, 0x00, 0x7F, 0xF8, 0x0F, 0xFE, 0x00, 0x7D, 0xF8, 0x07, 0xEF, - 0x00, 0x3E, 0xFC, 0x03, 0xF7, 0x80, 0x3F, 0xFE, 0x03, 0xFB, 0xC0, 0x1F, - 0x7F, 0x01, 0xFD, 0xE0, 0x1F, 0xBF, 0x00, 0xFE, 0xF0, 0x0F, 0x9F, 0x80, - 0x7E, 0x78, 0x0F, 0xDF, 0xC0, 0x7F, 0x3E, 0x07, 0xCF, 0xE0, 0x3F, 0x9F, - 0x07, 0xE7, 0xF0, 0x1F, 0xCF, 0x83, 0xE3, 0xF0, 0x0F, 0xE7, 0xC3, 0xF1, - 0xF8, 0x07, 0xE3, 0xE1, 0xF9, 0xFC, 0x07, 0xF1, 0xF0, 0xF8, 0xFE, 0x03, - 0xF8, 0xF8, 0xFC, 0x7F, 0x01, 0xFC, 0x7C, 0x7C, 0x3F, 0x00, 0xFC, 0x3E, - 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x3E, 0x1F, 0xC0, 0x7F, 0x0F, 0xBF, 0x0F, - 0xE0, 0x3F, 0x87, 0xDF, 0x07, 0xE0, 0x1F, 0xC3, 0xFF, 0x83, 0xF0, 0x0F, - 0xC1, 0xFF, 0xC3, 0xF8, 0x0F, 0xE0, 0xFF, 0xC1, 0xFC, 0x07, 0xF0, 0x7F, - 0xE0, 0xFE, 0x03, 0xF8, 0x3F, 0xE0, 0x7E, 0x01, 0xFC, 0x1F, 0xF0, 0x3F, - 0x00, 0xFC, 0x0F, 0xF0, 0x3F, 0x80, 0xFE, 0x07, 0xF8, 0x1F, 0xC0, 0x7F, - 0x03, 0xF8, 0x0F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x07, 0xE0, 0x3F, 0xC0, - 0x01, 0xFC, 0x07, 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x07, 0xF0, 0x1F, - 0xF0, 0x00, 0xFC, 0x07, 0xFF, 0x00, 0x3F, 0x80, 0xFF, 0xE0, 0x07, 0xF0, - 0x1F, 0xFC, 0x00, 0xFE, 0x03, 0xFF, 0xC0, 0x1F, 0x80, 0xFF, 0xF8, 0x03, - 0xF0, 0x1F, 0xFF, 0x80, 0xFE, 0x03, 0xFB, 0xF0, 0x1F, 0xC0, 0x7E, 0x7E, - 0x03, 0xF8, 0x0F, 0xC7, 0xE0, 0x7E, 0x03, 0xF8, 0xFC, 0x0F, 0xC0, 0x7F, - 0x1F, 0x83, 0xF8, 0x0F, 0xE1, 0xF8, 0x7F, 0x01, 0xF8, 0x3F, 0x0F, 0xE0, - 0x3F, 0x07, 0xF1, 0xF8, 0x0F, 0xE0, 0x7E, 0x3F, 0x01, 0xFC, 0x0F, 0xCF, - 0xE0, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xE0, 0x1F, 0xBF, 0x81, 0xFC, 0x03, - 0xF7, 0xE0, 0x3F, 0x80, 0x3F, 0xFC, 0x07, 0xF0, 0x07, 0xFF, 0x80, 0xFC, - 0x00, 0xFF, 0xF0, 0x1F, 0x80, 0x0F, 0xFC, 0x07, 0xF0, 0x01, 0xFF, 0x80, - 0xFE, 0x00, 0x3F, 0xF0, 0x1F, 0xC0, 0x03, 0xFE, 0x03, 0xF0, 0x00, 0x7F, - 0xC0, 0x7E, 0x00, 0x07, 0xF0, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, - 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, - 0x3F, 0xF0, 0x3F, 0xF8, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF0, 0x00, 0x7F, - 0x83, 0xF8, 0x00, 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, - 0x7F, 0x3F, 0x80, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF7, 0xF0, 0x00, - 0x01, 0xFD, 0xFC, 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0xC0, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, - 0x00, 0x00, 0x3F, 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x00, 0x07, 0xF3, - 0xF8, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, - 0x8F, 0xF0, 0x00, 0x1F, 0xC1, 0xFE, 0x00, 0x0F, 0xE0, 0x7F, 0xC0, 0x0F, - 0xF8, 0x1F, 0xFC, 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0xFF, 0x00, 0x0F, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x03, - 0xFF, 0xFF, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, - 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xC1, 0xFE, 0x00, 0xFF, 0x83, 0xF8, - 0x00, 0xFF, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, - 0x03, 0xF8, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC1, 0xFC, 0x00, - 0x3F, 0x83, 0xF8, 0x00, 0xFE, 0x07, 0xF0, 0x07, 0xFC, 0x1F, 0xFF, 0xFF, - 0xF0, 0x3F, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x03, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0x80, 0x0F, 0xE0, 0x00, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, - 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x01, 0xFF, 0xF8, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x01, 0xFF, 0xFF, 0xF0, - 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x3F, 0xF0, 0x3F, - 0xF0, 0x1F, 0xF0, 0x03, 0xFE, 0x07, 0xF8, 0x00, 0x7F, 0x83, 0xFC, 0x00, - 0x0F, 0xF1, 0xFE, 0x00, 0x03, 0xFC, 0x7F, 0x00, 0x00, 0x7F, 0x3F, 0x80, - 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x07, 0xF3, 0xF0, 0x00, 0x01, 0xFD, 0xFC, - 0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x1F, 0xDF, 0x80, 0x00, 0x07, 0xFF, - 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x3F, - 0xBF, 0x80, 0x00, 0x0F, 0xEF, 0xE0, 0x01, 0x87, 0xF3, 0xF8, 0x00, 0xF1, - 0xFC, 0xFE, 0x00, 0x7C, 0xFE, 0x3F, 0xC0, 0x3F, 0xFF, 0x8F, 0xF0, 0x07, - 0xFF, 0xC1, 0xFE, 0x01, 0xFF, 0xE0, 0x7F, 0xC0, 0x3F, 0xF8, 0x1F, 0xFC, - 0x0F, 0xFC, 0x03, 0xFF, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, 0x0F, - 0xFF, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x1F, 0xFF, 0x9F, 0x80, - 0x01, 0xFF, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x01, 0xFF, 0xFF, - 0xF0, 0x00, 0xFF, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, - 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xFC, 0x0F, 0xE0, - 0x03, 0xFE, 0x0F, 0xF0, 0x00, 0xFF, 0x07, 0xF0, 0x00, 0x3F, 0x83, 0xF8, - 0x00, 0x1F, 0xC1, 0xFC, 0x00, 0x0F, 0xC0, 0xFE, 0x00, 0x07, 0xE0, 0xFE, - 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x80, 0x0F, 0xF0, 0x1F, - 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x07, - 0xFF, 0xFF, 0xF0, 0x03, 0xFF, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, 0xFF, 0x01, - 0xFC, 0x00, 0x7F, 0x80, 0xFE, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x0F, 0xE0, - 0x3F, 0x80, 0x07, 0xF0, 0x1F, 0xC0, 0x03, 0xF8, 0x1F, 0xC0, 0x01, 0xFC, - 0x0F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x00, 0xFE, 0x03, 0xF8, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x3F, 0x81, 0xFC, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x0F, - 0xE0, 0x7F, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x7F, - 0xFF, 0x00, 0x07, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xF8, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xC0, 0x7F, 0xC1, 0xFE, 0x00, 0xFF, - 0x07, 0xF0, 0x01, 0xFC, 0x3F, 0x80, 0x07, 0xF0, 0xFE, 0x00, 0x1F, 0xC3, - 0xF8, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, - 0xE0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, - 0xFE, 0x00, 0x1F, 0xFF, 0xFE, 0x00, 0x0F, 0xFF, 0xF8, 0x00, 0x03, 0xFF, - 0xF0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x07, 0xF3, 0xF8, 0x00, 0x1F, 0xCF, 0xE0, 0x00, 0x7E, 0x3F, - 0x80, 0x03, 0xF8, 0xFF, 0x00, 0x1F, 0xE3, 0xFF, 0x01, 0xFF, 0x07, 0xFF, - 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, - 0xF0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xF0, 0x00, 0x7F, 0xFF, 0xFF, - 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x7F, - 0x07, 0xF0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, - 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, 0x0F, 0xE0, 0x00, 0xFE, - 0x0F, 0xE0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, - 0x1F, 0xC0, 0x01, 0xFC, 0x1F, 0xC0, 0x01, 0xFC, 0x3F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, 0x3F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, - 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x0F, 0xE0, - 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x0F, 0xE0, - 0xFE, 0x00, 0x1F, 0xC0, 0xFE, 0x00, 0x1F, 0xC0, 0xFF, 0x00, 0x3F, 0x80, - 0xFF, 0xC0, 0xFF, 0x80, 0x7F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFE, 0x00, - 0x3F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x0F, 0xFF, 0xE0, 0x00, - 0x01, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xE7, - 0xF0, 0x00, 0x7F, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x00, 0x0F, 0xE1, 0xFC, - 0x00, 0x3F, 0x87, 0xF0, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xF0, 0x3F, 0x00, - 0x3F, 0x80, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x07, 0xF0, 0x0F, 0xC0, 0x1F, - 0x80, 0x3F, 0x80, 0xFE, 0x00, 0xFE, 0x03, 0xF0, 0x03, 0xF8, 0x1F, 0xC0, - 0x0F, 0xE0, 0x7E, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0x7E, 0x0F, 0xC0, 0x01, - 0xF8, 0x7E, 0x00, 0x07, 0xE1, 0xF8, 0x00, 0x1F, 0x8F, 0xC0, 0x00, 0x7E, - 0x3F, 0x00, 0x01, 0xF9, 0xF8, 0x00, 0x07, 0xE7, 0xE0, 0x00, 0x0F, 0xFF, - 0x00, 0x00, 0x3F, 0xFC, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0x00, - 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x01, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x00, - 0xFE, 0x00, 0x7F, 0x80, 0x1F, 0xFF, 0xC0, 0x0F, 0xF0, 0x03, 0xFB, 0xF8, - 0x01, 0xFE, 0x00, 0x7F, 0x7F, 0x00, 0x7F, 0xC0, 0x1F, 0xCF, 0xE0, 0x0F, - 0xF8, 0x03, 0xF9, 0xFC, 0x03, 0xFF, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0xE0, - 0x1F, 0xC7, 0xF0, 0x1F, 0xFC, 0x07, 0xF0, 0x7E, 0x03, 0xFF, 0x80, 0xFE, - 0x0F, 0xC0, 0x7D, 0xF0, 0x1F, 0x81, 0xF8, 0x1F, 0xBE, 0x07, 0xF0, 0x3F, - 0x03, 0xE7, 0xC0, 0xFC, 0x07, 0xE0, 0xFC, 0xF8, 0x3F, 0x80, 0xFC, 0x1F, - 0x1F, 0x07, 0xE0, 0x1F, 0x83, 0xE3, 0xE0, 0xFC, 0x03, 0xF0, 0xFC, 0x7C, - 0x3F, 0x00, 0x7E, 0x1F, 0x0F, 0x87, 0xE0, 0x0F, 0xC7, 0xE1, 0xF1, 0xF8, - 0x01, 0xF8, 0xF8, 0x3E, 0x3F, 0x00, 0x3F, 0x3F, 0x07, 0xCF, 0xC0, 0x07, - 0xE7, 0xC0, 0xF9, 0xF8, 0x00, 0xFC, 0xF8, 0x1F, 0x3E, 0x00, 0x1F, 0xBE, - 0x03, 0xEF, 0xC0, 0x01, 0xF7, 0xC0, 0x7D, 0xF0, 0x00, 0x3F, 0xF8, 0x0F, - 0xFE, 0x00, 0x07, 0xFE, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, - 0x00, 0x1F, 0xF0, 0x07, 0xFC, 0x00, 0x03, 0xFE, 0x00, 0xFF, 0x80, 0x00, - 0x7F, 0x80, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x01, 0xFC, - 0x00, 0x7F, 0x80, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x01, - 0xFC, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x07, 0xFC, 0x00, 0xFF, - 0x00, 0x1F, 0xE0, 0x07, 0xF8, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x03, 0xFC, - 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x00, 0xFF, 0x07, 0xF8, 0x00, - 0x03, 0xFC, 0x3F, 0x80, 0x00, 0x1F, 0xE3, 0xF8, 0x00, 0x00, 0x7F, 0x3F, - 0xC0, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x00, - 0x7F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x00, 0x0F, 0xFC, 0x00, - 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x00, 0x1F, - 0xF0, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x00, - 0x00, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0xFE, - 0x00, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x00, 0xFF, 0x3F, 0xC0, 0x00, 0x0F, - 0xF1, 0xFE, 0x00, 0x00, 0xFF, 0x07, 0xF8, 0x00, 0x07, 0xF0, 0x3F, 0xC0, - 0x00, 0x7F, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x07, 0xF8, 0x00, 0x7F, 0x80, - 0x3F, 0xC0, 0x07, 0xF8, 0x01, 0xFF, 0x00, 0x7F, 0x80, 0x07, 0xF8, 0x07, - 0xFC, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x7F, - 0xBF, 0xC0, 0x07, 0xF8, 0xFE, 0x00, 0x3F, 0x87, 0xF8, 0x03, 0xFC, 0x3F, - 0xC0, 0x3F, 0xC0, 0xFE, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x3F, 0xC1, - 0xFE, 0x00, 0xFE, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, 0x8F, 0xE0, - 0x00, 0xFE, 0x7F, 0x00, 0x07, 0xF7, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, - 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0x80, 0x00, 0x3F, 0xF8, 0x00, 0x01, 0xFF, - 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFF, - 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFF, 0xC0, 0x7F, 0xFF, 0xFF, - 0xC0, 0x3F, 0xFF, 0xFF, 0xE0, 0x00, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0x80, - 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0x7E, 0x00, 0x03, 0xF0, - 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, - 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x7E, - 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xF8, 0x00, 0x0F, 0xC0, - 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, - 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFF, 0xC0, - 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x07, 0xFF, 0x80, 0x3F, 0xFC, 0x00, 0x81, - 0xC3, 0xC7, 0x8F, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0xC7, 0x8F, 0x1E, - 0x1C, 0x38, 0x70, 0xE1, 0xC3, 0x87, 0x8F, 0x1E, 0x3C, 0x38, 0x70, 0xE1, - 0xC3, 0x87, 0x0F, 0x1E, 0x3C, 0x78, 0xF0, 0x00, 0x7F, 0xF8, 0x03, 0xFF, - 0xC0, 0x1F, 0xFC, 0x00, 0xFF, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, - 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, - 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, - 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, - 0x03, 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x7F, - 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, - 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, - 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x01, 0xFF, - 0xE0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, 0x03, 0xFF, 0x80, 0x3F, 0xFC, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x07, - 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x80, 0x3E, 0xFC, 0x01, 0xF3, 0xE0, - 0x1F, 0x1F, 0x01, 0xF8, 0xF8, 0x0F, 0x87, 0xE0, 0xFC, 0x3F, 0x07, 0xC0, - 0xF8, 0x7C, 0x07, 0xC7, 0xE0, 0x3E, 0x3E, 0x01, 0xFB, 0xF0, 0x0F, 0xDF, - 0x00, 0x3F, 0xF0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xE0, 0xF8, 0xF0, 0xF1, 0xE1, - 0xC3, 0xC3, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x7F, 0x03, 0xFC, 0x3F, 0x00, - 0xFE, 0x1F, 0x80, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xFF, 0xC0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF0, 0xFF, - 0x83, 0xF8, 0xFF, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, - 0x80, 0x7F, 0x1F, 0xC0, 0x7F, 0x8F, 0xF0, 0xFF, 0x87, 0xFF, 0xFF, 0xC3, - 0xFF, 0xFF, 0xE0, 0xFF, 0xF7, 0xF8, 0x3F, 0xF3, 0xFC, 0x07, 0xE0, 0x00, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x3F, 0x80, 0x1F, - 0x9F, 0xFC, 0x03, 0xF7, 0xFF, 0xC0, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, - 0x83, 0xFF, 0x0F, 0xF0, 0x7F, 0x80, 0xFF, 0x0F, 0xE0, 0x1F, 0xE3, 0xF8, - 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xC0, 0x07, 0xF1, 0xF8, 0x00, 0xFE, - 0x7F, 0x00, 0x1F, 0xCF, 0xC0, 0x03, 0xF9, 0xF8, 0x00, 0xFE, 0x3F, 0x00, - 0x1F, 0xC7, 0xE0, 0x03, 0xF9, 0xFC, 0x00, 0xFE, 0x3F, 0xC0, 0x3F, 0xC7, - 0xF8, 0x0F, 0xF0, 0xFF, 0x83, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, - 0xC0, 0xFF, 0xFF, 0xF0, 0x1F, 0x9F, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x80, 0x7F, 0xFF, - 0xE0, 0x7F, 0xFF, 0xF0, 0x7F, 0x83, 0xFC, 0x7F, 0x00, 0xFE, 0x3F, 0x00, - 0x7F, 0x3F, 0x80, 0x3F, 0x9F, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x0F, 0xE0, - 0x00, 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0x9F, - 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0x83, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, - 0x3F, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x7F, 0x00, 0x3F, - 0xF3, 0xF8, 0x03, 0xFF, 0xDF, 0x80, 0x7F, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, - 0xE0, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xF8, 0x3F, 0xC0, 0x3F, 0x81, - 0xFC, 0x01, 0xFC, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, - 0x03, 0xF8, 0x7F, 0x00, 0x1F, 0x83, 0xF8, 0x00, 0xFC, 0x1F, 0xC0, 0x07, - 0xE0, 0xFE, 0x00, 0x3F, 0x07, 0xF0, 0x03, 0xF0, 0x3F, 0x80, 0x3F, 0x81, - 0xFC, 0x01, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC3, 0xFF, 0x01, 0xFF, - 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xCF, - 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xFC, 0x00, - 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xF0, 0x7F, 0x87, 0xF8, - 0x7F, 0x01, 0xFE, 0x7F, 0x00, 0x7F, 0x3F, 0x80, 0x3F, 0xBF, 0x80, 0x1F, - 0xDF, 0xC0, 0x0F, 0xEF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFD, 0xFC, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x3F, 0x80, 0x3F, 0x9F, 0xE0, 0x3F, 0x87, 0xF8, 0x3F, 0xC3, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0x0F, 0xF8, 0x07, 0xFE, - 0x01, 0xFF, 0x80, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x03, 0xF0, 0x01, - 0xFC, 0x03, 0xFF, 0xF1, 0xFF, 0xF8, 0x7F, 0xFE, 0x1F, 0xFF, 0x80, 0xFE, - 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, - 0x1F, 0xC0, 0x07, 0xE0, 0x01, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF0, 0x00, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, - 0x01, 0xF8, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x07, 0xC3, 0xF8, - 0x01, 0xFF, 0x9F, 0x80, 0x1F, 0xFE, 0xFC, 0x01, 0xFF, 0xFF, 0xE0, 0x1F, - 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xF8, 0x1F, 0xE0, 0x3F, 0x80, 0xFE, 0x01, - 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF8, - 0x3F, 0x80, 0x0F, 0x81, 0xF8, 0x00, 0x7C, 0x1F, 0xC0, 0x07, 0xE0, 0xFE, - 0x00, 0x3F, 0x07, 0xF0, 0x01, 0xF0, 0x3F, 0x80, 0x1F, 0x81, 0xFC, 0x00, - 0xFC, 0x0F, 0xE0, 0x0F, 0xE0, 0x7F, 0x80, 0xFF, 0x03, 0xFE, 0x1F, 0xF0, - 0x0F, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xF7, 0xE0, 0x07, - 0xFE, 0x7F, 0x00, 0x0F, 0xC3, 0xF0, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, - 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x7F, 0x00, 0xFE, 0x03, 0xFC, 0x1F, 0xE0, - 0x1F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x00, 0x01, - 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xE0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x0F, - 0xC0, 0x1F, 0xCF, 0xFE, 0x03, 0xFB, 0xFF, 0xE0, 0x7F, 0xFF, 0xFE, 0x0F, - 0xFF, 0xFF, 0xC3, 0xFF, 0x07, 0xF8, 0x7F, 0x80, 0x7F, 0x0F, 0xE0, 0x0F, - 0xE1, 0xFC, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x0F, 0xE0, 0x07, 0xE1, 0xFC, - 0x01, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, 0xFC, 0x00, 0xFC, - 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, - 0x1F, 0xC7, 0xF0, 0x03, 0xF0, 0xFE, 0x00, 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, - 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x1F, 0xC0, 0x0F, 0xC0, 0x01, 0xFC, - 0x07, 0xF0, 0x1F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, - 0x03, 0xF8, 0x0F, 0xC0, 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, - 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, - 0x01, 0xFC, 0x07, 0xE0, 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x00, 0x0F, - 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x3F, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xF0, 0x00, 0xFE, - 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x03, 0xF8, - 0x00, 0x7F, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, - 0x01, 0xFC, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x01, 0xFC, 0x00, 0x3F, 0x80, - 0x07, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x00, 0xFE, 0x00, - 0x1F, 0x80, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x1F, 0xC0, 0x03, 0xF8, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x00, 0x7F, 0xC0, 0x0F, - 0xF8, 0x03, 0xFE, 0x00, 0x7E, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x7F, 0x00, 0xFE, 0x07, 0xE0, 0x3F, 0xC0, 0x7E, 0x07, - 0xF8, 0x0F, 0xE0, 0xFF, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE3, 0xF8, 0x00, - 0xFC, 0x7F, 0x00, 0x0F, 0xCF, 0xE0, 0x01, 0xFD, 0xFC, 0x00, 0x1F, 0xFF, - 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x1F, 0xFF, 0x80, 0x03, 0xFF, 0xFC, 0x00, - 0x3F, 0xFF, 0xC0, 0x03, 0xFE, 0xFE, 0x00, 0x3F, 0xCF, 0xE0, 0x03, 0xF0, - 0xFE, 0x00, 0x7F, 0x07, 0xF0, 0x07, 0xF0, 0x7F, 0x00, 0x7F, 0x07, 0xF8, - 0x07, 0xE0, 0x3F, 0x80, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xC0, 0xFE, - 0x01, 0xFC, 0x0F, 0xC0, 0x1F, 0xE0, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0x80, - 0x7E, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, - 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xC0, - 0x3F, 0x01, 0xFC, 0x07, 0xF0, 0x1F, 0xC0, 0x7E, 0x03, 0xF8, 0x0F, 0xE0, - 0x3F, 0x80, 0xFC, 0x03, 0xF0, 0x1F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, - 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x00, 0x07, 0xF0, 0xFC, 0x03, 0xF0, 0x07, - 0xE3, 0xFF, 0x0F, 0xFC, 0x07, 0xEF, 0xFF, 0x3F, 0xFE, 0x0F, 0xFF, 0xFF, - 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0x0F, 0xF8, 0x7F, 0xF0, 0xFF, - 0x0F, 0xE0, 0x3F, 0xC0, 0x7F, 0x0F, 0xE0, 0x3F, 0x80, 0x7F, 0x1F, 0xC0, - 0x3F, 0x80, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, 0x7E, 0x1F, 0xC0, 0x3F, 0x00, - 0xFE, 0x1F, 0x80, 0x7F, 0x00, 0xFE, 0x3F, 0x80, 0x7F, 0x00, 0xFC, 0x3F, - 0x80, 0x7F, 0x00, 0xFC, 0x3F, 0x80, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0x7E, - 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x01, 0xFC, 0x7F, 0x00, 0xFE, 0x01, 0xF8, - 0x7F, 0x00, 0xFE, 0x01, 0xF8, 0x7F, 0x00, 0xFC, 0x03, 0xF8, 0x7E, 0x01, - 0xFC, 0x03, 0xF8, 0x7E, 0x01, 0xFC, 0x03, 0xF8, 0xFE, 0x01, 0xFC, 0x03, - 0xF0, 0xFE, 0x01, 0xF8, 0x03, 0xF0, 0xFE, 0x01, 0xF8, 0x07, 0xF0, 0x07, - 0xF0, 0xFE, 0x00, 0xFE, 0x7F, 0xF0, 0x1F, 0x9F, 0xFF, 0x03, 0xFF, 0xFF, - 0xF0, 0xFF, 0xFF, 0xFE, 0x1F, 0xF8, 0x3F, 0xC3, 0xFC, 0x03, 0xF8, 0x7F, - 0x00, 0x7F, 0x0F, 0xE0, 0x0F, 0xE3, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x3F, - 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, 0x00, 0x3F, 0x8F, 0xE0, - 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x00, 0x3F, 0x87, 0xE0, 0x07, 0xF1, - 0xFC, 0x00, 0xFE, 0x3F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, 0xFC, 0x00, - 0xFE, 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x03, 0xF8, 0xFE, 0x00, 0x7E, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x1F, 0xFF, 0xE0, 0x0F, 0xFF, - 0xFC, 0x07, 0xFF, 0xFF, 0x83, 0xFC, 0x1F, 0xE1, 0xFE, 0x03, 0xFC, 0xFF, - 0x00, 0xFF, 0x3F, 0x80, 0x1F, 0xDF, 0xC0, 0x07, 0xF7, 0xF0, 0x01, 0xFD, - 0xFC, 0x00, 0x7F, 0xFE, 0x00, 0x1F, 0xFF, 0x80, 0x07, 0xFF, 0xE0, 0x03, - 0xFB, 0xF8, 0x00, 0xFE, 0xFE, 0x00, 0x3F, 0xBF, 0x80, 0x1F, 0xCF, 0xF0, - 0x0F, 0xF3, 0xFC, 0x07, 0xF8, 0x7F, 0x83, 0xFC, 0x1F, 0xFF, 0xFE, 0x03, - 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x01, 0xFC, 0x3F, 0x00, 0x0F, 0xCF, 0xFE, 0x00, 0x7E, 0xFF, 0xF8, - 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, 0xFF, 0x01, 0xFF, 0x87, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0xFF, 0x00, 0xFF, 0x07, 0xF0, 0x03, 0xF8, 0x3F, 0x80, - 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x0F, 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x3F, - 0x87, 0xF0, 0x01, 0xFC, 0x3F, 0x00, 0x1F, 0xC1, 0xF8, 0x00, 0xFE, 0x1F, - 0xC0, 0x07, 0xF0, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x07, 0xF8, 0x3F, 0xC0, - 0x7F, 0x81, 0xFF, 0x87, 0xF8, 0x1F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, - 0x07, 0xF7, 0xFF, 0xC0, 0x3F, 0x1F, 0xF8, 0x01, 0xF8, 0x7F, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x87, 0xF0, - 0x0F, 0xFE, 0x7F, 0x01, 0xFF, 0xF7, 0xE0, 0x3F, 0xFF, 0x7E, 0x07, 0xFF, - 0xFF, 0xE0, 0xFF, 0x07, 0xFE, 0x1F, 0xE0, 0x3F, 0xE3, 0xFC, 0x03, 0xFC, - 0x3F, 0x80, 0x1F, 0xC7, 0xF0, 0x01, 0xFC, 0x7F, 0x00, 0x1F, 0xC7, 0xF0, - 0x01, 0xF8, 0xFE, 0x00, 0x1F, 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x3F, - 0x8F, 0xE0, 0x03, 0xF8, 0xFE, 0x00, 0x7F, 0x0F, 0xE0, 0x07, 0xF0, 0xFE, - 0x00, 0xFF, 0x0F, 0xF0, 0x1F, 0xF0, 0x7F, 0x87, 0xFF, 0x07, 0xFF, 0xFF, - 0xE0, 0x3F, 0xFF, 0x7E, 0x03, 0xFF, 0xEF, 0xE0, 0x1F, 0xFC, 0xFE, 0x00, - 0x7F, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x07, - 0xF0, 0xF0, 0x7F, 0x3F, 0x07, 0xE7, 0xE0, 0x7E, 0xFE, 0x0F, 0xFF, 0xE0, - 0xFF, 0xFE, 0x0F, 0xFC, 0x00, 0xFF, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, - 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, - 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xF0, - 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0xFE, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x07, - 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x0F, 0xE0, 0xFF, 0x1F, 0xC0, 0x7F, 0x1F, - 0xC0, 0x7F, 0x1F, 0xE0, 0x00, 0x1F, 0xFC, 0x00, 0x1F, 0xFF, 0xC0, 0x0F, - 0xFF, 0xF0, 0x07, 0xFF, 0xF8, 0x03, 0xFF, 0xFC, 0x00, 0x7F, 0xFE, 0x00, - 0x0F, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFE, 0xFC, 0x00, 0xFE, 0xFE, - 0x00, 0xFE, 0xFF, 0x03, 0xFC, 0x7F, 0xFF, 0xF8, 0x7F, 0xFF, 0xF8, 0x3F, - 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x03, 0xFE, 0x00, 0x03, 0xF0, 0x1F, 0xC0, - 0x7F, 0x01, 0xFC, 0x07, 0xE0, 0x3F, 0x80, 0xFE, 0x1F, 0xFF, 0x7F, 0xFD, - 0xFF, 0xFF, 0xFF, 0xC7, 0xF0, 0x1F, 0xC0, 0x7E, 0x01, 0xF8, 0x0F, 0xE0, - 0x3F, 0x80, 0xFE, 0x03, 0xF0, 0x0F, 0xC0, 0x7F, 0x01, 0xFC, 0x07, 0xE0, - 0x1F, 0x80, 0xFE, 0x03, 0xF8, 0x0F, 0xE0, 0x3F, 0xF0, 0xFF, 0xC3, 0xFF, - 0x07, 0xFC, 0x0F, 0xE0, 0x0F, 0xC0, 0x0F, 0xE1, 0xF8, 0x01, 0xFC, 0x7F, - 0x00, 0x3F, 0x0F, 0xE0, 0x0F, 0xE1, 0xFC, 0x01, 0xFC, 0x3F, 0x00, 0x3F, - 0x87, 0xE0, 0x07, 0xE1, 0xFC, 0x00, 0xFC, 0x3F, 0x80, 0x3F, 0x87, 0xF0, - 0x07, 0xF0, 0xFC, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0x87, 0xF0, 0x03, 0xF0, - 0xFE, 0x00, 0xFE, 0x1F, 0x80, 0x1F, 0xC3, 0xF0, 0x03, 0xF0, 0xFE, 0x00, - 0x7E, 0x1F, 0xC0, 0x1F, 0xC3, 0xF8, 0x07, 0xF8, 0x7F, 0x01, 0xFF, 0x0F, - 0xF0, 0x7F, 0xC1, 0xFF, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0x03, 0xFF, 0xEF, - 0xE0, 0x3F, 0xF9, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0x7F, - 0x00, 0x3F, 0xBF, 0x80, 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x1F, 0xC3, - 0xF0, 0x0F, 0xC1, 0xFC, 0x0F, 0xE0, 0xFE, 0x07, 0xE0, 0x7F, 0x07, 0xF0, - 0x3F, 0x83, 0xF0, 0x0F, 0xC3, 0xF8, 0x07, 0xE1, 0xF8, 0x03, 0xF1, 0xFC, - 0x01, 0xF8, 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7E, 0x00, 0x3F, 0x7E, - 0x00, 0x0F, 0xBF, 0x00, 0x07, 0xFF, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xFF, - 0x80, 0x00, 0xFF, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0x1F, - 0xE0, 0x00, 0x00, 0xFE, 0x03, 0xF8, 0x0F, 0xFF, 0xC0, 0x7F, 0x01, 0xFF, - 0xF8, 0x1F, 0xE0, 0x3F, 0x7F, 0x03, 0xFC, 0x0F, 0xEF, 0xE0, 0xFF, 0x81, - 0xF9, 0xFC, 0x1F, 0xF0, 0x7F, 0x3F, 0x83, 0xFE, 0x0F, 0xC3, 0xF0, 0xFF, - 0xC3, 0xF8, 0x7E, 0x1E, 0xF8, 0x7E, 0x0F, 0xC7, 0xDF, 0x1F, 0xC1, 0xF8, - 0xFB, 0xE3, 0xF0, 0x3F, 0x1E, 0x7C, 0x7E, 0x07, 0xE7, 0xCF, 0x9F, 0x80, - 0xFC, 0xF1, 0xF3, 0xF0, 0x1F, 0xBE, 0x3E, 0xFC, 0x03, 0xF7, 0x87, 0xDF, - 0x80, 0x7E, 0xF0, 0xFF, 0xE0, 0x0F, 0xFE, 0x1F, 0xFC, 0x01, 0xFF, 0x83, - 0xFF, 0x00, 0x3F, 0xF0, 0x7F, 0xE0, 0x07, 0xFC, 0x0F, 0xF8, 0x00, 0x7F, - 0x81, 0xFF, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x01, 0xFC, 0x07, 0xF8, 0x00, - 0x3F, 0x80, 0xFE, 0x00, 0x00, 0x03, 0xFC, 0x07, 0xF8, 0x1F, 0xE0, 0x7F, - 0x80, 0x7F, 0x03, 0xF8, 0x03, 0xF8, 0x3F, 0x80, 0x1F, 0xE3, 0xF8, 0x00, - 0x7F, 0x3F, 0x80, 0x03, 0xF9, 0xFC, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x7F, - 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0x7F, 0xC0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, 0xFF, 0x80, 0x00, - 0x1F, 0xFE, 0x00, 0x01, 0xFF, 0xF0, 0x00, 0x1F, 0xDF, 0xC0, 0x01, 0xFC, - 0xFE, 0x00, 0x1F, 0xE7, 0xF8, 0x00, 0xFE, 0x1F, 0xC0, 0x0F, 0xE0, 0xFE, - 0x00, 0xFF, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x00, 0xFF, 0x00, - 0x0F, 0xE0, 0x03, 0xF0, 0x7F, 0x00, 0x3F, 0x83, 0xF8, 0x01, 0xF8, 0x1F, - 0xC0, 0x1F, 0xC0, 0xFE, 0x00, 0xFC, 0x03, 0xF8, 0x0F, 0xE0, 0x1F, 0xC0, - 0x7E, 0x00, 0xFE, 0x07, 0xE0, 0x07, 0xF0, 0x3F, 0x00, 0x3F, 0x83, 0xF0, - 0x01, 0xFC, 0x1F, 0x80, 0x0F, 0xE1, 0xF8, 0x00, 0x3F, 0x0F, 0xC0, 0x01, - 0xF8, 0xFC, 0x00, 0x0F, 0xC7, 0xC0, 0x00, 0x7F, 0x7E, 0x00, 0x03, 0xFB, - 0xE0, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x00, 0x03, 0xFF, 0x80, - 0x00, 0x1F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF8, 0x00, - 0x01, 0xFF, 0x80, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x07, - 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xC0, 0xFF, - 0xFF, 0xF0, 0x3F, 0xFF, 0xF8, 0x1F, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF8, - 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x7F, 0xFF, 0xFC, 0x1F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, - 0xE0, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x0F, 0xF0, 0x07, 0xFC, - 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x3F, 0x00, 0x7F, 0x80, 0x1F, 0x80, 0x07, 0xE0, 0x03, 0xFC, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x01, - 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x01, 0xFE, 0x00, 0x7F, - 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0xC0, 0x1C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, - 0x03, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x70, - 0x07, 0x80, 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x01, - 0xFE, 0x00, 0x7F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, - 0xFF, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0xF8, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x80, 0x07, 0xC0, 0x01, 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xFF, 0x80, - 0x3F, 0xC0, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0x80, 0x07, 0xFF, - 0x03, 0xDF, 0xFE, 0x0F, 0xF0, 0x7F, 0xFB, 0x80, 0xFF, 0xE0, 0x01, 0xFF, - 0x00, 0x03, 0xF0 }; - -const GFXglyph FreeSansBoldOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 14, 34, 16, 5, -33 }, // 0x21 '!' - { 60, 18, 12, 22, 8, -33 }, // 0x22 '"' - { 87, 29, 33, 26, 2, -31 }, // 0x23 '#' - { 207, 26, 42, 26, 3, -35 }, // 0x24 '$' - { 344, 36, 34, 42, 6, -32 }, // 0x25 '%' - { 497, 29, 35, 34, 4, -33 }, // 0x26 '&' - { 624, 7, 12, 11, 8, -33 }, // 0x27 ''' - { 635, 17, 44, 16, 4, -33 }, // 0x28 '(' - { 729, 17, 44, 16, 0, -34 }, // 0x29 ')' - { 823, 15, 15, 18, 7, -33 }, // 0x2A '*' - { 852, 24, 22, 27, 4, -21 }, // 0x2B '+' - { 918, 10, 15, 13, 1, -6 }, // 0x2C ',' - { 937, 14, 6, 16, 3, -15 }, // 0x2D '-' - { 948, 8, 7, 13, 3, -6 }, // 0x2E '.' - { 955, 20, 34, 13, 0, -32 }, // 0x2F '/' - { 1040, 25, 35, 26, 4, -33 }, // 0x30 '0' - { 1150, 17, 33, 26, 8, -32 }, // 0x31 '1' - { 1221, 29, 34, 26, 1, -33 }, // 0x32 '2' - { 1345, 26, 35, 26, 3, -33 }, // 0x33 '3' - { 1459, 25, 32, 26, 3, -31 }, // 0x34 '4' - { 1559, 27, 34, 26, 3, -32 }, // 0x35 '5' - { 1674, 25, 35, 26, 4, -33 }, // 0x36 '6' - { 1784, 26, 33, 26, 6, -32 }, // 0x37 '7' - { 1892, 26, 35, 26, 3, -33 }, // 0x38 '8' - { 2006, 25, 35, 26, 4, -33 }, // 0x39 '9' - { 2116, 12, 25, 16, 5, -24 }, // 0x3A ':' - { 2154, 14, 33, 16, 3, -24 }, // 0x3B ';' - { 2212, 26, 23, 27, 4, -22 }, // 0x3C '<' - { 2287, 26, 18, 27, 3, -19 }, // 0x3D '=' - { 2346, 26, 23, 27, 1, -21 }, // 0x3E '>' - { 2421, 24, 35, 29, 8, -34 }, // 0x3F '?' - { 2526, 45, 41, 46, 3, -34 }, // 0x40 '@' - { 2757, 32, 34, 34, 1, -33 }, // 0x41 'A' - { 2893, 32, 34, 34, 4, -33 }, // 0x42 'B' - { 3029, 32, 36, 34, 5, -34 }, // 0x43 'C' - { 3173, 32, 34, 34, 4, -33 }, // 0x44 'D' - { 3309, 32, 34, 31, 4, -33 }, // 0x45 'E' - { 3445, 32, 34, 29, 3, -33 }, // 0x46 'F' - { 3581, 33, 36, 37, 5, -34 }, // 0x47 'G' - { 3730, 35, 34, 34, 3, -33 }, // 0x48 'H' - { 3879, 14, 34, 13, 3, -33 }, // 0x49 'I' - { 3939, 27, 35, 26, 3, -33 }, // 0x4A 'J' - { 4058, 37, 34, 34, 3, -33 }, // 0x4B 'K' - { 4216, 24, 34, 29, 4, -33 }, // 0x4C 'L' - { 4318, 41, 34, 39, 3, -33 }, // 0x4D 'M' - { 4493, 35, 34, 34, 3, -33 }, // 0x4E 'N' - { 4642, 34, 36, 37, 5, -34 }, // 0x4F 'O' - { 4795, 31, 34, 31, 4, -33 }, // 0x50 'P' - { 4927, 34, 37, 37, 5, -34 }, // 0x51 'Q' - { 5085, 33, 34, 34, 4, -33 }, // 0x52 'R' - { 5226, 30, 36, 31, 4, -34 }, // 0x53 'S' - { 5361, 28, 34, 29, 7, -33 }, // 0x54 'T' - { 5480, 32, 35, 34, 6, -33 }, // 0x55 'U' - { 5620, 30, 34, 31, 8, -33 }, // 0x56 'V' - { 5748, 43, 34, 44, 8, -33 }, // 0x57 'W' - { 5931, 37, 34, 31, 1, -33 }, // 0x58 'X' - { 6089, 29, 34, 31, 9, -33 }, // 0x59 'Y' - { 6213, 33, 34, 29, 1, -33 }, // 0x5A 'Z' - { 6354, 21, 43, 16, 1, -33 }, // 0x5B '[' - { 6467, 7, 36, 13, 6, -34 }, // 0x5C '\' - { 6499, 21, 43, 16, -1, -33 }, // 0x5D ']' - { 6612, 21, 20, 27, 6, -32 }, // 0x5E '^' - { 6665, 29, 4, 26, -3, 6 }, // 0x5F '_' - { 6680, 7, 7, 16, 8, -35 }, // 0x60 '`' - { 6687, 25, 26, 26, 2, -24 }, // 0x61 'a' - { 6769, 27, 35, 29, 3, -33 }, // 0x62 'b' - { 6888, 25, 26, 26, 4, -24 }, // 0x63 'c' - { 6970, 29, 35, 29, 4, -33 }, // 0x64 'd' - { 7097, 25, 26, 26, 3, -24 }, // 0x65 'e' - { 7179, 18, 34, 16, 4, -33 }, // 0x66 'f' - { 7256, 29, 35, 29, 2, -24 }, // 0x67 'g' - { 7383, 27, 34, 29, 3, -33 }, // 0x68 'h' - { 7498, 14, 34, 13, 3, -33 }, // 0x69 'i' - { 7558, 19, 44, 13, -2, -33 }, // 0x6A 'j' - { 7663, 28, 34, 26, 3, -33 }, // 0x6B 'k' - { 7782, 14, 34, 13, 3, -33 }, // 0x6C 'l' - { 7842, 40, 25, 42, 3, -24 }, // 0x6D 'm' - { 7967, 27, 25, 29, 3, -24 }, // 0x6E 'n' - { 8052, 26, 26, 29, 4, -24 }, // 0x6F 'o' - { 8137, 29, 35, 29, 1, -24 }, // 0x70 'p' - { 8264, 28, 35, 29, 3, -24 }, // 0x71 'q' - { 8387, 20, 25, 18, 3, -24 }, // 0x72 'r' - { 8450, 24, 26, 26, 3, -24 }, // 0x73 's' - { 8528, 14, 32, 16, 5, -30 }, // 0x74 't' - { 8584, 27, 26, 29, 4, -24 }, // 0x75 'u' - { 8672, 25, 25, 26, 6, -24 }, // 0x76 'v' - { 8751, 35, 25, 37, 6, -24 }, // 0x77 'w' - { 8861, 29, 25, 26, 1, -24 }, // 0x78 'x' - { 8952, 29, 35, 26, 2, -24 }, // 0x79 'y' - { 9079, 26, 25, 23, 1, -24 }, // 0x7A 'z' - { 9161, 18, 43, 18, 4, -33 }, // 0x7B '{' - { 9258, 13, 43, 13, 3, -33 }, // 0x7C '|' - { 9328, 18, 43, 18, 2, -33 }, // 0x7D '}' - { 9425, 22, 8, 27, 5, -14 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique24pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique24pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 10119 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h deleted file mode 100644 index 6250aca3e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h +++ /dev/null @@ -1,227 +0,0 @@ -const uint8_t FreeSansBoldOblique9pt7bBitmaps[] PROGMEM = { - 0x21, 0x8E, 0x73, 0x18, 0xC6, 0x21, 0x19, 0xCE, 0x00, 0xEF, 0xDF, 0xBE, - 0x68, 0x80, 0x06, 0xC1, 0x99, 0xFF, 0xBF, 0xF1, 0xB0, 0x66, 0x0C, 0xC7, - 0xFC, 0xFF, 0x8C, 0x83, 0x30, 0x64, 0x00, 0x02, 0x00, 0xF0, 0x7F, 0x1D, - 0x73, 0xEE, 0x78, 0x0F, 0x00, 0xF8, 0x0F, 0xC1, 0xBB, 0xA7, 0x74, 0xEF, - 0xF8, 0xFE, 0x04, 0x00, 0x80, 0x3C, 0x11, 0xF8, 0x8E, 0x66, 0x31, 0x90, - 0xCE, 0x83, 0xF4, 0x07, 0xB0, 0x00, 0x9E, 0x04, 0xFC, 0x26, 0x31, 0x98, - 0xC4, 0x7E, 0x20, 0xF0, 0x07, 0x80, 0xFC, 0x1D, 0xC1, 0xDC, 0x1F, 0x80, - 0xE0, 0x3E, 0x37, 0x77, 0xE3, 0xEE, 0x3C, 0xE3, 0xCF, 0xFE, 0x3C, 0xE0, - 0xFF, 0xE8, 0x06, 0x06, 0x0C, 0x18, 0x38, 0x30, 0x70, 0x60, 0xE0, 0xE0, - 0xE0, 0xE0, 0xE0, 0xE0, 0x60, 0x70, 0x30, 0x0C, 0x0E, 0x06, 0x07, 0x07, - 0x07, 0x07, 0x07, 0x07, 0x06, 0x0E, 0x0C, 0x1C, 0x18, 0x30, 0x60, 0x60, - 0x32, 0xBF, 0x9C, 0xD2, 0x40, 0x0C, 0x06, 0x07, 0x1F, 0xFF, 0xF0, 0xC0, - 0xE0, 0x60, 0x77, 0x72, 0x6C, 0xFF, 0xC0, 0xFC, 0x02, 0x02, 0x04, 0x04, - 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, 0x07, 0xE3, - 0x9D, 0xC7, 0x71, 0xDC, 0x7E, 0x1F, 0x8E, 0xE3, 0xB8, 0xEE, 0x73, 0xF8, - 0x3C, 0x00, 0x04, 0x3B, 0xF7, 0xE1, 0xC3, 0x06, 0x1C, 0x38, 0x70, 0xC1, - 0x87, 0x00, 0x0F, 0x87, 0xFC, 0xE3, 0xB8, 0x70, 0x0E, 0x03, 0x80, 0xF0, - 0x38, 0x1E, 0x07, 0x01, 0xC0, 0x7F, 0xCF, 0xF8, 0x0F, 0xC7, 0xFC, 0xE3, - 0xB8, 0x70, 0x1C, 0x0F, 0x03, 0xF0, 0x0E, 0x01, 0xDC, 0x3B, 0x8E, 0x7F, - 0x83, 0xE0, 0x03, 0xC0, 0xE0, 0x58, 0x2E, 0x13, 0x8C, 0xE6, 0x33, 0xFE, - 0xFF, 0x81, 0xC0, 0x60, 0x18, 0x0F, 0xE3, 0xFC, 0x60, 0x0C, 0x03, 0x78, - 0x7F, 0x9C, 0x70, 0x0E, 0x01, 0xDC, 0x33, 0x8E, 0x7F, 0x83, 0xE0, 0x0F, - 0x07, 0xE3, 0x9D, 0xC0, 0x7F, 0x1F, 0xEF, 0x3B, 0x8E, 0xE3, 0xB8, 0xCE, - 0x71, 0xF8, 0x3C, 0x00, 0x7F, 0xDF, 0xF0, 0x18, 0x0C, 0x06, 0x03, 0x81, - 0xC0, 0x60, 0x38, 0x0C, 0x07, 0x01, 0x80, 0x60, 0x00, 0x0F, 0x83, 0xFC, - 0xE3, 0x9C, 0x73, 0x9C, 0x3F, 0x0F, 0xE3, 0x8E, 0xE1, 0xDC, 0x3B, 0x8E, - 0x7F, 0xC3, 0xE0, 0x0F, 0x83, 0xF8, 0xE3, 0xB8, 0x77, 0x0E, 0xE1, 0xDC, - 0x7B, 0xFE, 0x3D, 0xC0, 0x33, 0x8E, 0x7F, 0x87, 0xC0, 0x77, 0x00, 0x00, - 0x0E, 0xE0, 0x39, 0xC0, 0x00, 0x01, 0xCE, 0x71, 0x19, 0x80, 0x00, 0x00, - 0x70, 0xFD, 0xF8, 0x70, 0x3F, 0x03, 0xF8, 0x1E, 0x01, 0x80, 0x7F, 0xDF, - 0xF0, 0x00, 0x00, 0xFF, 0xBF, 0xE0, 0x60, 0x1E, 0x07, 0xF0, 0x3F, 0x03, - 0x87, 0xEF, 0xC3, 0x80, 0x00, 0x00, 0x1F, 0x1F, 0xFE, 0x1F, 0x87, 0x01, - 0xC0, 0xE0, 0x70, 0x78, 0x3C, 0x0E, 0x00, 0x00, 0xE0, 0x38, 0x00, 0x00, - 0xFC, 0x00, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x07, 0x38, 0x01, 0xCC, 0x3F, - 0x36, 0x31, 0x8D, 0x98, 0x63, 0xC4, 0x11, 0xF3, 0x0C, 0x6C, 0xC6, 0x73, - 0x3E, 0xF8, 0xE7, 0x3C, 0x1E, 0x00, 0x03, 0xFE, 0x00, 0x3F, 0x00, 0x01, - 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0xC0, 0x6F, 0x03, 0x38, 0x31, 0xC3, 0x8E, - 0x1F, 0xF1, 0xFF, 0x8C, 0x1E, 0xE0, 0x76, 0x03, 0x80, 0x1F, 0xF0, 0xFF, - 0xC6, 0x0E, 0x70, 0x73, 0x87, 0x1F, 0xF0, 0xFF, 0x86, 0x0E, 0x70, 0x73, - 0x83, 0x9C, 0x38, 0xFF, 0xC7, 0xF8, 0x00, 0x07, 0xE0, 0xFF, 0x8F, 0x1E, - 0x70, 0x77, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x03, 0xBC, - 0x38, 0xFF, 0x83, 0xF0, 0x00, 0x1F, 0xE0, 0xFF, 0x86, 0x1E, 0x70, 0x73, - 0x83, 0x9C, 0x1C, 0xC0, 0xE6, 0x07, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, - 0x8F, 0xF0, 0x00, 0x1F, 0xF8, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1F, - 0xF0, 0xFF, 0x86, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xFF, 0xC7, 0xFC, - 0x00, 0x1F, 0xF1, 0xFF, 0x18, 0x03, 0x80, 0x38, 0x03, 0xFC, 0x3F, 0xC7, - 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, 0x00, 0x07, 0xC1, 0xFE, - 0x38, 0x77, 0x03, 0x70, 0x0E, 0x00, 0xE1, 0xEE, 0x1E, 0xE0, 0x6E, 0x0E, - 0x70, 0xE7, 0xFC, 0x1F, 0x40, 0x1C, 0x1C, 0x60, 0x63, 0x83, 0x8E, 0x0E, - 0x38, 0x38, 0xFF, 0xC3, 0xFF, 0x1C, 0x1C, 0x70, 0x71, 0xC1, 0xC6, 0x06, - 0x18, 0x38, 0xE0, 0xE0, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, - 0x00, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, - 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x87, 0xC0, 0x1C, 0x3C, 0x71, 0xC1, 0x8E, - 0x0E, 0x70, 0x3B, 0x80, 0xFC, 0x03, 0xF0, 0x0E, 0xE0, 0x73, 0x81, 0xC7, - 0x07, 0x1C, 0x18, 0x38, 0xE0, 0xF0, 0x1C, 0x07, 0x01, 0x80, 0xE0, 0x38, - 0x0E, 0x03, 0x80, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xFF, 0x7F, 0x80, 0x1E, - 0x1F, 0x1E, 0x1E, 0x3E, 0x1E, 0x3E, 0x3E, 0x36, 0x3E, 0x36, 0x6E, 0x36, - 0x6C, 0x76, 0xCC, 0x76, 0xDC, 0x67, 0x9C, 0x67, 0x98, 0xE7, 0x18, 0xE7, - 0x18, 0x1C, 0x1C, 0x70, 0x63, 0xE1, 0x8F, 0x8E, 0x3E, 0x38, 0xDC, 0xC3, - 0x33, 0x1C, 0xEC, 0x71, 0xF1, 0xC7, 0xC6, 0x1E, 0x18, 0x38, 0xE0, 0xE0, - 0x07, 0xC0, 0xFF, 0x8E, 0x1E, 0xE0, 0x77, 0x03, 0xF0, 0x1F, 0x80, 0xFC, - 0x07, 0xE0, 0x77, 0x03, 0xBC, 0x38, 0xFF, 0x81, 0xF0, 0x00, 0x1F, 0xF0, - 0xFF, 0xC6, 0x0E, 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xF8, 0x70, - 0x03, 0x80, 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x8F, - 0x1C, 0xE0, 0x77, 0x03, 0xB0, 0x1F, 0x80, 0xFC, 0x06, 0xE1, 0x77, 0x1F, - 0x3C, 0x78, 0xFF, 0xC1, 0xF6, 0x00, 0x20, 0x1F, 0xF0, 0xFF, 0xC6, 0x0E, - 0x70, 0x73, 0x83, 0x9C, 0x38, 0xFF, 0x87, 0xFC, 0x70, 0x73, 0x83, 0x9C, - 0x38, 0xC1, 0xC6, 0x0F, 0x00, 0x07, 0xE0, 0xFF, 0xC7, 0x0E, 0x70, 0x73, - 0x80, 0x1F, 0x80, 0x7F, 0x80, 0x7E, 0x00, 0x77, 0x03, 0xBC, 0x38, 0xFF, - 0xC3, 0xF8, 0x00, 0xFF, 0xDF, 0xF8, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x06, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xC0, 0x18, 0x07, 0x00, 0x38, 0x31, 0xC1, - 0x8C, 0x1C, 0xE0, 0xE7, 0x07, 0x38, 0x31, 0xC3, 0x9C, 0x1C, 0xE0, 0xE7, - 0x06, 0x38, 0x70, 0xFF, 0x03, 0xE0, 0x00, 0xE0, 0xFC, 0x1D, 0x87, 0x30, - 0xC6, 0x38, 0xC6, 0x19, 0xC3, 0xB0, 0x7E, 0x0F, 0x80, 0xF0, 0x1C, 0x03, - 0x00, 0xE1, 0xC3, 0xF1, 0xE3, 0xB8, 0xF1, 0xDC, 0x78, 0xCE, 0x6C, 0xE7, - 0x36, 0x63, 0xB3, 0x70, 0xD9, 0xB0, 0x7C, 0xD8, 0x3C, 0x78, 0x1E, 0x3C, - 0x0E, 0x1C, 0x07, 0x0E, 0x00, 0x0E, 0x1C, 0x38, 0xE0, 0xE7, 0x01, 0xD8, - 0x07, 0xE0, 0x0F, 0x00, 0x38, 0x01, 0xE0, 0x0F, 0xC0, 0x77, 0x01, 0x8E, - 0x0E, 0x38, 0x70, 0xF0, 0xE0, 0xEE, 0x39, 0xC7, 0x39, 0xC3, 0x70, 0x7C, - 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x3F, 0xF3, - 0xFF, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x3C, 0x07, - 0x80, 0x70, 0x0F, 0xFC, 0xFF, 0xC0, 0x0F, 0x0F, 0x0C, 0x1C, 0x18, 0x18, - 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x78, 0x78, 0x12, - 0x4C, 0x92, 0x49, 0x26, 0xD9, 0x20, 0x1E, 0x1E, 0x06, 0x06, 0x06, 0x0C, - 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x38, 0x30, 0xF0, 0xF0, 0x06, - 0x0E, 0x0E, 0x1B, 0x33, 0x33, 0x63, 0x63, 0xFF, 0xE0, 0xCC, 0x1F, 0x8F, - 0xF3, 0x1C, 0x06, 0x1F, 0x9F, 0xEE, 0x3B, 0x9C, 0xFF, 0x1D, 0xC0, 0x18, - 0x03, 0x00, 0xE0, 0x1D, 0xC3, 0xFC, 0x71, 0xDC, 0x3B, 0x87, 0x70, 0xEE, - 0x39, 0xCF, 0x7F, 0xCF, 0xE0, 0x0F, 0x0F, 0xF7, 0x1D, 0xC0, 0xE0, 0x38, - 0x0E, 0x03, 0x8E, 0x7F, 0x0F, 0x80, 0x00, 0x60, 0x06, 0x00, 0x61, 0xEE, - 0x3F, 0xE7, 0x9C, 0x71, 0xCE, 0x1C, 0xE1, 0xCE, 0x1C, 0xE3, 0x87, 0xF8, - 0x7F, 0x80, 0x1F, 0x0F, 0xE7, 0x1D, 0xC7, 0xFF, 0xFF, 0xFE, 0x03, 0x8E, - 0x7F, 0x0F, 0x80, 0x1C, 0xF3, 0x3F, 0xFD, 0xC7, 0x18, 0x63, 0x8E, 0x30, - 0xC0, 0x0F, 0x71, 0xFE, 0x3C, 0xE3, 0x8E, 0x70, 0xE7, 0x0E, 0x70, 0xC7, - 0x1C, 0x3F, 0xC3, 0xFC, 0x01, 0xCE, 0x38, 0x7F, 0x03, 0xE0, 0x18, 0x03, - 0x00, 0xE0, 0x1D, 0xE3, 0xFE, 0x71, 0xCC, 0x3B, 0x86, 0x70, 0xCC, 0x39, - 0x87, 0x30, 0xEE, 0x18, 0x39, 0xC0, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, - 0x00, 0x06, 0x06, 0x00, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x1C, 0x1C, 0x18, - 0x18, 0x38, 0x38, 0x30, 0x70, 0xE0, 0x18, 0x03, 0x00, 0xE0, 0x1C, 0xE3, - 0x38, 0x6E, 0x1F, 0x83, 0xF0, 0x7E, 0x0E, 0xE1, 0x9C, 0x73, 0x8E, 0x38, - 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x63, 0x39, 0xCE, 0x00, 0x3B, 0x9E, 0x3F, - 0xFF, 0x39, 0xC7, 0x71, 0xC6, 0x71, 0x86, 0x71, 0x8E, 0x63, 0x8E, 0x63, - 0x8C, 0xE3, 0x8C, 0xE3, 0x1C, 0x3B, 0xC7, 0xFC, 0xE3, 0xB8, 0x77, 0x0C, - 0xE1, 0x98, 0x73, 0x0E, 0xE1, 0xDC, 0x30, 0x0F, 0x87, 0xF9, 0xE7, 0xB8, - 0x7E, 0x0F, 0xC1, 0xF8, 0x77, 0x9E, 0x7F, 0x87, 0xC0, 0x1D, 0xE1, 0xFE, - 0x1C, 0x73, 0x87, 0x38, 0x73, 0x87, 0x38, 0xE3, 0x8E, 0x7F, 0xC7, 0xF8, - 0x60, 0x06, 0x00, 0x60, 0x0E, 0x00, 0x1E, 0xE7, 0xFD, 0xE7, 0x38, 0xEE, - 0x1D, 0xC3, 0xB8, 0x77, 0x1C, 0x7F, 0x8F, 0xF0, 0x0E, 0x01, 0x80, 0x30, - 0x06, 0x00, 0x3B, 0x36, 0x38, 0x70, 0x70, 0x70, 0x60, 0x60, 0xE0, 0xE0, - 0x3E, 0x3F, 0xF8, 0xFC, 0x0F, 0xC3, 0xF8, 0x3D, 0x8E, 0xFE, 0x3E, 0x00, - 0x38, 0xCF, 0xFE, 0x71, 0x86, 0x38, 0xE3, 0x8F, 0x3C, 0x31, 0xDC, 0x77, - 0x19, 0x86, 0x63, 0xB8, 0xEE, 0x33, 0x9C, 0xFF, 0x1F, 0xC0, 0xE1, 0x98, - 0xE6, 0x31, 0x9C, 0x66, 0x1B, 0x86, 0xC1, 0xF0, 0x78, 0x0E, 0x00, 0xE7, - 0x1B, 0x9C, 0xEE, 0x73, 0x3B, 0xDC, 0xEB, 0x63, 0xAD, 0x8F, 0xBC, 0x1C, - 0xF0, 0x73, 0xC1, 0xCE, 0x00, 0x1C, 0xE1, 0xCC, 0x0D, 0x80, 0xF8, 0x0F, - 0x00, 0xF0, 0x1F, 0x03, 0xB8, 0x33, 0x87, 0x38, 0x70, 0xCE, 0x38, 0xC6, - 0x19, 0xC3, 0x30, 0x66, 0x0F, 0x81, 0xF0, 0x3C, 0x03, 0x80, 0x60, 0x18, - 0x0F, 0x01, 0xC0, 0x00, 0x1F, 0xCF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0x7F, 0xBF, 0xE0, 0x0E, 0x38, 0x61, 0x83, 0x06, 0x0C, 0x78, - 0xF0, 0xC1, 0x83, 0x0E, 0x1C, 0x38, 0x78, 0x70, 0x18, 0xC4, 0x21, 0x18, - 0xC4, 0x21, 0x18, 0xC4, 0x23, 0x18, 0x80, 0x1C, 0x3C, 0x38, 0x70, 0xE1, - 0x83, 0x06, 0x1E, 0x5C, 0x60, 0xC1, 0x83, 0x0C, 0x38, 0xE0, 0x71, 0x8E }; - -const GFXglyph FreeSansBoldOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 5, 13, 6, 2, -12 }, // 0x21 '!' - { 9, 7, 5, 9, 3, -12 }, // 0x22 '"' - { 14, 11, 12, 10, 1, -11 }, // 0x23 '#' - { 31, 11, 16, 10, 1, -13 }, // 0x24 '$' - { 53, 14, 13, 16, 2, -12 }, // 0x25 '%' - { 76, 12, 13, 13, 2, -12 }, // 0x26 '&' - { 96, 3, 5, 4, 3, -12 }, // 0x27 ''' - { 98, 8, 17, 6, 2, -12 }, // 0x28 '(' - { 115, 8, 17, 6, -2, -13 }, // 0x29 ')' - { 132, 6, 6, 7, 3, -12 }, // 0x2A '*' - { 137, 9, 8, 11, 2, -7 }, // 0x2B '+' - { 146, 4, 6, 5, 0, -2 }, // 0x2C ',' - { 149, 5, 2, 6, 1, -5 }, // 0x2D '-' - { 151, 3, 2, 5, 1, -1 }, // 0x2E '.' - { 152, 8, 13, 5, 0, -12 }, // 0x2F '/' - { 165, 10, 13, 10, 1, -12 }, // 0x30 '0' - { 182, 7, 13, 10, 3, -12 }, // 0x31 '1' - { 194, 11, 13, 10, 1, -12 }, // 0x32 '2' - { 212, 11, 13, 10, 1, -12 }, // 0x33 '3' - { 230, 10, 12, 10, 1, -11 }, // 0x34 '4' - { 245, 11, 13, 10, 1, -12 }, // 0x35 '5' - { 263, 10, 13, 10, 2, -12 }, // 0x36 '6' - { 280, 10, 13, 10, 2, -12 }, // 0x37 '7' - { 297, 11, 13, 10, 1, -12 }, // 0x38 '8' - { 315, 11, 13, 10, 1, -12 }, // 0x39 '9' - { 333, 4, 9, 6, 2, -8 }, // 0x3A ':' - { 338, 5, 12, 6, 1, -8 }, // 0x3B ';' - { 346, 10, 9, 11, 1, -8 }, // 0x3C '<' - { 358, 10, 6, 11, 1, -6 }, // 0x3D '=' - { 366, 10, 9, 11, 1, -7 }, // 0x3E '>' - { 378, 10, 13, 11, 3, -12 }, // 0x3F '?' - { 395, 18, 16, 18, 1, -13 }, // 0x40 '@' - { 431, 13, 13, 13, 0, -12 }, // 0x41 'A' - { 453, 13, 13, 13, 1, -12 }, // 0x42 'B' - { 475, 13, 13, 13, 2, -12 }, // 0x43 'C' - { 497, 13, 13, 13, 1, -12 }, // 0x44 'D' - { 519, 13, 13, 12, 1, -12 }, // 0x45 'E' - { 541, 12, 13, 11, 1, -12 }, // 0x46 'F' - { 561, 12, 13, 14, 2, -12 }, // 0x47 'G' - { 581, 14, 13, 13, 1, -12 }, // 0x48 'H' - { 604, 5, 13, 5, 1, -12 }, // 0x49 'I' - { 613, 11, 13, 10, 1, -12 }, // 0x4A 'J' - { 631, 14, 13, 13, 1, -12 }, // 0x4B 'K' - { 654, 10, 13, 11, 1, -12 }, // 0x4C 'L' - { 671, 16, 13, 15, 1, -12 }, // 0x4D 'M' - { 697, 14, 13, 13, 1, -12 }, // 0x4E 'N' - { 720, 13, 13, 14, 2, -12 }, // 0x4F 'O' - { 742, 13, 13, 12, 1, -12 }, // 0x50 'P' - { 764, 13, 14, 14, 2, -12 }, // 0x51 'Q' - { 787, 13, 13, 13, 1, -12 }, // 0x52 'R' - { 809, 13, 13, 12, 1, -12 }, // 0x53 'S' - { 831, 11, 13, 11, 3, -12 }, // 0x54 'T' - { 849, 13, 13, 13, 2, -12 }, // 0x55 'U' - { 871, 11, 13, 12, 3, -12 }, // 0x56 'V' - { 889, 17, 13, 17, 3, -12 }, // 0x57 'W' - { 917, 14, 13, 12, 0, -12 }, // 0x58 'X' - { 940, 11, 13, 12, 3, -12 }, // 0x59 'Y' - { 958, 12, 13, 11, 1, -12 }, // 0x5A 'Z' - { 978, 8, 17, 6, 0, -12 }, // 0x5B '[' - { 995, 3, 17, 5, 2, -16 }, // 0x5C '\' - { 1002, 8, 17, 6, 0, -13 }, // 0x5D ']' - { 1019, 8, 8, 11, 2, -12 }, // 0x5E '^' - { 1027, 11, 1, 10, -1, 4 }, // 0x5F '_' - { 1029, 3, 2, 6, 3, -12 }, // 0x60 '`' - { 1030, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 1043, 11, 13, 11, 1, -12 }, // 0x62 'b' - { 1061, 10, 10, 10, 1, -9 }, // 0x63 'c' - { 1074, 12, 13, 11, 1, -12 }, // 0x64 'd' - { 1094, 10, 10, 10, 1, -9 }, // 0x65 'e' - { 1107, 6, 13, 6, 2, -12 }, // 0x66 'f' - { 1117, 12, 14, 11, 0, -9 }, // 0x67 'g' - { 1138, 11, 13, 11, 1, -12 }, // 0x68 'h' - { 1156, 5, 13, 5, 1, -12 }, // 0x69 'i' - { 1165, 8, 17, 5, -1, -12 }, // 0x6A 'j' - { 1182, 11, 13, 10, 1, -12 }, // 0x6B 'k' - { 1200, 5, 13, 5, 1, -12 }, // 0x6C 'l' - { 1209, 16, 10, 16, 1, -9 }, // 0x6D 'm' - { 1229, 11, 10, 11, 1, -9 }, // 0x6E 'n' - { 1243, 11, 10, 11, 1, -9 }, // 0x6F 'o' - { 1257, 12, 14, 11, 0, -9 }, // 0x70 'p' - { 1278, 11, 14, 11, 1, -9 }, // 0x71 'q' - { 1298, 8, 10, 7, 1, -9 }, // 0x72 'r' - { 1308, 9, 10, 10, 2, -9 }, // 0x73 's' - { 1320, 6, 12, 6, 2, -11 }, // 0x74 't' - { 1329, 10, 10, 11, 2, -9 }, // 0x75 'u' - { 1342, 10, 10, 10, 2, -9 }, // 0x76 'v' - { 1355, 14, 10, 14, 2, -9 }, // 0x77 'w' - { 1373, 12, 10, 10, 0, -9 }, // 0x78 'x' - { 1388, 11, 14, 10, 1, -9 }, // 0x79 'y' - { 1408, 10, 10, 9, 0, -9 }, // 0x7A 'z' - { 1421, 7, 17, 7, 2, -12 }, // 0x7B '{' - { 1436, 5, 17, 5, 1, -12 }, // 0x7C '|' - { 1447, 7, 17, 7, 0, -13 }, // 0x7D '}' - { 1462, 8, 2, 11, 2, -4 } }; // 0x7E '~' - -const GFXfont FreeSansBoldOblique9pt7b PROGMEM = { - (uint8_t *)FreeSansBoldOblique9pt7bBitmaps, - (GFXglyph *)FreeSansBoldOblique9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 2136 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h deleted file mode 100644 index efdbd8d11..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h +++ /dev/null @@ -1,302 +0,0 @@ -const uint8_t FreeSansOblique12pt7bBitmaps[] PROGMEM = { - 0x0C, 0x61, 0x86, 0x18, 0x63, 0x0C, 0x30, 0xC2, 0x18, 0x61, 0x00, 0x00, - 0xC3, 0x00, 0xCF, 0x3C, 0xE2, 0x8A, 0x20, 0x01, 0x8C, 0x03, 0x18, 0x06, - 0x60, 0x18, 0xC0, 0x31, 0x83, 0xFF, 0x87, 0xFF, 0x03, 0x18, 0x0C, 0x60, - 0x18, 0xC0, 0x23, 0x03, 0xFF, 0x8F, 0xFF, 0x02, 0x30, 0x0C, 0x60, 0x18, - 0x80, 0x63, 0x00, 0xC6, 0x00, 0x00, 0x80, 0x3F, 0x03, 0xFC, 0x32, 0x73, - 0x91, 0x99, 0x8C, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0x7E, 0x01, 0xFC, 0x0C, - 0xEC, 0x43, 0x62, 0x1B, 0x11, 0x9D, 0x9C, 0x7F, 0xC1, 0xF8, 0x02, 0x00, - 0x10, 0x01, 0x80, 0x00, 0x00, 0x01, 0x83, 0xC0, 0x60, 0xFC, 0x18, 0x30, - 0xC2, 0x0C, 0x18, 0xC1, 0x83, 0x30, 0x38, 0xCC, 0x03, 0xF1, 0x00, 0x3C, - 0x40, 0x00, 0x18, 0xF0, 0x06, 0x3F, 0x01, 0x8C, 0x30, 0x23, 0x06, 0x0C, - 0x60, 0xC3, 0x0E, 0x30, 0xC0, 0xFC, 0x10, 0x0F, 0x00, 0x01, 0xE0, 0x3F, - 0x81, 0x8C, 0x18, 0x60, 0xC3, 0x06, 0x30, 0x1F, 0x00, 0xE0, 0x1F, 0x01, - 0xDC, 0xD8, 0x6D, 0x81, 0xEC, 0x0E, 0x60, 0x73, 0x87, 0xCF, 0xE6, 0x3E, - 0x38, 0xFE, 0xA0, 0x03, 0x06, 0x04, 0x0C, 0x18, 0x18, 0x30, 0x30, 0x60, - 0x60, 0x60, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x40, 0x60, - 0x60, 0x20, 0x04, 0x06, 0x06, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, - 0x03, 0x03, 0x06, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 0x30, 0x20, 0x60, - 0xC0, 0x0C, 0x0C, 0x49, 0x7F, 0x3C, 0x3C, 0x6C, 0x00, 0x03, 0x00, 0x30, - 0x03, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0x06, 0x00, 0x60, 0x06, 0x00, 0xC0, - 0x0C, 0x00, 0x77, 0x22, 0x6C, 0xFF, 0xF0, 0xFC, 0x00, 0x40, 0x30, 0x08, - 0x06, 0x01, 0x00, 0xC0, 0x20, 0x18, 0x04, 0x02, 0x00, 0x80, 0x40, 0x10, - 0x08, 0x02, 0x01, 0x00, 0xC0, 0x20, 0x00, 0x07, 0xC0, 0xFE, 0x1C, 0x73, - 0x83, 0x30, 0x36, 0x03, 0x60, 0x36, 0x03, 0xC0, 0x7C, 0x07, 0xC0, 0x6C, - 0x06, 0xC0, 0xEC, 0x0C, 0xE3, 0x87, 0xF0, 0x3E, 0x00, 0x02, 0x0C, 0x77, - 0xEF, 0xC1, 0x83, 0x0C, 0x18, 0x30, 0x61, 0xC3, 0x06, 0x0C, 0x18, 0x60, - 0x03, 0xF0, 0x1F, 0xE0, 0xE1, 0xC7, 0x03, 0x18, 0x0C, 0x00, 0x30, 0x01, - 0x80, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x78, 0x07, 0x80, 0x38, 0x01, 0xC0, - 0x06, 0x00, 0x1F, 0xFC, 0xFF, 0xE0, 0x07, 0xC0, 0xFE, 0x1C, 0x73, 0x03, - 0x30, 0x30, 0x03, 0x00, 0xE0, 0x7C, 0x07, 0xC0, 0x0E, 0x00, 0x60, 0x06, - 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x00, 0x60, 0x06, 0x00, - 0xE0, 0x1E, 0x03, 0xE0, 0x6C, 0x0C, 0xC1, 0x8C, 0x30, 0xC6, 0x1C, 0xC1, - 0x8F, 0xFF, 0xFF, 0xE0, 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x0F, 0xF8, - 0x7F, 0xC6, 0x00, 0x30, 0x01, 0x00, 0x1B, 0xC0, 0xFF, 0x06, 0x1C, 0x60, - 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x0C, 0x60, 0x63, 0x86, 0x0F, 0xE0, - 0x3E, 0x00, 0x03, 0xC0, 0xFE, 0x1C, 0x73, 0x83, 0x30, 0x06, 0x00, 0x67, - 0x87, 0xFC, 0xF0, 0xEE, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 0x4C, 0x0C, 0xE1, - 0x87, 0xF8, 0x3E, 0x00, 0x3F, 0xFB, 0xFF, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, - 0x00, 0xC0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x70, 0x03, 0x00, 0x30, 0x03, - 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xE0, 0x00, 0x07, 0xC0, 0xFE, 0x1C, - 0x73, 0x03, 0x30, 0x33, 0x03, 0x38, 0x61, 0xFC, 0x3F, 0xC7, 0x0E, 0x60, - 0x6C, 0x06, 0xC0, 0x6C, 0x0C, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0xC1, - 0xFE, 0x38, 0x73, 0x03, 0x60, 0x36, 0x03, 0x60, 0x36, 0x07, 0x70, 0xF3, - 0xFE, 0x1E, 0x60, 0x0E, 0x00, 0xCC, 0x1C, 0xE3, 0x87, 0xF0, 0x3C, 0x00, - 0x39, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x39, 0xC0, 0x1C, 0x70, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x1C, 0x20, 0x86, 0x30, 0x00, 0x00, 0x01, 0xC0, - 0x3C, 0x0F, 0x81, 0xE0, 0x7C, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x3E, - 0x00, 0x38, 0x00, 0x40, 0x7F, 0xFB, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xFF, - 0x7F, 0xF0, 0x20, 0x01, 0xC0, 0x07, 0xC0, 0x0F, 0x80, 0x0F, 0x00, 0x1C, - 0x03, 0xE0, 0x78, 0x1F, 0x03, 0xC0, 0x38, 0x00, 0x00, 0x00, 0x0F, 0x87, - 0xF9, 0xC3, 0xB0, 0x3C, 0x06, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x01, 0xC0, - 0x30, 0x0C, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, 0x06, 0x00, 0x00, - 0x3F, 0x80, 0x01, 0xFF, 0xE0, 0x0F, 0x01, 0xE0, 0x38, 0x00, 0xE0, 0xE0, - 0x00, 0xC3, 0x87, 0x81, 0xCE, 0x1F, 0xB1, 0x98, 0x71, 0xC3, 0x61, 0x83, - 0x86, 0xC6, 0x06, 0x0F, 0x0C, 0x0C, 0x3E, 0x30, 0x30, 0x6C, 0x60, 0x61, - 0xD8, 0xC1, 0x87, 0x31, 0xC7, 0x1C, 0x61, 0xF7, 0xF0, 0x63, 0xCF, 0x80, - 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x7F, 0x00, 0x00, - 0x00, 0x38, 0x00, 0x78, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xDC, 0x01, 0xCC, - 0x01, 0x8C, 0x03, 0x8C, 0x03, 0x0C, 0x06, 0x0C, 0x0E, 0x0E, 0x0F, 0xFE, - 0x1F, 0xFE, 0x18, 0x06, 0x38, 0x06, 0x30, 0x06, 0x70, 0x06, 0x60, 0x07, - 0x0F, 0xF8, 0x1F, 0xF8, 0x60, 0x38, 0xC0, 0x31, 0x80, 0x63, 0x00, 0xCE, - 0x03, 0x18, 0x0C, 0x3F, 0xF0, 0x7F, 0xF0, 0xC0, 0x73, 0x00, 0x66, 0x00, - 0xCC, 0x01, 0x98, 0x06, 0x70, 0x1C, 0xFF, 0xF1, 0xFF, 0x80, 0x01, 0xF8, - 0x07, 0xFE, 0x0E, 0x0E, 0x1C, 0x03, 0x38, 0x03, 0x30, 0x00, 0x60, 0x00, - 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x06, - 0xC0, 0x0C, 0xE0, 0x1C, 0x70, 0x78, 0x3F, 0xF0, 0x1F, 0x80, 0x0F, 0xF8, - 0x1F, 0xFC, 0x18, 0x0E, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x38, 0x03, - 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x70, 0x06, 0x70, 0x06, 0x60, 0x0C, - 0x60, 0x0C, 0x60, 0x18, 0xE0, 0x78, 0xFF, 0xE0, 0xFF, 0x80, 0x0F, 0xFF, - 0x1F, 0xFE, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x18, 0x00, 0x38, 0x00, - 0x30, 0x00, 0x3F, 0xFC, 0x3F, 0xF8, 0x70, 0x00, 0x70, 0x00, 0x60, 0x00, - 0x60, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xFF, 0xF8, 0xFF, 0xF8, 0x0F, 0xFE, - 0x3F, 0xFC, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, - 0x00, 0x3F, 0xF0, 0x7F, 0xE1, 0xC0, 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, - 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, 0x80, 0x00, 0x01, 0xF8, 0x07, 0xFE, - 0x0E, 0x0F, 0x18, 0x03, 0x30, 0x03, 0x70, 0x00, 0x60, 0x00, 0x60, 0x00, - 0xC0, 0x7F, 0xC0, 0x7E, 0xC0, 0x02, 0xC0, 0x06, 0xC0, 0x06, 0xE0, 0x0E, - 0x60, 0x1E, 0x78, 0x3C, 0x3F, 0xE4, 0x0F, 0x84, 0x0C, 0x01, 0x8E, 0x00, - 0xC6, 0x00, 0xE3, 0x00, 0x61, 0x80, 0x30, 0xC0, 0x18, 0xE0, 0x0C, 0x60, - 0x0E, 0x3F, 0xFE, 0x1F, 0xFF, 0x1C, 0x01, 0x8E, 0x01, 0xC6, 0x00, 0xE3, - 0x00, 0x61, 0x80, 0x31, 0xC0, 0x18, 0xC0, 0x1C, 0x60, 0x0C, 0x00, 0x0C, - 0x71, 0x86, 0x18, 0x63, 0x8C, 0x30, 0xC3, 0x1C, 0x61, 0x86, 0x18, 0xE3, - 0x00, 0x00, 0x18, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, - 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x38, 0x01, 0x8C, 0x0C, 0x60, 0x63, - 0x07, 0x1C, 0x70, 0x7F, 0x01, 0xF0, 0x00, 0x0C, 0x03, 0x87, 0x01, 0xC1, - 0x80, 0xE0, 0x60, 0x60, 0x18, 0x70, 0x06, 0x38, 0x03, 0x9C, 0x00, 0xCE, - 0x00, 0x37, 0x80, 0x0F, 0x70, 0x07, 0x8C, 0x01, 0xC3, 0x80, 0x60, 0x60, - 0x18, 0x1C, 0x06, 0x03, 0x03, 0x80, 0xE0, 0xC0, 0x18, 0x30, 0x07, 0x00, - 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x0E, 0x01, 0x80, 0x30, - 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x18, 0x07, 0x00, 0xFF, 0xFF, - 0xFC, 0x0E, 0x00, 0x71, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, - 0x01, 0xE1, 0xE0, 0x36, 0x3B, 0x03, 0x63, 0x30, 0x6E, 0x33, 0x0E, 0xC3, - 0x30, 0xCC, 0x33, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x31, 0xC6, 0x33, 0x18, - 0x61, 0xE1, 0x8E, 0x1E, 0x18, 0xC1, 0xC1, 0x8C, 0x1C, 0x38, 0x0C, 0x01, - 0x8F, 0x00, 0xC7, 0x80, 0x63, 0xE0, 0x71, 0xF0, 0x30, 0xD8, 0x18, 0xEE, - 0x0C, 0x63, 0x06, 0x31, 0xC7, 0x18, 0xE3, 0x0C, 0x31, 0x8C, 0x1C, 0xC6, - 0x06, 0x63, 0x03, 0xF1, 0x80, 0xF1, 0xC0, 0x78, 0xC0, 0x3C, 0x60, 0x0E, - 0x00, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0x83, 0xC3, 0x80, 0x63, 0x00, 0x3B, - 0x80, 0x0D, 0x80, 0x06, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0xF8, 0x00, 0x6C, 0x00, 0x36, 0x00, 0x31, 0x80, 0x30, 0xF0, 0x78, 0x3F, - 0xF0, 0x07, 0xE0, 0x00, 0x0F, 0xF8, 0x3F, 0xF8, 0x60, 0x38, 0xC0, 0x31, - 0x80, 0x63, 0x00, 0xCE, 0x03, 0x18, 0x0E, 0x3F, 0xF8, 0x7F, 0xE1, 0xC0, - 0x03, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x70, 0x00, 0xC0, 0x01, - 0x80, 0x00, 0x00, 0xFC, 0x01, 0xFF, 0xC0, 0xF0, 0x78, 0x70, 0x06, 0x38, - 0x01, 0xCC, 0x00, 0x36, 0x00, 0x0D, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1B, 0x00, 0x06, 0xC0, 0x03, 0x38, 0x1D, 0xC6, 0x03, 0xE1, - 0xE0, 0xF0, 0x3F, 0xFE, 0x03, 0xF1, 0xC0, 0x00, 0x20, 0x0F, 0xFC, 0x1F, - 0xFE, 0x18, 0x07, 0x18, 0x03, 0x18, 0x03, 0x18, 0x03, 0x38, 0x06, 0x30, - 0x0C, 0x3F, 0xF8, 0x3F, 0xF8, 0x70, 0x1C, 0x70, 0x0C, 0x60, 0x0C, 0x60, - 0x0C, 0x60, 0x18, 0xE0, 0x18, 0xC0, 0x18, 0xC0, 0x1C, 0x03, 0xF8, 0x1F, - 0xF8, 0x70, 0x38, 0xC0, 0x33, 0x00, 0x66, 0x00, 0x0C, 0x00, 0x1E, 0x00, - 0x1F, 0xC0, 0x0F, 0xF0, 0x01, 0xF0, 0x00, 0xEC, 0x00, 0xD8, 0x01, 0xB0, - 0x06, 0x70, 0x38, 0x7F, 0xE0, 0x3F, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x70, - 0x01, 0xC0, 0x06, 0x00, 0x18, 0x00, 0x60, 0x03, 0x80, 0x0C, 0x00, 0x30, - 0x00, 0xC0, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x18, - 0x00, 0xE0, 0x00, 0x18, 0x03, 0x38, 0x03, 0x30, 0x07, 0x30, 0x06, 0x30, - 0x06, 0x70, 0x06, 0x70, 0x0E, 0x60, 0x0C, 0x60, 0x0C, 0x60, 0x0C, 0xE0, - 0x0C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, 0xC0, 0x38, 0xE0, 0x70, 0x7F, - 0xE0, 0x1F, 0x80, 0xC0, 0x0F, 0xC0, 0x1B, 0x80, 0x73, 0x00, 0xC6, 0x03, - 0x0C, 0x06, 0x18, 0x18, 0x30, 0x70, 0x60, 0xC0, 0xE3, 0x81, 0xC6, 0x01, - 0x9C, 0x03, 0x30, 0x06, 0xE0, 0x0D, 0x80, 0x1E, 0x00, 0x3C, 0x00, 0x70, - 0x00, 0xC0, 0x70, 0x1F, 0x01, 0xC0, 0x6C, 0x0F, 0x03, 0xB0, 0x3C, 0x0C, - 0xC1, 0xF0, 0x73, 0x06, 0xC1, 0x8C, 0x3B, 0x06, 0x30, 0xC6, 0x30, 0xC7, - 0x18, 0xC3, 0x18, 0x67, 0x0C, 0xE1, 0x98, 0x33, 0x06, 0xE0, 0xDC, 0x1B, - 0x03, 0x60, 0x6C, 0x07, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0x70, 0x1C, 0x01, - 0x80, 0x70, 0x00, 0x07, 0x00, 0xE0, 0xE0, 0x38, 0x0C, 0x0E, 0x01, 0xC3, - 0x80, 0x18, 0xE0, 0x03, 0x98, 0x00, 0x36, 0x00, 0x07, 0x80, 0x00, 0xF0, - 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x01, 0xDC, 0x00, 0x73, 0x80, 0x1C, 0x30, - 0x03, 0x07, 0x00, 0xC0, 0x60, 0x38, 0x0E, 0x0E, 0x00, 0xC0, 0xE0, 0x06, - 0x60, 0x0C, 0x70, 0x1C, 0x70, 0x38, 0x30, 0x70, 0x38, 0x60, 0x18, 0xC0, - 0x1D, 0xC0, 0x1F, 0x80, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x0F, 0xFF, - 0x87, 0xFF, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, - 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x01, - 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xFF, 0xF8, 0x7F, 0xFC, - 0x00, 0x07, 0xC1, 0xE0, 0x60, 0x18, 0x0C, 0x03, 0x00, 0xC0, 0x30, 0x1C, - 0x06, 0x01, 0x80, 0x60, 0x18, 0x0E, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x06, - 0x01, 0x80, 0x60, 0x1E, 0x07, 0x80, 0x93, 0x6C, 0x92, 0x49, 0x24, 0xDB, - 0x24, 0x07, 0x81, 0xE0, 0x18, 0x06, 0x01, 0x80, 0xC0, 0x30, 0x0C, 0x03, - 0x01, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x03, 0x00, - 0xC0, 0x60, 0x18, 0x1E, 0x0F, 0x80, 0x03, 0x01, 0xC0, 0xD8, 0x36, 0x19, - 0x84, 0x63, 0x19, 0x83, 0x60, 0xC0, 0xFF, 0xFC, 0xE6, 0x23, 0x07, 0xC3, - 0xFC, 0xE3, 0x98, 0x30, 0x06, 0x01, 0x87, 0xF3, 0xC6, 0xC0, 0xD8, 0x3B, - 0x0E, 0x7F, 0x77, 0xCC, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, - 0x0C, 0xF0, 0x7F, 0xC3, 0x87, 0x38, 0x19, 0x80, 0xCC, 0x06, 0x60, 0x32, - 0x03, 0xB0, 0x19, 0xC1, 0xCE, 0x1C, 0x7F, 0xC3, 0x7C, 0x00, 0x0F, 0x83, - 0xF8, 0xE3, 0xB8, 0x36, 0x07, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x1B, - 0x86, 0x3F, 0xC3, 0xE0, 0x00, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, - 0x18, 0x3E, 0x61, 0xFF, 0x0E, 0x3C, 0x70, 0x71, 0x80, 0xCE, 0x07, 0x30, - 0x18, 0xC0, 0x63, 0x01, 0x8C, 0x0E, 0x38, 0x78, 0x7F, 0xC0, 0xFB, 0x00, - 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x37, 0xFF, 0xFF, 0xFC, 0x00, - 0xC0, 0x0C, 0x06, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x07, 0x0F, 0x1C, 0x18, - 0x18, 0x7E, 0x7E, 0x30, 0x30, 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x60, - 0xC0, 0xC0, 0x03, 0xCC, 0x3F, 0xA1, 0xC7, 0x8E, 0x0E, 0x30, 0x38, 0xC0, - 0xC6, 0x03, 0x18, 0x0C, 0x60, 0x71, 0x81, 0xC7, 0x0E, 0x0F, 0xF8, 0x1E, - 0x60, 0x03, 0x80, 0x0C, 0x30, 0x70, 0x7F, 0x80, 0xF8, 0x00, 0x0C, 0x00, - 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x9E, 0x1F, 0xF1, 0xC7, 0x38, 0x33, - 0x03, 0x30, 0x33, 0x07, 0x30, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, 0xC6, - 0x0C, 0x18, 0xC0, 0x00, 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, - 0x00, 0x01, 0x80, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x1C, 0x0C, 0x06, 0x03, - 0x01, 0x81, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x03, - 0x87, 0x83, 0x80, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x18, 0x61, 0x83, 0x38, 0x33, 0x81, 0xB8, 0x0F, 0xC0, 0x77, 0x03, 0x18, - 0x30, 0xC1, 0x87, 0x0C, 0x18, 0x60, 0xE3, 0x03, 0x00, 0x18, 0xC6, 0x63, - 0x18, 0xC6, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xC6, 0x00, 0x1B, 0xE3, 0xC3, - 0xFD, 0xFC, 0xF1, 0xE1, 0x9C, 0x18, 0x33, 0x03, 0x06, 0x60, 0xC0, 0xCC, - 0x18, 0x3B, 0x83, 0x06, 0x60, 0x60, 0xCC, 0x0C, 0x19, 0x83, 0x03, 0x30, - 0x60, 0xE6, 0x0C, 0x18, 0x1B, 0xE1, 0xFF, 0x3C, 0x73, 0x83, 0x30, 0x33, - 0x03, 0x30, 0x77, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, 0x60, 0xC0, - 0x07, 0xC1, 0xFE, 0x38, 0x77, 0x03, 0x60, 0x3E, 0x03, 0xC0, 0x3C, 0x06, - 0xC0, 0x6C, 0x0E, 0xE1, 0xC7, 0xF8, 0x3E, 0x00, 0x0C, 0xF0, 0x3F, 0xE0, - 0xE1, 0xC7, 0x03, 0x1C, 0x0C, 0x60, 0x31, 0x80, 0xCE, 0x07, 0x38, 0x18, - 0xE0, 0xE3, 0xC7, 0x0F, 0xF8, 0x77, 0xC1, 0x80, 0x06, 0x00, 0x18, 0x00, - 0x60, 0x03, 0x80, 0x00, 0x0F, 0x98, 0xFF, 0xCE, 0x3C, 0xE0, 0xE6, 0x03, - 0x70, 0x1B, 0x01, 0x98, 0x0C, 0xC0, 0x66, 0x07, 0x38, 0x78, 0xFF, 0x83, - 0xCC, 0x00, 0x60, 0x07, 0x00, 0x38, 0x01, 0x80, 0x0C, 0x00, 0x1B, 0x8F, - 0xCF, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x18, 0x0C, 0x06, - 0x00, 0x0F, 0xC1, 0xFF, 0x30, 0x76, 0x03, 0x60, 0x07, 0x80, 0x3F, 0x80, - 0x7E, 0x00, 0x6C, 0x06, 0xE0, 0xCF, 0xF8, 0x3E, 0x00, 0x18, 0x30, 0x67, - 0xEF, 0xC6, 0x0C, 0x30, 0x60, 0xC1, 0x83, 0x0C, 0x18, 0x3C, 0x38, 0x30, - 0x33, 0x03, 0x30, 0x37, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0xC0, - 0xEC, 0x0C, 0xC3, 0xCF, 0xFC, 0x7C, 0xC0, 0xC0, 0x78, 0x1B, 0x03, 0x60, - 0xC6, 0x18, 0xC6, 0x19, 0xC3, 0x30, 0x6C, 0x0D, 0x81, 0xE0, 0x3C, 0x03, - 0x00, 0xC1, 0xC3, 0xE1, 0xE1, 0xB0, 0xF0, 0xD8, 0x78, 0xCC, 0x6C, 0x66, - 0x36, 0x63, 0x33, 0x30, 0x99, 0xB0, 0x58, 0xD8, 0x2C, 0x78, 0x1C, 0x3C, - 0x0E, 0x1C, 0x06, 0x0E, 0x00, 0x0C, 0x1C, 0x30, 0xE0, 0xE3, 0x01, 0x98, - 0x07, 0xC0, 0x0E, 0x00, 0x30, 0x01, 0xE0, 0x0F, 0x80, 0x73, 0x01, 0x8C, - 0x0C, 0x38, 0x60, 0x60, 0x18, 0x0C, 0x60, 0x61, 0x83, 0x86, 0x0C, 0x1C, - 0x60, 0x31, 0x80, 0xCC, 0x03, 0x30, 0x0D, 0x80, 0x36, 0x00, 0xF0, 0x03, - 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0xF0, 0x03, 0x80, 0x00, - 0x1F, 0xF1, 0xFF, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, - 0x18, 0x03, 0x00, 0x60, 0x0F, 0xFC, 0xFF, 0xC0, 0x07, 0x0E, 0x18, 0x18, - 0x18, 0x18, 0x30, 0x30, 0x30, 0x30, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, - 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xF0, 0x60, 0x0C, 0x30, 0x82, 0x08, 0x61, - 0x84, 0x10, 0x43, 0x0C, 0x20, 0x86, 0x18, 0x41, 0x04, 0x30, 0xC2, 0x00, - 0x00, 0x06, 0x07, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, - 0x01, 0xC0, 0xE0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, 0x01, - 0x83, 0x83, 0x80, 0x38, 0x0F, 0x82, 0x38, 0x83, 0xE0, 0x38 }; - -const GFXglyph FreeSansOblique12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 7, 0, 1 }, // 0x20 ' ' - { 0, 6, 18, 7, 3, -17 }, // 0x21 '!' - { 14, 6, 6, 9, 4, -16 }, // 0x22 '"' - { 19, 15, 18, 13, 1, -17 }, // 0x23 '#' - { 53, 13, 21, 13, 2, -17 }, // 0x24 '$' - { 88, 19, 17, 21, 3, -16 }, // 0x25 '%' - { 129, 13, 17, 16, 2, -16 }, // 0x26 '&' - { 157, 2, 6, 5, 4, -16 }, // 0x27 ''' - { 159, 8, 23, 8, 3, -17 }, // 0x28 '(' - { 182, 8, 23, 8, 0, -16 }, // 0x29 ')' - { 205, 8, 8, 9, 4, -17 }, // 0x2A '*' - { 213, 12, 11, 14, 2, -10 }, // 0x2B '+' - { 230, 4, 6, 7, 1, -1 }, // 0x2C ',' - { 233, 6, 2, 8, 2, -7 }, // 0x2D '-' - { 235, 3, 2, 7, 2, -1 }, // 0x2E '.' - { 236, 10, 18, 7, 0, -17 }, // 0x2F '/' - { 259, 12, 17, 13, 2, -16 }, // 0x30 '0' - { 285, 7, 17, 13, 5, -16 }, // 0x31 '1' - { 300, 14, 17, 13, 1, -16 }, // 0x32 '2' - { 330, 12, 17, 13, 2, -16 }, // 0x33 '3' - { 356, 12, 17, 13, 2, -16 }, // 0x34 '4' - { 382, 13, 17, 13, 2, -16 }, // 0x35 '5' - { 410, 12, 17, 13, 2, -16 }, // 0x36 '6' - { 436, 13, 17, 13, 3, -16 }, // 0x37 '7' - { 464, 12, 17, 13, 2, -16 }, // 0x38 '8' - { 490, 12, 17, 13, 2, -16 }, // 0x39 '9' - { 516, 5, 12, 7, 3, -11 }, // 0x3A ':' - { 524, 6, 16, 7, 2, -11 }, // 0x3B ';' - { 536, 13, 12, 14, 2, -11 }, // 0x3C '<' - { 556, 13, 6, 14, 2, -8 }, // 0x3D '=' - { 566, 13, 12, 14, 1, -10 }, // 0x3E '>' - { 586, 11, 18, 13, 4, -17 }, // 0x3F '?' - { 611, 23, 21, 24, 2, -17 }, // 0x40 '@' - { 672, 16, 18, 16, 0, -17 }, // 0x41 'A' - { 708, 15, 18, 16, 2, -17 }, // 0x42 'B' - { 742, 16, 18, 17, 2, -17 }, // 0x43 'C' - { 778, 16, 18, 17, 2, -17 }, // 0x44 'D' - { 814, 16, 18, 16, 2, -17 }, // 0x45 'E' - { 850, 15, 18, 14, 2, -17 }, // 0x46 'F' - { 884, 16, 18, 19, 3, -17 }, // 0x47 'G' - { 920, 17, 18, 17, 2, -17 }, // 0x48 'H' - { 959, 6, 18, 7, 2, -17 }, // 0x49 'I' - { 973, 13, 18, 12, 1, -17 }, // 0x4A 'J' - { 1003, 18, 18, 16, 2, -17 }, // 0x4B 'K' - { 1044, 11, 18, 13, 2, -17 }, // 0x4C 'L' - { 1069, 20, 18, 20, 2, -17 }, // 0x4D 'M' - { 1114, 17, 18, 18, 2, -17 }, // 0x4E 'N' - { 1153, 17, 18, 18, 2, -17 }, // 0x4F 'O' - { 1192, 15, 18, 15, 2, -17 }, // 0x50 'P' - { 1226, 18, 19, 19, 2, -17 }, // 0x51 'Q' - { 1269, 16, 18, 17, 2, -17 }, // 0x52 'R' - { 1305, 15, 18, 16, 2, -17 }, // 0x53 'S' - { 1339, 14, 18, 15, 4, -17 }, // 0x54 'T' - { 1371, 16, 18, 17, 3, -17 }, // 0x55 'U' - { 1407, 15, 18, 15, 4, -17 }, // 0x56 'V' - { 1441, 22, 18, 22, 4, -17 }, // 0x57 'W' - { 1491, 19, 18, 16, 0, -17 }, // 0x58 'X' - { 1534, 16, 18, 16, 4, -17 }, // 0x59 'Y' - { 1570, 17, 18, 15, 1, -17 }, // 0x5A 'Z' - { 1609, 10, 23, 7, 0, -17 }, // 0x5B '[' - { 1638, 3, 18, 7, 4, -17 }, // 0x5C '\' - { 1645, 10, 23, 7, -1, -16 }, // 0x5D ']' - { 1674, 10, 9, 11, 2, -16 }, // 0x5E '^' - { 1686, 14, 1, 13, -1, 4 }, // 0x5F '_' - { 1688, 4, 4, 8, 4, -17 }, // 0x60 '`' - { 1690, 11, 13, 13, 2, -12 }, // 0x61 'a' - { 1708, 13, 18, 13, 1, -17 }, // 0x62 'b' - { 1738, 11, 13, 12, 2, -12 }, // 0x63 'c' - { 1756, 14, 18, 13, 2, -17 }, // 0x64 'd' - { 1788, 12, 13, 13, 2, -12 }, // 0x65 'e' - { 1808, 8, 18, 6, 2, -17 }, // 0x66 'f' - { 1826, 14, 18, 13, 1, -12 }, // 0x67 'g' - { 1858, 12, 18, 13, 1, -17 }, // 0x68 'h' - { 1885, 5, 18, 5, 2, -17 }, // 0x69 'i' - { 1897, 9, 23, 6, -1, -17 }, // 0x6A 'j' - { 1923, 13, 18, 12, 1, -17 }, // 0x6B 'k' - { 1953, 5, 18, 5, 2, -17 }, // 0x6C 'l' - { 1965, 19, 13, 20, 1, -12 }, // 0x6D 'm' - { 1996, 12, 13, 13, 1, -12 }, // 0x6E 'n' - { 2016, 12, 13, 13, 2, -12 }, // 0x6F 'o' - { 2036, 14, 18, 14, 0, -12 }, // 0x70 'p' - { 2068, 13, 18, 13, 2, -12 }, // 0x71 'q' - { 2098, 9, 13, 8, 1, -12 }, // 0x72 'r' - { 2113, 12, 13, 12, 1, -12 }, // 0x73 's' - { 2133, 7, 16, 6, 2, -15 }, // 0x74 't' - { 2147, 12, 13, 13, 2, -12 }, // 0x75 'u' - { 2167, 11, 13, 12, 3, -12 }, // 0x76 'v' - { 2185, 17, 13, 17, 3, -12 }, // 0x77 'w' - { 2213, 14, 13, 12, 0, -12 }, // 0x78 'x' - { 2236, 14, 18, 11, 0, -12 }, // 0x79 'y' - { 2268, 12, 13, 12, 1, -12 }, // 0x7A 'z' - { 2288, 8, 23, 8, 3, -17 }, // 0x7B '{' - { 2311, 6, 23, 6, 1, -17 }, // 0x7C '|' - { 2329, 9, 23, 8, -1, -16 }, // 0x7D '}' - { 2355, 11, 5, 14, 3, -10 } }; // 0x7E '~' - -const GFXfont FreeSansOblique12pt7b PROGMEM = { - (uint8_t *)FreeSansOblique12pt7bBitmaps, - (GFXglyph *)FreeSansOblique12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 3034 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h deleted file mode 100644 index 2a18a3f6a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h +++ /dev/null @@ -1,518 +0,0 @@ -const uint8_t FreeSansOblique18pt7bBitmaps[] PROGMEM = { - 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0x78, 0x38, 0x1C, 0x0E, 0x07, 0x07, - 0x83, 0x81, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x0C, 0x04, 0x00, 0x00, - 0x01, 0xC0, 0xE0, 0x70, 0x78, 0x00, 0x71, 0xDC, 0x7F, 0x3F, 0x8E, 0xE3, - 0xB8, 0xEC, 0x33, 0x0C, 0xC3, 0x00, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, - 0x0C, 0x18, 0x00, 0xE1, 0xC0, 0x06, 0x0C, 0x00, 0x70, 0xE0, 0x03, 0x87, - 0x03, 0xFF, 0xFF, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x80, 0x60, 0xC0, 0x07, - 0x0E, 0x00, 0x30, 0x60, 0x03, 0x87, 0x00, 0x18, 0x30, 0x1F, 0xFF, 0xF8, - 0xFF, 0xFF, 0xC7, 0xFF, 0xFC, 0x07, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x87, - 0x00, 0x1C, 0x38, 0x00, 0xC1, 0x80, 0x0E, 0x1C, 0x00, 0x60, 0xC0, 0x00, - 0x00, 0x0C, 0x00, 0x07, 0xF8, 0x01, 0xFF, 0xC0, 0x3F, 0xFE, 0x07, 0x99, - 0xF0, 0xF1, 0x87, 0x0E, 0x18, 0x71, 0xC1, 0x87, 0x1C, 0x38, 0x01, 0xC3, - 0x00, 0x1C, 0x30, 0x01, 0xE3, 0x00, 0x0F, 0xB0, 0x00, 0xFF, 0x80, 0x03, - 0xFF, 0x00, 0x0F, 0xF8, 0x00, 0x6F, 0xC0, 0x06, 0x3C, 0x00, 0xC1, 0xCE, - 0x0C, 0x1C, 0xE0, 0xC1, 0xCE, 0x0C, 0x38, 0xF1, 0xC3, 0x8F, 0x98, 0xF0, - 0x7F, 0xFE, 0x03, 0xFF, 0xC0, 0x0F, 0xF0, 0x00, 0x30, 0x00, 0x03, 0x00, - 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x03, 0xE0, 0x03, - 0x81, 0xFC, 0x00, 0xC0, 0xFF, 0x00, 0x60, 0x70, 0xE0, 0x38, 0x38, 0x18, - 0x1C, 0x0C, 0x06, 0x0E, 0x03, 0x01, 0x83, 0x00, 0xC0, 0xE1, 0x80, 0x38, - 0x70, 0xE0, 0x0F, 0xF8, 0x70, 0x01, 0xFC, 0x18, 0x00, 0x3E, 0x0C, 0x00, - 0x00, 0x06, 0x07, 0x80, 0x03, 0x87, 0xF8, 0x00, 0xC3, 0xFE, 0x00, 0x61, - 0xE1, 0xC0, 0x30, 0x60, 0x30, 0x1C, 0x30, 0x0C, 0x0E, 0x0C, 0x03, 0x03, - 0x03, 0x01, 0x81, 0x80, 0xE1, 0xE0, 0xC0, 0x1F, 0xF0, 0x70, 0x07, 0xF8, - 0x18, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x1E, 0x3C, 0x03, 0xC1, 0xC0, 0x38, 0x1C, 0x03, 0x81, 0xC0, 0x38, 0x38, - 0x03, 0xC7, 0x00, 0x1D, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xF0, - 0x01, 0xF7, 0x87, 0x3C, 0x3C, 0xE7, 0x81, 0xCE, 0x70, 0x1F, 0xCE, 0x00, - 0xFC, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xF0, 0x1F, 0x8F, 0x87, 0xFC, 0x7F, - 0xF9, 0xC3, 0xFE, 0x1E, 0x1F, 0x80, 0xE0, 0x77, 0xFE, 0xEE, 0xCC, 0xC0, - 0x00, 0x30, 0x06, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x30, 0x06, 0x00, 0xE0, - 0x0C, 0x01, 0xC0, 0x18, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, 0x00, - 0x70, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, - 0xE0, 0x0E, 0x00, 0xE0, 0x06, 0x00, 0x70, 0x07, 0x00, 0x30, 0x03, 0x00, - 0x18, 0x00, 0x01, 0x80, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x06, 0x00, - 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, - 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, - 0x80, 0x38, 0x03, 0x00, 0x70, 0x06, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x00, 0x06, 0x01, 0x84, 0x47, 0xF7, 0xFF, 0xCF, 0xC1, - 0xE0, 0xD8, 0x67, 0x18, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, - 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x0E, 0x00, 0x3B, 0xDC, 0x21, 0x18, 0x98, 0xFF, 0xFF, - 0xFF, 0xE0, 0x7F, 0xFE, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, 0x00, 0xC0, - 0x01, 0x80, 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x03, - 0x00, 0x0C, 0x00, 0x18, 0x00, 0x60, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, - 0x18, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x06, 0x00, 0x18, 0x00, 0x30, - 0x00, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x7F, 0xC0, 0x7F, 0xF8, - 0x3E, 0x1E, 0x0F, 0x03, 0xC7, 0x80, 0x71, 0xC0, 0x1C, 0xE0, 0x07, 0x38, - 0x01, 0xDE, 0x00, 0x77, 0x00, 0x1D, 0xC0, 0x0F, 0x70, 0x03, 0xFC, 0x00, - 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xE0, 0x07, 0xB8, 0x01, 0xCE, 0x00, 0xF3, - 0x80, 0x38, 0xF0, 0x1E, 0x1E, 0x1F, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, - 0x80, 0x00, 0x00, 0xC0, 0x70, 0x3C, 0x3E, 0xFF, 0xBF, 0xEF, 0xF8, 0x1E, - 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x07, - 0x81, 0xC0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0xE0, 0x38, 0x00, 0x00, 0x3F, - 0x00, 0x0F, 0xFC, 0x03, 0xFF, 0xE0, 0x7C, 0x1E, 0x07, 0x80, 0xF0, 0xF0, - 0x07, 0x0E, 0x00, 0x70, 0xE0, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, - 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x03, 0xF0, 0x00, 0xFC, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0x80, 0x00, - 0x70, 0x00, 0x07, 0x00, 0x00, 0xFF, 0xFF, 0x8F, 0xFF, 0xF0, 0xFF, 0xFF, - 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xC1, 0xF0, 0x70, - 0x0E, 0x1C, 0x01, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0x00, 0x01, 0xC0, 0x00, - 0xF0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1E, 0x70, 0x03, - 0x8F, 0x00, 0xF1, 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, - 0x00, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x1F, - 0x80, 0x0F, 0xE0, 0x07, 0xF0, 0x03, 0xDC, 0x01, 0xE7, 0x00, 0x71, 0xC0, - 0x38, 0xF0, 0x1C, 0x38, 0x0E, 0x0E, 0x07, 0x03, 0x83, 0x80, 0xE1, 0xC0, - 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x01, 0xFF, - 0xF0, 0x3F, 0xFF, 0x03, 0xFF, 0xE0, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, - 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0xFC, 0x01, 0xFF, 0xF0, 0x1F, - 0xFF, 0x83, 0xE0, 0x78, 0x3C, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x03, 0x8E, 0x00, 0x78, - 0xE0, 0x0F, 0x0F, 0x81, 0xE0, 0x7F, 0xFC, 0x03, 0xFF, 0x80, 0x0F, 0xE0, - 0x00, 0x00, 0x7E, 0x00, 0x3F, 0xF0, 0x0F, 0xFF, 0x03, 0xE1, 0xF0, 0xF0, - 0x0E, 0x1C, 0x01, 0xC7, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x1F, - 0x01, 0xCF, 0xF8, 0x3B, 0xFF, 0x87, 0xE0, 0xF8, 0xF0, 0x0F, 0x3C, 0x00, - 0xE7, 0x80, 0x1C, 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x1C, 0x70, 0x03, - 0x8F, 0x00, 0xE0, 0xF0, 0x78, 0x1F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, 0xC0, - 0x00, 0x3F, 0xFF, 0xCF, 0xFF, 0xF7, 0xFF, 0xFC, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, - 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, - 0x00, 0x0E, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, - 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x7E, - 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xF0, 0xE0, 0x0E, 0x38, 0x01, - 0xC7, 0x00, 0x38, 0xE0, 0x0E, 0x1C, 0x01, 0xC3, 0xC0, 0xF0, 0x3F, 0xFC, - 0x03, 0xFE, 0x01, 0xFF, 0xF0, 0x7C, 0x1E, 0x1E, 0x01, 0xE3, 0x80, 0x1C, - 0xE0, 0x03, 0x9C, 0x00, 0x73, 0x80, 0x0E, 0x70, 0x03, 0x8F, 0x00, 0xF1, - 0xF0, 0x7C, 0x1F, 0xFF, 0x01, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0x00, 0x7E, - 0x00, 0x3F, 0xF0, 0x1F, 0xFF, 0x07, 0xC1, 0xE0, 0xE0, 0x1E, 0x38, 0x01, - 0xC7, 0x00, 0x39, 0xC0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x3C, 0xE0, 0x07, - 0x9E, 0x01, 0xE3, 0xE0, 0xFC, 0x3F, 0xFB, 0x83, 0xFE, 0xF0, 0x3F, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x70, 0x07, 0x8E, 0x01, 0xE1, - 0xE0, 0xF8, 0x1F, 0xFE, 0x01, 0xFF, 0x80, 0x0F, 0xC0, 0x00, 0x0E, 0x3C, - 0x78, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, - 0xF1, 0xE3, 0x80, 0x07, 0x0F, 0x0F, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x78, 0x70, 0x10, 0x10, - 0x30, 0x20, 0xC0, 0x00, 0x00, 0x20, 0x00, 0x1C, 0x00, 0x1F, 0x80, 0x1F, - 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x07, 0xE0, 0x03, 0xF0, 0x00, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, - 0x00, 0x0F, 0xC0, 0x00, 0x78, 0x00, 0x01, 0x00, 0x7F, 0xFF, 0xDF, 0xFF, - 0xF7, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFB, - 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x10, 0x00, 0x03, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, - 0x00, 0x01, 0xE0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0xFE, 0x00, 0x7E, 0x00, - 0x7F, 0x00, 0x3F, 0x00, 0x07, 0x00, 0x00, 0x80, 0x00, 0x00, 0x03, 0xF8, - 0x0F, 0xFC, 0x1F, 0xFE, 0x3C, 0x1F, 0x78, 0x07, 0x70, 0x07, 0xE0, 0x07, - 0xE0, 0x07, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, - 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x3C, 0x00, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, - 0xFF, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x0F, 0x80, 0x03, 0xE0, 0x0F, - 0x00, 0x00, 0xF8, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x01, 0xF0, 0x0F, 0x0F, - 0x03, 0xFD, 0xC7, 0x8F, 0x03, 0xFE, 0xE1, 0xC7, 0x03, 0xC3, 0x60, 0xE7, - 0x03, 0xC0, 0xF0, 0x77, 0x83, 0xC0, 0x70, 0x3B, 0x83, 0xC0, 0x78, 0x1D, - 0xC1, 0xC0, 0x38, 0x1F, 0xC1, 0xE0, 0x1C, 0x0E, 0xE0, 0xE0, 0x1C, 0x0F, - 0x70, 0x70, 0x0E, 0x07, 0x38, 0x38, 0x0E, 0x07, 0x9C, 0x1C, 0x0F, 0x07, - 0x8E, 0x0F, 0x0F, 0x8F, 0x87, 0x03, 0xFD, 0xFF, 0x83, 0xC1, 0xFC, 0xFF, - 0x80, 0xE0, 0x7C, 0x3F, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x00, 0x01, 0xF8, 0x07, 0x00, 0x00, 0x7F, 0xFF, - 0x80, 0x00, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, - 0x00, 0x01, 0xDE, 0x00, 0x07, 0x9C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, - 0x00, 0x70, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0x83, 0xC0, 0x0E, 0x07, 0x80, - 0x38, 0x07, 0x00, 0x70, 0x0E, 0x01, 0xFF, 0xFC, 0x03, 0xFF, 0xFC, 0x0F, - 0xFF, 0xF8, 0x1C, 0x00, 0xF0, 0x70, 0x01, 0xE1, 0xE0, 0x01, 0xC3, 0x80, - 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x78, 0x00, 0x1E, 0xE0, 0x00, - 0x3C, 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0E, 0x00, 0xF0, - 0xF0, 0x03, 0x87, 0x00, 0x1C, 0x38, 0x00, 0xE1, 0xC0, 0x07, 0x0E, 0x00, - 0x70, 0xF0, 0x03, 0x87, 0x00, 0x78, 0x3F, 0xFF, 0x81, 0xFF, 0xF8, 0x0F, - 0xFF, 0xF0, 0xE0, 0x03, 0xC7, 0x00, 0x0E, 0x38, 0x00, 0x71, 0xC0, 0x03, - 0x9E, 0x00, 0x1C, 0xE0, 0x00, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xF1, 0xC0, - 0x0F, 0x1F, 0xFF, 0xF0, 0xFF, 0xFF, 0x07, 0xFF, 0xE0, 0x00, 0x00, 0x1F, - 0x80, 0x03, 0xFF, 0x80, 0x1F, 0xFF, 0x01, 0xF8, 0x3E, 0x07, 0x80, 0x38, - 0x38, 0x00, 0xF1, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x38, 0x00, 0x01, 0xE0, - 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, - 0x0E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x7B, 0x80, 0x01, 0xCE, - 0x00, 0x0F, 0x3C, 0x00, 0x38, 0x70, 0x01, 0xE1, 0xE0, 0x0F, 0x07, 0xC0, - 0xF8, 0x0F, 0xFF, 0xC0, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, - 0xC0, 0x0F, 0xFF, 0xE0, 0x1F, 0xFF, 0xE0, 0x38, 0x03, 0xE0, 0xF0, 0x03, - 0xC1, 0xC0, 0x03, 0x83, 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, - 0x3C, 0x00, 0x1C, 0x70, 0x00, 0x38, 0xE0, 0x00, 0x71, 0xC0, 0x00, 0xE7, - 0x80, 0x03, 0x8F, 0x00, 0x07, 0x1C, 0x00, 0x0E, 0x38, 0x00, 0x3C, 0x70, - 0x00, 0x71, 0xE0, 0x01, 0xE3, 0x80, 0x03, 0x87, 0x00, 0x0E, 0x0E, 0x00, - 0x3C, 0x1C, 0x01, 0xF0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x01, 0xFF, 0xF0, - 0x00, 0x07, 0xFF, 0xFE, 0x0F, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x38, 0x00, - 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x70, 0x00, 0x00, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0x07, 0xFF, 0xFE, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x70, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, - 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7F, 0xFF, 0xF0, 0xFF, 0xFF, - 0xC1, 0xFF, 0xFF, 0x80, 0x07, 0xFF, 0xFC, 0x1F, 0xFF, 0xF0, 0x7F, 0xFF, - 0xC1, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, - 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, - 0xF0, 0x1F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, - 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, - 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xFF, - 0xFC, 0x03, 0xE0, 0x3E, 0x07, 0x80, 0x0E, 0x0F, 0x00, 0x0F, 0x1E, 0x00, - 0x07, 0x1C, 0x00, 0x07, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, - 0x00, 0x70, 0x00, 0x00, 0xF0, 0x07, 0xFE, 0xE0, 0x07, 0xFE, 0xE0, 0x07, - 0xFE, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, - 0x1C, 0xF0, 0x00, 0x3C, 0x70, 0x00, 0x7C, 0x78, 0x00, 0xFC, 0x3E, 0x03, - 0xDC, 0x1F, 0xFF, 0x98, 0x0F, 0xFE, 0x18, 0x03, 0xF8, 0x18, 0x07, 0x00, - 0x07, 0x83, 0x80, 0x03, 0xC1, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0xF0, - 0x00, 0x70, 0x70, 0x00, 0x78, 0x38, 0x00, 0x3C, 0x1C, 0x00, 0x1C, 0x1E, - 0x00, 0x0E, 0x0F, 0x00, 0x07, 0x07, 0x00, 0x07, 0x83, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xE0, 0x00, 0x70, 0x70, 0x00, 0x78, - 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x1E, 0x00, 0x0E, 0x0E, 0x00, 0x0F, - 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0x81, 0xC0, 0x01, 0xC1, 0xE0, 0x00, - 0xE0, 0xE0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x0F, 0x0F, 0x0E, - 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0x3C, 0x38, 0x38, - 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xF0, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, - 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, - 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x1E, - 0x1C, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x3C, 0x38, 0x0E, 0x0F, - 0x0F, 0x81, 0xFF, 0xC0, 0x7F, 0xE0, 0x07, 0xE0, 0x00, 0x07, 0x00, 0x07, - 0x83, 0x80, 0x07, 0x81, 0xC0, 0x0F, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0x70, 0x0F, 0x00, 0x38, 0x0F, 0x00, 0x1C, 0x1F, 0x00, 0x1E, 0x1E, - 0x00, 0x0F, 0x1E, 0x00, 0x07, 0x1E, 0x00, 0x03, 0x9F, 0x00, 0x01, 0xDF, - 0xC0, 0x01, 0xFC, 0xE0, 0x00, 0xFC, 0x78, 0x00, 0x7C, 0x1C, 0x00, 0x3C, - 0x0F, 0x00, 0x1C, 0x07, 0x80, 0x1E, 0x01, 0xE0, 0x0E, 0x00, 0xF0, 0x07, - 0x00, 0x38, 0x03, 0x80, 0x1E, 0x01, 0xC0, 0x07, 0x01, 0xE0, 0x03, 0xC0, - 0xE0, 0x00, 0xE0, 0x70, 0x00, 0x78, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, - 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x78, 0x00, 0x70, 0x00, 0x70, - 0x00, 0x70, 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, - 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x7E, 0x0F, 0x80, - 0x03, 0xF0, 0xFC, 0x00, 0x3F, 0x07, 0x70, 0x01, 0xF8, 0x3B, 0x80, 0x1D, - 0xC1, 0xDC, 0x00, 0xEE, 0x0E, 0xE0, 0x0E, 0xE0, 0xE7, 0x00, 0x77, 0x07, - 0x38, 0x07, 0x38, 0x39, 0xC0, 0x31, 0xC1, 0xCE, 0x03, 0x9E, 0x1E, 0x38, - 0x38, 0xE0, 0xE1, 0xC1, 0xC7, 0x07, 0x0E, 0x1C, 0x38, 0x38, 0x70, 0xE1, - 0xC1, 0xC3, 0x8E, 0x1E, 0x1E, 0x1C, 0x70, 0xE0, 0xE0, 0xE7, 0x07, 0x07, - 0x07, 0x38, 0x38, 0x38, 0x1F, 0x81, 0xC1, 0xC0, 0xF8, 0x1E, 0x1C, 0x07, - 0xC0, 0xE0, 0xE0, 0x3C, 0x07, 0x07, 0x01, 0xE0, 0x38, 0x00, 0x07, 0x80, - 0x03, 0x83, 0xE0, 0x01, 0xC1, 0xF0, 0x00, 0xE0, 0xF8, 0x00, 0xE0, 0xFE, - 0x00, 0x70, 0x7F, 0x00, 0x38, 0x3B, 0xC0, 0x1C, 0x1D, 0xE0, 0x1E, 0x0E, - 0x70, 0x0E, 0x0E, 0x3C, 0x07, 0x07, 0x0E, 0x03, 0x83, 0x87, 0x81, 0xC1, - 0xC3, 0xC1, 0xE1, 0xE0, 0xE0, 0xE0, 0xE0, 0x78, 0x70, 0x70, 0x1C, 0x38, - 0x38, 0x0F, 0x1C, 0x1C, 0x07, 0x9E, 0x1E, 0x01, 0xCE, 0x0E, 0x00, 0xF7, - 0x07, 0x00, 0x3B, 0x83, 0x80, 0x1F, 0xC1, 0xC0, 0x07, 0xC1, 0xC0, 0x03, - 0xE0, 0xE0, 0x01, 0xF0, 0x70, 0x00, 0x78, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0xFF, 0xF0, 0x01, 0xFF, 0xF8, 0x03, 0xE0, 0x7C, 0x07, 0x80, 0x1E, 0x0F, - 0x00, 0x0E, 0x1C, 0x00, 0x0F, 0x3C, 0x00, 0x07, 0x38, 0x00, 0x07, 0x70, - 0x00, 0x07, 0x70, 0x00, 0x07, 0x70, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, - 0x00, 0x0F, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, 0x00, 0x0E, 0xE0, - 0x00, 0x1C, 0xE0, 0x00, 0x1C, 0xF0, 0x00, 0x38, 0x70, 0x00, 0x78, 0x78, - 0x00, 0xF0, 0x3E, 0x07, 0xE0, 0x1F, 0xFF, 0xC0, 0x0F, 0xFF, 0x00, 0x03, - 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, 0x81, 0xC0, - 0x1F, 0x0F, 0x00, 0x3C, 0x38, 0x00, 0x70, 0xE0, 0x01, 0xC3, 0x80, 0x07, - 0x1E, 0x00, 0x1C, 0x78, 0x00, 0xE1, 0xC0, 0x07, 0x87, 0x00, 0x3C, 0x1F, - 0xFF, 0xE0, 0xFF, 0xFF, 0x03, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0x38, 0x00, - 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x70, 0x00, 0x01, - 0xC0, 0x00, 0x07, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, - 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xFF, 0x00, - 0x7C, 0x07, 0xC0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0x38, 0x78, 0x00, 0x1E, - 0x78, 0x00, 0x07, 0x38, 0x00, 0x03, 0xBC, 0x00, 0x01, 0xDC, 0x00, 0x00, - 0xEE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x1D, 0xC0, 0x00, 0x0E, 0xE0, 0x00, 0x0F, 0x70, 0x00, 0x07, 0x38, 0x00, - 0x87, 0x9E, 0x00, 0xE7, 0x87, 0x00, 0x7F, 0x83, 0xC0, 0x1F, 0x80, 0xF8, - 0x1F, 0x80, 0x3F, 0xFF, 0xE0, 0x0F, 0xFF, 0x78, 0x01, 0xFE, 0x1E, 0x00, - 0x00, 0x07, 0x00, 0x00, 0x02, 0x00, 0x07, 0xFF, 0xF0, 0x0F, 0xFF, 0xF8, - 0x1F, 0xFF, 0xF0, 0x38, 0x00, 0xF0, 0xF0, 0x00, 0xE1, 0xC0, 0x01, 0xC3, - 0x80, 0x03, 0x87, 0x00, 0x07, 0x1E, 0x00, 0x0E, 0x3C, 0x00, 0x38, 0x70, - 0x00, 0xF0, 0xE0, 0x03, 0xC1, 0xFF, 0xFE, 0x07, 0xFF, 0xF8, 0x0F, 0xFF, - 0xF8, 0x1C, 0x00, 0x78, 0x38, 0x00, 0x70, 0x70, 0x00, 0xE1, 0xE0, 0x01, - 0xC3, 0x80, 0x03, 0x87, 0x00, 0x06, 0x0E, 0x00, 0x1C, 0x1C, 0x00, 0x38, - 0x78, 0x00, 0x70, 0xE0, 0x00, 0xE1, 0xC0, 0x01, 0xE0, 0x00, 0x3F, 0xC0, - 0x07, 0xFF, 0xC0, 0x3F, 0xFF, 0x81, 0xF0, 0x1E, 0x0F, 0x00, 0x3C, 0x38, - 0x00, 0x71, 0xC0, 0x01, 0xC7, 0x00, 0x07, 0x1C, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xFE, 0x00, 0x07, 0xFF, 0x00, - 0x03, 0xFE, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x01, 0xCE, 0x00, - 0x07, 0x38, 0x00, 0x18, 0xE0, 0x00, 0xE3, 0xC0, 0x07, 0x07, 0x80, 0x7C, - 0x1F, 0xFF, 0xE0, 0x3F, 0xFE, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, - 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0xC0, - 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x78, - 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0F, 0x0E, 0x00, 0x0E, 0x0E, - 0x00, 0x0E, 0x1E, 0x00, 0x0E, 0x1C, 0x00, 0x1E, 0x1C, 0x00, 0x1C, 0x1C, - 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x3C, 0x00, 0x1C, 0x38, 0x00, 0x3C, 0x38, - 0x00, 0x38, 0x38, 0x00, 0x38, 0x78, 0x00, 0x38, 0x70, 0x00, 0x78, 0x70, - 0x00, 0x78, 0x70, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xF0, 0x00, 0x70, 0xE0, - 0x00, 0xF0, 0xE0, 0x00, 0xE0, 0xF0, 0x03, 0xE0, 0x78, 0x0F, 0xC0, 0x7F, - 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0xE0, 0x00, 0x3F, 0x80, - 0x03, 0xFC, 0x00, 0x1D, 0xE0, 0x01, 0xE7, 0x00, 0x0E, 0x38, 0x00, 0xE1, - 0xC0, 0x07, 0x0E, 0x00, 0x70, 0x70, 0x07, 0x83, 0xC0, 0x38, 0x1E, 0x03, - 0xC0, 0xF0, 0x1C, 0x03, 0x81, 0xE0, 0x1C, 0x0E, 0x00, 0xE0, 0xF0, 0x07, - 0x07, 0x00, 0x3C, 0x70, 0x01, 0xE3, 0x80, 0x0F, 0x38, 0x00, 0x39, 0xC0, - 0x01, 0xDC, 0x00, 0x0E, 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0xE0, 0x07, 0x80, - 0x1E, 0xE0, 0x07, 0xC0, 0x1E, 0xE0, 0x0F, 0xC0, 0x1C, 0xE0, 0x0F, 0xC0, - 0x3C, 0xE0, 0x1F, 0xC0, 0x38, 0xE0, 0x1D, 0xC0, 0x78, 0xE0, 0x3D, 0xC0, - 0x70, 0xE0, 0x39, 0xC0, 0xF0, 0xE0, 0x79, 0xC0, 0xE0, 0xE0, 0x71, 0xC0, - 0xE0, 0xE0, 0xF1, 0xC1, 0xC0, 0xE0, 0xE1, 0xC1, 0xC0, 0xE1, 0xE1, 0xC3, - 0xC0, 0x61, 0xC1, 0xC3, 0x80, 0x63, 0xC1, 0xC7, 0x80, 0x63, 0x80, 0xE7, - 0x00, 0x67, 0x80, 0xEF, 0x00, 0x67, 0x00, 0xEE, 0x00, 0x7F, 0x00, 0xEE, - 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0xF8, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF8, 0x00, 0x78, 0x00, 0xF0, - 0x00, 0x03, 0xC0, 0x03, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, - 0xF0, 0x07, 0x80, 0x0F, 0x01, 0xE0, 0x01, 0xE0, 0x78, 0x00, 0x1C, 0x1E, - 0x00, 0x03, 0xC7, 0x80, 0x00, 0x39, 0xE0, 0x00, 0x07, 0xB8, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xF3, 0x80, 0x00, 0x3C, - 0x78, 0x00, 0x0F, 0x0F, 0x00, 0x03, 0xC0, 0xF0, 0x00, 0x70, 0x1E, 0x00, - 0x1E, 0x01, 0xE0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x03, 0xC0, 0x78, 0x00, - 0x78, 0x1E, 0x00, 0x0F, 0x00, 0xF0, 0x00, 0x3C, 0xE0, 0x00, 0x71, 0xE0, - 0x01, 0xE3, 0xC0, 0x07, 0x83, 0xC0, 0x1E, 0x07, 0x80, 0x78, 0x07, 0x00, - 0xE0, 0x0F, 0x03, 0xC0, 0x1E, 0x0F, 0x00, 0x1C, 0x3C, 0x00, 0x3C, 0xF0, - 0x00, 0x39, 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, - 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xC0, 0x00, 0x03, - 0x80, 0x00, 0x07, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0x81, - 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x01, 0xF8, 0x1F, 0xC0, 0xFE, 0x07, - 0x00, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0xC0, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, - 0x00, 0x38, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x70, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, - 0xCC, 0xCC, 0xCC, 0x46, 0x66, 0x66, 0x66, 0x66, 0x66, 0x62, 0x33, 0x33, - 0x33, 0x03, 0xF8, 0x1F, 0xC0, 0xFE, 0x00, 0x70, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, - 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x1E, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1E, 0x00, 0xE0, - 0x07, 0x03, 0xF8, 0x1F, 0xC0, 0xFC, 0x00, 0x00, 0xF0, 0x03, 0xC0, 0x1F, - 0x00, 0x7C, 0x03, 0xB8, 0x1C, 0xE0, 0x63, 0x83, 0x8E, 0x1C, 0x38, 0x60, - 0x73, 0x81, 0xCC, 0x07, 0x70, 0x1F, 0x80, 0x70, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0xF1, 0xC3, 0x86, 0x0C, 0x00, 0xFE, 0x01, 0xFF, 0xE0, 0xFF, - 0xFC, 0x3C, 0x0F, 0x1C, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x1F, 0x83, 0xFF, 0xE3, 0xFE, 0x39, 0xF0, 0x1E, 0xF0, 0x07, 0x38, - 0x01, 0xCE, 0x00, 0xF3, 0xC0, 0xFC, 0xFF, 0xF7, 0x9F, 0xF1, 0xE1, 0xF0, - 0x38, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, - 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x71, 0xF0, 0x0E, 0xFF, 0x83, 0xFF, - 0xF8, 0x7F, 0x0F, 0x0F, 0x80, 0xF1, 0xE0, 0x0E, 0x38, 0x01, 0xCF, 0x00, - 0x39, 0xE0, 0x07, 0x38, 0x00, 0xE7, 0x00, 0x38, 0xE0, 0x07, 0x3C, 0x00, - 0xE7, 0x80, 0x38, 0xF8, 0x0F, 0x1F, 0x87, 0xC3, 0xFF, 0xF0, 0xE7, 0xFC, - 0x1C, 0x7E, 0x00, 0x01, 0xF8, 0x07, 0xFC, 0x0F, 0xFE, 0x1E, 0x0F, 0x3C, - 0x07, 0x78, 0x07, 0x70, 0x07, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xE0, - 0x00, 0xE0, 0x00, 0xE0, 0x0E, 0xE0, 0x1C, 0xF0, 0x3C, 0x78, 0x78, 0x7F, - 0xF0, 0x3F, 0xE0, 0x0F, 0x80, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x1F, - 0x1C, 0x07, 0xFD, 0xC0, 0xFF, 0xDC, 0x1E, 0x0F, 0xC3, 0xC0, 0x7C, 0x38, - 0x07, 0x87, 0x00, 0x38, 0x70, 0x03, 0x8F, 0x00, 0x38, 0xE0, 0x07, 0x8E, - 0x00, 0x70, 0xE0, 0x07, 0x0E, 0x00, 0xF0, 0xE0, 0x0F, 0x0F, 0x01, 0xF0, - 0x78, 0x7E, 0x07, 0xFF, 0xE0, 0x3F, 0xEE, 0x01, 0xF8, 0xE0, 0x01, 0xF8, - 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xC1, 0xF3, 0xC0, 0x79, 0xC0, 0x1D, 0xC0, - 0x0E, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xF8, 0x00, 0x1C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0x78, 0x7F, 0xF8, 0x1F, 0xF8, - 0x03, 0xF0, 0x00, 0x01, 0xE0, 0x7C, 0x1F, 0x83, 0x80, 0x70, 0x1C, 0x03, - 0x83, 0xFC, 0x7F, 0x8F, 0xF0, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x0F, 0x01, - 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0xE0, 0x1C, 0x00, 0x00, 0xFC, 0x60, 0x7F, 0xCC, 0x1F, 0xFF, 0x87, 0xC3, - 0xF1, 0xE0, 0x3E, 0x38, 0x03, 0x8E, 0x00, 0x71, 0xC0, 0x0E, 0x38, 0x01, - 0xCE, 0x00, 0x79, 0xC0, 0x0E, 0x38, 0x01, 0xC7, 0x00, 0x78, 0xE0, 0x0F, - 0x1E, 0x03, 0xC1, 0xE1, 0xF8, 0x3F, 0xFF, 0x03, 0xFE, 0xE0, 0x1F, 0x1C, - 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x18, 0x38, 0x07, 0x07, 0x83, 0xC0, - 0x7F, 0xF8, 0x0F, 0xFC, 0x00, 0x7E, 0x00, 0x00, 0x07, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x1C, 0x00, 0x0F, 0x00, 0x03, 0x80, 0x00, 0xE0, 0x00, - 0x38, 0xFC, 0x0E, 0xFF, 0x87, 0xFF, 0xF1, 0xF8, 0x3C, 0x7C, 0x07, 0x1E, - 0x01, 0xC7, 0x00, 0x73, 0xC0, 0x1C, 0xE0, 0x0F, 0x38, 0x03, 0x8E, 0x00, - 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x07, 0x9C, 0x01, 0xC7, 0x00, 0x71, - 0xC0, 0x1C, 0xE0, 0x07, 0x38, 0x03, 0x80, 0x07, 0x07, 0x0F, 0x0E, 0x00, - 0x00, 0x00, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, 0xE0, 0x00, 0x3C, 0x00, - 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, - 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, - 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, - 0x38, 0x00, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, - 0x38, 0x00, 0xE0, 0x1F, 0x80, 0x7C, 0x03, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x03, - 0x80, 0x00, 0x70, 0x1E, 0x0E, 0x07, 0x83, 0xC1, 0xE0, 0x70, 0x70, 0x0E, - 0x1C, 0x01, 0xCF, 0x00, 0x3B, 0xC0, 0x0F, 0xF8, 0x01, 0xFF, 0x80, 0x3E, - 0x70, 0x07, 0x8E, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x07, 0x03, 0xC0, 0xE0, - 0x38, 0x1C, 0x07, 0x03, 0x80, 0xF0, 0xE0, 0x0E, 0x1C, 0x01, 0xE0, 0x07, - 0x07, 0x0F, 0x0E, 0x0E, 0x0E, 0x0E, 0x1E, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x78, 0x70, 0x70, 0x70, 0x70, 0xF0, 0xE0, - 0xE0, 0x1E, 0x7C, 0x0F, 0x83, 0xBF, 0xE7, 0xF8, 0x7F, 0xFD, 0xFF, 0x8F, - 0xC3, 0xF0, 0xF1, 0xE0, 0x3C, 0x0E, 0x38, 0x07, 0x01, 0xCF, 0x01, 0xE0, - 0x39, 0xC0, 0x38, 0x07, 0x38, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, - 0x1C, 0x07, 0x3C, 0x07, 0x00, 0xE7, 0x00, 0xE0, 0x1C, 0xE0, 0x1C, 0x03, - 0x9C, 0x03, 0x80, 0xF3, 0x80, 0x70, 0x1C, 0x70, 0x1C, 0x03, 0x9C, 0x03, - 0x80, 0x73, 0x80, 0x70, 0x0E, 0x00, 0x1E, 0x3E, 0x07, 0x7F, 0xE1, 0xFF, - 0xF8, 0x7E, 0x0F, 0x1F, 0x01, 0xC7, 0x80, 0x73, 0xC0, 0x1C, 0xE0, 0x07, - 0x38, 0x03, 0xCE, 0x00, 0xE3, 0x80, 0x39, 0xE0, 0x0E, 0x70, 0x03, 0x9C, - 0x01, 0xC7, 0x00, 0x71, 0xC0, 0x1C, 0x70, 0x07, 0x38, 0x01, 0xCE, 0x00, - 0xE0, 0x01, 0xF8, 0x03, 0xFF, 0x03, 0xFF, 0xC3, 0xE1, 0xE3, 0xC0, 0x79, - 0xC0, 0x1D, 0xC0, 0x0E, 0xE0, 0x07, 0x70, 0x03, 0xF0, 0x01, 0xF8, 0x01, - 0xDC, 0x00, 0xEE, 0x00, 0x77, 0x00, 0x73, 0xC0, 0x78, 0xF0, 0xF8, 0x7F, - 0xF8, 0x1F, 0xF8, 0x03, 0xF0, 0x00, 0x03, 0x8F, 0x80, 0x1D, 0xFF, 0x01, - 0xFF, 0xFC, 0x0F, 0xC1, 0xE0, 0x7C, 0x07, 0x83, 0xC0, 0x1C, 0x1C, 0x00, - 0xE1, 0xE0, 0x07, 0x0E, 0x00, 0x38, 0x70, 0x01, 0xC3, 0x80, 0x1E, 0x1C, - 0x00, 0xE1, 0xE0, 0x07, 0x0F, 0x00, 0x70, 0x78, 0x07, 0x83, 0xF0, 0xF8, - 0x3F, 0xFF, 0x81, 0xDF, 0xF8, 0x0E, 0x3F, 0x00, 0x70, 0x00, 0x03, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, - 0x80, 0x00, 0x00, 0x00, 0xF8, 0xF0, 0x7F, 0xEE, 0x0F, 0xFF, 0xE1, 0xF0, - 0xFE, 0x3C, 0x07, 0xE3, 0x80, 0x3E, 0x70, 0x03, 0xC7, 0x00, 0x3C, 0x70, - 0x03, 0xCE, 0x00, 0x3C, 0xE0, 0x07, 0x8E, 0x00, 0x78, 0xE0, 0x07, 0x8E, - 0x00, 0xF8, 0xF0, 0x1F, 0x87, 0x87, 0xF0, 0x7F, 0xF7, 0x03, 0xFE, 0x70, - 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0E, - 0x00, 0x01, 0xE0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x00, 0x1E, - 0x78, 0xE7, 0xC7, 0x7C, 0x3F, 0x01, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, - 0x38, 0x01, 0xC0, 0x0E, 0x00, 0xF0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, - 0x00, 0x70, 0x07, 0x00, 0x38, 0x00, 0x01, 0xF8, 0x07, 0xFE, 0x0F, 0xFF, - 0x1E, 0x0F, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x00, 0x3C, 0x00, 0x3F, 0x80, - 0x1F, 0xF8, 0x07, 0xFC, 0x00, 0x7E, 0x00, 0x0E, 0xE0, 0x0E, 0xE0, 0x1E, - 0xF0, 0x3C, 0x7F, 0xF8, 0x7F, 0xF0, 0x1F, 0xC0, 0x0E, 0x03, 0x80, 0xE0, - 0x38, 0x7F, 0xDF, 0xEF, 0xF8, 0x70, 0x1C, 0x0E, 0x03, 0x80, 0xE0, 0x38, - 0x1E, 0x07, 0x01, 0xC0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xFC, 0x3F, 0x07, - 0x80, 0x1C, 0x03, 0xC7, 0x00, 0xE1, 0xC0, 0x38, 0xF0, 0x0E, 0x38, 0x03, - 0x8E, 0x00, 0xE3, 0x80, 0x70, 0xE0, 0x1C, 0x78, 0x07, 0x1C, 0x01, 0xC7, - 0x00, 0x71, 0xC0, 0x3C, 0x70, 0x0E, 0x38, 0x07, 0x8E, 0x03, 0xE3, 0x81, - 0xF8, 0xFF, 0xFE, 0x1F, 0xFF, 0x03, 0xF1, 0xC0, 0xE0, 0x07, 0xE0, 0x0F, - 0xE0, 0x0E, 0xE0, 0x1C, 0x70, 0x1C, 0x70, 0x38, 0x70, 0x38, 0x70, 0x70, - 0x70, 0xF0, 0x70, 0xE0, 0x71, 0xC0, 0x71, 0xC0, 0x33, 0x80, 0x3B, 0x80, - 0x3F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0xE0, 0x1C, - 0x07, 0xE0, 0x3C, 0x0E, 0xE0, 0x3C, 0x0E, 0xE0, 0x7C, 0x1C, 0xE0, 0x7C, - 0x1C, 0xE0, 0xEC, 0x38, 0xE0, 0xEC, 0x38, 0x61, 0xCC, 0x70, 0x61, 0xCC, - 0x70, 0x63, 0x8C, 0xE0, 0x73, 0x8C, 0xE0, 0x77, 0x0C, 0xC0, 0x77, 0x0D, - 0xC0, 0x7E, 0x0D, 0x80, 0x7E, 0x0F, 0x80, 0x7C, 0x0F, 0x80, 0x7C, 0x0F, - 0x00, 0x78, 0x0F, 0x00, 0x78, 0x0E, 0x00, 0x0E, 0x00, 0xE1, 0xE0, 0x38, - 0x1C, 0x0E, 0x03, 0xC3, 0x80, 0x38, 0xE0, 0x07, 0xBC, 0x00, 0x77, 0x00, - 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1C, 0x00, 0x07, 0xC0, 0x01, 0xF8, 0x00, - 0x77, 0x80, 0x1E, 0x70, 0x07, 0x8F, 0x00, 0xE0, 0xE0, 0x38, 0x1C, 0x0E, - 0x01, 0xC3, 0x80, 0x38, 0x00, 0x0E, 0x00, 0x70, 0xF0, 0x0F, 0x07, 0x00, - 0xE0, 0x70, 0x1C, 0x07, 0x01, 0xC0, 0x70, 0x38, 0x07, 0x03, 0x80, 0x70, - 0x70, 0x07, 0x07, 0x00, 0x70, 0xE0, 0x03, 0x9E, 0x00, 0x39, 0xC0, 0x03, - 0xB8, 0x00, 0x3B, 0x80, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xE0, 0x00, - 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, - 0x07, 0x00, 0x00, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, - 0x00, 0x07, 0xFF, 0xC0, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x01, 0xC0, 0x00, - 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x1C, - 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0x7F, 0xFE, 0x1F, 0xFF, 0xC3, 0xFF, 0xF8, 0x00, 0x00, - 0x70, 0x1F, 0x01, 0xF0, 0x3C, 0x03, 0x80, 0x38, 0x07, 0x00, 0x70, 0x07, - 0x00, 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x01, 0xE0, 0x3C, 0x0F, 0x80, 0xE0, - 0x0F, 0x00, 0x78, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x38, - 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xF8, 0x0F, 0x80, 0x78, - 0x00, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0C, 0x06, 0x03, - 0x01, 0x81, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, 0x0C, 0x06, 0x03, 0x01, - 0x81, 0x80, 0xC0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x01, - 0x80, 0xC0, 0x00, 0x01, 0xE0, 0x1F, 0x01, 0xF0, 0x07, 0x00, 0xE0, 0x0E, - 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, - 0x01, 0xE0, 0x0F, 0x00, 0x70, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0x00, 0x70, - 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0xC0, - 0xF8, 0x0F, 0x80, 0xE0, 0x00, 0x1C, 0x00, 0x3F, 0x00, 0x7F, 0x83, 0x63, - 0xC7, 0xC1, 0xFE, 0x00, 0xFC, 0x00, 0x78 }; - -const GFXglyph FreeSansOblique18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 10, 0, 1 }, // 0x20 ' ' - { 0, 9, 26, 10, 4, -25 }, // 0x21 '!' - { 30, 10, 9, 12, 6, -24 }, // 0x22 '"' - { 42, 21, 25, 19, 2, -24 }, // 0x23 '#' - { 108, 20, 31, 19, 2, -26 }, // 0x24 '$' - { 186, 26, 25, 31, 5, -24 }, // 0x25 '%' - { 268, 20, 25, 23, 3, -24 }, // 0x26 '&' - { 331, 4, 9, 7, 6, -24 }, // 0x27 ''' - { 336, 12, 33, 12, 4, -25 }, // 0x28 '(' - { 386, 12, 33, 12, -1, -24 }, // 0x29 ')' - { 436, 10, 10, 14, 6, -25 }, // 0x2A '*' - { 449, 18, 16, 20, 3, -15 }, // 0x2B '+' - { 485, 5, 8, 10, 2, -2 }, // 0x2C ',' - { 490, 9, 3, 12, 3, -10 }, // 0x2D '-' - { 494, 4, 4, 10, 3, -3 }, // 0x2E '.' - { 496, 15, 26, 10, 0, -25 }, // 0x2F '/' - { 545, 18, 25, 19, 3, -24 }, // 0x30 '0' - { 602, 10, 25, 19, 7, -24 }, // 0x31 '1' - { 634, 20, 25, 19, 2, -24 }, // 0x32 '2' - { 697, 19, 25, 19, 2, -24 }, // 0x33 '3' - { 757, 18, 25, 19, 2, -24 }, // 0x34 '4' - { 814, 20, 25, 19, 2, -24 }, // 0x35 '5' - { 877, 19, 25, 19, 3, -24 }, // 0x36 '6' - { 937, 18, 25, 19, 5, -24 }, // 0x37 '7' - { 994, 19, 25, 19, 3, -24 }, // 0x38 '8' - { 1054, 19, 25, 19, 2, -24 }, // 0x39 '9' - { 1114, 7, 19, 10, 4, -18 }, // 0x3A ':' - { 1131, 8, 24, 10, 3, -18 }, // 0x3B ';' - { 1155, 19, 17, 20, 3, -16 }, // 0x3C '<' - { 1196, 18, 9, 20, 3, -12 }, // 0x3D '=' - { 1217, 19, 17, 20, 2, -15 }, // 0x3E '>' - { 1258, 16, 26, 19, 6, -25 }, // 0x3F '?' - { 1310, 33, 31, 36, 3, -25 }, // 0x40 '@' - { 1438, 23, 26, 23, 0, -25 }, // 0x41 'A' - { 1513, 21, 26, 23, 3, -25 }, // 0x42 'B' - { 1582, 22, 26, 25, 4, -25 }, // 0x43 'C' - { 1654, 23, 26, 25, 3, -25 }, // 0x44 'D' - { 1729, 23, 26, 23, 3, -25 }, // 0x45 'E' - { 1804, 22, 26, 21, 3, -25 }, // 0x46 'F' - { 1876, 24, 26, 27, 4, -25 }, // 0x47 'G' - { 1954, 25, 26, 25, 3, -25 }, // 0x48 'H' - { 2036, 8, 26, 10, 4, -25 }, // 0x49 'I' - { 2062, 18, 26, 18, 2, -25 }, // 0x4A 'J' - { 2121, 25, 26, 23, 3, -25 }, // 0x4B 'K' - { 2203, 16, 26, 19, 3, -25 }, // 0x4C 'L' - { 2255, 29, 26, 30, 3, -25 }, // 0x4D 'M' - { 2350, 25, 26, 26, 3, -25 }, // 0x4E 'N' - { 2432, 24, 26, 27, 4, -25 }, // 0x4F 'O' - { 2510, 22, 26, 23, 3, -25 }, // 0x50 'P' - { 2582, 25, 28, 27, 4, -25 }, // 0x51 'Q' - { 2670, 23, 26, 25, 3, -25 }, // 0x52 'R' - { 2745, 22, 26, 23, 3, -25 }, // 0x53 'S' - { 2817, 20, 26, 21, 6, -25 }, // 0x54 'T' - { 2882, 24, 26, 25, 4, -25 }, // 0x55 'U' - { 2960, 21, 26, 23, 6, -25 }, // 0x56 'V' - { 3029, 32, 26, 33, 6, -25 }, // 0x57 'W' - { 3133, 27, 26, 23, 1, -25 }, // 0x58 'X' - { 3221, 23, 26, 24, 6, -25 }, // 0x59 'Y' - { 3296, 25, 26, 21, 1, -25 }, // 0x5A 'Z' - { 3378, 13, 33, 10, 1, -25 }, // 0x5B '[' - { 3432, 4, 26, 10, 5, -25 }, // 0x5C '\' - { 3445, 13, 33, 10, -1, -24 }, // 0x5D ']' - { 3499, 14, 14, 16, 3, -24 }, // 0x5E '^' - { 3524, 21, 2, 19, -2, 5 }, // 0x5F '_' - { 3530, 6, 5, 12, 6, -25 }, // 0x60 '`' - { 3534, 18, 19, 19, 2, -18 }, // 0x61 'a' - { 3577, 19, 26, 20, 2, -25 }, // 0x62 'b' - { 3639, 16, 19, 18, 3, -18 }, // 0x63 'c' - { 3677, 20, 26, 20, 3, -25 }, // 0x64 'd' - { 3742, 17, 19, 19, 3, -18 }, // 0x65 'e' - { 3783, 11, 26, 9, 2, -25 }, // 0x66 'f' - { 3819, 19, 27, 19, 2, -18 }, // 0x67 'g' - { 3884, 18, 26, 19, 2, -25 }, // 0x68 'h' - { 3943, 8, 26, 8, 2, -25 }, // 0x69 'i' - { 3969, 14, 34, 8, -2, -25 }, // 0x6A 'j' - { 4029, 19, 26, 18, 2, -25 }, // 0x6B 'k' - { 4091, 8, 26, 8, 2, -25 }, // 0x6C 'l' - { 4117, 27, 19, 29, 2, -18 }, // 0x6D 'm' - { 4182, 18, 19, 19, 2, -18 }, // 0x6E 'n' - { 4225, 17, 19, 19, 3, -18 }, // 0x6F 'o' - { 4266, 21, 26, 20, 0, -18 }, // 0x70 'p' - { 4335, 20, 27, 19, 2, -18 }, // 0x71 'q' - { 4403, 13, 19, 11, 2, -18 }, // 0x72 'r' - { 4434, 16, 19, 18, 2, -18 }, // 0x73 's' - { 4472, 10, 23, 9, 3, -22 }, // 0x74 't' - { 4501, 18, 19, 19, 3, -18 }, // 0x75 'u' - { 4544, 16, 19, 17, 4, -18 }, // 0x76 'v' - { 4582, 24, 19, 25, 4, -18 }, // 0x77 'w' - { 4639, 19, 19, 17, 1, -18 }, // 0x78 'x' - { 4685, 20, 27, 17, 0, -18 }, // 0x79 'y' - { 4753, 19, 19, 17, 1, -18 }, // 0x7A 'z' - { 4799, 12, 33, 12, 3, -25 }, // 0x7B '{' - { 4849, 9, 33, 9, 2, -25 }, // 0x7C '|' - { 4887, 12, 33, 12, 0, -24 }, // 0x7D '}' - { 4937, 16, 7, 20, 5, -15 } }; // 0x7E '~' - -const GFXfont FreeSansOblique18pt7b PROGMEM = { - (uint8_t *)FreeSansOblique18pt7bBitmaps, - (GFXglyph *)FreeSansOblique18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5623 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h deleted file mode 100644 index 4c8c8ab02..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h +++ /dev/null @@ -1,840 +0,0 @@ -const uint8_t FreeSansOblique24pt7bBitmaps[] PROGMEM = { - 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, 0x18, 0x03, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x1E, 0x00, 0x78, - 0x7B, 0xC3, 0xDE, 0x1F, 0xE1, 0xEF, 0x0F, 0x78, 0x7B, 0xC3, 0xDC, 0x1C, - 0xE0, 0xE7, 0x07, 0x30, 0x31, 0x81, 0x80, 0x00, 0x07, 0x81, 0xC0, 0x00, - 0x78, 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0xF0, 0x38, 0x00, 0x0E, 0x07, - 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xC0, 0xF0, 0x00, - 0x3C, 0x0E, 0x00, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, - 0xFE, 0x00, 0x70, 0x3C, 0x00, 0x0F, 0x03, 0x80, 0x00, 0xF0, 0x78, 0x00, - 0x0E, 0x07, 0x80, 0x01, 0xE0, 0x70, 0x00, 0x1C, 0x0F, 0x00, 0x03, 0xC0, - 0xE0, 0x00, 0x3C, 0x1E, 0x00, 0x03, 0x81, 0xE0, 0x0F, 0xFF, 0xFF, 0xE0, - 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0xE0, 0x0F, 0x03, 0x80, 0x00, 0xE0, - 0x78, 0x00, 0x1E, 0x07, 0x00, 0x01, 0xC0, 0xF0, 0x00, 0x1C, 0x0F, 0x00, - 0x03, 0xC0, 0xE0, 0x00, 0x38, 0x1E, 0x00, 0x07, 0x81, 0xC0, 0x00, 0x78, - 0x3C, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x30, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0xF8, 0x00, 0x7F, 0xFF, 0x00, 0x7F, - 0xFF, 0xE0, 0x1F, 0x18, 0xF8, 0x0F, 0x8E, 0x1F, 0x07, 0xC3, 0x83, 0xC1, - 0xE0, 0xE0, 0xF0, 0x70, 0x38, 0x3C, 0x3C, 0x0C, 0x0F, 0x0F, 0x07, 0x00, - 0x03, 0xC1, 0xC0, 0x00, 0xF0, 0x70, 0x00, 0x3E, 0x1C, 0x00, 0x0F, 0xE6, - 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xE0, 0x00, - 0x3F, 0xFC, 0x00, 0x03, 0xFF, 0x80, 0x01, 0xC7, 0xF0, 0x00, 0x70, 0x7C, - 0x00, 0x1C, 0x0F, 0x00, 0x06, 0x03, 0xCF, 0x03, 0x80, 0xF3, 0xC0, 0xE0, - 0x3C, 0xF0, 0x38, 0x0E, 0x3C, 0x0E, 0x07, 0x8F, 0x03, 0x01, 0xE3, 0xE1, - 0xC0, 0xF0, 0xF8, 0x70, 0x78, 0x1F, 0x9C, 0xFC, 0x03, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x38, 0x00, 0x00, 0x0E, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x07, 0x80, 0x1F, 0x00, 0x00, 0x70, 0x07, 0xFC, 0x00, 0x0E, - 0x00, 0xFF, 0xE0, 0x01, 0xC0, 0x1E, 0x1E, 0x00, 0x3C, 0x03, 0x80, 0xF0, - 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x70, 0x0E, 0x00, 0xE0, - 0x07, 0x01, 0xC0, 0x0E, 0x00, 0x70, 0x3C, 0x00, 0xE0, 0x0E, 0x03, 0x80, - 0x0E, 0x00, 0xE0, 0x70, 0x00, 0xF0, 0x1C, 0x0E, 0x00, 0x07, 0x87, 0xC1, - 0xE0, 0x00, 0x7F, 0xF8, 0x1C, 0x00, 0x03, 0xFE, 0x03, 0x80, 0x00, 0x0F, - 0x80, 0x70, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x1F, - 0x00, 0x00, 0x1C, 0x07, 0xFC, 0x00, 0x03, 0x80, 0xFF, 0xE0, 0x00, 0x70, - 0x1E, 0x1E, 0x00, 0x0F, 0x03, 0x80, 0xF0, 0x00, 0xE0, 0x70, 0x07, 0x00, - 0x1C, 0x07, 0x00, 0x70, 0x03, 0x80, 0xE0, 0x07, 0x00, 0x70, 0x0E, 0x00, - 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1C, 0x00, - 0xF0, 0x1C, 0x03, 0x80, 0x07, 0x87, 0xC0, 0x70, 0x00, 0x7F, 0xF8, 0x07, - 0x00, 0x03, 0xFE, 0x00, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, - 0x03, 0xFF, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x78, 0x0F, - 0x00, 0x1E, 0x03, 0xC0, 0x0F, 0x00, 0xF0, 0x03, 0xC0, 0x3C, 0x00, 0xF0, - 0x1E, 0x00, 0x3C, 0x07, 0x80, 0x0F, 0x87, 0xC0, 0x01, 0xE3, 0xE0, 0x00, - 0x7F, 0xF0, 0x00, 0x0F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x03, 0xFC, 0x00, - 0x03, 0xFF, 0x00, 0x01, 0xFB, 0xE0, 0x70, 0xF8, 0x7C, 0x1C, 0x7C, 0x1F, - 0x0E, 0x3C, 0x03, 0xE3, 0x9E, 0x00, 0x79, 0xE7, 0x80, 0x1F, 0xF3, 0xC0, - 0x03, 0xF8, 0xF0, 0x00, 0xFE, 0x3C, 0x00, 0x1F, 0x0F, 0x00, 0x07, 0xC3, - 0xE0, 0x03, 0xF8, 0xF8, 0x03, 0xFE, 0x3F, 0x83, 0xF7, 0xC7, 0xFF, 0xF8, - 0xF0, 0xFF, 0xFC, 0x3E, 0x1F, 0xFC, 0x07, 0x81, 0xFC, 0x00, 0x00, 0x7B, - 0xDF, 0xEF, 0x7B, 0xDC, 0xE7, 0x31, 0x80, 0x00, 0x0E, 0x00, 0x38, 0x00, - 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, - 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, - 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, - 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, - 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x07, - 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, - 0x07, 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x07, - 0x00, 0x0E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, - 0x1C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, - 0x01, 0xC0, 0x07, 0x00, 0x00, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x18, 0xE3, - 0x7B, 0xBF, 0xFF, 0xF3, 0xFF, 0x01, 0xE0, 0x1F, 0xC0, 0xF7, 0x07, 0x9E, - 0x1C, 0x38, 0x20, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x78, - 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, - 0x00, 0x1C, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, - 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x3E, 0x7C, 0xF9, 0xE7, - 0xC1, 0x83, 0x0C, 0x18, 0x63, 0xC6, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFE, 0x7D, 0xF7, 0xBE, 0xF8, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, - 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, - 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, 0x0C, - 0x00, 0x00, 0xE0, 0x00, 0x06, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, - 0x38, 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, - 0x00, 0x60, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x00, 0x01, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, - 0x60, 0x00, 0x07, 0x00, 0x00, 0x30, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, - 0xE0, 0x3F, 0x0F, 0xC0, 0xF8, 0x07, 0x81, 0xE0, 0x0F, 0x87, 0x80, 0x0F, - 0x1F, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x79, 0xE0, 0x00, 0xF3, - 0xC0, 0x01, 0xE7, 0x80, 0x07, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, - 0x00, 0x3C, 0xF0, 0x00, 0x79, 0xE0, 0x00, 0xF7, 0x80, 0x03, 0xEF, 0x00, - 0x07, 0xDE, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x7C, 0xF0, 0x00, - 0xF1, 0xE0, 0x03, 0xE3, 0xC0, 0x07, 0x87, 0xC0, 0x1F, 0x0F, 0x80, 0x7C, - 0x0F, 0xC3, 0xF0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x1F, 0xFC, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x18, 0x01, 0xC0, 0x1C, 0x01, 0xE0, 0x1F, 0x0F, - 0xFB, 0xFF, 0xDF, 0xFC, 0xFF, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, - 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x00, 0x00, 0x03, 0xFC, - 0x00, 0x03, 0xFF, 0xE0, 0x00, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xE0, 0x0F, - 0xC0, 0xFC, 0x03, 0xE0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x0F, - 0x03, 0xC0, 0x01, 0xE0, 0xF8, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x80, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xFF, - 0xFF, 0xFC, 0x3F, 0xFF, 0xFF, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x3F, 0xFF, 0x80, 0x3F, - 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x1F, 0x00, 0x1E, 0x0F, - 0x00, 0x0F, 0x0F, 0x80, 0x07, 0x87, 0x80, 0x03, 0xC0, 0x00, 0x03, 0xC0, - 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x7F, 0xE0, - 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xFE, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1E, 0x78, 0x00, 0x1E, 0x3C, 0x00, - 0x0F, 0x1E, 0x00, 0x0F, 0x0F, 0x80, 0x1F, 0x83, 0xF0, 0x3F, 0x81, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x1F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x03, 0xFC, 0x00, 0x07, 0xBC, - 0x00, 0x0F, 0xBC, 0x00, 0x1F, 0x7C, 0x00, 0x3E, 0x78, 0x00, 0x7C, 0x78, - 0x00, 0xF8, 0x78, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x03, 0xC0, 0xF0, - 0x07, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x1E, 0x01, 0xF0, 0x3C, 0x01, 0xE0, - 0x78, 0x01, 0xE0, 0x7F, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, - 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, - 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0xC0, 0x1F, 0xFF, 0xF8, 0x03, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0xE0, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC7, 0xE0, 0x00, 0xF7, 0xFF, 0x80, 0x1F, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0x80, 0xFE, 0x03, 0xF0, 0x1F, 0x00, 0x3F, - 0x03, 0xC0, 0x03, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x70, - 0x00, 0x00, 0x1E, 0x1E, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x7C, 0x00, - 0x3C, 0x0F, 0x80, 0x0F, 0x80, 0xFC, 0x07, 0xE0, 0x1F, 0xFF, 0xF8, 0x01, - 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x3F, 0xF8, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xFE, 0x01, 0xF8, - 0x3E, 0x03, 0xE0, 0x1F, 0x07, 0xC0, 0x1F, 0x0F, 0x80, 0x0F, 0x0F, 0x00, - 0x0F, 0x1F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x1F, - 0x80, 0x3C, 0x7F, 0xE0, 0x3D, 0xFF, 0xF0, 0x7B, 0xFF, 0xF8, 0x7F, 0xC1, - 0xF8, 0x7F, 0x00, 0x7C, 0x7E, 0x00, 0x7C, 0xFC, 0x00, 0x3C, 0xF8, 0x00, - 0x3C, 0xF8, 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0xF0, 0x00, 0x38, 0xF0, 0x00, - 0x78, 0xF0, 0x00, 0x78, 0xF0, 0x00, 0xF0, 0xF8, 0x01, 0xF0, 0x7C, 0x03, - 0xE0, 0x7E, 0x0F, 0xC0, 0x3F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0x0F, 0xFE, - 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xFF, 0xFF, 0x87, 0xFF, 0xFF, 0xE1, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, - 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xFE, 0x00, 0x1F, - 0xFF, 0x80, 0x1F, 0xFF, 0xE0, 0x1F, 0x81, 0xF8, 0x1F, 0x00, 0x7C, 0x0F, - 0x00, 0x1E, 0x0F, 0x00, 0x0F, 0x07, 0x80, 0x07, 0x83, 0xC0, 0x03, 0xC1, - 0xE0, 0x03, 0xC0, 0xF8, 0x03, 0xC0, 0x7E, 0x07, 0xC0, 0x1F, 0xFF, 0xC0, - 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xE0, 0x07, 0xFF, 0xF8, 0x07, 0xE0, 0x7E, - 0x07, 0xC0, 0x0F, 0x07, 0x80, 0x07, 0xC7, 0xC0, 0x01, 0xE3, 0xC0, 0x00, - 0xF3, 0xC0, 0x00, 0x79, 0xE0, 0x00, 0x3C, 0xF0, 0x00, 0x1C, 0x78, 0x00, - 0x1E, 0x3C, 0x00, 0x0F, 0x1F, 0x00, 0x0F, 0x0F, 0xC0, 0x0F, 0x83, 0xF0, - 0x3F, 0x81, 0xFF, 0xFF, 0x80, 0x7F, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xFC, - 0x03, 0xFF, 0xFC, 0x07, 0xF0, 0x7E, 0x07, 0xC0, 0x3E, 0x0F, 0x80, 0x1F, - 0x0F, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x0F, - 0x3C, 0x00, 0x0F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0x3C, 0x00, 0x3F, - 0x3E, 0x00, 0x7E, 0x3E, 0x00, 0xFE, 0x1F, 0x83, 0xFE, 0x1F, 0xFF, 0xFE, - 0x0F, 0xFF, 0xBC, 0x07, 0xFE, 0x3C, 0x01, 0xF8, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x78, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF0, 0xF0, 0x01, 0xF0, - 0xF0, 0x03, 0xE0, 0xF8, 0x07, 0xC0, 0xFC, 0x1F, 0xC0, 0x7F, 0xFF, 0x80, - 0x3F, 0xFE, 0x00, 0x1F, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xC1, 0xF0, - 0x78, 0x3E, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x1F, - 0x07, 0x83, 0xE0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x0F, 0x03, 0xE0, 0x7C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE0, 0x7C, 0x0F, - 0x81, 0xE0, 0x7C, 0x01, 0x80, 0x30, 0x0C, 0x01, 0x80, 0x60, 0x3C, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0xFE, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFE, 0x00, - 0x07, 0xFC, 0x00, 0x07, 0xFC, 0x00, 0x0F, 0xF8, 0x00, 0x07, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, - 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0E, - 0x00, 0x00, 0x00, 0x80, 0x1F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xE3, 0xFF, - 0xFF, 0xF8, 0xFF, 0xFF, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0x1F, 0xFF, 0xFF, - 0xC7, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF8, 0x04, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x7F, 0xC0, 0x00, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x01, - 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x3F, 0xF8, 0x0F, 0xFF, 0xC1, 0xFF, 0xFE, 0x1F, 0x03, 0xE3, 0xE0, - 0x1F, 0x7C, 0x00, 0xF7, 0x80, 0x0F, 0x78, 0x00, 0xFF, 0x00, 0x0F, 0xF0, - 0x01, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0x80, 0x00, 0x78, 0x00, 0x0F, 0x80, - 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, 0x3E, - 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFE, - 0x00, 0x00, 0x7F, 0xE0, 0x0F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, - 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, - 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x80, 0xF8, - 0x00, 0xFC, 0x00, 0x3E, 0x0F, 0x80, 0x1F, 0xF9, 0xE1, 0xF0, 0x78, 0x03, - 0xFF, 0xCF, 0x07, 0x87, 0xC0, 0x3F, 0x0F, 0xF0, 0x3C, 0x7C, 0x03, 0xE0, - 0x3F, 0x01, 0xE3, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0x3E, 0x03, 0xE0, 0x0F, - 0x80, 0x79, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xDF, 0x01, 0xE0, 0x03, 0xC0, - 0x3E, 0xF0, 0x1F, 0x00, 0x3E, 0x01, 0xE7, 0x80, 0xF0, 0x01, 0xE0, 0x0F, - 0x38, 0x07, 0x80, 0x0F, 0x00, 0xFB, 0xC0, 0x78, 0x00, 0xF0, 0x07, 0x9E, - 0x03, 0xC0, 0x07, 0x80, 0x7C, 0xF0, 0x1E, 0x00, 0x78, 0x07, 0xC7, 0x80, - 0xF0, 0x07, 0xC0, 0x7E, 0x3C, 0x07, 0x80, 0x7C, 0x07, 0xE1, 0xE0, 0x3E, - 0x07, 0xE0, 0x7E, 0x0F, 0x00, 0xF8, 0x7F, 0x8F, 0xC0, 0x7C, 0x07, 0xFF, - 0x7F, 0xFC, 0x01, 0xE0, 0x1F, 0xF1, 0xFF, 0x80, 0x0F, 0x00, 0x7E, 0x0F, - 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, - 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFE, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x3F, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x1E, - 0x7C, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x03, 0xC7, 0xC0, 0x00, 0x0F, 0x1F, - 0x00, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x03, 0xE0, - 0x00, 0x78, 0x0F, 0x80, 0x01, 0xE0, 0x3E, 0x00, 0x0F, 0x00, 0xF8, 0x00, - 0x3C, 0x03, 0xE0, 0x01, 0xE0, 0x0F, 0x80, 0x0F, 0x80, 0x1E, 0x00, 0x3C, - 0x00, 0x7C, 0x01, 0xFF, 0xFF, 0xF0, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, 0xFF, - 0xFF, 0x00, 0xFF, 0xFF, 0xFC, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x03, - 0xC0, 0xF8, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0xF8, - 0xF8, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, 0x3E, 0xF8, - 0x00, 0x00, 0x7B, 0xE0, 0x00, 0x01, 0xF0, 0x01, 0xFF, 0xFF, 0x00, 0x0F, - 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xFC, 0x03, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, - 0x1F, 0x81, 0xE0, 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0x78, 0x00, 0x0F, - 0x03, 0xC0, 0x00, 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x3C, 0x0F, - 0x00, 0x01, 0xE0, 0x78, 0x00, 0x1E, 0x07, 0xC0, 0x03, 0xE0, 0x3F, 0xFF, - 0xFC, 0x01, 0xFF, 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xFE, - 0x07, 0x80, 0x01, 0xF0, 0x3C, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, - 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x07, 0x87, 0x80, 0x00, 0x3C, 0x3C, 0x00, - 0x01, 0xE1, 0xE0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x0F, - 0x87, 0x80, 0x00, 0xF8, 0x3C, 0x00, 0x1F, 0x81, 0xFF, 0xFF, 0xF8, 0x1F, - 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, - 0xFF, 0xFC, 0x00, 0xFE, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x3E, 0x00, - 0x07, 0x81, 0xF0, 0x00, 0x1E, 0x07, 0x80, 0x00, 0x3C, 0x3C, 0x00, 0x00, - 0xF1, 0xF0, 0x00, 0x03, 0xC7, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xF3, 0xC0, 0x00, 0x07, - 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x07, 0xC1, - 0xF0, 0x00, 0x3E, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0xE0, 0x3F, 0x80, 0x1F, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x80, 0x07, 0xFF, - 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0x80, 0x3E, 0x00, 0x3F, 0x80, 0x78, 0x00, - 0x1F, 0x80, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x1E, 0x07, 0xC0, 0x00, - 0x3E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, - 0xF0, 0xF8, 0x00, 0x01, 0xE1, 0xF0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x07, - 0x87, 0x80, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0x78, - 0x7C, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x01, 0xE1, 0xE0, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1E, 0x00, 0x00, 0x78, 0x3C, - 0x00, 0x01, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x0F, 0x03, 0xE0, - 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF8, 0x0F, 0x00, 0x0F, 0xE0, 0x1F, 0xFF, - 0xFF, 0x80, 0x7F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x01, 0xFF, 0xFF, - 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFE, 0x03, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, - 0xFF, 0xF0, 0x1F, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x07, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x3F, 0xFF, 0xFF, 0x80, - 0x7F, 0xFF, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x1F, 0xFF, - 0xFF, 0xE0, 0x7F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, - 0xFE, 0x00, 0x01, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, 0xF0, 0x1F, 0xFF, - 0xFF, 0xC0, 0xFF, 0xFF, 0xFE, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFF, - 0xFF, 0xC0, 0x0F, 0xFF, 0xFF, 0x00, 0x7F, 0xFF, 0xFC, 0x01, 0xFF, 0xFF, - 0xF0, 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x7F, 0xC0, 0x00, 0x01, 0xFF, 0xF8, 0x00, 0x07, 0xFF, 0xFF, 0x00, 0x07, - 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x0F, 0xC0, 0x00, 0xF8, 0x0F, - 0xC0, 0x00, 0x3E, 0x07, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x07, 0x87, - 0xC0, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3C, 0x00, 0x1F, 0xFF, - 0xBC, 0x00, 0x0F, 0xFF, 0xDE, 0x00, 0x0F, 0xFF, 0xEF, 0x00, 0x07, 0xFF, - 0xF7, 0x80, 0x00, 0x00, 0x73, 0xC0, 0x00, 0x00, 0x39, 0xE0, 0x00, 0x00, - 0x3C, 0xF0, 0x00, 0x00, 0x1E, 0x78, 0x00, 0x00, 0x1F, 0x3E, 0x00, 0x00, - 0x0F, 0x8F, 0x00, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x0F, 0xC3, 0xF0, 0x00, - 0x0F, 0xE0, 0xFC, 0x00, 0x1F, 0xF0, 0x7F, 0x80, 0x7F, 0x78, 0x1F, 0xFF, - 0xFE, 0x38, 0x03, 0xFF, 0xFE, 0x1C, 0x00, 0xFF, 0xFC, 0x0E, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x03, 0xC0, - 0x78, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, 0xF0, 0x3E, 0x00, 0x00, 0xF0, - 0x1E, 0x00, 0x00, 0x78, 0x0F, 0x00, 0x00, 0x3C, 0x0F, 0x80, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x07, - 0x80, 0xF0, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x01, - 0xF0, 0x3C, 0x00, 0x00, 0xF0, 0x1F, 0xFF, 0xFF, 0xF8, 0x0F, 0xFF, 0xFF, - 0xFC, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xFE, 0x03, 0xC0, 0x00, - 0x0F, 0x01, 0xE0, 0x00, 0x07, 0x81, 0xF0, 0x00, 0x07, 0xC0, 0xF8, 0x00, - 0x03, 0xE0, 0x78, 0x00, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0xF0, 0x1E, 0x00, - 0x00, 0x78, 0x1F, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0x80, - 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x0F, 0x81, 0xF0, - 0x00, 0x07, 0xC0, 0xF0, 0x00, 0x03, 0xC0, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, 0xF0, 0x3E, 0x07, - 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x03, 0xC0, 0x78, 0x1F, 0x03, - 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x7C, 0x0F, 0x81, 0xE0, 0x3C, 0x07, 0x81, - 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xC0, 0xF8, 0x1E, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0xF0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, - 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x0F, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0xF0, - 0x01, 0xE0, 0x78, 0x00, 0xF0, 0x78, 0x00, 0xF8, 0x3C, 0x00, 0x78, 0x1E, - 0x00, 0x3C, 0x0F, 0x00, 0x3E, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x7E, 0x00, - 0xFF, 0xFF, 0x00, 0x3F, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0xC0, 0x1E, 0x00, - 0x03, 0xE0, 0x0F, 0x80, 0x03, 0xF0, 0x03, 0xE0, 0x01, 0xF8, 0x00, 0xF0, - 0x00, 0xFC, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x07, - 0xC0, 0x3F, 0x00, 0x01, 0xE0, 0x1F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, - 0x1E, 0x07, 0xC0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x03, 0xE3, 0xF0, 0x00, - 0x00, 0xF1, 0xFC, 0x00, 0x00, 0x3C, 0xFF, 0x00, 0x00, 0x0F, 0x7F, 0xE0, - 0x00, 0x07, 0xFE, 0xF8, 0x00, 0x01, 0xFE, 0x1E, 0x00, 0x00, 0x7F, 0x07, - 0xC0, 0x00, 0x1F, 0x80, 0xF0, 0x00, 0x0F, 0xC0, 0x3E, 0x00, 0x03, 0xE0, - 0x07, 0x80, 0x00, 0xF0, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x0F, - 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x78, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x07, 0x80, 0x00, 0xF8, - 0x03, 0xE0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x07, 0xC0, 0x3C, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0xF8, - 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, - 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x0F, - 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x7C, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x3C, 0x00, 0x00, 0xF0, - 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xE0, - 0x01, 0xF8, 0x00, 0x00, 0x7E, 0x03, 0xF8, 0x00, 0x01, 0xFC, 0x0F, 0xF0, - 0x00, 0x03, 0xF8, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x3F, 0xC0, 0x00, 0x1F, - 0xC0, 0x7F, 0x80, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x00, 0xEF, 0x03, 0xFE, - 0x00, 0x03, 0xFE, 0x07, 0xBC, 0x00, 0x0F, 0x78, 0x0F, 0x3C, 0x00, 0x1E, - 0xF0, 0x1E, 0x78, 0x00, 0x79, 0xE0, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0xF9, - 0xE0, 0x03, 0xCF, 0x81, 0xE3, 0xC0, 0x07, 0x9E, 0x03, 0xC7, 0x80, 0x1E, - 0x3C, 0x07, 0x8F, 0x00, 0x38, 0x78, 0x1F, 0x1E, 0x00, 0xF0, 0xF0, 0x3C, - 0x1E, 0x03, 0xC3, 0xE0, 0x78, 0x3C, 0x07, 0x87, 0x80, 0xF0, 0x78, 0x1E, - 0x0F, 0x01, 0xE0, 0xF0, 0x3C, 0x1E, 0x07, 0xC1, 0xE0, 0xF0, 0x7C, 0x0F, - 0x03, 0xC1, 0xE0, 0xF0, 0x1E, 0x07, 0x87, 0x81, 0xE0, 0x3C, 0x0F, 0x0E, - 0x03, 0xC0, 0x78, 0x0F, 0x3C, 0x07, 0x81, 0xF0, 0x1E, 0x70, 0x1F, 0x03, - 0xC0, 0x3D, 0xE0, 0x3C, 0x07, 0x80, 0x7F, 0x80, 0x78, 0x0F, 0x00, 0xFF, - 0x00, 0xF0, 0x3E, 0x01, 0xFC, 0x01, 0xE0, 0x78, 0x03, 0xF8, 0x07, 0xC0, - 0xF0, 0x07, 0xE0, 0x0F, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x01, 0xF0, - 0x00, 0x03, 0xC0, 0x7E, 0x00, 0x01, 0xF0, 0x3F, 0x80, 0x00, 0x78, 0x0F, - 0xE0, 0x00, 0x1E, 0x03, 0xFC, 0x00, 0x07, 0x80, 0xFF, 0x00, 0x03, 0xE0, - 0x3F, 0xE0, 0x00, 0xF0, 0x1F, 0xF8, 0x00, 0x3C, 0x07, 0x9E, 0x00, 0x0F, - 0x01, 0xE7, 0xC0, 0x03, 0xC0, 0x78, 0xF0, 0x01, 0xF0, 0x1E, 0x3E, 0x00, - 0x78, 0x0F, 0x87, 0x80, 0x1E, 0x03, 0xC1, 0xF0, 0x07, 0x80, 0xF0, 0x7C, - 0x01, 0xE0, 0x3C, 0x0F, 0x00, 0xF8, 0x1F, 0x03, 0xE0, 0x3C, 0x07, 0x80, - 0x78, 0x0F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x78, 0x07, 0xC1, 0xF0, 0x1E, - 0x00, 0xF8, 0x78, 0x0F, 0x80, 0x3E, 0x1E, 0x03, 0xC0, 0x07, 0x87, 0x80, - 0xF0, 0x01, 0xF1, 0xE0, 0x3C, 0x00, 0x3C, 0xF8, 0x0F, 0x00, 0x0F, 0xBC, - 0x07, 0xC0, 0x03, 0xEF, 0x01, 0xE0, 0x00, 0x7F, 0xC0, 0x78, 0x00, 0x1F, - 0xF0, 0x1E, 0x00, 0x03, 0xFC, 0x0F, 0x80, 0x00, 0xFE, 0x03, 0xC0, 0x00, - 0x1F, 0x80, 0xF0, 0x00, 0x07, 0xE0, 0x3C, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, - 0x0F, 0xFF, 0xFF, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, - 0x0F, 0x80, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, - 0x07, 0x80, 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, - 0xF3, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, - 0x1E, 0xF0, 0x00, 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x07, 0xFC, 0x00, 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x00, 0xFB, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, - 0x00, 0x3C, 0xF0, 0x00, 0x00, 0x3E, 0x78, 0x00, 0x00, 0x1E, 0x3E, 0x00, - 0x00, 0x1F, 0x0F, 0x00, 0x00, 0x1F, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xF0, - 0x00, 0x1F, 0x00, 0xFC, 0x00, 0x3F, 0x80, 0x3F, 0x80, 0x7F, 0x80, 0x1F, - 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, - 0x0F, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x0F, 0xFF, 0xFE, 0x00, - 0x7F, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xE0, 0x3E, 0x00, 0x3F, 0x81, 0xE0, - 0x00, 0x7C, 0x0F, 0x00, 0x01, 0xE0, 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, - 0x78, 0x3C, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x00, 0x01, 0xE0, - 0xF8, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0xF8, 0x3C, 0x00, 0x0F, 0x81, 0xE0, - 0x01, 0xF8, 0x0F, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xFC, 0x07, 0xFF, 0xFF, - 0x80, 0x3F, 0xFF, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x00, 0x0F, 0xFF, 0xFF, - 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x0F, 0xC0, 0x00, - 0xFC, 0x0F, 0x80, 0x00, 0x3E, 0x0F, 0x80, 0x00, 0x0F, 0x07, 0x80, 0x00, - 0x07, 0xC7, 0xC0, 0x00, 0x01, 0xE3, 0xC0, 0x00, 0x00, 0xF3, 0xC0, 0x00, - 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3D, 0xE0, 0x00, 0x00, 0x1E, 0xF0, 0x00, - 0x00, 0x0F, 0x78, 0x00, 0x00, 0x07, 0xB8, 0x00, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x01, 0xEF, 0x00, 0x00, 0x00, 0xF7, 0x80, - 0x00, 0x00, 0x7B, 0xC0, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x00, 0x3C, 0xF0, - 0x00, 0x00, 0x3C, 0x78, 0x00, 0x08, 0x3E, 0x3E, 0x00, 0x0E, 0x1E, 0x0F, - 0x00, 0x0F, 0x9F, 0x07, 0xC0, 0x07, 0xFF, 0x03, 0xF0, 0x01, 0xFF, 0x00, - 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0xFF, 0x80, 0x1F, 0xFF, 0xFF, 0xE0, - 0x03, 0xFF, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x7E, 0x00, 0x0F, 0xF0, 0x1F, - 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, - 0xC0, 0x07, 0xFF, 0xFF, 0xC0, 0x1F, 0xFF, 0xFF, 0x80, 0xFF, 0xFF, 0xFE, - 0x03, 0xE0, 0x00, 0xFC, 0x0F, 0x00, 0x01, 0xF0, 0x3C, 0x00, 0x03, 0xC1, - 0xF0, 0x00, 0x0F, 0x07, 0xC0, 0x00, 0x3C, 0x1E, 0x00, 0x00, 0xF0, 0x78, - 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, 0x78, 0x3E, 0x00, - 0x03, 0xE0, 0xF0, 0x00, 0x1F, 0x03, 0xC0, 0x01, 0xF8, 0x0F, 0xFF, 0xFF, - 0xC0, 0x7F, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xF8, 0x07, 0xFF, 0xFF, 0xF0, - 0x1E, 0x00, 0x07, 0xE0, 0xF8, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, 0x0F, - 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xE0, 0xF0, 0x00, 0x07, 0x87, 0xC0, - 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0x0F, 0x07, 0x80, 0x00, 0x3C, 0x3E, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x03, - 0xC3, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, - 0x00, 0x1F, 0xFF, 0xF8, 0x01, 0xFF, 0xFF, 0xC0, 0x1F, 0xC0, 0x7F, 0x01, - 0xF0, 0x00, 0xFC, 0x0F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x0F, 0x07, 0x00, - 0x00, 0x78, 0x78, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0x1E, 0x1E, 0x00, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0xFF, 0xE0, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, - 0xFF, 0xC0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x07, - 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3C, 0xF0, 0x00, 0x01, 0xE7, - 0x80, 0x00, 0x0F, 0x3C, 0x00, 0x00, 0x71, 0xE0, 0x00, 0x07, 0x8F, 0x00, - 0x00, 0x3C, 0x7C, 0x00, 0x03, 0xC1, 0xF0, 0x00, 0x7C, 0x0F, 0xE0, 0x1F, - 0xC0, 0x3F, 0xFF, 0xFC, 0x00, 0xFF, 0xFF, 0xC0, 0x03, 0xFF, 0xF8, 0x00, - 0x03, 0xFE, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0x7F, - 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x3C, 0x1E, - 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, 0xC1, 0xE0, - 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x1F, 0x00, - 0x00, 0x7C, 0x3C, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x01, 0xE0, 0xF0, 0x00, - 0x03, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x00, 0x00, - 0x3C, 0x1E, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x03, - 0xE1, 0xF0, 0x00, 0x07, 0x83, 0xC0, 0x00, 0x0F, 0x07, 0x80, 0x00, 0x1E, - 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x78, 0x00, 0x01, 0xE0, - 0xF0, 0x00, 0x03, 0xC1, 0xE0, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x1E, 0x07, - 0x80, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x07, 0xE0, 0x1F, - 0xC0, 0x7F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0x1F, 0xFF, 0xF0, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0xC0, - 0x00, 0x0F, 0xBE, 0x00, 0x00, 0x79, 0xF0, 0x00, 0x07, 0xC7, 0x80, 0x00, - 0x3C, 0x3C, 0x00, 0x03, 0xE1, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x01, 0xF0, - 0x7C, 0x00, 0x0F, 0x03, 0xE0, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x80, 0x78, - 0x00, 0x78, 0x03, 0xC0, 0x07, 0xC0, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x03, - 0xE0, 0x07, 0xC0, 0x1E, 0x00, 0x3E, 0x01, 0xF0, 0x01, 0xF0, 0x0F, 0x00, - 0x07, 0x80, 0xF0, 0x00, 0x3C, 0x07, 0x80, 0x01, 0xE0, 0x78, 0x00, 0x0F, - 0x07, 0xC0, 0x00, 0x7C, 0x3C, 0x00, 0x03, 0xE3, 0xE0, 0x00, 0x1F, 0x1E, - 0x00, 0x00, 0xF9, 0xF0, 0x00, 0x03, 0xCF, 0x00, 0x00, 0x1E, 0xF0, 0x00, - 0x00, 0xF7, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF0, - 0x00, 0x1F, 0x00, 0x03, 0xDE, 0x00, 0x07, 0xE0, 0x00, 0xFB, 0xC0, 0x00, - 0xFC, 0x00, 0x1E, 0x78, 0x00, 0x3F, 0x80, 0x07, 0xCF, 0x00, 0x07, 0xF0, - 0x00, 0xF9, 0xE0, 0x01, 0xFE, 0x00, 0x3E, 0x3C, 0x00, 0x7F, 0xC0, 0x07, - 0xC7, 0x80, 0x0F, 0x78, 0x01, 0xF0, 0xF0, 0x03, 0xEF, 0x00, 0x3E, 0x1E, - 0x00, 0x79, 0xE0, 0x0F, 0x83, 0xC0, 0x1F, 0x3C, 0x01, 0xF0, 0x78, 0x03, - 0xC7, 0x80, 0x3C, 0x0F, 0x00, 0xF8, 0xF0, 0x0F, 0x80, 0xE0, 0x1E, 0x1E, - 0x01, 0xE0, 0x1C, 0x07, 0xC1, 0xC0, 0x7C, 0x03, 0x80, 0xF0, 0x3C, 0x0F, - 0x00, 0x70, 0x3E, 0x07, 0x83, 0xE0, 0x0E, 0x07, 0x80, 0xF0, 0x78, 0x01, - 0xC1, 0xF0, 0x1E, 0x1F, 0x00, 0x3C, 0x3C, 0x03, 0xC3, 0xE0, 0x07, 0x8F, - 0x80, 0x78, 0x78, 0x00, 0xF1, 0xE0, 0x0F, 0x1F, 0x00, 0x1E, 0x7C, 0x01, - 0xE3, 0xC0, 0x03, 0xCF, 0x00, 0x3C, 0xF8, 0x00, 0x7B, 0xE0, 0x07, 0x9E, - 0x00, 0x0F, 0x78, 0x00, 0xF7, 0xC0, 0x01, 0xFF, 0x00, 0x1E, 0xF0, 0x00, - 0x3F, 0xC0, 0x03, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0x00, 0xFE, - 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x7C, - 0x00, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, - 0x00, 0x01, 0xF0, 0x03, 0xE0, 0x00, 0x1F, 0x00, 0x7C, 0x00, 0x00, 0xF8, - 0x0F, 0x80, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x00, 0x7C, 0x1F, 0x00, 0x00, - 0x07, 0xC3, 0xE0, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x03, 0xEF, 0x80, - 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x0F, 0xBE, 0x00, - 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x00, 0x3E, 0x1F, 0x00, 0x00, 0x03, 0xE1, - 0xF0, 0x00, 0x00, 0x7C, 0x0F, 0x80, 0x00, 0x0F, 0x80, 0xF8, 0x00, 0x01, - 0xF0, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x03, 0xE0, - 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x03, 0xF0, 0x00, - 0x1F, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x0F, 0xC0, 0x00, 0x0F, 0x80, 0xF8, - 0x00, 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x1F, 0x1F, 0x80, - 0x00, 0xF8, 0x3E, 0x00, 0x03, 0xE0, 0xF8, 0x00, 0x1F, 0x01, 0xF0, 0x00, - 0xF8, 0x07, 0xC0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x3E, 0x01, 0xF0, - 0x00, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x07, 0xC1, 0xF0, 0x00, - 0x0F, 0x0F, 0x80, 0x00, 0x3E, 0x7C, 0x00, 0x00, 0x79, 0xE0, 0x00, 0x01, - 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xC0, - 0x1F, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xFE, - 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x07, 0xFF, 0xFF, 0xFE, 0x01, 0xFF, 0xFF, 0xFF, 0x80, 0x7F, - 0xFF, 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0xF8, 0x00, 0x00, 0x7F, 0xC0, 0x1F, - 0xF0, 0x07, 0xFC, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, - 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0x7F, 0xC0, 0x3F, 0xE0, 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0xE3, - 0x8E, 0x38, 0xE1, 0x86, 0x18, 0x61, 0x87, 0x1C, 0x71, 0xC7, 0x0C, 0x30, - 0xC3, 0x0C, 0x38, 0xE3, 0x8E, 0x38, 0x61, 0x86, 0x18, 0x61, 0xC7, 0x1C, - 0x71, 0xC0, 0x00, 0x7F, 0xC0, 0x1F, 0xF0, 0x07, 0xFC, 0x03, 0xFE, 0x00, - 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, - 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, - 0xC0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x7F, 0x80, 0x3F, 0xE0, - 0x0F, 0xF8, 0x03, 0xFE, 0x00, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x1F, 0x00, - 0x1F, 0xC0, 0x0E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x0E, - 0x03, 0x83, 0x83, 0x81, 0xC3, 0xC0, 0xE1, 0xC0, 0x71, 0xC0, 0x39, 0xE0, - 0x0E, 0xE0, 0x07, 0xF0, 0x03, 0xF0, 0x01, 0xC0, 0x7F, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0xF8, 0x78, 0x3C, 0x1C, 0x0E, 0x0E, 0x07, 0x00, - 0x1F, 0xE0, 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xF0, 0x7E, - 0x07, 0xE1, 0xF0, 0x07, 0xC3, 0xC0, 0x07, 0x80, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xF0, 0x00, 0x07, 0xE0, 0x0F, 0xFF, - 0xC0, 0xFF, 0xFF, 0x07, 0xFF, 0x9E, 0x1F, 0xC0, 0x3C, 0x7C, 0x00, 0x78, - 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1F, 0x1E, - 0x00, 0x7E, 0x3F, 0x07, 0xFC, 0x3F, 0xFF, 0x7E, 0x7F, 0xFC, 0xFC, 0x7F, - 0xF0, 0xF8, 0x3F, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x0F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0x83, 0xE0, 0x03, 0xC7, 0xFC, - 0x01, 0xEF, 0xFF, 0x00, 0xFF, 0xFF, 0xC0, 0xF7, 0x83, 0xF0, 0x7F, 0x00, - 0xF8, 0x3F, 0x00, 0x3E, 0x1F, 0x00, 0x0F, 0x1F, 0x80, 0x07, 0x8F, 0x80, - 0x03, 0xC7, 0x80, 0x01, 0xE3, 0xC0, 0x00, 0xF1, 0xE0, 0x00, 0x79, 0xF0, - 0x00, 0x3C, 0xF0, 0x00, 0x3C, 0x78, 0x00, 0x1E, 0x3C, 0x00, 0x0F, 0x1E, - 0x00, 0x0F, 0x9F, 0x00, 0x07, 0x8F, 0xC0, 0x07, 0xC7, 0xE0, 0x07, 0xC3, - 0xF8, 0x07, 0xC1, 0xFE, 0x0F, 0xC1, 0xEF, 0xFF, 0xE0, 0xF3, 0xFF, 0xC0, - 0x78, 0xFF, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x03, 0xFF, - 0x80, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x0F, 0xE0, 0xF8, 0x7E, 0x01, 0xF1, - 0xF0, 0x03, 0xCF, 0x80, 0x0F, 0x3C, 0x00, 0x3D, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0xF8, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x0F, 0x3C, - 0x00, 0x3C, 0xF8, 0x01, 0xE1, 0xF0, 0x0F, 0x87, 0xE0, 0xFC, 0x0F, 0xFF, - 0xE0, 0x3F, 0xFF, 0x00, 0x7F, 0xF8, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, - 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x3C, 0x00, 0x3F, 0x07, 0x80, 0x1F, 0xF8, 0xF0, 0x0F, 0xFF, 0x3E, 0x03, - 0xFF, 0xF7, 0x80, 0xFC, 0x1F, 0xF0, 0x3F, 0x00, 0xFE, 0x07, 0xC0, 0x0F, - 0xC1, 0xF0, 0x01, 0xF0, 0x3C, 0x00, 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xE0, - 0x00, 0x78, 0x3C, 0x00, 0x1F, 0x0F, 0x80, 0x03, 0xC1, 0xE0, 0x00, 0x78, - 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x7C, 0x1E, 0x00, - 0x0F, 0x03, 0xC0, 0x03, 0xE0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x1F, 0x80, - 0xF8, 0x07, 0xF0, 0x1F, 0x83, 0xFC, 0x03, 0xFF, 0xFF, 0x80, 0x3F, 0xFE, - 0xF0, 0x03, 0xFF, 0x1E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x80, - 0x01, 0xFF, 0xC0, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, 0x0F, 0xC1, - 0xF0, 0x07, 0xC7, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, - 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xBF, 0xFF, 0xFF, 0x78, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x07, 0x80, 0x03, 0xCF, 0x80, 0x0F, 0x0F, 0x80, 0x3E, - 0x1F, 0x81, 0xF8, 0x1F, 0xFF, 0xE0, 0x1F, 0xFF, 0x80, 0x1F, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x00, 0x3E, 0x01, 0xFC, 0x07, 0xF8, 0x0F, 0xE0, 0x3E, - 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x7F, 0xF0, 0xFF, 0xE3, - 0xFF, 0xC0, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x3E, - 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x80, 0x1E, 0x00, - 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, - 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x07, - 0xFE, 0x3C, 0x01, 0xFF, 0xE7, 0x00, 0xFF, 0xFE, 0xE0, 0x1F, 0x83, 0xFC, - 0x07, 0xC0, 0x3F, 0x81, 0xF0, 0x03, 0xF0, 0x3C, 0x00, 0x7C, 0x0F, 0x00, - 0x0F, 0x81, 0xE0, 0x01, 0xF0, 0x78, 0x00, 0x3E, 0x0F, 0x00, 0x07, 0xC1, - 0xE0, 0x00, 0xF0, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0xF8, 0x3C, 0x00, 0x1F, 0x07, 0x80, 0x03, 0xC0, 0xF0, 0x00, 0xF8, 0x1E, - 0x00, 0x3F, 0x03, 0xE0, 0x07, 0xE0, 0x3E, 0x01, 0xF8, 0x07, 0xE0, 0xFF, - 0x00, 0x7F, 0xFD, 0xE0, 0x0F, 0xFF, 0x3C, 0x00, 0xFF, 0xCF, 0x00, 0x07, - 0xE1, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x01, 0xE0, 0x03, 0xE0, - 0x3C, 0x00, 0xF8, 0x07, 0xE0, 0x7F, 0x00, 0x7F, 0xFF, 0xC0, 0x0F, 0xFF, - 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x78, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x83, 0xF0, 0x0F, - 0x1F, 0xF0, 0x1E, 0xFF, 0xF0, 0x3F, 0xFF, 0xE0, 0xFF, 0x87, 0xE1, 0xFC, - 0x07, 0xC3, 0xF0, 0x07, 0x87, 0xC0, 0x0F, 0x1F, 0x00, 0x1E, 0x3E, 0x00, - 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE1, 0xE0, 0x03, 0xC7, 0xC0, 0x07, - 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0x78, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x1E, - 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x01, - 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xC0, - 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, - 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, 0x07, - 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, - 0x07, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, - 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, - 0x78, 0x00, 0x3E, 0x00, 0x7F, 0x80, 0x3F, 0xC0, 0x0F, 0xE0, 0x03, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x0F, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x03, 0xC0, 0x0F, 0x81, 0xE0, 0x0F, 0x80, - 0xF0, 0x0F, 0x80, 0xF0, 0x1F, 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x1F, 0x00, - 0x1E, 0x1F, 0x00, 0x1F, 0x1F, 0x00, 0x0F, 0x1E, 0x00, 0x07, 0xBF, 0x80, - 0x03, 0xFF, 0xC0, 0x01, 0xFD, 0xE0, 0x01, 0xFC, 0xF8, 0x00, 0xFC, 0x3C, - 0x00, 0x7C, 0x1F, 0x00, 0x3C, 0x07, 0x80, 0x1E, 0x03, 0xC0, 0x1F, 0x01, - 0xF0, 0x0F, 0x00, 0x78, 0x07, 0x80, 0x3E, 0x03, 0xC0, 0x0F, 0x01, 0xE0, - 0x07, 0x81, 0xE0, 0x03, 0xE0, 0xF0, 0x00, 0xF0, 0x78, 0x00, 0x7C, 0x00, - 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, - 0xF0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0xF0, 0x1E, 0x00, 0x00, - 0x07, 0xE0, 0x1F, 0x80, 0xF9, 0xFF, 0x07, 0xFC, 0x0F, 0x3F, 0xF8, 0xFF, - 0xE0, 0xF7, 0xFF, 0x9F, 0xFF, 0x0F, 0xF0, 0xFF, 0xC3, 0xF0, 0xFC, 0x07, - 0xF8, 0x1F, 0x1F, 0x80, 0x3F, 0x00, 0xF1, 0xF0, 0x03, 0xE0, 0x0F, 0x1E, - 0x00, 0x3C, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0x00, - 0xF1, 0xE0, 0x07, 0x80, 0x0F, 0x3C, 0x00, 0x78, 0x01, 0xF3, 0xC0, 0x07, - 0x80, 0x1E, 0x3C, 0x00, 0x78, 0x01, 0xE3, 0xC0, 0x0F, 0x80, 0x1E, 0x3C, - 0x00, 0xF0, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x3C, 0x78, 0x00, 0xF0, 0x03, - 0xC7, 0x80, 0x0F, 0x00, 0x3C, 0x78, 0x01, 0xE0, 0x03, 0xC7, 0x80, 0x1E, - 0x00, 0x3C, 0xF8, 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x1E, 0x00, 0x78, 0xF0, - 0x01, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x07, 0xE0, 0x1F, - 0x3F, 0xF0, 0x3C, 0xFF, 0xF0, 0x7B, 0xFF, 0xE0, 0xFF, 0x07, 0xE1, 0xF8, - 0x07, 0xC7, 0xE0, 0x07, 0x8F, 0x80, 0x0F, 0x1F, 0x00, 0x1E, 0x3C, 0x00, - 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, - 0x8F, 0x00, 0x0F, 0x1E, 0x00, 0x3E, 0x3C, 0x00, 0x78, 0xF0, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x0F, 0x8F, 0x00, 0x1E, 0x3E, - 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC0, 0x00, - 0x1F, 0x80, 0x01, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, 0x3F, 0xFF, 0xC0, 0xFE, - 0x0F, 0xC1, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x00, 0x0F, 0x3C, 0x00, - 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, 0x00, 0xF7, 0x80, 0x01, - 0xFE, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0x78, 0x00, 0x1E, 0xF0, 0x00, 0x3D, - 0xE0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x07, 0x8F, 0x80, 0x1F, 0x0F, - 0x80, 0x7C, 0x1F, 0x83, 0xF8, 0x1F, 0xFF, 0xE0, 0x3F, 0xFF, 0x00, 0x1F, - 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x3C, 0x7F, 0xE0, - 0x07, 0xBF, 0xFE, 0x01, 0xFF, 0xFF, 0xC0, 0x3D, 0xE0, 0xFC, 0x07, 0xF0, - 0x0F, 0x80, 0xFC, 0x00, 0xF8, 0x1F, 0x00, 0x0F, 0x07, 0xC0, 0x01, 0xE0, - 0xF8, 0x00, 0x3C, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x00, 0xF0, 0x78, 0x00, - 0x1E, 0x1F, 0x00, 0x03, 0xC3, 0xC0, 0x00, 0xF0, 0x78, 0x00, 0x1E, 0x0F, - 0x00, 0x03, 0xC3, 0xE0, 0x00, 0xF8, 0x7C, 0x00, 0x1E, 0x0F, 0x80, 0x07, - 0xC1, 0xF8, 0x01, 0xF0, 0x3F, 0x80, 0x7C, 0x0F, 0xF8, 0x3F, 0x81, 0xEF, - 0xFF, 0xE0, 0x3C, 0xFF, 0xF8, 0x07, 0x8F, 0xFC, 0x00, 0xF0, 0xFE, 0x00, - 0x3E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x3F, - 0xF8, 0xF0, 0x1F, 0xFF, 0x3C, 0x0F, 0xFF, 0xDF, 0x07, 0xE0, 0xFF, 0x83, - 0xE0, 0x1F, 0xE1, 0xF0, 0x03, 0xF8, 0x78, 0x00, 0xFE, 0x3C, 0x00, 0x1F, - 0x8F, 0x00, 0x07, 0xC7, 0x80, 0x01, 0xF1, 0xE0, 0x00, 0x7C, 0x78, 0x00, - 0x1F, 0x3C, 0x00, 0x0F, 0x8F, 0x00, 0x03, 0xE3, 0xC0, 0x00, 0xF8, 0xF0, - 0x00, 0x3E, 0x3C, 0x00, 0x1F, 0x8F, 0x00, 0x0F, 0xC3, 0xC0, 0x03, 0xF0, - 0xF8, 0x01, 0xFC, 0x1F, 0x00, 0xFF, 0x07, 0xE0, 0xFF, 0xC0, 0xFF, 0xFD, - 0xE0, 0x1F, 0xFE, 0x78, 0x03, 0xFF, 0x3E, 0x00, 0x3F, 0x0F, 0x80, 0x00, - 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x1F, 0x00, - 0x00, 0x07, 0xC0, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x87, 0xCF, 0xC3, 0xCF, 0xE1, 0xEF, - 0xE0, 0xFF, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x78, 0x00, 0x3C, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x03, 0xE0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x3F, 0x80, 0x07, 0xFF, 0x00, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0xFC, - 0x1F, 0x87, 0x80, 0x3C, 0x7C, 0x01, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, 0x00, - 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xFF, - 0xC0, 0x07, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xBC, - 0x00, 0x3D, 0xE0, 0x01, 0xEF, 0x00, 0x1F, 0x7C, 0x01, 0xF3, 0xF0, 0x1F, - 0x8F, 0xFF, 0xF8, 0x7F, 0xFF, 0x80, 0xFF, 0xF0, 0x01, 0xFE, 0x00, 0x03, - 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC1, 0xFF, 0xEF, 0xFF, - 0x7F, 0xF0, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, - 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xE0, - 0x0F, 0x00, 0x78, 0x07, 0xC0, 0x3C, 0x01, 0xE0, 0x0F, 0xF0, 0x7F, 0x81, - 0xF8, 0x07, 0xC0, 0x0F, 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x1E, - 0x1F, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x1E, 0x1E, 0x00, 0x3C, - 0x1E, 0x00, 0x3C, 0x3E, 0x00, 0x3C, 0x3C, 0x00, 0x3C, 0x3C, 0x00, 0x3C, - 0x3C, 0x00, 0x7C, 0x3C, 0x00, 0x78, 0x78, 0x00, 0x78, 0x78, 0x00, 0x78, - 0x78, 0x00, 0x78, 0x78, 0x00, 0xF8, 0x78, 0x00, 0xF0, 0xF0, 0x01, 0xF0, - 0xF0, 0x03, 0xF0, 0xF0, 0x07, 0xF0, 0xF8, 0x1F, 0xF0, 0xFF, 0xFF, 0xE0, - 0x7F, 0xFD, 0xE0, 0x3F, 0xF1, 0xE0, 0x1F, 0xC0, 0x00, 0xF0, 0x00, 0x7F, - 0xC0, 0x01, 0xEF, 0x00, 0x0F, 0xBC, 0x00, 0x3C, 0x78, 0x01, 0xE1, 0xE0, - 0x07, 0x87, 0x80, 0x3C, 0x1E, 0x01, 0xF0, 0x78, 0x07, 0x81, 0xE0, 0x3E, - 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x80, 0x38, 0x1E, 0x00, 0xF0, 0xF0, 0x03, - 0xC7, 0xC0, 0x0F, 0x1E, 0x00, 0x3C, 0xF0, 0x00, 0xF3, 0xC0, 0x03, 0xDE, - 0x00, 0x07, 0x78, 0x00, 0x1F, 0xC0, 0x00, 0x7E, 0x00, 0x01, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x07, 0xC0, 0x0F, 0x78, 0x03, - 0xE0, 0x0F, 0xBC, 0x03, 0xF0, 0x07, 0x9E, 0x01, 0xF8, 0x03, 0xCF, 0x00, - 0xFC, 0x03, 0xC7, 0x80, 0xFE, 0x01, 0xE3, 0xC0, 0x77, 0x01, 0xE0, 0xE0, - 0x7B, 0x80, 0xF0, 0x70, 0x39, 0xC0, 0xF0, 0x38, 0x3C, 0xE0, 0x78, 0x1C, - 0x1E, 0x78, 0x78, 0x0F, 0x1E, 0x3C, 0x3C, 0x07, 0x8F, 0x1E, 0x3C, 0x03, - 0xC7, 0x0F, 0x1E, 0x01, 0xE7, 0x87, 0x9E, 0x00, 0xF3, 0x81, 0xCF, 0x00, - 0x7B, 0xC0, 0xEF, 0x00, 0x3D, 0xC0, 0x77, 0x80, 0x1F, 0xE0, 0x3F, 0x80, - 0x0F, 0xF0, 0x1F, 0xC0, 0x07, 0xF0, 0x0F, 0xC0, 0x01, 0xF8, 0x07, 0xE0, - 0x00, 0xF8, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0xF0, - 0x00, 0x00, 0x03, 0xC0, 0x07, 0xC0, 0xF8, 0x01, 0xE0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x78, 0x00, 0xF0, 0x3C, 0x00, 0x3C, 0x1F, 0x00, 0x0F, 0x8F, - 0x80, 0x01, 0xE7, 0xC0, 0x00, 0x7D, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xF7, 0x80, 0x00, 0xF9, 0xF0, - 0x00, 0x3C, 0x3C, 0x00, 0x1E, 0x0F, 0x80, 0x0F, 0x01, 0xE0, 0x07, 0x80, - 0x7C, 0x03, 0xE0, 0x0F, 0x01, 0xF0, 0x03, 0xE0, 0xF8, 0x00, 0x78, 0x00, - 0x03, 0xC0, 0x01, 0xE0, 0x78, 0x00, 0x78, 0x0F, 0x00, 0x0F, 0x01, 0xE0, - 0x03, 0xC0, 0x3C, 0x00, 0x78, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0xC0, - 0x0F, 0x00, 0xF0, 0x01, 0xE0, 0x3C, 0x00, 0x3C, 0x07, 0x80, 0x07, 0x81, - 0xE0, 0x00, 0xF0, 0x3C, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xC0, 0x00, - 0x3C, 0x78, 0x00, 0x07, 0x9E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x1E, 0xF0, - 0x00, 0x03, 0xDE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, - 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x00, 0x01, - 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xE0, 0x7F, 0xFF, 0xE0, - 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, - 0x00, 0x01, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x01, 0xE0, - 0x00, 0x01, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, - 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, 0x00, 0x03, 0xE0, - 0x00, 0x03, 0xC0, 0x00, 0x03, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, 0xE0, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xFE, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF8, 0x00, - 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, - 0x38, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, - 0x78, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xE0, 0x00, - 0xE0, 0x00, 0xF0, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0x7C, 0x00, 0x00, 0x70, - 0x07, 0x00, 0x60, 0x06, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x01, 0xC0, - 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x00, - 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0E, 0x00, - 0xE0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 0x80, 0x38, 0x03, - 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, - 0x00, 0xE0, 0x06, 0x00, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x0F, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x1E, - 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x1C, - 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x07, 0x00, 0x1F, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xF0, - 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, - 0x0F, 0x00, 0x7F, 0x00, 0x7E, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xFE, - 0x00, 0xCF, 0xFC, 0x0E, 0xE3, 0xF0, 0xE6, 0x07, 0xFF, 0x60, 0x0F, 0xF0, - 0x00, 0x1E, 0x00 }; - -const GFXglyph FreeSansOblique24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 13, 0, 1 }, // 0x20 ' ' - { 0, 11, 34, 13, 6, -33 }, // 0x21 '!' - { 47, 13, 12, 17, 8, -32 }, // 0x22 '"' - { 67, 28, 34, 26, 3, -32 }, // 0x23 '#' - { 186, 26, 42, 26, 3, -35 }, // 0x24 '$' - { 323, 36, 34, 42, 6, -32 }, // 0x25 '%' - { 476, 26, 34, 31, 4, -32 }, // 0x26 '&' - { 587, 5, 12, 9, 8, -32 }, // 0x27 ''' - { 595, 15, 44, 16, 5, -33 }, // 0x28 '(' - { 678, 15, 44, 16, 1, -33 }, // 0x29 ')' - { 761, 14, 13, 18, 8, -33 }, // 0x2A '*' - { 784, 23, 22, 27, 5, -20 }, // 0x2B '+' - { 848, 7, 12, 13, 3, -4 }, // 0x2C ',' - { 859, 12, 4, 16, 5, -14 }, // 0x2D '-' - { 865, 6, 5, 13, 4, -4 }, // 0x2E '.' - { 869, 21, 35, 13, -1, -33 }, // 0x2F '/' - { 961, 23, 34, 26, 5, -32 }, // 0x30 '0' - { 1059, 13, 33, 26, 10, -32 }, // 0x31 '1' - { 1113, 27, 33, 26, 2, -32 }, // 0x32 '2' - { 1225, 25, 34, 26, 3, -32 }, // 0x33 '3' - { 1332, 24, 33, 26, 3, -32 }, // 0x34 '4' - { 1431, 27, 34, 26, 3, -32 }, // 0x35 '5' - { 1546, 24, 34, 26, 4, -32 }, // 0x36 '6' - { 1648, 26, 33, 26, 6, -32 }, // 0x37 '7' - { 1756, 25, 34, 26, 3, -32 }, // 0x38 '8' - { 1863, 24, 34, 26, 4, -32 }, // 0x39 '9' - { 1965, 10, 25, 13, 5, -24 }, // 0x3A ':' - { 1997, 11, 32, 13, 4, -24 }, // 0x3B ';' - { 2041, 26, 23, 27, 4, -22 }, // 0x3C '<' - { 2116, 26, 12, 27, 3, -16 }, // 0x3D '=' - { 2155, 26, 23, 27, 2, -21 }, // 0x3E '>' - { 2230, 20, 35, 26, 9, -34 }, // 0x3F '?' - { 2318, 45, 42, 48, 4, -34 }, // 0x40 '@' - { 2555, 30, 34, 31, 1, -33 }, // 0x41 'A' - { 2683, 29, 34, 31, 4, -33 }, // 0x42 'B' - { 2807, 30, 36, 33, 5, -34 }, // 0x43 'C' - { 2942, 31, 34, 33, 4, -33 }, // 0x44 'D' - { 3074, 31, 34, 31, 4, -33 }, // 0x45 'E' - { 3206, 30, 34, 28, 4, -33 }, // 0x46 'F' - { 3334, 33, 36, 37, 5, -34 }, // 0x47 'G' - { 3483, 33, 34, 34, 4, -33 }, // 0x48 'H' - { 3624, 11, 34, 13, 5, -33 }, // 0x49 'I' - { 3671, 25, 35, 24, 2, -33 }, // 0x4A 'J' - { 3781, 34, 34, 31, 4, -33 }, // 0x4B 'K' - { 3926, 22, 34, 26, 4, -33 }, // 0x4C 'L' - { 4020, 39, 34, 40, 4, -33 }, // 0x4D 'M' - { 4186, 34, 34, 34, 4, -33 }, // 0x4E 'N' - { 4331, 33, 36, 36, 5, -34 }, // 0x4F 'O' - { 4480, 29, 34, 30, 4, -33 }, // 0x50 'P' - { 4604, 33, 38, 36, 5, -34 }, // 0x51 'Q' - { 4761, 30, 34, 33, 4, -33 }, // 0x52 'R' - { 4889, 29, 36, 31, 4, -34 }, // 0x53 'S' - { 5020, 28, 34, 29, 7, -33 }, // 0x54 'T' - { 5139, 31, 35, 34, 6, -33 }, // 0x55 'U' - { 5275, 29, 34, 30, 8, -33 }, // 0x56 'V' - { 5399, 43, 34, 44, 8, -33 }, // 0x57 'W' - { 5582, 36, 34, 31, 1, -33 }, // 0x58 'X' - { 5735, 30, 34, 32, 8, -33 }, // 0x59 'Y' - { 5863, 34, 34, 29, 1, -33 }, // 0x5A 'Z' - { 6008, 18, 44, 13, 1, -33 }, // 0x5B '[' - { 6107, 6, 35, 13, 7, -33 }, // 0x5C '\' - { 6134, 18, 44, 13, -1, -33 }, // 0x5D ']' - { 6233, 17, 18, 22, 6, -32 }, // 0x5E '^' - { 6272, 29, 2, 26, -3, 7 }, // 0x5F '_' - { 6280, 8, 7, 16, 8, -34 }, // 0x60 '`' - { 6287, 23, 27, 26, 3, -25 }, // 0x61 'a' - { 6365, 25, 35, 26, 3, -33 }, // 0x62 'b' - { 6475, 22, 27, 24, 4, -25 }, // 0x63 'c' - { 6550, 27, 35, 26, 4, -33 }, // 0x64 'd' - { 6669, 23, 27, 26, 4, -25 }, // 0x65 'e' - { 6747, 15, 34, 12, 3, -33 }, // 0x66 'f' - { 6811, 27, 36, 26, 2, -25 }, // 0x67 'g' - { 6933, 23, 34, 25, 3, -33 }, // 0x68 'h' - { 7031, 11, 34, 10, 3, -33 }, // 0x69 'i' - { 7078, 18, 44, 11, -2, -33 }, // 0x6A 'j' - { 7177, 25, 34, 24, 3, -33 }, // 0x6B 'k' - { 7284, 11, 34, 10, 3, -33 }, // 0x6C 'l' - { 7331, 36, 26, 38, 3, -25 }, // 0x6D 'm' - { 7448, 23, 26, 25, 3, -25 }, // 0x6E 'n' - { 7523, 23, 27, 26, 4, -25 }, // 0x6F 'o' - { 7601, 27, 36, 26, 1, -25 }, // 0x70 'p' - { 7723, 26, 36, 26, 3, -25 }, // 0x71 'q' - { 7840, 17, 26, 15, 3, -25 }, // 0x72 'r' - { 7896, 21, 27, 24, 3, -25 }, // 0x73 's' - { 7967, 13, 32, 12, 4, -30 }, // 0x74 't' - { 8019, 24, 26, 25, 4, -24 }, // 0x75 'u' - { 8097, 22, 25, 23, 6, -24 }, // 0x76 'v' - { 8166, 33, 25, 34, 6, -24 }, // 0x77 'w' - { 8270, 26, 25, 23, 1, -24 }, // 0x78 'x' - { 8352, 27, 35, 23, 0, -24 }, // 0x79 'y' - { 8471, 25, 25, 23, 1, -24 }, // 0x7A 'z' - { 8550, 16, 44, 16, 5, -33 }, // 0x7B '{' - { 8638, 12, 44, 12, 3, -33 }, // 0x7C '|' - { 8704, 16, 44, 16, -1, -33 }, // 0x7D '}' - { 8792, 21, 7, 27, 6, -19 } }; // 0x7E '~' - -const GFXfont FreeSansOblique24pt7b PROGMEM = { - (uint8_t *)FreeSansOblique24pt7bBitmaps, - (GFXglyph *)FreeSansOblique24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 9483 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h deleted file mode 100644 index 18a6cbe1e..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h +++ /dev/null @@ -1,220 +0,0 @@ -const uint8_t FreeSansOblique9pt7bBitmaps[] PROGMEM = { - 0x10, 0x84, 0x22, 0x10, 0x84, 0x42, 0x10, 0x08, 0x00, 0xDE, 0xE5, 0x20, - 0x06, 0x40, 0x88, 0x13, 0x06, 0x43, 0xFE, 0x32, 0x04, 0x40, 0x98, 0x32, - 0x1F, 0xF0, 0x98, 0x22, 0x04, 0xC0, 0x02, 0x01, 0xF8, 0x6B, 0x99, 0x33, - 0x40, 0x68, 0x0F, 0x00, 0xF8, 0x07, 0xC1, 0x1B, 0x23, 0x64, 0x4E, 0x98, - 0xFC, 0x04, 0x00, 0x80, 0x3C, 0x08, 0xCC, 0x23, 0x18, 0x86, 0x32, 0x0C, - 0x64, 0x19, 0x90, 0x1E, 0x40, 0x01, 0x1E, 0x02, 0x66, 0x09, 0x8C, 0x23, - 0x18, 0x86, 0x62, 0x07, 0x80, 0x0F, 0x06, 0x63, 0x18, 0xC6, 0x3F, 0x07, - 0x03, 0xC1, 0xB3, 0xC7, 0xB0, 0xCC, 0x33, 0x3E, 0x79, 0x80, 0xFA, 0x04, - 0x10, 0x60, 0x83, 0x04, 0x18, 0x30, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x10, - 0x30, 0x20, 0x08, 0x18, 0x10, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x18, 0x30, - 0x41, 0x82, 0x0C, 0x10, 0x40, 0x19, 0x73, 0x16, 0x48, 0x04, 0x04, 0x02, - 0x1F, 0xF0, 0x80, 0x80, 0x40, 0x20, 0x6D, 0x28, 0xF0, 0xC0, 0x01, 0x02, - 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x0F, - 0x19, 0xC8, 0x6C, 0x36, 0x1A, 0x0F, 0x05, 0x86, 0xC3, 0x61, 0xB1, 0x9C, - 0x87, 0x80, 0x08, 0xCD, 0xE3, 0x18, 0xC4, 0x23, 0x18, 0xC4, 0x00, 0x07, - 0x83, 0x1C, 0x41, 0x98, 0x30, 0x06, 0x01, 0x80, 0x60, 0x38, 0x1C, 0x06, - 0x01, 0x80, 0x20, 0x0F, 0xF8, 0x0F, 0x86, 0x73, 0x0C, 0x83, 0x00, 0xC0, - 0x60, 0xE0, 0x06, 0x01, 0xB0, 0x6C, 0x13, 0x8C, 0x7C, 0x00, 0x00, 0x80, - 0xC0, 0xE0, 0xA0, 0x90, 0x98, 0x8C, 0x86, 0xFF, 0x81, 0x01, 0x80, 0xC0, - 0x60, 0x0F, 0xC3, 0x00, 0x40, 0x08, 0x03, 0x00, 0x7F, 0x1C, 0x70, 0x06, - 0x00, 0xC0, 0x1B, 0x06, 0x71, 0x87, 0xE0, 0x0F, 0x86, 0x73, 0x0D, 0x80, - 0x60, 0x1F, 0xCF, 0x3B, 0x86, 0xC1, 0xB0, 0x6C, 0x33, 0x98, 0x3C, 0x00, - 0x7F, 0xC0, 0x20, 0x10, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x60, 0x10, 0x0C, - 0x02, 0x01, 0x80, 0x40, 0x00, 0x0F, 0x86, 0x73, 0x0C, 0xC3, 0x30, 0xCC, - 0x61, 0xE1, 0x86, 0x41, 0xB0, 0x6C, 0x13, 0x8C, 0x3E, 0x00, 0x0F, 0x06, - 0x73, 0x0D, 0x83, 0x60, 0xD8, 0x77, 0x3C, 0xFE, 0x01, 0x80, 0x6C, 0x33, - 0x98, 0x7C, 0x00, 0x30, 0x00, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 0x00, - 0x0C, 0x62, 0x11, 0x00, 0x00, 0x01, 0xC3, 0x8F, 0x0C, 0x07, 0x00, 0xE0, - 0x1E, 0x01, 0x00, 0x7F, 0xC0, 0x00, 0x03, 0xFE, 0x40, 0x3C, 0x03, 0x80, - 0x70, 0x18, 0x78, 0xE1, 0xC0, 0x00, 0x00, 0x1F, 0x30, 0xD0, 0x78, 0x30, - 0x30, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFE, - 0x00, 0xC0, 0xE0, 0xC0, 0x18, 0x61, 0xD3, 0x31, 0x9C, 0xD8, 0xC2, 0x36, - 0x31, 0x8F, 0x18, 0x67, 0xC6, 0x11, 0xB1, 0x8C, 0xCC, 0x67, 0x63, 0x0E, - 0xF0, 0x60, 0x00, 0x1C, 0x00, 0x01, 0x81, 0x00, 0x1F, 0xC0, 0x01, 0xC0, - 0x1C, 0x03, 0xC0, 0x24, 0x06, 0x60, 0x46, 0x0C, 0x61, 0x86, 0x1F, 0xE3, - 0x06, 0x20, 0x26, 0x03, 0x40, 0x30, 0x1F, 0xE1, 0x87, 0x30, 0x33, 0x03, - 0x30, 0x23, 0x06, 0x3F, 0xC6, 0x06, 0x60, 0x66, 0x06, 0x60, 0x66, 0x0C, - 0x7F, 0x80, 0x07, 0xC1, 0x86, 0x30, 0x32, 0x03, 0x60, 0x04, 0x00, 0xC0, - 0x0C, 0x00, 0xC0, 0x6C, 0x06, 0xC0, 0xC6, 0x18, 0x3E, 0x00, 0x1F, 0xE0, - 0xC1, 0x84, 0x06, 0x60, 0x33, 0x01, 0x98, 0x0C, 0x80, 0x64, 0x02, 0x60, - 0x33, 0x01, 0x98, 0x18, 0x81, 0x87, 0xF0, 0x00, 0x1F, 0xF1, 0x80, 0x10, - 0x03, 0x00, 0x30, 0x03, 0x00, 0x3F, 0xE2, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x04, 0x00, 0x7F, 0xC0, 0x1F, 0xF1, 0x80, 0x10, 0x03, 0x00, 0x30, 0x03, - 0x00, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x00, - 0x07, 0xE0, 0xE1, 0x8C, 0x06, 0xC0, 0x36, 0x00, 0x60, 0x03, 0x07, 0xF8, - 0x02, 0xC0, 0x36, 0x01, 0x98, 0x1C, 0xE1, 0xC1, 0xF2, 0x00, 0x18, 0x08, - 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, 0x18, 0xFF, 0xC4, 0x06, 0x60, - 0x23, 0x01, 0x18, 0x18, 0x80, 0xC4, 0x06, 0x00, 0x33, 0x32, 0x26, 0x66, - 0x44, 0xCC, 0xC0, 0x00, 0xC0, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x30, - 0x0C, 0x03, 0x30, 0xCC, 0x63, 0x18, 0x7C, 0x00, 0x18, 0x18, 0x60, 0xC1, - 0x0E, 0x0C, 0x60, 0x33, 0x00, 0xD8, 0x03, 0xF0, 0x0C, 0xC0, 0x61, 0x81, - 0x86, 0x06, 0x0C, 0x10, 0x30, 0x40, 0x60, 0x18, 0x0C, 0x04, 0x06, 0x03, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x08, 0x07, 0xF8, 0x18, 0x06, - 0x18, 0x0E, 0x18, 0x0E, 0x34, 0x1E, 0x34, 0x36, 0x34, 0x34, 0x24, 0x64, - 0x24, 0x6C, 0x64, 0xCC, 0x64, 0x8C, 0x65, 0x88, 0x43, 0x08, 0x43, 0x18, - 0x18, 0x08, 0xE0, 0x47, 0x06, 0x6C, 0x33, 0x61, 0x99, 0x08, 0x8C, 0xC4, - 0x66, 0x61, 0xB3, 0x0D, 0x18, 0x38, 0x81, 0xC4, 0x06, 0x00, 0x07, 0xC0, - 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, - 0x36, 0x01, 0xB8, 0x18, 0xE1, 0x81, 0xF0, 0x00, 0x1F, 0xE1, 0x83, 0x10, - 0x33, 0x03, 0x30, 0x33, 0x06, 0x3F, 0xC2, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x04, 0x00, 0x40, 0x00, 0x07, 0xC0, 0xC3, 0x8C, 0x0E, 0xC0, 0x36, 0x01, - 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x36, 0x09, 0xB8, 0x78, 0xE3, 0x81, - 0xF6, 0x00, 0x10, 0x1F, 0xF0, 0xC0, 0xC4, 0x06, 0x60, 0x33, 0x01, 0x18, - 0x18, 0xFF, 0x04, 0x0C, 0x60, 0x63, 0x03, 0x18, 0x18, 0x80, 0xC4, 0x06, - 0x00, 0x07, 0xC1, 0x87, 0x30, 0x33, 0x03, 0x30, 0x03, 0xC0, 0x0F, 0xC0, - 0x1E, 0x00, 0x6C, 0x06, 0xC0, 0x46, 0x0C, 0x3F, 0x00, 0xFF, 0xC3, 0x00, - 0xC0, 0x20, 0x18, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, 0x03, 0x00, 0xC0, - 0x20, 0x00, 0x30, 0x13, 0x03, 0x20, 0x36, 0x03, 0x60, 0x26, 0x06, 0x60, - 0x64, 0x06, 0xC0, 0x6C, 0x04, 0xC0, 0xCE, 0x18, 0x3E, 0x00, 0xC0, 0x78, - 0x0B, 0x03, 0x20, 0xC4, 0x18, 0xC6, 0x18, 0x83, 0x30, 0x64, 0x0D, 0x80, - 0xA0, 0x1C, 0x03, 0x00, 0xC1, 0x83, 0xC1, 0x83, 0xC3, 0x86, 0xC2, 0x86, - 0xC6, 0x84, 0xC4, 0x8C, 0xCC, 0xC8, 0xC8, 0xD8, 0xD8, 0xD0, 0xD0, 0xF0, - 0x70, 0xE0, 0x60, 0xE0, 0x60, 0xE0, 0x0C, 0x0C, 0x30, 0x60, 0x63, 0x01, - 0x98, 0x02, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x0C, 0x80, 0x33, 0x01, - 0x8C, 0x0C, 0x18, 0x60, 0x60, 0xC0, 0x66, 0x0C, 0x60, 0xC2, 0x18, 0x33, - 0x03, 0x60, 0x1C, 0x01, 0x80, 0x18, 0x01, 0x80, 0x18, 0x01, 0x00, 0x30, - 0x00, 0x1F, 0xF0, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, - 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0C, 0x00, 0xFF, 0xC0, 0x0E, 0x10, 0x20, - 0x41, 0x02, 0x04, 0x08, 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0x20, 0xE0, - 0xAA, 0xA9, 0x55, 0x40, 0x0E, 0x08, 0x10, 0x20, 0x41, 0x02, 0x04, 0x08, - 0x20, 0x40, 0x81, 0x04, 0x08, 0x10, 0xE0, 0x0C, 0x18, 0x51, 0xA2, 0x4C, - 0x50, 0x80, 0xFF, 0xE0, 0xC8, 0x80, 0x0F, 0x86, 0x33, 0x0C, 0x03, 0x03, - 0xDF, 0xEE, 0x0B, 0x02, 0xC1, 0x9F, 0xE0, 0x10, 0x04, 0x01, 0x00, 0xDC, - 0x39, 0x88, 0x32, 0x0D, 0x83, 0x40, 0xD0, 0x64, 0x1B, 0x8C, 0xBC, 0x00, - 0x1F, 0x18, 0xD8, 0x6C, 0x0C, 0x06, 0x03, 0x01, 0x86, 0x66, 0x3E, 0x00, - 0x00, 0x20, 0x08, 0x01, 0x0F, 0x23, 0x14, 0xC1, 0x18, 0x26, 0x04, 0xC0, - 0x98, 0x23, 0x04, 0x71, 0x87, 0xD0, 0x0F, 0x0C, 0x76, 0x0D, 0x83, 0xFF, - 0xF0, 0x0C, 0x03, 0x06, 0x63, 0x0F, 0x80, 0x1C, 0xC2, 0x1E, 0x20, 0x84, - 0x10, 0x41, 0x04, 0x20, 0x80, 0x0F, 0x46, 0x33, 0x0C, 0xC1, 0x60, 0xD8, - 0x26, 0x09, 0x86, 0x71, 0x8F, 0xE0, 0x10, 0x04, 0xC2, 0x1F, 0x00, 0x10, - 0x04, 0x01, 0x00, 0x9F, 0x39, 0x88, 0x22, 0x09, 0x02, 0x40, 0x90, 0x44, - 0x12, 0x04, 0x81, 0x00, 0x10, 0x02, 0x22, 0x64, 0x44, 0x48, 0x80, 0x04, - 0x00, 0x01, 0x08, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0x42, 0x08, 0xE0, - 0x10, 0x08, 0x04, 0x04, 0x32, 0x31, 0x20, 0xA0, 0xB8, 0x6C, 0x22, 0x11, - 0x90, 0xC8, 0x30, 0x11, 0x22, 0x22, 0x64, 0x44, 0x48, 0x80, 0x2F, 0x3C, - 0x63, 0x8C, 0x86, 0x19, 0x08, 0x44, 0x10, 0x88, 0x21, 0x10, 0x82, 0x21, - 0x04, 0x82, 0x11, 0x04, 0x20, 0x00, 0x0B, 0xF3, 0x18, 0x82, 0x20, 0x90, - 0x24, 0x09, 0x04, 0x41, 0x20, 0x48, 0x10, 0x0F, 0x0C, 0x76, 0x0D, 0x83, - 0xC0, 0xF0, 0x3C, 0x1B, 0x06, 0xE3, 0x0F, 0x00, 0x17, 0xC3, 0x1C, 0x41, - 0x98, 0x32, 0x06, 0x40, 0xC8, 0x33, 0x06, 0x71, 0x8B, 0xC1, 0x00, 0x20, - 0x08, 0x01, 0x00, 0x00, 0x1E, 0xCC, 0x66, 0x09, 0x82, 0xC0, 0xB0, 0x4C, - 0x13, 0x04, 0x63, 0x0F, 0xC0, 0x20, 0x08, 0x02, 0x00, 0x80, 0x2C, 0x60, - 0x81, 0x04, 0x08, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x33, 0x63, 0x60, 0x70, - 0x1E, 0x03, 0xC3, 0xC6, 0x7C, 0x22, 0xF2, 0x44, 0x44, 0xCC, 0xCE, 0x21, - 0x20, 0x90, 0x48, 0x24, 0x12, 0x13, 0x09, 0x84, 0xE6, 0x3E, 0x00, 0xC1, - 0xE1, 0xB0, 0xC8, 0xC4, 0x43, 0x61, 0xA0, 0xF0, 0x70, 0x18, 0x00, 0xC7, - 0x1E, 0x38, 0xB3, 0xCD, 0x96, 0x4C, 0xB6, 0x6D, 0xB1, 0x4D, 0x0E, 0x78, - 0x63, 0x83, 0x1C, 0x00, 0x10, 0xC3, 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, - 0x07, 0x81, 0x90, 0x23, 0x08, 0x20, 0x30, 0x46, 0x18, 0x42, 0x08, 0xC1, - 0x10, 0x24, 0x07, 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x08, 0x03, 0x01, - 0xC0, 0x00, 0x3F, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, - 0x7F, 0x00, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC3, 0x18, 0x88, 0x42, 0x18, - 0xE0, 0x11, 0x22, 0x22, 0x24, 0x44, 0x4C, 0x88, 0x88, 0x00, 0x38, 0xC2, - 0x10, 0x88, 0xC6, 0x18, 0x88, 0x42, 0x10, 0x88, 0xC0, 0x70, 0x4E, 0x41, - 0xC0 }; - -const GFXglyph FreeSansOblique9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 5, 13, 5, 2, -12 }, // 0x21 '!' - { 9, 5, 4, 6, 3, -12 }, // 0x22 '"' - { 12, 11, 13, 10, 1, -12 }, // 0x23 '#' - { 30, 11, 16, 10, 1, -13 }, // 0x24 '$' - { 52, 15, 13, 16, 2, -12 }, // 0x25 '%' - { 77, 10, 13, 12, 2, -12 }, // 0x26 '&' - { 94, 2, 4, 3, 3, -12 }, // 0x27 ''' - { 95, 7, 17, 6, 2, -12 }, // 0x28 '(' - { 110, 7, 17, 6, -1, -12 }, // 0x29 ')' - { 125, 6, 5, 7, 3, -12 }, // 0x2A '*' - { 129, 9, 8, 11, 2, -7 }, // 0x2B '+' - { 138, 3, 5, 5, 1, -1 }, // 0x2C ',' - { 140, 4, 1, 6, 2, -4 }, // 0x2D '-' - { 141, 2, 1, 5, 2, 0 }, // 0x2E '.' - { 142, 8, 13, 5, 0, -12 }, // 0x2F '/' - { 155, 9, 13, 10, 2, -12 }, // 0x30 '0' - { 170, 5, 13, 10, 4, -12 }, // 0x31 '1' - { 179, 11, 13, 10, 1, -12 }, // 0x32 '2' - { 197, 10, 13, 10, 1, -12 }, // 0x33 '3' - { 214, 9, 13, 10, 1, -12 }, // 0x34 '4' - { 229, 11, 13, 10, 1, -12 }, // 0x35 '5' - { 247, 10, 13, 10, 2, -12 }, // 0x36 '6' - { 264, 10, 13, 10, 2, -12 }, // 0x37 '7' - { 281, 10, 13, 10, 1, -12 }, // 0x38 '8' - { 298, 10, 13, 10, 1, -12 }, // 0x39 '9' - { 315, 4, 9, 5, 2, -8 }, // 0x3A ':' - { 320, 5, 12, 5, 1, -8 }, // 0x3B ';' - { 328, 9, 9, 11, 2, -8 }, // 0x3C '<' - { 339, 10, 4, 11, 1, -5 }, // 0x3D '=' - { 344, 9, 9, 11, 1, -7 }, // 0x3E '>' - { 355, 9, 13, 10, 3, -12 }, // 0x3F '?' - { 370, 18, 16, 18, 1, -12 }, // 0x40 '@' - { 406, 12, 13, 12, 0, -12 }, // 0x41 'A' - { 426, 12, 13, 12, 1, -12 }, // 0x42 'B' - { 446, 12, 13, 13, 2, -12 }, // 0x43 'C' - { 466, 13, 13, 13, 1, -12 }, // 0x44 'D' - { 488, 12, 13, 12, 1, -12 }, // 0x45 'E' - { 508, 12, 13, 11, 1, -12 }, // 0x46 'F' - { 528, 13, 13, 14, 2, -12 }, // 0x47 'G' - { 550, 13, 13, 13, 1, -12 }, // 0x48 'H' - { 572, 4, 13, 5, 2, -12 }, // 0x49 'I' - { 579, 10, 13, 9, 1, -12 }, // 0x4A 'J' - { 596, 14, 13, 12, 1, -12 }, // 0x4B 'K' - { 619, 9, 13, 10, 1, -12 }, // 0x4C 'L' - { 634, 16, 13, 15, 1, -12 }, // 0x4D 'M' - { 660, 13, 13, 13, 1, -12 }, // 0x4E 'N' - { 682, 13, 13, 14, 2, -12 }, // 0x4F 'O' - { 704, 12, 13, 12, 1, -12 }, // 0x50 'P' - { 724, 13, 14, 14, 2, -12 }, // 0x51 'Q' - { 747, 13, 13, 13, 1, -12 }, // 0x52 'R' - { 769, 12, 13, 12, 1, -12 }, // 0x53 'S' - { 789, 10, 13, 11, 3, -12 }, // 0x54 'T' - { 806, 12, 13, 13, 2, -12 }, // 0x55 'U' - { 826, 11, 13, 12, 3, -12 }, // 0x56 'V' - { 844, 16, 13, 17, 3, -12 }, // 0x57 'W' - { 870, 14, 13, 12, 0, -12 }, // 0x58 'X' - { 893, 12, 13, 12, 3, -12 }, // 0x59 'Y' - { 913, 12, 13, 11, 1, -12 }, // 0x5A 'Z' - { 933, 7, 17, 5, 0, -12 }, // 0x5B '[' - { 948, 2, 13, 5, 3, -12 }, // 0x5C '\' - { 952, 7, 17, 5, 0, -12 }, // 0x5D ']' - { 967, 7, 7, 8, 2, -12 }, // 0x5E '^' - { 974, 11, 1, 10, -1, 3 }, // 0x5F '_' - { 976, 3, 3, 6, 3, -12 }, // 0x60 '`' - { 978, 10, 10, 10, 1, -9 }, // 0x61 'a' - { 991, 10, 13, 10, 1, -12 }, // 0x62 'b' - { 1008, 9, 10, 9, 1, -9 }, // 0x63 'c' - { 1020, 11, 13, 10, 1, -12 }, // 0x64 'd' - { 1038, 10, 10, 10, 1, -9 }, // 0x65 'e' - { 1051, 6, 13, 5, 1, -12 }, // 0x66 'f' - { 1061, 10, 14, 10, 0, -9 }, // 0x67 'g' - { 1079, 10, 13, 10, 1, -12 }, // 0x68 'h' - { 1096, 4, 13, 4, 1, -12 }, // 0x69 'i' - { 1103, 6, 17, 4, -1, -12 }, // 0x6A 'j' - { 1116, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 1131, 4, 13, 4, 1, -12 }, // 0x6C 'l' - { 1138, 15, 10, 15, 1, -9 }, // 0x6D 'm' - { 1157, 10, 11, 10, 1, -10 }, // 0x6E 'n' - { 1171, 10, 10, 10, 1, -9 }, // 0x6F 'o' - { 1184, 11, 14, 10, 0, -9 }, // 0x70 'p' - { 1204, 10, 14, 10, 1, -9 }, // 0x71 'q' - { 1222, 7, 10, 6, 1, -9 }, // 0x72 'r' - { 1231, 8, 10, 9, 1, -9 }, // 0x73 's' - { 1241, 4, 12, 5, 2, -11 }, // 0x74 't' - { 1247, 9, 10, 10, 2, -9 }, // 0x75 'u' - { 1259, 9, 10, 9, 2, -9 }, // 0x76 'v' - { 1271, 13, 10, 13, 2, -9 }, // 0x77 'w' - { 1288, 11, 10, 9, 0, -9 }, // 0x78 'x' - { 1302, 11, 14, 9, 0, -9 }, // 0x79 'y' - { 1322, 9, 10, 9, 1, -9 }, // 0x7A 'z' - { 1334, 5, 17, 6, 2, -12 }, // 0x7B '{' - { 1345, 4, 17, 5, 1, -12 }, // 0x7C '|' - { 1354, 5, 17, 6, 0, -12 }, // 0x7D '}' - { 1365, 9, 3, 11, 2, -7 } }; // 0x7E '~' - -const GFXfont FreeSansOblique9pt7b PROGMEM = { - (uint8_t *)FreeSansOblique9pt7bBitmaps, - (GFXglyph *)FreeSansOblique9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 2041 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h deleted file mode 100644 index 48ad3da69..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h +++ /dev/null @@ -1,259 +0,0 @@ -const uint8_t FreeSerif12pt7bBitmaps[] PROGMEM = { - 0xFF, 0xFE, 0xA8, 0x3F, 0xCF, 0x3C, 0xF3, 0x8A, 0x20, 0x0C, 0x40, 0xC4, - 0x08, 0x40, 0x8C, 0x08, 0xC7, 0xFF, 0x18, 0x81, 0x88, 0x10, 0x81, 0x08, - 0xFF, 0xE1, 0x18, 0x31, 0x03, 0x10, 0x31, 0x02, 0x10, 0x04, 0x07, 0xC6, - 0x5B, 0x12, 0xC4, 0xB1, 0x0F, 0x41, 0xF0, 0x1E, 0x01, 0xE0, 0x58, 0x13, - 0x84, 0xE1, 0x3C, 0x4F, 0x96, 0x3F, 0x01, 0x00, 0x00, 0x04, 0x03, 0x83, - 0x03, 0x9F, 0x81, 0xC2, 0x20, 0x60, 0x90, 0x38, 0x24, 0x0C, 0x12, 0x03, - 0x0D, 0x00, 0xC6, 0x47, 0x9E, 0x23, 0x10, 0x09, 0x84, 0x04, 0xE1, 0x03, - 0x30, 0x40, 0x8C, 0x20, 0x43, 0x08, 0x10, 0xC4, 0x08, 0x1E, 0x00, 0x03, - 0xC0, 0x02, 0x30, 0x03, 0x08, 0x01, 0x84, 0x00, 0xC4, 0x00, 0x7C, 0xF8, - 0x1C, 0x38, 0x1E, 0x08, 0x33, 0x0C, 0x31, 0xC4, 0x10, 0x74, 0x18, 0x3A, - 0x0C, 0x0E, 0x07, 0x03, 0x83, 0xC3, 0xE2, 0x7E, 0x3E, 0xFF, 0xA0, 0x04, - 0x21, 0x08, 0x61, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC1, 0x04, 0x18, 0x20, - 0x40, 0x81, 0x81, 0x02, 0x04, 0x18, 0x20, 0x83, 0x0C, 0x30, 0xC3, 0x0C, - 0x30, 0x86, 0x10, 0x84, 0x20, 0x30, 0xB3, 0xD7, 0x54, 0x38, 0x7C, 0xD3, - 0x30, 0x30, 0x10, 0x04, 0x00, 0x80, 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, - 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, 0x00, 0xDF, 0x95, 0x00, 0xFC, 0xFC, - 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, 0x10, 0x60, 0xC1, 0x06, 0x0C, - 0x10, 0x60, 0xC0, 0x1E, 0x0C, 0xC6, 0x19, 0x86, 0xC0, 0xB0, 0x3C, 0x0F, - 0x03, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0xC0, 0xD8, 0x66, 0x18, 0xCC, 0x1E, - 0x00, 0x11, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, - 0x0C, 0xFC, 0x1E, 0x18, 0xC4, 0x1A, 0x06, 0x01, 0x80, 0x60, 0x10, 0x0C, - 0x02, 0x01, 0x00, 0xC0, 0x60, 0x30, 0x18, 0x1F, 0xF8, 0x1E, 0x18, 0xE8, - 0x18, 0x06, 0x01, 0x00, 0x80, 0xF0, 0x7E, 0x03, 0xC0, 0x70, 0x0C, 0x03, - 0x00, 0xC0, 0x6E, 0x11, 0xF8, 0x01, 0x00, 0xC0, 0x70, 0x2C, 0x0B, 0x04, - 0xC2, 0x30, 0x8C, 0x43, 0x20, 0xC8, 0x33, 0xFF, 0x03, 0x00, 0xC0, 0x30, - 0x0C, 0x00, 0x03, 0xF1, 0x00, 0x40, 0x18, 0x0F, 0x80, 0xF8, 0x0E, 0x01, - 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x1B, 0x8C, 0x7C, 0x00, 0x01, - 0xC3, 0xC1, 0xC0, 0xC0, 0x70, 0x18, 0x0E, 0xF3, 0xCE, 0xC1, 0xF0, 0x3C, - 0x0F, 0x03, 0xC0, 0xD8, 0x36, 0x08, 0xC6, 0x1E, 0x00, 0x3F, 0xD0, 0x38, - 0x08, 0x06, 0x01, 0x80, 0x40, 0x10, 0x0C, 0x02, 0x00, 0x80, 0x20, 0x10, - 0x04, 0x01, 0x00, 0x80, 0x20, 0x1F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0xF8, - 0x67, 0x30, 0xF0, 0x1E, 0x09, 0xE6, 0x3B, 0x07, 0xC0, 0xF0, 0x3C, 0x0D, - 0x86, 0x1F, 0x00, 0x1E, 0x08, 0xC6, 0x1B, 0x02, 0xC0, 0xF0, 0x3C, 0x0F, - 0x03, 0xE0, 0xDC, 0x73, 0xEC, 0x06, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x38, - 0x18, 0x00, 0xFC, 0x00, 0x3F, 0xCC, 0xC0, 0x00, 0x00, 0x06, 0x77, 0x12, - 0x40, 0x00, 0x00, 0x07, 0x01, 0xE0, 0x78, 0x1E, 0x07, 0x00, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x07, 0x00, 0x10, 0xFF, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x0E, 0x00, 0x3C, 0x00, 0xF0, - 0x03, 0xC0, 0x0F, 0x00, 0x30, 0x0E, 0x07, 0x81, 0xE0, 0x78, 0x0E, 0x00, - 0x00, 0x00, 0x7C, 0x86, 0x83, 0xC3, 0x03, 0x03, 0x06, 0x0C, 0x08, 0x08, - 0x10, 0x10, 0x00, 0x00, 0x30, 0x30, 0x30, 0x03, 0xF0, 0x06, 0x06, 0x06, - 0x00, 0x86, 0x00, 0x26, 0x0E, 0xD3, 0x0C, 0xC7, 0x0C, 0x63, 0x84, 0x31, - 0xC6, 0x18, 0xE3, 0x08, 0x71, 0x8C, 0x4C, 0xC6, 0x46, 0x3D, 0xC1, 0x80, - 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x80, 0x00, 0x60, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x2E, 0x00, 0x13, 0x00, 0x19, 0xC0, 0x08, 0x60, 0x04, 0x38, - 0x04, 0x0C, 0x03, 0xFF, 0x03, 0x03, 0x81, 0x00, 0xE1, 0x80, 0x70, 0xC0, - 0x3D, 0xF0, 0x3F, 0xFF, 0x83, 0x0C, 0x30, 0x63, 0x06, 0x30, 0x63, 0x06, - 0x30, 0xC3, 0xF0, 0x30, 0xE3, 0x06, 0x30, 0x33, 0x03, 0x30, 0x33, 0x07, - 0x30, 0xEF, 0xFC, 0x07, 0xE2, 0x38, 0x3C, 0xC0, 0x3B, 0x00, 0x36, 0x00, - 0x38, 0x00, 0x30, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x03, - 0x00, 0x06, 0x00, 0x06, 0x00, 0x47, 0x03, 0x03, 0xF8, 0xFF, 0xC0, 0x30, - 0x78, 0x30, 0x1C, 0x30, 0x0E, 0x30, 0x06, 0x30, 0x03, 0x30, 0x03, 0x30, - 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x06, 0x30, 0x06, 0x30, - 0x0C, 0x30, 0x78, 0xFF, 0xC0, 0xFF, 0xFC, 0xC0, 0x33, 0x00, 0x4C, 0x00, - 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, 0x30, 0xC0, 0x43, 0x00, - 0x0C, 0x00, 0x30, 0x08, 0xC0, 0x23, 0x03, 0xBF, 0xFE, 0xFF, 0xFC, 0xC0, - 0x33, 0x00, 0x4C, 0x00, 0x30, 0x00, 0xC0, 0x43, 0x03, 0x0F, 0xFC, 0x30, - 0x30, 0xC0, 0x43, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, 0x3F, - 0x00, 0x07, 0xE4, 0x1C, 0x3C, 0x30, 0x0C, 0x60, 0x0C, 0x60, 0x04, 0xC0, - 0x00, 0xC0, 0x00, 0xC0, 0x3F, 0xC0, 0x0C, 0xC0, 0x0C, 0xC0, 0x0C, 0x60, - 0x0C, 0x60, 0x0C, 0x30, 0x0C, 0x1C, 0x1C, 0x07, 0xE0, 0xFC, 0x3F, 0x30, - 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x3F, - 0xFC, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x30, - 0x0C, 0x30, 0x0C, 0xFC, 0x3F, 0xFC, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, - 0xC3, 0x0C, 0x30, 0xC3, 0x3F, 0x3F, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, - 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xC8, 0xF0, 0xFC, 0xFE, 0x30, - 0x38, 0x30, 0x20, 0x30, 0x40, 0x30, 0x80, 0x33, 0x00, 0x36, 0x00, 0x3E, - 0x00, 0x37, 0x00, 0x33, 0x80, 0x31, 0xC0, 0x30, 0xE0, 0x30, 0x70, 0x30, - 0x38, 0x30, 0x3C, 0xFC, 0x7F, 0xFC, 0x00, 0x60, 0x00, 0xC0, 0x01, 0x80, - 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x01, 0x80, 0x03, 0x00, 0x26, 0x00, 0x8C, 0x07, 0x7F, 0xFE, 0xF8, - 0x01, 0xE7, 0x00, 0x70, 0xE0, 0x0E, 0x1E, 0x03, 0xC2, 0xC0, 0x58, 0x5C, - 0x1B, 0x09, 0x82, 0x61, 0x38, 0x4C, 0x27, 0x11, 0x84, 0x72, 0x30, 0x8E, - 0xC6, 0x10, 0xD0, 0xC2, 0x1E, 0x18, 0x41, 0x83, 0x1C, 0x30, 0x67, 0xC4, - 0x3F, 0xF0, 0x1F, 0x78, 0x0E, 0x3C, 0x04, 0x3E, 0x04, 0x2E, 0x04, 0x27, - 0x04, 0x23, 0x84, 0x23, 0xC4, 0x21, 0xE4, 0x20, 0xE4, 0x20, 0x74, 0x20, - 0x3C, 0x20, 0x1C, 0x20, 0x0C, 0x70, 0x0C, 0xF8, 0x04, 0x07, 0xC0, 0x30, - 0x60, 0xC0, 0x63, 0x00, 0x66, 0x00, 0xD8, 0x00, 0xF0, 0x01, 0xE0, 0x03, - 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1B, 0x00, 0x66, 0x00, 0xC6, 0x03, 0x06, - 0x0C, 0x03, 0xE0, 0xFF, 0x83, 0x0E, 0x30, 0x73, 0x03, 0x30, 0x33, 0x03, - 0x30, 0x63, 0x0E, 0x3F, 0x83, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, - 0x30, 0x0F, 0xC0, 0x0F, 0xE0, 0x18, 0x30, 0x30, 0x18, 0x60, 0x0C, 0x60, - 0x0C, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, 0x06, 0xC0, - 0x06, 0x60, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x18, 0x30, 0x07, 0xC0, 0x03, - 0xC0, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0xFF, 0x80, 0x61, 0xC0, 0xC1, - 0xC1, 0x81, 0x83, 0x03, 0x06, 0x06, 0x0C, 0x1C, 0x18, 0x70, 0x3F, 0x80, - 0x67, 0x00, 0xC7, 0x01, 0x8F, 0x03, 0x0F, 0x06, 0x0E, 0x0C, 0x0E, 0x7E, - 0x0F, 0x1F, 0x46, 0x19, 0x81, 0x30, 0x27, 0x02, 0xF0, 0x0F, 0x00, 0xF8, - 0x07, 0xC0, 0x38, 0x03, 0xC0, 0x34, 0x06, 0x80, 0xDC, 0x32, 0x7C, 0xFF, - 0xFF, 0x86, 0x0E, 0x0C, 0x1C, 0x18, 0x10, 0x30, 0x00, 0x60, 0x00, 0xC0, - 0x01, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0C, 0x00, 0x18, 0x00, 0x30, 0x00, - 0x60, 0x00, 0xC0, 0x07, 0xE0, 0xFC, 0x1F, 0x30, 0x0E, 0x30, 0x04, 0x30, - 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, - 0x04, 0x30, 0x04, 0x30, 0x04, 0x30, 0x04, 0x18, 0x08, 0x1C, 0x18, 0x07, - 0xE0, 0xFE, 0x0F, 0x9C, 0x03, 0x0E, 0x01, 0x83, 0x00, 0x81, 0xC0, 0x40, - 0x60, 0x40, 0x38, 0x20, 0x0C, 0x30, 0x07, 0x10, 0x01, 0x98, 0x00, 0xE8, - 0x00, 0x34, 0x00, 0x1E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x01, 0x00, 0xFC, - 0xFC, 0x3D, 0xE1, 0xC0, 0x63, 0x83, 0x01, 0x86, 0x0E, 0x04, 0x1C, 0x18, - 0x10, 0x70, 0x70, 0x80, 0xC3, 0xC2, 0x03, 0x8B, 0x08, 0x06, 0x6E, 0x40, - 0x1D, 0x19, 0x00, 0x74, 0x78, 0x00, 0xE1, 0xE0, 0x03, 0x83, 0x80, 0x0E, - 0x0C, 0x00, 0x10, 0x10, 0x00, 0x40, 0x40, 0x7F, 0x1F, 0x9E, 0x03, 0x07, - 0x03, 0x01, 0xC3, 0x00, 0x71, 0x00, 0x19, 0x00, 0x0F, 0x00, 0x03, 0x80, - 0x01, 0xE0, 0x01, 0xB0, 0x01, 0x9C, 0x00, 0x87, 0x00, 0x81, 0xC0, 0x80, - 0xE0, 0xC0, 0x79, 0xF8, 0x7F, 0xFE, 0x1F, 0x78, 0x0C, 0x38, 0x08, 0x1C, - 0x18, 0x0E, 0x10, 0x06, 0x20, 0x07, 0x60, 0x03, 0xC0, 0x01, 0x80, 0x01, - 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x07, - 0xE0, 0x7F, 0xFB, 0x00, 0xC8, 0x07, 0x20, 0x38, 0x01, 0xC0, 0x07, 0x00, - 0x38, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x05, - 0xC0, 0x3E, 0x01, 0xBF, 0xFE, 0xFE, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xF0, 0xC1, 0x81, 0x03, 0x06, 0x04, 0x0C, - 0x18, 0x10, 0x30, 0x60, 0x40, 0xC1, 0x81, 0x03, 0x06, 0xF8, 0xC6, 0x31, - 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC7, 0xF0, 0x0C, 0x07, - 0x01, 0x60, 0xD8, 0x23, 0x18, 0xC4, 0x1B, 0x06, 0x80, 0xC0, 0xFF, 0xF0, - 0xC7, 0x0C, 0x30, 0x3E, 0x31, 0x8C, 0x30, 0x0C, 0x03, 0x07, 0xC6, 0x33, - 0x0C, 0xC3, 0x31, 0xC7, 0xB8, 0x20, 0x38, 0x06, 0x01, 0x80, 0x60, 0x18, - 0x06, 0xF1, 0xC6, 0x61, 0xD8, 0x36, 0x0D, 0x83, 0x60, 0xD8, 0x26, 0x19, - 0x84, 0x3E, 0x00, 0x1E, 0x23, 0x63, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xE1, - 0x72, 0x3C, 0x00, 0x80, 0xE0, 0x18, 0x06, 0x01, 0x80, 0x61, 0xD8, 0x8E, - 0x61, 0xB0, 0x6C, 0x1B, 0x06, 0xC1, 0xB0, 0x6E, 0x19, 0xCE, 0x3D, 0xC0, - 0x1E, 0x08, 0xE4, 0x1B, 0xFE, 0xC0, 0x30, 0x0C, 0x03, 0x81, 0x60, 0x9C, - 0x41, 0xE0, 0x0F, 0x08, 0xC4, 0x06, 0x03, 0x01, 0x81, 0xF0, 0x60, 0x30, - 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0x60, 0xFC, 0x00, 0x1F, 0x03, - 0x1F, 0x60, 0xC6, 0x0C, 0x60, 0xC3, 0x18, 0x1F, 0x02, 0x00, 0x40, 0x07, - 0xFC, 0x40, 0x24, 0x02, 0xC0, 0x2C, 0x04, 0xE0, 0x83, 0xF0, 0x30, 0x1E, - 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x0D, 0xE1, 0xCE, 0x30, 0xC6, 0x18, - 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x79, 0xE0, 0x31, 0x80, - 0x00, 0x09, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xDF, 0x0C, 0x30, 0x00, 0x00, - 0x31, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xF2, 0xF0, - 0x20, 0x1C, 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x18, 0xFB, 0x08, 0x62, - 0x0C, 0x81, 0xE0, 0x3E, 0x06, 0xE0, 0xCE, 0x18, 0xC3, 0x0E, 0xF3, 0xE0, - 0x13, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xC6, 0xF8, 0xF7, - 0x8F, 0x0E, 0x3C, 0xE3, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, - 0x63, 0x0C, 0x18, 0xC3, 0x06, 0x30, 0xC1, 0x8C, 0x30, 0x67, 0x9E, 0x3C, - 0xF7, 0x87, 0x18, 0xC3, 0x18, 0x63, 0x0C, 0x61, 0x8C, 0x31, 0x86, 0x30, - 0xC6, 0x19, 0xE7, 0x80, 0x1E, 0x18, 0xE4, 0x1B, 0x03, 0xC0, 0xF0, 0x3C, - 0x0F, 0x03, 0x60, 0x9C, 0x41, 0xE0, 0x77, 0x87, 0x18, 0xC3, 0x98, 0x33, - 0x06, 0x60, 0xCC, 0x19, 0x83, 0x30, 0xC7, 0x10, 0xDC, 0x18, 0x03, 0x00, - 0x60, 0x0C, 0x07, 0xE0, 0x1E, 0x8C, 0xE6, 0x1B, 0x06, 0xC1, 0xB0, 0x6C, - 0x1B, 0x06, 0xE1, 0x98, 0xE3, 0xD8, 0x06, 0x01, 0x80, 0x60, 0x18, 0x1F, - 0x37, 0x7B, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x7C, 0x7B, - 0x0E, 0x1C, 0x1E, 0x0F, 0x07, 0xC3, 0x87, 0x8A, 0xE0, 0x21, 0x8F, 0x98, - 0x61, 0x86, 0x18, 0x61, 0x86, 0x19, 0x38, 0xE3, 0x98, 0x66, 0x19, 0x86, - 0x61, 0x98, 0x66, 0x19, 0x86, 0x61, 0x9C, 0xE3, 0xDC, 0xF8, 0xEE, 0x08, - 0xC1, 0x18, 0x41, 0x88, 0x32, 0x03, 0x40, 0x68, 0x06, 0x00, 0xC0, 0x10, - 0x00, 0xF3, 0xE7, 0x61, 0x83, 0x70, 0xC2, 0x30, 0xC2, 0x30, 0xC4, 0x19, - 0x64, 0x19, 0x68, 0x0E, 0x38, 0x0E, 0x38, 0x0C, 0x30, 0x04, 0x10, 0xFB, - 0xC6, 0x30, 0x64, 0x0F, 0x00, 0xC0, 0x0C, 0x03, 0xC0, 0x98, 0x21, 0x8C, - 0x3B, 0xCF, 0x80, 0xF8, 0xEE, 0x08, 0xC1, 0x18, 0x41, 0x88, 0x31, 0x03, - 0x40, 0x68, 0x06, 0x00, 0xC0, 0x08, 0x02, 0x00, 0x40, 0x10, 0x1E, 0x03, - 0x80, 0x7F, 0x90, 0xE0, 0x30, 0x18, 0x0E, 0x03, 0x01, 0xC0, 0xE0, 0x30, - 0x5C, 0x3F, 0xF8, 0x19, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0xB0, 0x63, 0x18, - 0xC6, 0x31, 0x8C, 0x61, 0x80, 0xFF, 0xFF, 0x80, 0xC3, 0x18, 0xC6, 0x31, - 0x8C, 0x63, 0x06, 0xC6, 0x31, 0x8C, 0x63, 0x18, 0xCC, 0x00, 0x38, 0x06, - 0x62, 0x41, 0xC0 }; - -const GFXglyph FreeSerif12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 2, 16, 8, 3, -15 }, // 0x21 '!' - { 4, 6, 6, 10, 1, -15 }, // 0x22 '"' - { 9, 12, 16, 12, 0, -15 }, // 0x23 '#' - { 33, 10, 18, 12, 1, -16 }, // 0x24 '$' - { 56, 18, 17, 20, 1, -16 }, // 0x25 '%' - { 95, 17, 16, 19, 1, -15 }, // 0x26 '&' - { 129, 2, 6, 5, 1, -15 }, // 0x27 ''' - { 131, 6, 20, 8, 1, -15 }, // 0x28 '(' - { 146, 6, 20, 8, 1, -15 }, // 0x29 ')' - { 161, 8, 10, 12, 3, -14 }, // 0x2A '*' - { 171, 11, 11, 14, 1, -10 }, // 0x2B '+' - { 187, 3, 6, 6, 2, -2 }, // 0x2C ',' - { 190, 6, 1, 8, 1, -5 }, // 0x2D '-' - { 191, 2, 3, 6, 2, -2 }, // 0x2E '.' - { 192, 7, 17, 7, 0, -16 }, // 0x2F '/' - { 207, 10, 17, 12, 1, -16 }, // 0x30 '0' - { 229, 6, 17, 12, 3, -16 }, // 0x31 '1' - { 242, 10, 15, 12, 1, -14 }, // 0x32 '2' - { 261, 10, 16, 12, 1, -15 }, // 0x33 '3' - { 281, 10, 16, 12, 1, -15 }, // 0x34 '4' - { 301, 10, 17, 12, 1, -16 }, // 0x35 '5' - { 323, 10, 17, 12, 1, -16 }, // 0x36 '6' - { 345, 10, 16, 12, 0, -15 }, // 0x37 '7' - { 365, 10, 17, 12, 1, -16 }, // 0x38 '8' - { 387, 10, 18, 12, 1, -16 }, // 0x39 '9' - { 410, 2, 12, 6, 2, -11 }, // 0x3A ':' - { 413, 4, 15, 6, 2, -11 }, // 0x3B ';' - { 421, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 441, 12, 6, 14, 1, -8 }, // 0x3D '=' - { 450, 12, 13, 14, 1, -11 }, // 0x3E '>' - { 470, 8, 17, 11, 2, -16 }, // 0x3F '?' - { 487, 17, 16, 21, 2, -15 }, // 0x40 '@' - { 521, 17, 16, 17, 0, -15 }, // 0x41 'A' - { 555, 12, 16, 15, 1, -15 }, // 0x42 'B' - { 579, 15, 16, 16, 1, -15 }, // 0x43 'C' - { 609, 16, 16, 17, 0, -15 }, // 0x44 'D' - { 641, 14, 16, 15, 0, -15 }, // 0x45 'E' - { 669, 14, 16, 14, 0, -15 }, // 0x46 'F' - { 697, 16, 16, 17, 1, -15 }, // 0x47 'G' - { 729, 16, 16, 17, 0, -15 }, // 0x48 'H' - { 761, 6, 16, 8, 1, -15 }, // 0x49 'I' - { 773, 8, 16, 9, 0, -15 }, // 0x4A 'J' - { 789, 16, 16, 17, 1, -15 }, // 0x4B 'K' - { 821, 15, 16, 15, 0, -15 }, // 0x4C 'L' - { 851, 19, 16, 21, 1, -15 }, // 0x4D 'M' - { 889, 16, 16, 17, 1, -15 }, // 0x4E 'N' - { 921, 15, 16, 17, 1, -15 }, // 0x4F 'O' - { 951, 12, 16, 14, 0, -15 }, // 0x50 'P' - { 975, 16, 20, 17, 1, -15 }, // 0x51 'Q' - { 1015, 15, 16, 16, 0, -15 }, // 0x52 'R' - { 1045, 11, 16, 13, 0, -15 }, // 0x53 'S' - { 1067, 15, 16, 15, 0, -15 }, // 0x54 'T' - { 1097, 16, 16, 17, 1, -15 }, // 0x55 'U' - { 1129, 17, 16, 17, 0, -15 }, // 0x56 'V' - { 1163, 22, 16, 23, 0, -15 }, // 0x57 'W' - { 1207, 17, 16, 17, 0, -15 }, // 0x58 'X' - { 1241, 16, 16, 17, 0, -15 }, // 0x59 'Y' - { 1273, 14, 16, 15, 1, -15 }, // 0x5A 'Z' - { 1301, 5, 20, 8, 2, -15 }, // 0x5B '[' - { 1314, 7, 17, 7, 0, -16 }, // 0x5C '\' - { 1329, 5, 20, 8, 1, -15 }, // 0x5D ']' - { 1342, 10, 9, 11, 1, -15 }, // 0x5E '^' - { 1354, 12, 1, 12, 0, 3 }, // 0x5F '_' - { 1356, 5, 4, 6, 0, -15 }, // 0x60 '`' - { 1359, 10, 11, 10, 1, -10 }, // 0x61 'a' - { 1373, 10, 17, 12, 1, -16 }, // 0x62 'b' - { 1395, 8, 11, 11, 1, -10 }, // 0x63 'c' - { 1406, 10, 17, 12, 1, -16 }, // 0x64 'd' - { 1428, 10, 11, 11, 1, -10 }, // 0x65 'e' - { 1442, 9, 17, 9, 0, -16 }, // 0x66 'f' - { 1462, 12, 16, 11, 0, -10 }, // 0x67 'g' - { 1486, 11, 17, 12, 0, -16 }, // 0x68 'h' - { 1510, 5, 16, 7, 0, -15 }, // 0x69 'i' - { 1520, 6, 21, 8, 0, -15 }, // 0x6A 'j' - { 1536, 11, 17, 12, 1, -16 }, // 0x6B 'k' - { 1560, 5, 17, 6, 0, -16 }, // 0x6C 'l' - { 1571, 18, 11, 19, 0, -10 }, // 0x6D 'm' - { 1596, 11, 11, 12, 0, -10 }, // 0x6E 'n' - { 1612, 10, 11, 12, 1, -10 }, // 0x6F 'o' - { 1626, 11, 16, 12, 0, -10 }, // 0x70 'p' - { 1648, 10, 16, 12, 1, -10 }, // 0x71 'q' - { 1668, 8, 11, 8, 0, -10 }, // 0x72 'r' - { 1679, 7, 11, 9, 1, -10 }, // 0x73 's' - { 1689, 6, 13, 7, 1, -12 }, // 0x74 't' - { 1699, 10, 11, 12, 1, -10 }, // 0x75 'u' - { 1713, 11, 11, 11, 0, -10 }, // 0x76 'v' - { 1729, 16, 11, 16, 0, -10 }, // 0x77 'w' - { 1751, 11, 11, 12, 0, -10 }, // 0x78 'x' - { 1767, 11, 16, 11, 0, -10 }, // 0x79 'y' - { 1789, 10, 11, 10, 0, -10 }, // 0x7A 'z' - { 1803, 5, 21, 12, 2, -16 }, // 0x7B '{' - { 1817, 1, 17, 5, 2, -16 }, // 0x7C '|' - { 1820, 5, 21, 12, 5, -15 }, // 0x7D '}' - { 1834, 12, 3, 12, 0, -6 } }; // 0x7E '~' - -const GFXfont FreeSerif12pt7b PROGMEM = { - (uint8_t *)FreeSerif12pt7bBitmaps, - (GFXglyph *)FreeSerif12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2511 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h deleted file mode 100644 index 7d19dd183..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h +++ /dev/null @@ -1,429 +0,0 @@ -const uint8_t FreeSerif18pt7bBitmaps[] PROGMEM = { - 0x6F, 0xFF, 0xFF, 0xFE, 0x66, 0x66, 0x66, 0x64, 0x40, 0x00, 0x6F, 0xF6, - 0xE7, 0xE7, 0xE7, 0xE7, 0xE7, 0x46, 0x42, 0x42, 0x42, 0x03, 0x06, 0x01, - 0x83, 0x00, 0xC1, 0x80, 0x61, 0xC0, 0x30, 0xC0, 0x38, 0x60, 0x18, 0x30, - 0xFF, 0xFF, 0x7F, 0xFF, 0x83, 0x06, 0x01, 0x86, 0x00, 0xC3, 0x00, 0xC1, - 0x87, 0xFF, 0xFF, 0xFF, 0xFE, 0x18, 0x30, 0x0C, 0x18, 0x06, 0x18, 0x06, - 0x0C, 0x03, 0x06, 0x01, 0x83, 0x00, 0xC1, 0x80, 0x60, 0xC0, 0x02, 0x00, - 0x10, 0x03, 0xE0, 0x64, 0xE6, 0x23, 0x61, 0x1B, 0x08, 0x58, 0x42, 0xE2, - 0x03, 0x90, 0x1F, 0x80, 0x7E, 0x00, 0xFC, 0x01, 0xF0, 0x0F, 0xC0, 0x4E, - 0x02, 0x38, 0x10, 0xE0, 0x87, 0x04, 0x3C, 0x21, 0xE1, 0x1B, 0xC9, 0xCF, - 0xFC, 0x1F, 0x80, 0x10, 0x00, 0x80, 0x07, 0x80, 0x20, 0x0F, 0xF0, 0x70, - 0x0F, 0x07, 0xD0, 0x0F, 0x02, 0x18, 0x07, 0x01, 0x18, 0x07, 0x00, 0x8C, - 0x03, 0x80, 0x4C, 0x01, 0x80, 0x44, 0x00, 0xC0, 0x26, 0x00, 0x60, 0x22, - 0x0F, 0x30, 0x33, 0x1F, 0xCC, 0x73, 0x1E, 0x37, 0xF1, 0x8E, 0x19, 0xE1, - 0x8E, 0x04, 0x00, 0x86, 0x02, 0x00, 0xC7, 0x01, 0x00, 0xC3, 0x80, 0x80, - 0x61, 0x80, 0x80, 0x60, 0xC0, 0x40, 0x30, 0x60, 0x40, 0x30, 0x38, 0xE0, - 0x30, 0x0F, 0xE0, 0x18, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0x61, 0x80, 0x00, 0x60, 0x60, 0x00, 0x30, 0x30, 0x00, 0x18, 0x18, - 0x00, 0x0C, 0x0C, 0x00, 0x06, 0x0C, 0x00, 0x03, 0x8E, 0x00, 0x01, 0xCE, - 0x00, 0x00, 0x7C, 0x3F, 0xC0, 0x38, 0x07, 0x80, 0x3E, 0x03, 0x80, 0x77, - 0x01, 0x80, 0x73, 0xC0, 0x80, 0xF0, 0xF0, 0xC0, 0x70, 0x7C, 0xC0, 0x78, - 0x1E, 0x40, 0x3C, 0x07, 0xC0, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x0F, - 0xC0, 0xFF, 0x0D, 0xF0, 0xC7, 0xFC, 0x7F, 0xC1, 0xFC, 0x1F, 0x80, 0x3C, - 0x00, 0xFF, 0xFE, 0x92, 0x40, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, - 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x0C, 0x06, 0x03, 0x80, 0xC0, 0x60, 0x18, 0x0C, 0x03, 0x00, - 0xC0, 0x30, 0x0C, 0x80, 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x60, 0x18, 0x0C, - 0x07, 0x01, 0x80, 0xC0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, - 0xE0, 0x60, 0x30, 0x38, 0x18, 0x0C, 0x0C, 0x04, 0x04, 0x04, 0x04, 0x04, - 0x00, 0x0C, 0x00, 0xC0, 0x0C, 0x0C, 0x46, 0xE4, 0xF7, 0x5E, 0x1F, 0x00, - 0xC0, 0x17, 0x8E, 0x4E, 0xE4, 0xFC, 0xC6, 0x0C, 0x00, 0xC0, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x6F, 0xFF, - 0x11, 0x24, 0x80, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0xC0, 0x60, 0x18, 0x06, - 0x03, 0x80, 0xC0, 0x30, 0x1C, 0x06, 0x01, 0x80, 0xE0, 0x30, 0x0C, 0x07, - 0x01, 0x80, 0x60, 0x38, 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, - 0x00, 0x03, 0xE0, 0x0E, 0x70, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x1C, 0x78, - 0x1E, 0x70, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0E, 0x70, - 0x0E, 0x78, 0x1E, 0x38, 0x1C, 0x38, 0x1C, 0x1C, 0x38, 0x0C, 0x30, 0x03, - 0xC0, 0x06, 0x03, 0x83, 0xE3, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, - 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, 0xE0, 0x38, 0x0E, 0x03, 0x80, - 0xE0, 0x38, 0x0E, 0x03, 0x81, 0xE1, 0xFF, 0x07, 0xC0, 0x1F, 0xF0, 0x3F, - 0xF8, 0x70, 0xF8, 0x60, 0x3C, 0xC0, 0x3C, 0x80, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x18, 0x00, 0x18, 0x00, 0x30, 0x00, 0x30, 0x00, 0x60, 0x00, - 0xC0, 0x00, 0x80, 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x08, 0x01, 0x10, - 0x02, 0x3F, 0xFE, 0x7F, 0xFC, 0xFF, 0xFC, 0x0F, 0xC0, 0xFF, 0x0C, 0x3C, - 0x80, 0xE4, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x04, 0x00, 0x40, 0x04, 0x00, - 0xF8, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0xE0, 0x03, 0x00, 0x18, 0x00, - 0xC0, 0x06, 0x00, 0x60, 0x03, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, 0x30, - 0x00, 0x30, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xB0, 0x01, 0x30, 0x03, 0x30, - 0x06, 0x30, 0x04, 0x30, 0x08, 0x30, 0x18, 0x30, 0x10, 0x30, 0x20, 0x30, - 0x60, 0x30, 0xC0, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x30, 0x00, 0x30, - 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x7F, 0xC3, - 0xFE, 0x1F, 0xE1, 0x80, 0x08, 0x00, 0xC0, 0x07, 0xC0, 0x7F, 0x81, 0xFF, - 0x00, 0xFC, 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x60, 0x03, 0x00, 0x18, - 0x00, 0xC0, 0x06, 0x00, 0x60, 0x07, 0x78, 0x73, 0xFF, 0x0F, 0xC0, 0x00, - 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x7C, 0x00, 0x79, 0xF0, 0x7F, 0xFC, 0xF8, 0x3C, 0xF0, 0x1E, 0xF0, - 0x1F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0x70, 0x0F, 0x78, - 0x0F, 0x78, 0x0E, 0x3C, 0x1E, 0x1E, 0x3C, 0x0F, 0xF8, 0x07, 0xE0, 0x3F, - 0xFD, 0xFF, 0xF7, 0xFF, 0xF0, 0x06, 0x80, 0x18, 0x00, 0x60, 0x03, 0x00, - 0x0C, 0x00, 0x30, 0x01, 0x80, 0x06, 0x00, 0x18, 0x00, 0xE0, 0x03, 0x00, - 0x0C, 0x00, 0x70, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, - 0x1C, 0x00, 0x60, 0x00, 0x0F, 0x83, 0xFC, 0x70, 0xE6, 0x07, 0xC0, 0x3C, - 0x03, 0xC0, 0x3E, 0x03, 0x70, 0x67, 0x8C, 0x3D, 0x81, 0xF0, 0x0F, 0x81, - 0x7C, 0x21, 0xE6, 0x0E, 0xC0, 0x7C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x36, - 0x06, 0x70, 0xE3, 0xFC, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0xF0, 0x3C, 0x78, - 0x38, 0x3C, 0x78, 0x1E, 0x70, 0x1E, 0xF0, 0x0E, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF8, 0x0F, 0x78, 0x0F, 0x3C, 0x3F, - 0x1F, 0xEE, 0x0F, 0x9E, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x78, - 0x00, 0xF0, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x00, 0x6F, 0xF6, - 0x00, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x60, 0x67, 0xBC, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x19, 0xEF, 0x78, 0x42, 0x22, 0x20, 0x00, 0x00, 0xC0, - 0x00, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x03, 0xF0, - 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, - 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xC0, - 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0x80, - 0x00, 0x3C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF8, 0x00, 0xF0, - 0x00, 0x30, 0x00, 0x00, 0x1F, 0x81, 0xFF, 0x18, 0x7D, 0x81, 0xEC, 0x07, - 0xF0, 0x3F, 0x81, 0xE0, 0x0F, 0x00, 0x70, 0x03, 0x80, 0x38, 0x01, 0x80, - 0x08, 0x00, 0xC0, 0x04, 0x00, 0x20, 0x02, 0x00, 0x10, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x00, 0x7F, 0x00, - 0x01, 0xFF, 0xC0, 0x07, 0x80, 0xF0, 0x0F, 0x00, 0x38, 0x1C, 0x00, 0x1C, - 0x38, 0x00, 0x0C, 0x38, 0x00, 0x06, 0x70, 0x1E, 0x02, 0x70, 0x3F, 0xE3, - 0xF0, 0x71, 0xE1, 0xE0, 0xE0, 0xC1, 0xE0, 0xC0, 0xC1, 0xE0, 0xC1, 0xC1, - 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x83, 0xE1, 0x83, 0x82, 0xE1, 0x83, 0x86, - 0x71, 0xC7, 0x8C, 0x70, 0xF9, 0xF8, 0x38, 0xF0, 0xF0, 0x3C, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x07, 0x80, 0x70, 0x03, 0xFF, 0xE0, 0x00, 0x7F, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x5C, 0x00, 0x00, 0xDE, 0x00, 0x00, 0x8E, 0x00, - 0x01, 0x8F, 0x00, 0x01, 0x87, 0x00, 0x03, 0x07, 0x80, 0x03, 0x03, 0x80, - 0x02, 0x03, 0xC0, 0x06, 0x03, 0xC0, 0x07, 0xFF, 0xC0, 0x0F, 0xFF, 0xE0, - 0x0C, 0x01, 0xE0, 0x18, 0x00, 0xF0, 0x18, 0x00, 0xF0, 0x30, 0x00, 0x78, - 0x30, 0x00, 0x78, 0x70, 0x00, 0x7C, 0xFC, 0x01, 0xFF, 0xFF, 0xFC, 0x03, - 0xFF, 0xF8, 0x1E, 0x0F, 0xC1, 0xE0, 0x3C, 0x1E, 0x01, 0xE1, 0xE0, 0x1E, - 0x1E, 0x01, 0xE1, 0xE0, 0x1E, 0x1E, 0x03, 0xC1, 0xE0, 0x78, 0x1F, 0xFE, - 0x01, 0xFF, 0xF0, 0x1E, 0x07, 0xC1, 0xE0, 0x1E, 0x1E, 0x00, 0xF1, 0xE0, - 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x0F, 0x1E, 0x00, 0xF1, 0xE0, 0x1E, 0x1E, - 0x07, 0xE3, 0xFF, 0xF8, 0xFF, 0xFE, 0x00, 0x00, 0xFE, 0x08, 0x0F, 0xFF, - 0x60, 0xFC, 0x1F, 0x87, 0xC0, 0x1E, 0x3C, 0x00, 0x38, 0xF0, 0x00, 0x67, - 0x80, 0x01, 0x9E, 0x00, 0x02, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, - 0x00, 0x02, 0x1F, 0x00, 0x38, 0x3F, 0x03, 0x80, 0x7F, 0xFC, 0x00, 0x3F, - 0x80, 0xFF, 0xFC, 0x00, 0x7F, 0xFF, 0x00, 0x78, 0x3F, 0x80, 0xF0, 0x0F, - 0x81, 0xE0, 0x0F, 0x83, 0xC0, 0x0F, 0x07, 0x80, 0x0F, 0x0F, 0x00, 0x1E, - 0x1E, 0x00, 0x1E, 0x3C, 0x00, 0x3C, 0x78, 0x00, 0x78, 0xF0, 0x00, 0xF1, - 0xE0, 0x01, 0xE3, 0xC0, 0x03, 0xC7, 0x80, 0x07, 0x8F, 0x00, 0x1E, 0x1E, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xE0, 0xF0, 0x0F, 0x81, 0xE0, - 0x7E, 0x07, 0xFF, 0xF0, 0x3F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x87, 0xFF, - 0xF8, 0x3C, 0x01, 0x83, 0xC0, 0x08, 0x3C, 0x00, 0x83, 0xC0, 0x00, 0x3C, - 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x02, 0x03, 0xC0, 0x60, 0x3F, 0xFE, 0x03, - 0xFF, 0xE0, 0x3C, 0x06, 0x03, 0xC0, 0x20, 0x3C, 0x00, 0x03, 0xC0, 0x00, - 0x3C, 0x00, 0x03, 0xC0, 0x01, 0x3C, 0x00, 0x23, 0xC0, 0x06, 0x3C, 0x01, - 0xE7, 0xFF, 0xFE, 0xFF, 0xFF, 0xC0, 0xFF, 0xFF, 0xBF, 0xFF, 0xCF, 0x00, - 0x67, 0x80, 0x13, 0xC0, 0x09, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, - 0x02, 0x1E, 0x03, 0x0F, 0xFF, 0x87, 0xFF, 0xC3, 0xC0, 0x61, 0xE0, 0x10, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x03, 0xF0, 0x03, 0xFC, 0x00, 0x00, 0xFE, 0x04, 0x07, 0xFF, - 0xB8, 0x1F, 0x03, 0xF0, 0xF8, 0x01, 0xE3, 0xE0, 0x01, 0xC7, 0x80, 0x01, - 0x9E, 0x00, 0x01, 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, - 0xC0, 0x00, 0x07, 0x80, 0x07, 0xFF, 0x00, 0x07, 0xDE, 0x00, 0x07, 0xBC, - 0x00, 0x0F, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xF0, - 0x00, 0xF1, 0xF0, 0x01, 0xE1, 0xF0, 0x03, 0xC1, 0xF8, 0x1F, 0x00, 0xFF, - 0xFC, 0x00, 0x3F, 0x80, 0xFF, 0x03, 0xFD, 0xF8, 0x07, 0xE3, 0xC0, 0x0F, - 0x0F, 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, - 0x00, 0x3C, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xFF, 0xFF, 0x0F, 0xFF, - 0xFC, 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, - 0x3C, 0x00, 0xF0, 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x0F, 0x00, 0x3C, 0x3C, - 0x00, 0xF1, 0xF8, 0x07, 0xEF, 0xF0, 0x3F, 0xC0, 0xFF, 0xBF, 0x0F, 0x07, - 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, - 0xF0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 0xC3, 0xF3, 0xFE, 0x0F, 0xF0, - 0x7E, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC6, 0x38, 0xF3, 0x8F, 0xF0, 0x7C, 0x00, 0xFF, 0x07, 0xFC, - 0xFC, 0x03, 0xC0, 0xF0, 0x07, 0x01, 0xE0, 0x1C, 0x03, 0xC0, 0x60, 0x07, - 0x81, 0x80, 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, - 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDF, 0x00, 0x07, 0x8F, - 0x00, 0x0F, 0x0F, 0x00, 0x1E, 0x0F, 0x00, 0x3C, 0x0F, 0x00, 0x78, 0x0F, - 0x00, 0xF0, 0x1F, 0x01, 0xE0, 0x1F, 0x03, 0xC0, 0x1F, 0x0F, 0xC0, 0x3F, - 0x3F, 0xC1, 0xFF, 0x80, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, - 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x80, 0x04, 0xF0, - 0x01, 0x1E, 0x00, 0x63, 0xC0, 0x3C, 0xFF, 0xFF, 0xBF, 0xFF, 0xE0, 0xFC, - 0x00, 0x03, 0xF9, 0xF0, 0x00, 0x1F, 0x87, 0x80, 0x01, 0xF8, 0x3E, 0x00, - 0x0F, 0xC1, 0xF0, 0x00, 0x5E, 0x0B, 0xC0, 0x06, 0xF0, 0x5E, 0x00, 0x37, - 0x82, 0x78, 0x03, 0x3C, 0x13, 0xC0, 0x19, 0xE0, 0x8F, 0x01, 0x8F, 0x04, - 0x78, 0x0C, 0x78, 0x21, 0xE0, 0xC3, 0xC1, 0x0F, 0x06, 0x1E, 0x08, 0x3C, - 0x60, 0xF0, 0x41, 0xE3, 0x07, 0x82, 0x07, 0xB0, 0x3C, 0x10, 0x3D, 0x81, - 0xE0, 0x81, 0xF8, 0x0F, 0x04, 0x07, 0xC0, 0x78, 0x20, 0x3C, 0x03, 0xC1, - 0x00, 0xE0, 0x1E, 0x1C, 0x06, 0x01, 0xFB, 0xF8, 0x10, 0x1F, 0xE0, 0xFC, - 0x00, 0xFE, 0x78, 0x00, 0x70, 0x78, 0x00, 0x40, 0xF8, 0x00, 0x81, 0xF8, - 0x01, 0x02, 0xF8, 0x02, 0x04, 0xF8, 0x04, 0x08, 0xF0, 0x08, 0x11, 0xF0, - 0x10, 0x21, 0xF0, 0x20, 0x41, 0xF0, 0x40, 0x81, 0xF0, 0x81, 0x01, 0xF1, - 0x02, 0x01, 0xE2, 0x04, 0x03, 0xE4, 0x08, 0x03, 0xE8, 0x10, 0x03, 0xF0, - 0x20, 0x03, 0xE0, 0x40, 0x03, 0xC0, 0x80, 0x03, 0x81, 0x00, 0x07, 0x07, - 0x00, 0x06, 0x3F, 0x80, 0x04, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, 0x00, - 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x07, 0x1E, - 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0xC0, - 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, 0x00, - 0x07, 0xF8, 0x00, 0x0F, 0x78, 0x00, 0x3C, 0xF0, 0x00, 0x78, 0xE0, 0x01, - 0xE1, 0xE0, 0x03, 0xC1, 0xE0, 0x0F, 0x01, 0xF0, 0x7C, 0x00, 0xFF, 0xE0, - 0x00, 0x7F, 0x00, 0xFF, 0xF8, 0x1F, 0xFF, 0x83, 0xC1, 0xF0, 0xF0, 0x1E, - 0x3C, 0x07, 0xCF, 0x00, 0xF3, 0xC0, 0x3C, 0xF0, 0x0F, 0x3C, 0x03, 0xCF, - 0x01, 0xF3, 0xC0, 0x78, 0xF0, 0x7C, 0x3F, 0xFE, 0x0F, 0xFE, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, - 0x3C, 0x00, 0x1F, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xFF, - 0x00, 0x3E, 0x0F, 0x80, 0xF0, 0x07, 0x83, 0xC0, 0x07, 0x87, 0x80, 0x0F, - 0x1E, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF0, 0x00, 0x1D, 0xE0, 0x00, 0x3F, - 0xC0, 0x00, 0x7F, 0x80, 0x00, 0xFF, 0x00, 0x01, 0xFE, 0x00, 0x03, 0xFC, - 0x00, 0x07, 0xF8, 0x00, 0x0F, 0x70, 0x00, 0x1C, 0xF0, 0x00, 0x79, 0xE0, - 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x07, 0x01, 0xC0, 0x1C, 0x01, 0xE0, - 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xF0, - 0x03, 0xFF, 0xF0, 0x0F, 0x07, 0xC0, 0x78, 0x1E, 0x03, 0xC0, 0x78, 0x1E, - 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x78, - 0x0F, 0x0F, 0x80, 0x7F, 0xF8, 0x03, 0xFE, 0x00, 0x1E, 0x78, 0x00, 0xF1, - 0xE0, 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xE0, 0xF0, 0x0F, 0x03, 0xC0, - 0x78, 0x0F, 0x03, 0xC0, 0x7C, 0x3F, 0x01, 0xF3, 0xFC, 0x07, 0xE0, 0x07, - 0x84, 0x1F, 0xFC, 0x3C, 0x3E, 0x30, 0x0E, 0x70, 0x06, 0x70, 0x06, 0x70, - 0x02, 0x78, 0x00, 0x7C, 0x00, 0x3F, 0x00, 0x1F, 0xC0, 0x0F, 0xE0, 0x03, - 0xF8, 0x00, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, - 0x0F, 0xE0, 0x0F, 0x70, 0x1E, 0x78, 0x3C, 0x4F, 0xF8, 0x43, 0xF0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x7C, 0x0F, 0x03, 0x80, 0xF0, 0x10, - 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0x00, 0x00, 0xF0, 0x00, 0x1F, 0x80, 0x03, 0xFC, 0x00, 0xFF, 0x01, 0xFD, - 0xF8, 0x01, 0xC3, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, - 0x00, 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, - 0x83, 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x83, - 0xC0, 0x02, 0x0F, 0x00, 0x08, 0x3C, 0x00, 0x20, 0xF0, 0x00, 0x81, 0xE0, - 0x04, 0x07, 0x80, 0x30, 0x0F, 0x81, 0x80, 0x1F, 0xFC, 0x00, 0x1F, 0xC0, - 0x00, 0xFF, 0xC0, 0x7F, 0x3E, 0x00, 0x1E, 0x1E, 0x00, 0x0C, 0x0E, 0x00, - 0x18, 0x0F, 0x00, 0x18, 0x07, 0x00, 0x10, 0x07, 0x80, 0x30, 0x07, 0x80, - 0x30, 0x03, 0xC0, 0x60, 0x03, 0xC0, 0x60, 0x01, 0xE0, 0x40, 0x01, 0xE0, - 0xC0, 0x00, 0xF0, 0xC0, 0x00, 0xF1, 0x80, 0x00, 0x71, 0x80, 0x00, 0x7B, - 0x00, 0x00, 0x3B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x08, 0x00, 0xFF, 0x9F, - 0xF0, 0x3F, 0x9F, 0x03, 0xE0, 0x07, 0x07, 0x80, 0xF0, 0x03, 0x03, 0xC0, - 0x78, 0x01, 0x80, 0xE0, 0x1E, 0x00, 0x80, 0x78, 0x0F, 0x00, 0xC0, 0x1C, - 0x03, 0x80, 0x60, 0x0F, 0x01, 0xE0, 0x20, 0x07, 0x81, 0xF0, 0x30, 0x01, - 0xC0, 0xBC, 0x18, 0x00, 0xF0, 0xDE, 0x08, 0x00, 0x78, 0x67, 0x0C, 0x00, - 0x1E, 0x23, 0xC4, 0x00, 0x0F, 0x31, 0xE6, 0x00, 0x03, 0x90, 0x7B, 0x00, - 0x01, 0xF8, 0x3D, 0x00, 0x00, 0xFC, 0x0F, 0x80, 0x00, 0x3C, 0x07, 0xC0, - 0x00, 0x1E, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0xE0, 0x00, 0x03, 0x00, 0x70, - 0x00, 0x01, 0x80, 0x10, 0x00, 0x00, 0x80, 0x08, 0x00, 0x7F, 0xE0, 0xFF, - 0x0F, 0xC0, 0x1E, 0x03, 0xE0, 0x0E, 0x00, 0xF0, 0x06, 0x00, 0x3C, 0x06, - 0x00, 0x0F, 0x06, 0x00, 0x07, 0x86, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x7B, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0x78, 0x00, 0x01, 0x9E, 0x00, 0x01, 0x87, 0x80, 0x01, - 0x83, 0xE0, 0x01, 0x80, 0xF0, 0x01, 0x80, 0x3C, 0x01, 0x80, 0x1F, 0x01, - 0xC0, 0x07, 0xC1, 0xE0, 0x03, 0xF3, 0xFE, 0x0F, 0xFE, 0xFF, 0xC0, 0xFF, - 0x7E, 0x00, 0x1C, 0x1E, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x0F, 0x00, 0x60, - 0x07, 0x80, 0x60, 0x03, 0xC0, 0xC0, 0x03, 0xE1, 0x80, 0x01, 0xE1, 0x80, - 0x00, 0xF3, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, - 0x00, 0x7E, 0x00, 0x01, 0xFF, 0x80, 0x3F, 0xFF, 0xF1, 0xFF, 0xFF, 0x9C, - 0x00, 0x78, 0xC0, 0x07, 0x84, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x3C, - 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x00, 0x00, 0x78, 0x00, 0x47, 0x80, 0x06, 0x78, 0x00, 0x33, 0x80, - 0x07, 0x3F, 0xFF, 0xFB, 0xFF, 0xFF, 0xC0, 0xFF, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 0xF0, 0xC0, 0x18, 0x06, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x18, 0x06, 0x01, 0xC0, 0x30, 0x0C, - 0x03, 0x80, 0x60, 0x18, 0x07, 0x00, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, - 0x1C, 0x03, 0xFE, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, - 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x1F, 0xF0, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x76, 0x00, 0xCE, - 0x03, 0x8C, 0x06, 0x1C, 0x1C, 0x18, 0x30, 0x30, 0xE0, 0x31, 0x80, 0x67, - 0x00, 0x6C, 0x00, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xC0, 0xE0, 0x70, - 0x18, 0x0C, 0x03, 0x1F, 0x03, 0x8C, 0x38, 0x31, 0xC1, 0x8E, 0x0C, 0x00, - 0x60, 0x0F, 0x01, 0x98, 0x30, 0xC3, 0x86, 0x38, 0x31, 0xC1, 0x8E, 0x0C, - 0x78, 0xE5, 0xFB, 0xCF, 0x0C, 0x00, 0x00, 0x38, 0x00, 0xF8, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x39, - 0xF0, 0x3B, 0xFC, 0x3C, 0x3E, 0x38, 0x0E, 0x38, 0x0F, 0x38, 0x07, 0x38, - 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, 0x0E, 0x38, - 0x0C, 0x3C, 0x1C, 0x1F, 0xF0, 0x07, 0xE0, 0x07, 0xE0, 0x7F, 0xE3, 0x87, - 0xD8, 0x0F, 0x60, 0x1B, 0x00, 0x0C, 0x00, 0x30, 0x00, 0xC0, 0x03, 0x00, - 0x0E, 0x00, 0x3C, 0x01, 0x78, 0x19, 0xFF, 0xC3, 0xFE, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0x1C, 0x00, 0x7C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x07, 0x9C, 0x1F, 0xDC, 0x38, 0x7C, 0x70, - 0x3C, 0x70, 0x1C, 0x60, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, - 0x1C, 0xE0, 0x1C, 0xF0, 0x1C, 0x70, 0x1C, 0x7C, 0x3E, 0x3F, 0xDF, 0x0F, - 0x90, 0x0F, 0x81, 0xFF, 0x08, 0x3C, 0x80, 0xE7, 0xFF, 0x7F, 0xFF, 0x00, - 0x18, 0x00, 0xC0, 0x07, 0x00, 0x38, 0x03, 0xE0, 0x37, 0x83, 0x3F, 0xF0, - 0xFF, 0x03, 0xF0, 0x01, 0xF0, 0x3F, 0xC3, 0x8E, 0x18, 0x00, 0xC0, 0x0E, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x03, 0xFE, 0x1F, 0xF0, 0x38, 0x01, 0xC0, - 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, - 0xC0, 0x0E, 0x00, 0x70, 0x07, 0xC0, 0xFF, 0x80, 0x0F, 0xC0, 0x1F, 0xFF, - 0x38, 0xFF, 0x70, 0x70, 0x70, 0x70, 0x70, 0x30, 0x70, 0x30, 0x70, 0x30, - 0x38, 0x20, 0x1C, 0x60, 0x0F, 0x80, 0x10, 0x00, 0x20, 0x00, 0x60, 0x00, - 0x7F, 0xE0, 0x3F, 0xFC, 0x1F, 0xFE, 0x20, 0x06, 0x40, 0x02, 0xC0, 0x02, - 0xC0, 0x04, 0xF0, 0x18, 0x7F, 0xF0, 0x1F, 0x80, 0x00, 0x00, 0x38, 0x00, - 0xF8, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, - 0x38, 0x00, 0x38, 0xF0, 0x3B, 0xF8, 0x3E, 0x3C, 0x3C, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x7C, 0x3E, 0xFE, 0x7F, 0x18, 0x3C, - 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x04, 0x3C, 0x7C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x03, 0x03, - 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0xC3, 0xE0, 0x70, - 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, - 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x37, 0x3B, 0xF8, 0xF8, 0x00, 0x00, - 0x1C, 0x00, 0x3E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x3F, 0x8E, 0x0F, 0x07, 0x06, 0x03, - 0x86, 0x01, 0xC4, 0x00, 0xE4, 0x00, 0x7E, 0x00, 0x3F, 0x80, 0x1D, 0xC0, - 0x0E, 0x70, 0x07, 0x1C, 0x03, 0x8F, 0x01, 0xC3, 0xC0, 0xE0, 0xF0, 0xF8, - 0x3C, 0xFE, 0x7F, 0x80, 0x00, 0x1C, 0x7C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x3C, 0xFF, 0x38, 0xF0, 0x7C, 0x3E, 0xFE, 0x7F, 0x83, - 0xE3, 0xF0, 0xE0, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, 0x01, - 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, 0x07, - 0x01, 0xC3, 0x81, 0xC0, 0x70, 0xE0, 0x70, 0x1C, 0x38, 0x1C, 0x07, 0x0E, - 0x07, 0x01, 0xC3, 0x81, 0xE0, 0x73, 0xF9, 0xFC, 0x7F, 0x38, 0xF0, 0xFB, - 0xF8, 0x3E, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, - 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, - 0x1C, 0x78, 0x3C, 0xFE, 0x7F, 0x07, 0xE0, 0x1F, 0xF8, 0x3C, 0x7C, 0x78, - 0x3E, 0x70, 0x1E, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, - 0x0F, 0xF8, 0x0F, 0x78, 0x0E, 0x7C, 0x1C, 0x3E, 0x3C, 0x0F, 0xF0, 0x07, - 0xC0, 0x18, 0xF0, 0xFB, 0xFC, 0x3E, 0x1E, 0x38, 0x0E, 0x38, 0x0F, 0x38, - 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x07, 0x38, 0x06, 0x38, - 0x0E, 0x38, 0x0C, 0x3E, 0x1C, 0x3B, 0xF8, 0x39, 0xE0, 0x38, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFF, - 0x00, 0x07, 0xC4, 0x1F, 0xEC, 0x3C, 0x3C, 0x70, 0x1C, 0x70, 0x1C, 0x60, - 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xE0, 0x1C, 0xF0, - 0x1C, 0x70, 0x1C, 0x78, 0x3C, 0x3F, 0xDC, 0x1F, 0x1C, 0x00, 0x1C, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3E, 0x00, - 0xFF, 0x19, 0xFF, 0x7C, 0xF3, 0x9C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, - 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x1F, 0x07, 0xF0, 0x3E, - 0x58, 0x7C, 0x0F, 0x03, 0xC0, 0x7C, 0x07, 0x80, 0xF8, 0x1F, 0x81, 0xF8, - 0x1E, 0x03, 0xC0, 0xF0, 0x3E, 0x1A, 0x7C, 0x10, 0x30, 0x70, 0xFE, 0xFE, - 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x79, - 0x7E, 0x3C, 0xF8, 0x7C, 0x38, 0x3C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, 0x38, 0x1C, - 0x38, 0x1C, 0x38, 0x1C, 0x3C, 0x7C, 0x1F, 0xDF, 0x0F, 0x18, 0xFE, 0x1F, - 0x7C, 0x06, 0x38, 0x04, 0x1C, 0x04, 0x1C, 0x0C, 0x0E, 0x08, 0x0E, 0x18, - 0x07, 0x10, 0x07, 0x10, 0x07, 0x20, 0x03, 0xA0, 0x03, 0xE0, 0x01, 0xC0, - 0x01, 0xC0, 0x00, 0x80, 0x00, 0x80, 0xFC, 0x7F, 0x1F, 0x78, 0x3C, 0x06, - 0x38, 0x1C, 0x04, 0x38, 0x1C, 0x04, 0x1C, 0x1C, 0x0C, 0x1C, 0x0E, 0x08, - 0x1C, 0x1E, 0x18, 0x0E, 0x17, 0x10, 0x0E, 0x37, 0x10, 0x07, 0x23, 0x30, - 0x07, 0x63, 0xA0, 0x07, 0x43, 0xE0, 0x03, 0xC1, 0xC0, 0x03, 0x81, 0xC0, - 0x01, 0x80, 0x80, 0x01, 0x00, 0x80, 0x7F, 0x7E, 0x1E, 0x0C, 0x07, 0x8C, - 0x01, 0xC4, 0x00, 0x76, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x03, - 0xE0, 0x01, 0x70, 0x01, 0x1C, 0x01, 0x8F, 0x01, 0x83, 0x80, 0x80, 0xE0, - 0xC0, 0x79, 0xF0, 0xFF, 0xFE, 0x0F, 0x7C, 0x06, 0x38, 0x06, 0x1C, 0x04, - 0x1C, 0x0C, 0x0E, 0x0C, 0x0E, 0x08, 0x0F, 0x18, 0x07, 0x10, 0x07, 0x90, - 0x03, 0xB0, 0x03, 0xA0, 0x01, 0xE0, 0x01, 0xE0, 0x00, 0xC0, 0x00, 0xC0, - 0x00, 0x80, 0x00, 0x80, 0x01, 0x80, 0x01, 0x00, 0x03, 0x00, 0x7E, 0x00, - 0x7C, 0x00, 0x78, 0x00, 0x7F, 0xF9, 0xFF, 0xE6, 0x07, 0x10, 0x38, 0x00, - 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xE0, 0x07, - 0x01, 0x38, 0x0D, 0xC0, 0x3F, 0xFF, 0xBF, 0xFE, 0x07, 0x0E, 0x1C, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x30, 0x60, 0x60, - 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x1C, - 0x0E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x70, 0x38, 0x18, - 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x08, 0x06, 0x06, - 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x38, - 0x70, 0xE0, 0x3E, 0x00, 0x7F, 0x87, 0xE3, 0xFE, 0x00, 0x7C }; - -const GFXglyph FreeSerif18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 4, 24, 12, 5, -23 }, // 0x21 '!' - { 12, 8, 9, 14, 3, -23 }, // 0x22 '"' - { 21, 17, 23, 17, 0, -22 }, // 0x23 '#' - { 70, 13, 27, 17, 2, -24 }, // 0x24 '$' - { 114, 25, 23, 29, 2, -22 }, // 0x25 '%' - { 186, 25, 25, 27, 1, -24 }, // 0x26 '&' - { 265, 3, 9, 7, 2, -23 }, // 0x27 ''' - { 269, 9, 30, 12, 2, -23 }, // 0x28 '(' - { 303, 9, 30, 12, 1, -22 }, // 0x29 ')' - { 337, 12, 14, 18, 3, -23 }, // 0x2A '*' - { 358, 16, 18, 20, 2, -17 }, // 0x2B '+' - { 394, 4, 9, 9, 2, -3 }, // 0x2C ',' - { 399, 8, 2, 12, 1, -8 }, // 0x2D '-' - { 401, 4, 4, 9, 2, -3 }, // 0x2E '.' - { 403, 10, 24, 10, 0, -23 }, // 0x2F '/' - { 433, 16, 24, 18, 1, -23 }, // 0x30 '0' - { 481, 10, 24, 18, 3, -23 }, // 0x31 '1' - { 511, 16, 24, 17, 1, -23 }, // 0x32 '2' - { 559, 13, 24, 17, 2, -23 }, // 0x33 '3' - { 598, 16, 23, 18, 0, -22 }, // 0x34 '4' - { 644, 13, 24, 17, 2, -23 }, // 0x35 '5' - { 683, 16, 24, 18, 1, -23 }, // 0x36 '6' - { 731, 14, 23, 18, 1, -22 }, // 0x37 '7' - { 772, 12, 25, 18, 2, -24 }, // 0x38 '8' - { 810, 16, 26, 17, 1, -24 }, // 0x39 '9' - { 862, 4, 17, 9, 2, -16 }, // 0x3A ':' - { 871, 5, 22, 9, 2, -16 }, // 0x3B ';' - { 885, 18, 18, 20, 1, -17 }, // 0x3C '<' - { 926, 18, 9, 20, 1, -12 }, // 0x3D '=' - { 947, 18, 18, 20, 1, -17 }, // 0x3E '>' - { 988, 13, 25, 16, 2, -24 }, // 0x3F '?' - { 1029, 24, 25, 30, 3, -24 }, // 0x40 '@' - { 1104, 24, 23, 25, 1, -22 }, // 0x41 'A' - { 1173, 20, 23, 22, 1, -22 }, // 0x42 'B' - { 1231, 22, 24, 23, 1, -23 }, // 0x43 'C' - { 1297, 23, 23, 25, 1, -22 }, // 0x44 'D' - { 1364, 20, 23, 21, 2, -22 }, // 0x45 'E' - { 1422, 17, 23, 20, 2, -22 }, // 0x46 'F' - { 1471, 23, 24, 25, 1, -23 }, // 0x47 'G' - { 1540, 22, 23, 25, 2, -22 }, // 0x48 'H' - { 1604, 9, 23, 11, 2, -22 }, // 0x49 'I' - { 1630, 12, 23, 13, 0, -22 }, // 0x4A 'J' - { 1665, 23, 23, 25, 2, -22 }, // 0x4B 'K' - { 1732, 19, 23, 21, 2, -22 }, // 0x4C 'L' - { 1787, 29, 23, 31, 1, -22 }, // 0x4D 'M' - { 1871, 23, 23, 25, 1, -22 }, // 0x4E 'N' - { 1938, 23, 24, 25, 1, -23 }, // 0x4F 'O' - { 2007, 18, 23, 20, 1, -22 }, // 0x50 'P' - { 2059, 23, 30, 25, 1, -23 }, // 0x51 'Q' - { 2146, 21, 23, 23, 2, -22 }, // 0x52 'R' - { 2207, 16, 24, 19, 1, -23 }, // 0x53 'S' - { 2255, 20, 23, 21, 1, -22 }, // 0x54 'T' - { 2313, 22, 23, 25, 2, -22 }, // 0x55 'U' - { 2377, 24, 23, 25, 0, -22 }, // 0x56 'V' - { 2446, 33, 23, 33, 0, -22 }, // 0x57 'W' - { 2541, 25, 23, 25, 0, -22 }, // 0x58 'X' - { 2613, 24, 23, 25, 1, -22 }, // 0x59 'Y' - { 2682, 21, 23, 21, 0, -22 }, // 0x5A 'Z' - { 2743, 7, 28, 12, 3, -22 }, // 0x5B '[' - { 2768, 10, 24, 10, 0, -23 }, // 0x5C '\' - { 2798, 7, 28, 12, 2, -22 }, // 0x5D ']' - { 2823, 15, 13, 16, 1, -22 }, // 0x5E '^' - { 2848, 18, 2, 17, 0, 3 }, // 0x5F '_' - { 2853, 8, 6, 9, 1, -23 }, // 0x60 '`' - { 2859, 13, 16, 15, 2, -15 }, // 0x61 'a' - { 2885, 16, 25, 17, 1, -24 }, // 0x62 'b' - { 2935, 14, 16, 16, 1, -15 }, // 0x63 'c' - { 2963, 16, 25, 17, 1, -24 }, // 0x64 'd' - { 3013, 13, 16, 16, 1, -15 }, // 0x65 'e' - { 3039, 13, 25, 13, 0, -24 }, // 0x66 'f' - { 3080, 16, 24, 16, 1, -15 }, // 0x67 'g' - { 3128, 16, 25, 17, 1, -24 }, // 0x68 'h' - { 3178, 8, 24, 10, 0, -23 }, // 0x69 'i' - { 3202, 9, 32, 12, 0, -23 }, // 0x6A 'j' - { 3238, 17, 25, 18, 1, -24 }, // 0x6B 'k' - { 3292, 8, 25, 9, 0, -24 }, // 0x6C 'l' - { 3317, 26, 16, 27, 1, -15 }, // 0x6D 'm' - { 3369, 16, 16, 17, 1, -15 }, // 0x6E 'n' - { 3401, 16, 16, 17, 1, -15 }, // 0x6F 'o' - { 3433, 16, 24, 17, 1, -15 }, // 0x70 'p' - { 3481, 16, 24, 17, 1, -15 }, // 0x71 'q' - { 3529, 11, 16, 12, 1, -15 }, // 0x72 'r' - { 3551, 10, 16, 13, 1, -15 }, // 0x73 's' - { 3571, 8, 19, 10, 2, -18 }, // 0x74 't' - { 3590, 16, 16, 17, 1, -15 }, // 0x75 'u' - { 3622, 16, 16, 16, 0, -15 }, // 0x76 'v' - { 3654, 24, 16, 24, 0, -15 }, // 0x77 'w' - { 3702, 17, 16, 17, 0, -15 }, // 0x78 'x' - { 3736, 16, 24, 16, 0, -15 }, // 0x79 'y' - { 3784, 14, 16, 15, 0, -15 }, // 0x7A 'z' - { 3812, 8, 30, 17, 3, -23 }, // 0x7B '{' - { 3842, 2, 24, 7, 2, -23 }, // 0x7C '|' - { 3848, 8, 30, 17, 6, -22 }, // 0x7D '}' - { 3878, 16, 4, 17, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSerif18pt7b PROGMEM = { - (uint8_t *)FreeSerif18pt7bBitmaps, - (GFXglyph *)FreeSerif18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4558 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h deleted file mode 100644 index 99ff3f497..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h +++ /dev/null @@ -1,690 +0,0 @@ -const uint8_t FreeSerif24pt7bBitmaps[] PROGMEM = { - 0x77, 0xBF, 0xFF, 0xFF, 0xFF, 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x61, 0x08, - 0x42, 0x10, 0x84, 0x00, 0x00, 0xEF, 0xFF, 0xEE, 0x60, 0x6F, 0x0F, 0xF0, - 0xFF, 0x0F, 0xF0, 0xFF, 0x0F, 0x60, 0x66, 0x06, 0x60, 0x66, 0x06, 0x60, - 0x66, 0x06, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x07, - 0x03, 0x80, 0x0E, 0x06, 0x00, 0x18, 0x0C, 0x00, 0x30, 0x38, 0x00, 0xE0, - 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC1, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, - 0xF0, 0x18, 0x0C, 0x00, 0x70, 0x38, 0x00, 0xE0, 0x70, 0x01, 0xC0, 0xE0, - 0x03, 0x81, 0xC0, 0x07, 0x03, 0x80, 0x0C, 0x06, 0x07, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x06, - 0x03, 0x80, 0x0C, 0x06, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, - 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x00, 0x00, 0x40, 0x00, 0x08, - 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0xE4, 0xF8, 0x70, 0x87, 0x9C, 0x10, - 0x77, 0x02, 0x06, 0xE0, 0x40, 0xDC, 0x08, 0x0B, 0x81, 0x00, 0x78, 0x20, - 0x07, 0x84, 0x00, 0xFC, 0x80, 0x0F, 0xF0, 0x00, 0xFE, 0x00, 0x07, 0xF0, - 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x3F, 0xC0, 0x05, 0xFC, 0x00, 0x8F, - 0x80, 0x10, 0xF8, 0x02, 0x0F, 0x00, 0x40, 0xF0, 0x08, 0x1E, 0x01, 0x03, - 0xE0, 0x20, 0x7C, 0x04, 0x0F, 0xC0, 0x83, 0xBC, 0x10, 0xE3, 0xE2, 0x78, - 0x3F, 0xFE, 0x00, 0xFE, 0x00, 0x01, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFC, 0x01, 0xE0, 0x03, 0xC7, 0x81, 0xE0, - 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xE0, 0x10, 0x30, - 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, 0x02, 0x1C, - 0x00, 0x78, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, 0x01, 0x86, - 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, 0x80, 0xC3, - 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0xC1, 0x87, 0x81, 0x8F, 0x81, - 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, 0x10, 0x00, - 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, 0x06, 0x00, - 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, 0x01, 0x00, - 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, 0xC3, 0x80, - 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x00, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x70, 0xE0, 0x00, - 0x00, 0xE0, 0x60, 0x00, 0x00, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, - 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x30, 0x00, 0x01, 0xC0, 0x70, 0x00, - 0x01, 0xE0, 0xE0, 0x00, 0x01, 0xE1, 0xC0, 0x00, 0x00, 0xF3, 0x80, 0x00, - 0x00, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x03, 0xF0, 0x00, 0xF8, 0x01, 0xE0, - 0x01, 0xFC, 0x01, 0xC0, 0x07, 0x7C, 0x01, 0xC0, 0x0F, 0x3E, 0x01, 0x80, - 0x1E, 0x3E, 0x03, 0x00, 0x3C, 0x1F, 0x03, 0x00, 0x7C, 0x1F, 0x06, 0x00, - 0x78, 0x0F, 0x86, 0x00, 0x78, 0x07, 0xCC, 0x00, 0xF8, 0x07, 0xE8, 0x00, - 0xF8, 0x03, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x00, 0xF8, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0xFC, 0x01, 0xFC, 0x01, 0xFE, 0x01, 0x7E, 0x03, 0xBF, 0x86, - 0x7F, 0x0F, 0x1F, 0xFE, 0x3F, 0xFC, 0x0F, 0xF8, 0x0F, 0xE0, 0x03, 0xF0, - 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x00, 0x10, 0x02, 0x00, 0xC0, 0x18, - 0x03, 0x00, 0x60, 0x0E, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x38, 0x03, 0x80, - 0x78, 0x07, 0x00, 0x70, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x07, 0x00, 0x70, 0x07, 0x80, - 0x38, 0x03, 0x80, 0x38, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x06, 0x00, 0x30, - 0x01, 0x80, 0x0C, 0x00, 0x60, 0x03, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, - 0x0C, 0x00, 0x60, 0x07, 0x00, 0x30, 0x03, 0x80, 0x1C, 0x01, 0xC0, 0x1C, - 0x01, 0xE0, 0x0E, 0x00, 0xE0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0E, 0x00, 0xE0, 0x1E, - 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x38, 0x03, 0x00, 0x70, 0x0E, 0x00, 0xC0, - 0x18, 0x03, 0x00, 0x40, 0x08, 0x00, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, - 0x43, 0x86, 0xE1, 0x0F, 0xF1, 0x1F, 0xF9, 0x3E, 0x3D, 0x78, 0x07, 0xC0, - 0x01, 0x00, 0x07, 0xC0, 0x19, 0x30, 0xF9, 0x1E, 0xF1, 0x0F, 0xE1, 0x07, - 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x00, 0x38, 0x00, 0x00, - 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, - 0x00, 0x00, 0xE0, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, - 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, - 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0x73, 0xEF, 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, - 0xFF, 0xFF, 0xFC, 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x1C, 0x00, 0xE0, 0x03, - 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x03, - 0x80, 0x1C, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, 0x07, - 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x07, - 0x00, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0x00, 0xFC, 0x00, 0x0E, 0x1C, 0x00, 0x70, 0x38, 0x03, - 0x80, 0x70, 0x1E, 0x01, 0xE0, 0xF0, 0x03, 0x83, 0xC0, 0x0F, 0x0F, 0x00, - 0x3C, 0x7C, 0x00, 0xF9, 0xE0, 0x01, 0xE7, 0x80, 0x07, 0xBE, 0x00, 0x1F, - 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, - 0x7F, 0xE0, 0x01, 0xF7, 0x80, 0x07, 0x9E, 0x00, 0x1E, 0x7C, 0x00, 0xF8, - 0xF0, 0x03, 0xC3, 0xC0, 0x0F, 0x07, 0x00, 0x38, 0x1E, 0x01, 0xE0, 0x38, - 0x07, 0x00, 0x70, 0x38, 0x00, 0xE1, 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x80, - 0x1C, 0x03, 0xE0, 0x7F, 0x0C, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, 0xF0, - 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1E, 0x00, - 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x3F, - 0x0F, 0xFF, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x07, 0xFF, 0xE0, 0x70, 0x3F, - 0x83, 0x00, 0x7C, 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3C, 0x80, - 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, - 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x70, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x43, 0x00, - 0x02, 0x30, 0x00, 0x23, 0xFF, 0xFF, 0x3F, 0xFF, 0xF3, 0xFF, 0xFF, 0x80, - 0x03, 0xF8, 0x03, 0xFF, 0x01, 0x83, 0xE0, 0x80, 0x3C, 0x40, 0x0F, 0x10, - 0x01, 0xC8, 0x00, 0x70, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x03, 0x00, 0x00, - 0x80, 0x00, 0xC0, 0x00, 0x78, 0x00, 0x7F, 0x80, 0x7F, 0xF0, 0x01, 0xFE, - 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x1C, 0x00, 0x07, 0x00, 0x01, 0x80, 0x00, 0x60, 0x00, - 0x30, 0x00, 0x0C, 0x70, 0x06, 0x3F, 0x07, 0x0F, 0xFF, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x01, - 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xDC, 0x00, 0x0C, 0xE0, 0x00, 0x47, 0x00, - 0x06, 0x38, 0x00, 0x61, 0xC0, 0x06, 0x0E, 0x00, 0x30, 0x70, 0x03, 0x03, - 0x80, 0x30, 0x1C, 0x01, 0x80, 0xE0, 0x18, 0x07, 0x01, 0x80, 0x38, 0x08, - 0x01, 0xC0, 0xC0, 0x0E, 0x0C, 0x00, 0x70, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, - 0xE0, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x01, 0xC0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x00, 0x00, - 0x40, 0x7F, 0xF8, 0x1F, 0xFE, 0x03, 0xFF, 0xC0, 0xC0, 0x00, 0x18, 0x00, - 0x06, 0x00, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x07, 0xF8, 0x00, 0xFF, 0xC0, - 0x3F, 0xFE, 0x00, 0xFF, 0xE0, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x1C, - 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x30, - 0x00, 0x0E, 0x00, 0x01, 0x80, 0x00, 0x71, 0xE0, 0x1C, 0x3F, 0x07, 0x07, - 0xFF, 0x80, 0x3F, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, - 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xC7, 0xE0, 0x3E, 0xFF, 0xC3, 0xF8, 0x3F, 0x1F, 0x80, 0x7C, 0xF8, - 0x03, 0xF7, 0xC0, 0x0F, 0xBE, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0x80, 0x0F, - 0xFC, 0x00, 0x7F, 0xE0, 0x03, 0xFF, 0x00, 0x1F, 0x78, 0x00, 0xFB, 0xE0, - 0x07, 0x9F, 0x00, 0x3C, 0x78, 0x03, 0xE3, 0xE0, 0x1E, 0x0F, 0x81, 0xE0, - 0x3E, 0x1E, 0x00, 0xFF, 0xE0, 0x00, 0xFC, 0x00, 0x3F, 0xFF, 0xF3, 0xFF, - 0xFF, 0x3F, 0xFF, 0xE7, 0x00, 0x0E, 0x40, 0x00, 0xEC, 0x00, 0x1C, 0x80, - 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x38, - 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, - 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0x01, - 0xC0, 0x00, 0x03, 0xF0, 0x03, 0xFF, 0x03, 0xC1, 0xE0, 0xC0, 0x1C, 0x70, - 0x07, 0x18, 0x00, 0xEE, 0x00, 0x3B, 0x80, 0x0E, 0xF0, 0x03, 0xBC, 0x00, - 0xE7, 0x80, 0x71, 0xF0, 0x38, 0x3E, 0x1C, 0x07, 0xEE, 0x00, 0xFE, 0x00, - 0x1F, 0xC0, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC7, 0xE0, 0xE0, 0xFC, 0x70, - 0x0F, 0x98, 0x01, 0xEE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x01, 0xF8, 0x00, - 0x7E, 0x00, 0x1F, 0xC0, 0x07, 0x70, 0x03, 0x9E, 0x00, 0xE3, 0xE0, 0xF0, - 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC3, - 0xE0, 0x3C, 0x0F, 0x83, 0xC0, 0x3C, 0x3E, 0x00, 0xF1, 0xE0, 0x07, 0xCF, - 0x00, 0x3E, 0xF8, 0x00, 0xF7, 0xC0, 0x07, 0xFE, 0x00, 0x3F, 0xF0, 0x01, - 0xFF, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, 0x03, 0xEF, 0x80, 0x1F, 0x7C, - 0x00, 0xF9, 0xF0, 0x0F, 0xC7, 0xE1, 0xFC, 0x1F, 0xF9, 0xE0, 0x3F, 0x1F, - 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, - 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, - 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x00, 0x77, 0xFF, 0xF7, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xBF, 0xFF, 0xB8, 0x39, 0xF7, - 0xDF, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0xEF, - 0xFF, 0x7C, 0x10, 0x42, 0x08, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, - 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, - 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, 0xE0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x07, - 0xF8, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xE0, - 0x0F, 0xFE, 0x0C, 0x1F, 0x88, 0x03, 0xEC, 0x01, 0xF7, 0x00, 0x7F, 0xC0, - 0x3F, 0xE0, 0x1F, 0x70, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, - 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0x30, 0x00, 0x10, - 0x00, 0x18, 0x00, 0x08, 0x00, 0x04, 0x00, 0x06, 0x00, 0x02, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x03, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x3F, - 0xFF, 0x00, 0x00, 0xFC, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x07, 0xC0, - 0x00, 0x30, 0x0F, 0x00, 0x00, 0x18, 0x1E, 0x00, 0x00, 0x0C, 0x1E, 0x00, - 0x00, 0x04, 0x3C, 0x00, 0xF8, 0x06, 0x3C, 0x01, 0xFD, 0xC2, 0x78, 0x03, - 0xC7, 0xC3, 0x78, 0x07, 0x07, 0x81, 0xF0, 0x0E, 0x03, 0x81, 0xF0, 0x0E, - 0x03, 0x81, 0xF0, 0x1C, 0x07, 0x81, 0xF0, 0x1C, 0x07, 0x01, 0xF0, 0x38, - 0x07, 0x01, 0xF0, 0x38, 0x07, 0x03, 0xF0, 0x38, 0x0F, 0x02, 0xF0, 0x38, - 0x0E, 0x02, 0xF0, 0x38, 0x1E, 0x04, 0x78, 0x38, 0x1E, 0x0C, 0x78, 0x1C, - 0x6E, 0x18, 0x38, 0x1F, 0xC7, 0xF0, 0x3C, 0x0F, 0x03, 0xE0, 0x1E, 0x00, - 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x60, 0x00, 0xFC, 0x03, 0xE0, 0x00, 0x3F, - 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, - 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x0D, - 0xF0, 0x00, 0x00, 0x0D, 0xF0, 0x00, 0x00, 0x18, 0xF0, 0x00, 0x00, 0x18, - 0xF8, 0x00, 0x00, 0x38, 0x78, 0x00, 0x00, 0x30, 0x7C, 0x00, 0x00, 0x30, - 0x7C, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0x60, 0x3E, 0x00, 0x00, 0xE0, - 0x1E, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x00, 0xC0, 0x1F, 0x00, 0x01, 0x80, - 0x0F, 0x80, 0x01, 0xFF, 0xFF, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, 0x00, - 0x07, 0xC0, 0x07, 0x00, 0x07, 0xC0, 0x06, 0x00, 0x03, 0xE0, 0x06, 0x00, - 0x03, 0xE0, 0x0E, 0x00, 0x01, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x1C, 0x00, - 0x01, 0xF8, 0x3C, 0x00, 0x01, 0xF8, 0x7E, 0x00, 0x01, 0xFC, 0xFF, 0x80, - 0x0F, 0xFF, 0xFF, 0xFF, 0xE0, 0x03, 0xFF, 0xFF, 0x80, 0x1F, 0x01, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF8, 0x0F, 0x80, 0x1F, 0x81, 0xF0, - 0x01, 0xF0, 0x3E, 0x00, 0x3E, 0x07, 0xC0, 0x07, 0xC0, 0xF8, 0x00, 0xF8, - 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, 0xC0, 0x7C, 0x01, 0xF0, 0x0F, 0x80, - 0xFC, 0x01, 0xFF, 0xFE, 0x00, 0x3F, 0xFF, 0xC0, 0x07, 0xC0, 0x7F, 0x00, - 0xF8, 0x01, 0xF0, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x03, 0xE0, 0x7C, 0x00, - 0x3E, 0x0F, 0x80, 0x07, 0xC1, 0xF0, 0x00, 0xF8, 0x3E, 0x00, 0x1F, 0x07, - 0xC0, 0x03, 0xE0, 0xF8, 0x00, 0xF8, 0x1F, 0x00, 0x1F, 0x03, 0xE0, 0x07, - 0xC0, 0x7C, 0x07, 0xF0, 0x1F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x00, 0x00, - 0x1F, 0xF0, 0x20, 0x07, 0xFF, 0xEE, 0x01, 0xF8, 0x1F, 0xE0, 0x3E, 0x00, - 0x7E, 0x07, 0x80, 0x01, 0xE0, 0xF0, 0x00, 0x1E, 0x1F, 0x00, 0x00, 0xE3, - 0xE0, 0x00, 0x06, 0x3C, 0x00, 0x00, 0x67, 0xC0, 0x00, 0x02, 0x7C, 0x00, - 0x00, 0x27, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x02, 0x0F, 0x80, 0x00, 0xE0, 0x7E, 0x00, 0x1C, 0x03, 0xF8, 0x0F, 0x00, - 0x0F, 0xFF, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, - 0xFF, 0xF8, 0x00, 0x3E, 0x03, 0xFC, 0x00, 0x7C, 0x00, 0xFC, 0x00, 0xF8, - 0x00, 0x7E, 0x01, 0xF0, 0x00, 0x7E, 0x03, 0xE0, 0x00, 0x7C, 0x07, 0xC0, - 0x00, 0x7C, 0x0F, 0x80, 0x00, 0xF8, 0x1F, 0x00, 0x00, 0xF8, 0x3E, 0x00, - 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xF0, 0xF8, 0x00, 0x03, 0xE1, 0xF0, 0x00, - 0x07, 0xC3, 0xE0, 0x00, 0x0F, 0x87, 0xC0, 0x00, 0x1F, 0x0F, 0x80, 0x00, - 0x3E, 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, - 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xF0, 0x00, 0x0F, 0x83, 0xE0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0x7C, 0x0F, 0x80, 0x01, 0xF0, 0x1F, 0x00, 0x03, 0xE0, - 0x3E, 0x00, 0x1F, 0x80, 0x7C, 0x00, 0x7C, 0x00, 0xF8, 0x0F, 0xF0, 0x07, - 0xFF, 0xFF, 0x80, 0x3F, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x07, - 0xFF, 0xFF, 0xE0, 0x7C, 0x00, 0x1C, 0x0F, 0x80, 0x01, 0x81, 0xF0, 0x00, - 0x30, 0x3E, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x20, 0x0F, 0x80, 0x04, - 0x01, 0xF0, 0x01, 0x80, 0x3E, 0x00, 0x70, 0x07, 0xFF, 0xFE, 0x00, 0xFF, - 0xFF, 0xC0, 0x1F, 0x00, 0x38, 0x03, 0xE0, 0x03, 0x00, 0x7C, 0x00, 0x20, - 0x0F, 0x80, 0x04, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0x1F, 0x00, 0x00, 0x43, 0xE0, 0x00, 0x18, - 0x7C, 0x00, 0x07, 0x0F, 0x80, 0x01, 0xC1, 0xF0, 0x00, 0xF8, 0x7F, 0xFF, - 0xFF, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0x1F, - 0x00, 0x07, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x03, 0x1F, 0x00, 0x01, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x38, 0x1F, - 0xFF, 0xF8, 0x1F, 0xFF, 0xF8, 0x1F, 0x00, 0x38, 0x1F, 0x00, 0x18, 0x1F, - 0x00, 0x08, 0x1F, 0x00, 0x08, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0xFF, - 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, 0xFF, 0xFE, 0x70, 0x07, 0xE0, - 0x1F, 0xE0, 0x1F, 0x00, 0x0F, 0xC0, 0x78, 0x00, 0x07, 0x81, 0xE0, 0x00, - 0x07, 0x07, 0xC0, 0x00, 0x0E, 0x1F, 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x00, - 0x08, 0xF8, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, - 0x7C, 0x00, 0x03, 0xFF, 0xF8, 0x00, 0x01, 0xFD, 0xF0, 0x00, 0x01, 0xF3, - 0xE0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x07, 0xCF, 0x80, 0x00, 0x0F, 0x8F, - 0x80, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, 0x00, 0x7C, 0x3E, - 0x00, 0x00, 0xF8, 0x7C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0xFC, - 0x00, 0x07, 0xC0, 0xFC, 0x00, 0x0F, 0x80, 0x7C, 0x00, 0x3F, 0x00, 0x7F, - 0x01, 0xFC, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xE0, - 0x1F, 0xFC, 0xFE, 0x00, 0x1F, 0xC1, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, - 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, - 0x00, 0x0F, 0x81, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFF, 0xF8, 0x1F, 0x00, - 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, - 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, 0xF0, 0x00, 0x3E, - 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0x7C, 0x00, 0x0F, 0x81, - 0xF0, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0xF8, 0x1F, 0x00, 0x03, 0xE0, 0xFE, - 0x00, 0x1F, 0xCF, 0xFE, 0x01, 0xFF, 0xC0, 0xFF, 0xF8, 0xFE, 0x03, 0xE0, - 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x03, - 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, - 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, - 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0xE3, 0xFF, 0xE0, 0x0F, 0xFF, - 0x80, 0xFE, 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, - 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, - 0x00, 0x3E, 0x00, 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, - 0xF0, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x0E, 0x1E, 0x0F, 0x8F, 0x07, - 0xCF, 0x01, 0xFF, 0x00, 0x7E, 0x00, 0xFF, 0xF8, 0x3F, 0xFC, 0x3F, 0xC0, - 0x07, 0xE0, 0x0F, 0x80, 0x07, 0x80, 0x0F, 0x80, 0x07, 0x00, 0x0F, 0x80, - 0x0E, 0x00, 0x0F, 0x80, 0x1C, 0x00, 0x0F, 0x80, 0x38, 0x00, 0x0F, 0x80, - 0x70, 0x00, 0x0F, 0x80, 0xE0, 0x00, 0x0F, 0x81, 0xC0, 0x00, 0x0F, 0x83, - 0x80, 0x00, 0x0F, 0x87, 0x00, 0x00, 0x0F, 0x9E, 0x00, 0x00, 0x0F, 0xBC, - 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xDF, - 0x80, 0x00, 0x0F, 0x8F, 0xC0, 0x00, 0x0F, 0x87, 0xE0, 0x00, 0x0F, 0x83, - 0xF0, 0x00, 0x0F, 0x81, 0xF8, 0x00, 0x0F, 0x80, 0xFC, 0x00, 0x0F, 0x80, - 0x7E, 0x00, 0x0F, 0x80, 0x3F, 0x00, 0x0F, 0x80, 0x3F, 0x80, 0x0F, 0x80, - 0x1F, 0x80, 0x0F, 0x80, 0x0F, 0xC0, 0x0F, 0x80, 0x07, 0xE0, 0x0F, 0x80, - 0x07, 0xF0, 0x1F, 0xC0, 0x07, 0xFC, 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xF0, - 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x7C, 0x00, 0x01, 0x1F, 0x00, 0x00, 0xC7, 0xC0, 0x00, 0x21, 0xF0, - 0x00, 0x18, 0x7C, 0x00, 0x0E, 0x1F, 0x00, 0x1F, 0x8F, 0xFF, 0xFF, 0xCF, - 0xFF, 0xFF, 0xF0, 0xFF, 0x80, 0x00, 0x03, 0xFE, 0x7F, 0x80, 0x00, 0x07, - 0xF0, 0x3F, 0x00, 0x00, 0x1F, 0xC0, 0x7E, 0x00, 0x00, 0x3F, 0x80, 0xFE, - 0x00, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x01, 0xBE, 0x03, 0x7C, 0x00, 0x03, - 0x7C, 0x06, 0xF8, 0x00, 0x0E, 0xF8, 0x0D, 0xF8, 0x00, 0x19, 0xF0, 0x19, - 0xF0, 0x00, 0x73, 0xE0, 0x33, 0xF0, 0x00, 0xC7, 0xC0, 0x63, 0xE0, 0x03, - 0x8F, 0x80, 0xC7, 0xE0, 0x06, 0x1F, 0x01, 0x87, 0xC0, 0x1C, 0x3E, 0x03, - 0x0F, 0xC0, 0x30, 0x7C, 0x06, 0x0F, 0x80, 0x60, 0xF8, 0x0C, 0x1F, 0x81, - 0x81, 0xF0, 0x18, 0x1F, 0x03, 0x03, 0xE0, 0x30, 0x3F, 0x0C, 0x07, 0xC0, - 0x60, 0x3E, 0x18, 0x0F, 0x80, 0xC0, 0x7C, 0x70, 0x1F, 0x01, 0x80, 0x7C, - 0xC0, 0x3E, 0x03, 0x00, 0xFB, 0x80, 0x7C, 0x06, 0x00, 0xFE, 0x00, 0xF8, - 0x0C, 0x01, 0xFC, 0x01, 0xF0, 0x18, 0x03, 0xF0, 0x03, 0xE0, 0x30, 0x03, - 0xE0, 0x07, 0xC0, 0x60, 0x07, 0x80, 0x0F, 0x81, 0xE0, 0x07, 0x00, 0x1F, - 0x07, 0xE0, 0x0C, 0x00, 0xFF, 0x3F, 0xF0, 0x08, 0x07, 0xFF, 0x80, 0xFF, - 0x00, 0x03, 0xFF, 0x3F, 0x80, 0x00, 0xFC, 0x1F, 0xC0, 0x00, 0x78, 0x0F, - 0xC0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xF0, 0x00, 0x30, 0x0D, - 0xF8, 0x00, 0x30, 0x0D, 0xFC, 0x00, 0x30, 0x0C, 0xFC, 0x00, 0x30, 0x0C, - 0x7E, 0x00, 0x30, 0x0C, 0x3F, 0x00, 0x30, 0x0C, 0x1F, 0x80, 0x30, 0x0C, - 0x1F, 0xC0, 0x30, 0x0C, 0x0F, 0xE0, 0x30, 0x0C, 0x07, 0xE0, 0x30, 0x0C, - 0x03, 0xF0, 0x30, 0x0C, 0x01, 0xF8, 0x30, 0x0C, 0x01, 0xFC, 0x30, 0x0C, - 0x00, 0xFE, 0x30, 0x0C, 0x00, 0x7E, 0x30, 0x0C, 0x00, 0x3F, 0x30, 0x0C, - 0x00, 0x1F, 0xB0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, - 0x00, 0x07, 0xF0, 0x0C, 0x00, 0x03, 0xF0, 0x0C, 0x00, 0x01, 0xF0, 0x0C, - 0x00, 0x00, 0xF0, 0x1E, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x70, 0xFF, - 0xC0, 0x00, 0x30, 0x00, 0x00, 0x00, 0x10, 0x00, 0x1F, 0xE0, 0x00, 0x03, - 0xFF, 0xF0, 0x00, 0x1F, 0x03, 0xE0, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, - 0x07, 0xC0, 0x7C, 0x00, 0x0F, 0x01, 0xE0, 0x00, 0x1E, 0x0F, 0x80, 0x00, - 0x7C, 0x3C, 0x00, 0x00, 0xF1, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, - 0x9E, 0x00, 0x00, 0x1E, 0xF8, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x01, 0xFF, - 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xE0, - 0x00, 0x01, 0xFF, 0x80, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x1F, 0xF8, 0x00, - 0x00, 0x7D, 0xF0, 0x00, 0x03, 0xE7, 0xC0, 0x00, 0x0F, 0x9F, 0x00, 0x00, - 0x3E, 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x07, 0xC1, 0xE0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0xF8, 0x0F, 0x80, 0x07, 0xC0, 0x1F, 0x00, 0x3E, 0x00, - 0x1F, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0xFF, - 0xFF, 0x00, 0x7F, 0xFF, 0x80, 0x7C, 0x1F, 0xC0, 0xF8, 0x07, 0xC1, 0xF0, - 0x07, 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x0F, 0x8F, 0x80, 0x1F, 0x1F, 0x00, - 0x3E, 0x3E, 0x00, 0x7C, 0x7C, 0x00, 0xF8, 0xF8, 0x01, 0xF1, 0xF0, 0x07, - 0xC3, 0xE0, 0x0F, 0x87, 0xC0, 0x3E, 0x0F, 0x81, 0xF8, 0x1F, 0xFF, 0xC0, - 0x3F, 0xFE, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xF0, - 0x00, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFF, 0xF8, - 0x00, 0x07, 0xC0, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x7C, - 0x03, 0xE0, 0x00, 0x7C, 0x07, 0x80, 0x00, 0x78, 0x1F, 0x00, 0x00, 0xF8, - 0x3C, 0x00, 0x00, 0xF0, 0xF8, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x03, 0xE3, - 0xC0, 0x00, 0x03, 0xCF, 0x80, 0x00, 0x07, 0xDF, 0x00, 0x00, 0x0F, 0xBE, - 0x00, 0x00, 0x1F, 0x7C, 0x00, 0x00, 0x3E, 0xF8, 0x00, 0x00, 0x7D, 0xF0, - 0x00, 0x00, 0xFB, 0xE0, 0x00, 0x01, 0xF7, 0xC0, 0x00, 0x03, 0xEF, 0x80, - 0x00, 0x07, 0xCF, 0x00, 0x00, 0x1F, 0x1F, 0x00, 0x00, 0x3E, 0x3E, 0x00, - 0x00, 0x7C, 0x3C, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x03, 0xE0, 0x78, 0x00, - 0x0F, 0x80, 0x78, 0x00, 0x1E, 0x00, 0x78, 0x00, 0x78, 0x00, 0x7C, 0x03, - 0xE0, 0x00, 0x3F, 0x3F, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x1F, - 0x03, 0xF8, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x03, - 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, - 0xF0, 0x03, 0xE0, 0x1F, 0x00, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x0F, 0x80, 0x1F, 0x07, 0xF0, 0x01, 0xFF, 0xFC, 0x00, - 0x1F, 0xFE, 0x00, 0x01, 0xF1, 0xF0, 0x00, 0x1F, 0x1F, 0x80, 0x01, 0xF0, - 0xF8, 0x00, 0x1F, 0x07, 0xC0, 0x01, 0xF0, 0x3E, 0x00, 0x1F, 0x03, 0xF0, - 0x01, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0xFC, 0x01, 0xF0, 0x07, 0xC0, 0x1F, - 0x00, 0x7E, 0x01, 0xF0, 0x03, 0xF0, 0x1F, 0x00, 0x1F, 0x83, 0xF8, 0x00, - 0xFC, 0xFF, 0xF0, 0x0F, 0xF0, 0x03, 0xF0, 0x20, 0x7F, 0xF3, 0x07, 0xC1, - 0xF8, 0x78, 0x03, 0xC3, 0x80, 0x0E, 0x3C, 0x00, 0x31, 0xE0, 0x01, 0xCF, - 0x00, 0x06, 0x7C, 0x00, 0x33, 0xE0, 0x01, 0x9F, 0x80, 0x00, 0x7E, 0x00, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0xE0, 0x00, 0xFF, 0xC0, 0x01, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x7F, - 0x00, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, - 0x07, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1F, 0x3C, 0x01, 0xF1, - 0xF8, 0x1F, 0x0C, 0xFF, 0xF0, 0x40, 0xFE, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x7C, 0x07, 0xF0, 0x0F, 0x80, 0x3C, 0x01, 0xF0, - 0x07, 0x00, 0x3E, 0x00, 0x60, 0x07, 0xC0, 0x08, 0x00, 0xF8, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x7F, - 0x00, 0x00, 0x7F, 0xFC, 0x00, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, - 0xFC, 0x0F, 0x80, 0x00, 0x78, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, - 0x30, 0x0F, 0x80, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x20, 0x07, 0xC0, 0x00, - 0x60, 0x07, 0xC0, 0x00, 0x60, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xF0, 0x01, - 0xC0, 0x01, 0xFC, 0x07, 0x80, 0x00, 0x7F, 0xFE, 0x00, 0x00, 0x0F, 0xF8, - 0x00, 0xFF, 0xF8, 0x01, 0xFF, 0x3F, 0xC0, 0x00, 0x7E, 0x0F, 0x80, 0x00, - 0x3C, 0x0F, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, 0x38, 0x07, 0xC0, 0x00, - 0x30, 0x03, 0xE0, 0x00, 0x70, 0x03, 0xE0, 0x00, 0x60, 0x01, 0xF0, 0x00, - 0x60, 0x01, 0xF0, 0x00, 0xE0, 0x01, 0xF8, 0x00, 0xC0, 0x00, 0xF8, 0x01, - 0xC0, 0x00, 0xF8, 0x01, 0x80, 0x00, 0x7C, 0x01, 0x80, 0x00, 0x7C, 0x03, - 0x80, 0x00, 0x3E, 0x03, 0x00, 0x00, 0x3E, 0x07, 0x00, 0x00, 0x1F, 0x06, - 0x00, 0x00, 0x1F, 0x06, 0x00, 0x00, 0x1F, 0x8E, 0x00, 0x00, 0x0F, 0x8C, - 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x07, 0xD8, 0x00, 0x00, 0x07, 0xD8, - 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x00, 0xE0, - 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x40, 0x00, 0xFF, 0xF1, 0xFF, - 0xF0, 0x1F, 0xF3, 0xF8, 0x07, 0xF8, 0x00, 0x7C, 0x1F, 0x80, 0x3F, 0x00, - 0x03, 0x80, 0xF8, 0x01, 0xF0, 0x00, 0x30, 0x0F, 0x80, 0x1F, 0x00, 0x03, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x30, 0x07, 0xC0, 0x0F, 0x80, 0x06, 0x00, - 0x3E, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0xC0, 0x06, 0x00, 0x3E, - 0x00, 0x7C, 0x00, 0xC0, 0x01, 0xF0, 0x07, 0xE0, 0x0C, 0x00, 0x1F, 0x00, - 0xFE, 0x01, 0xC0, 0x01, 0xF0, 0x0D, 0xE0, 0x18, 0x00, 0x0F, 0x80, 0xDF, - 0x01, 0x80, 0x00, 0xF8, 0x19, 0xF0, 0x30, 0x00, 0x07, 0xC1, 0x8F, 0x83, - 0x00, 0x00, 0x7C, 0x38, 0xF8, 0x30, 0x00, 0x07, 0xC3, 0x0F, 0x86, 0x00, - 0x00, 0x3E, 0x30, 0x7C, 0x60, 0x00, 0x03, 0xE7, 0x07, 0xCE, 0x00, 0x00, - 0x3E, 0x60, 0x3E, 0xC0, 0x00, 0x01, 0xF6, 0x03, 0xEC, 0x00, 0x00, 0x1F, - 0xE0, 0x3F, 0xC0, 0x00, 0x01, 0xFC, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0xC0, - 0x1F, 0x80, 0x00, 0x00, 0xF8, 0x01, 0xF8, 0x00, 0x00, 0x0F, 0x80, 0x0F, - 0x00, 0x00, 0x00, 0x78, 0x00, 0xF0, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x60, 0x00, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x20, 0x00, 0x7F, 0xFE, 0x03, 0xFF, 0x8F, 0xF8, 0x00, - 0x7E, 0x01, 0xFC, 0x00, 0x1C, 0x00, 0x7E, 0x00, 0x1C, 0x00, 0x1F, 0x00, - 0x0C, 0x00, 0x07, 0xC0, 0x0E, 0x00, 0x03, 0xF0, 0x0E, 0x00, 0x00, 0xF8, - 0x0E, 0x00, 0x00, 0x3E, 0x06, 0x00, 0x00, 0x1F, 0x86, 0x00, 0x00, 0x07, - 0xC7, 0x00, 0x00, 0x01, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x03, 0x9F, 0x00, 0x00, - 0x01, 0x8F, 0xC0, 0x00, 0x01, 0x83, 0xF0, 0x00, 0x01, 0xC0, 0xF8, 0x00, - 0x01, 0xC0, 0x7E, 0x00, 0x01, 0xC0, 0x1F, 0x80, 0x01, 0xC0, 0x07, 0xC0, - 0x00, 0xC0, 0x03, 0xF0, 0x00, 0xE0, 0x00, 0xFC, 0x00, 0xE0, 0x00, 0x7F, - 0x00, 0xF0, 0x00, 0x1F, 0x80, 0xFC, 0x00, 0x1F, 0xF3, 0xFF, 0x80, 0x7F, - 0xFE, 0xFF, 0xF8, 0x03, 0xFF, 0x3F, 0xE0, 0x00, 0x7C, 0x1F, 0xC0, 0x00, - 0x78, 0x0F, 0xC0, 0x00, 0x70, 0x07, 0xE0, 0x00, 0x60, 0x03, 0xF0, 0x00, - 0xE0, 0x01, 0xF0, 0x01, 0xC0, 0x01, 0xF8, 0x01, 0x80, 0x00, 0xFC, 0x03, - 0x80, 0x00, 0x7C, 0x07, 0x00, 0x00, 0x7E, 0x06, 0x00, 0x00, 0x3F, 0x0E, - 0x00, 0x00, 0x1F, 0x1C, 0x00, 0x00, 0x1F, 0x98, 0x00, 0x00, 0x0F, 0xF8, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x3F, 0xFF, 0xFF, 0xC7, 0xFF, 0xFF, 0xF8, - 0xF0, 0x00, 0x3E, 0x38, 0x00, 0x0F, 0x86, 0x00, 0x03, 0xF0, 0xC0, 0x00, - 0x7C, 0x10, 0x00, 0x1F, 0x02, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7E, - 0x00, 0x01, 0x0F, 0x80, 0x00, 0x63, 0xF0, 0x00, 0x0C, 0xFC, 0x00, 0x03, - 0xBF, 0x00, 0x00, 0xE7, 0xC0, 0x00, 0x7D, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, - 0xFF, 0xF0, 0xFF, 0xF0, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, - 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0F, 0x07, 0xFC, 0xE0, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1C, - 0x00, 0x70, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x1C, 0x00, 0x70, 0x01, - 0xC0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0x70, 0x01, 0xC0, 0x07, 0x00, - 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0xE0, 0x03, 0xC0, 0x07, 0xFF, 0x83, 0xC0, 0xE0, 0x70, 0x38, 0x1C, - 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, - 0x81, 0xC0, 0xE0, 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, - 0x70, 0x38, 0x1C, 0x0E, 0x07, 0x03, 0x81, 0xC0, 0xE0, 0x70, 0x3F, 0xFC, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xDC, - 0x00, 0x39, 0xC0, 0x07, 0x9E, 0x00, 0x70, 0xE0, 0x0F, 0x0F, 0x00, 0xE0, - 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, - 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xE0, 0x3C, 0x0F, 0x81, 0xF0, 0x1E, 0x03, 0xC0, 0x38, 0x07, 0x03, - 0xF0, 0x07, 0x0E, 0x03, 0x81, 0xC1, 0xE0, 0x30, 0x78, 0x0E, 0x1E, 0x03, - 0x83, 0x00, 0xE0, 0x00, 0x38, 0x00, 0x3E, 0x00, 0x73, 0x80, 0x70, 0xE0, - 0x70, 0x38, 0x38, 0x0E, 0x1C, 0x03, 0x8F, 0x00, 0xE3, 0xC0, 0x38, 0xF0, - 0x0E, 0x3E, 0x07, 0x8F, 0xC3, 0xE1, 0xFF, 0x3F, 0x1F, 0x07, 0x80, 0x06, - 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, - 0x00, 0x07, 0x80, 0x00, 0x3C, 0x7E, 0x01, 0xEF, 0xFC, 0x0F, 0xC3, 0xF0, - 0x7C, 0x07, 0x83, 0xC0, 0x3E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xC7, 0x80, - 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, 0x00, 0x3C, 0x78, 0x01, 0xE3, - 0xC0, 0x0F, 0x1E, 0x00, 0x70, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x3C, 0x01, - 0xC1, 0xE0, 0x1C, 0x0F, 0xC1, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, 0x01, - 0xFC, 0x00, 0xFF, 0xE0, 0x38, 0x3E, 0x0E, 0x03, 0xE3, 0x80, 0x7C, 0xE0, - 0x07, 0x18, 0x00, 0x03, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, - 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x1B, 0xC0, - 0x02, 0x7C, 0x01, 0x87, 0xE0, 0x60, 0x7F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, - 0x00, 0x00, 0x00, 0x60, 0x00, 0x0F, 0x80, 0x00, 0xFE, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x7C, 0x78, 0x07, 0xFD, - 0xE0, 0x3C, 0x3F, 0x81, 0xC0, 0x3E, 0x0E, 0x00, 0xF8, 0x38, 0x01, 0xE1, - 0xE0, 0x07, 0x87, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xC0, - 0x07, 0x8F, 0x00, 0x1E, 0x3C, 0x00, 0x78, 0xF0, 0x01, 0xE3, 0xE0, 0x07, - 0x87, 0x80, 0x1E, 0x1F, 0x00, 0x78, 0x3E, 0x03, 0xE0, 0xFC, 0x1F, 0xF0, - 0xFF, 0xDF, 0x00, 0xFC, 0x60, 0x03, 0xF8, 0x03, 0xFF, 0x01, 0xC1, 0xE0, - 0xC0, 0x3C, 0x70, 0x0F, 0x98, 0x01, 0xE7, 0xFF, 0xFB, 0xFF, 0xFE, 0xE0, - 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, 0x80, 0x00, 0xF0, 0x00, 0x3C, 0x00, - 0x1F, 0x00, 0x05, 0xE0, 0x02, 0x7C, 0x01, 0x8F, 0xC1, 0xC3, 0xFF, 0xE0, - 0x7F, 0xF0, 0x07, 0xF0, 0x00, 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xE3, 0xE0, - 0x60, 0x70, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x07, 0xFF, 0x83, 0xFF, 0xC0, 0x3C, - 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0F, 0x00, 0x07, 0x80, - 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3F, - 0x00, 0xFF, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x3F, 0xF0, 0x03, 0xC7, 0xFE, - 0x3C, 0x1F, 0xF1, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0xF0, 0x0E, 0x07, 0x80, - 0x70, 0x3C, 0x03, 0x81, 0xE0, 0x1C, 0x07, 0x80, 0xC0, 0x3E, 0x0E, 0x00, - 0x78, 0xE0, 0x01, 0xFC, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, - 0x01, 0xE0, 0x00, 0x0F, 0xFF, 0xC0, 0x3F, 0xFF, 0x80, 0xFF, 0xFE, 0x0C, - 0x00, 0x38, 0xC0, 0x00, 0x4C, 0x00, 0x02, 0x60, 0x00, 0x17, 0x00, 0x01, - 0x38, 0x00, 0x09, 0xE0, 0x00, 0x87, 0xC0, 0x38, 0x1F, 0xFF, 0x00, 0x3F, - 0xC0, 0x00, 0x06, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, - 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x87, 0xE0, 0x1E, - 0x7F, 0xC0, 0x7B, 0x0F, 0x81, 0xF8, 0x1E, 0x07, 0x80, 0x3C, 0x1E, 0x00, - 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, - 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, - 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, - 0xC3, 0xF0, 0x1F, 0x9F, 0xF1, 0xFF, 0x0E, 0x03, 0xE0, 0x7C, 0x0F, 0x80, - 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x70, - 0x7E, 0x1F, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, - 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, - 0xE7, 0xFF, 0x00, 0xE0, 0x1F, 0x01, 0xF0, 0x1F, 0x00, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x70, 0x3F, 0x07, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, - 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x00, 0xE0, 0x0E, 0xE0, - 0xEF, 0x1C, 0xFF, 0x87, 0xE0, 0x06, 0x00, 0x00, 0x7C, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x80, - 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, - 0x00, 0xF0, 0x7F, 0xE1, 0xE0, 0x3E, 0x03, 0xC0, 0x70, 0x07, 0x81, 0x80, - 0x0F, 0x06, 0x00, 0x1E, 0x18, 0x00, 0x3C, 0x60, 0x00, 0x79, 0x80, 0x00, - 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x03, 0xDE, 0x00, 0x07, 0x9E, 0x00, 0x0F, - 0x3E, 0x00, 0x1E, 0x3E, 0x00, 0x3C, 0x3E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x3C, 0x01, 0xE0, 0x7C, 0x03, 0xC0, 0x7C, 0x0F, 0xC0, 0xFE, 0x7F, 0xE3, - 0xFF, 0x03, 0x03, 0xE1, 0xFC, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0xE7, 0xFF, 0x1E, 0x1F, 0x01, - 0xF8, 0x1F, 0xCF, 0xF0, 0xFF, 0x80, 0xFF, 0x0F, 0x70, 0xF8, 0x0F, 0x81, - 0xF8, 0x0F, 0x01, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, - 0x80, 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, - 0x03, 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x0F, 0x00, 0xF0, - 0x07, 0x81, 0xE0, 0x1E, 0x00, 0xF0, 0x3C, 0x03, 0xC0, 0x1E, 0x07, 0x80, - 0x78, 0x03, 0xC0, 0xF0, 0x0F, 0x00, 0x78, 0x1E, 0x01, 0xE0, 0x0F, 0x03, - 0xC0, 0x3C, 0x01, 0xE0, 0x78, 0x07, 0x80, 0x3C, 0x1F, 0x81, 0xF8, 0x0F, - 0xCF, 0xFC, 0xFF, 0xC7, 0xFE, 0x1E, 0x1F, 0x83, 0xF9, 0xFF, 0x03, 0xFC, - 0x3E, 0x07, 0xC0, 0x7C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, - 0x07, 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, - 0x80, 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x07, 0x80, - 0x3C, 0x1E, 0x00, 0xF0, 0x78, 0x03, 0xC1, 0xE0, 0x0F, 0x0F, 0xC0, 0x7E, - 0x7F, 0xC3, 0xFC, 0x01, 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0xF0, 0x7C, 0x0F, - 0x80, 0xF8, 0x3C, 0x01, 0xF1, 0xE0, 0x03, 0xE7, 0x80, 0x0F, 0xBE, 0x00, - 0x3F, 0xF8, 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x07, 0xFE, 0x00, 0x1F, - 0xF8, 0x00, 0x7F, 0xF0, 0x01, 0xE7, 0xC0, 0x07, 0x9F, 0x80, 0x3E, 0x3E, - 0x00, 0xF0, 0x7C, 0x07, 0x80, 0xF8, 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFC, - 0x00, 0x0E, 0x3F, 0x07, 0xF7, 0xFE, 0x07, 0xE0, 0xF8, 0x3E, 0x03, 0xE1, - 0xE0, 0x0F, 0x0F, 0x00, 0x7C, 0x78, 0x03, 0xE3, 0xC0, 0x0F, 0x1E, 0x00, - 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x8F, - 0x00, 0x38, 0x78, 0x03, 0xC3, 0xC0, 0x1E, 0x1E, 0x00, 0xE0, 0xF8, 0x0E, - 0x07, 0xE0, 0xE0, 0x3D, 0xFE, 0x01, 0xE7, 0xC0, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x1F, 0x80, 0x03, 0xFF, 0x80, 0x00, 0x01, - 0xF8, 0x20, 0x3F, 0xF3, 0x03, 0xC1, 0xF8, 0x3C, 0x07, 0xC3, 0xC0, 0x1E, - 0x1C, 0x00, 0xF1, 0xE0, 0x07, 0x8E, 0x00, 0x3C, 0xF0, 0x01, 0xE7, 0x80, - 0x0F, 0x3C, 0x00, 0x79, 0xE0, 0x03, 0xCF, 0x00, 0x1E, 0x78, 0x00, 0xF3, - 0xE0, 0x07, 0x9F, 0x00, 0x3C, 0x7C, 0x01, 0xE3, 0xE0, 0x1F, 0x0F, 0xC1, - 0xF8, 0x3F, 0xF3, 0xC0, 0x7E, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x1E, 0x00, 0x03, 0xF8, 0x00, 0x7F, 0xE0, 0x06, 0x3C, 0xFC, - 0xFE, 0xFA, 0x78, 0xF8, 0x71, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x01, 0xF8, 0x0F, 0xFC, - 0x00, 0x1F, 0x91, 0x87, 0x98, 0x1D, 0xC0, 0x6E, 0x03, 0x70, 0x0B, 0xC0, - 0x5F, 0x80, 0x7E, 0x01, 0xFC, 0x07, 0xF0, 0x0F, 0xE0, 0x3F, 0x00, 0x7E, - 0x01, 0xF0, 0x07, 0xC0, 0x3E, 0x01, 0xF8, 0x0D, 0xE0, 0xC8, 0xF8, 0x00, - 0x04, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x3C, 0x07, 0xFC, 0xFF, 0xC3, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xE2, - 0x1F, 0xC0, 0xF8, 0xFC, 0x0F, 0xE1, 0xF0, 0x0F, 0x83, 0xC0, 0x1E, 0x0F, - 0x00, 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, - 0x78, 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, - 0x3C, 0x01, 0xE0, 0xF0, 0x07, 0x83, 0xC0, 0x1E, 0x0F, 0x00, 0x78, 0x3C, - 0x01, 0xE0, 0xF8, 0x0F, 0x81, 0xF0, 0xFF, 0x03, 0xFE, 0x7F, 0x07, 0xE1, - 0xC0, 0xFF, 0x81, 0xFC, 0xFC, 0x01, 0xC1, 0xE0, 0x07, 0x07, 0x80, 0x18, - 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x00, 0x78, 0x0C, 0x01, 0xE0, 0x30, 0x07, - 0x81, 0x80, 0x0F, 0x06, 0x00, 0x3C, 0x10, 0x00, 0x78, 0xC0, 0x01, 0xE3, - 0x00, 0x03, 0x98, 0x00, 0x0F, 0x60, 0x00, 0x3D, 0x00, 0x00, 0x7C, 0x00, - 0x01, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x40, 0x00, 0xFF, 0x8F, 0xF8, 0x3F, 0x7E, 0x07, 0xE0, 0x0E, 0x3E, 0x03, - 0xC0, 0x0C, 0x1E, 0x03, 0xE0, 0x0C, 0x1E, 0x01, 0xE0, 0x0C, 0x1E, 0x01, - 0xE0, 0x18, 0x0F, 0x00, 0xF0, 0x18, 0x0F, 0x01, 0xF0, 0x10, 0x07, 0x81, - 0xF0, 0x30, 0x07, 0x81, 0x78, 0x30, 0x07, 0x83, 0x78, 0x60, 0x03, 0xC3, - 0x38, 0x60, 0x03, 0xC6, 0x3C, 0x40, 0x01, 0xC6, 0x3C, 0xC0, 0x01, 0xEC, - 0x1E, 0xC0, 0x01, 0xEC, 0x1F, 0x80, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0xF8, - 0x0F, 0x00, 0x00, 0x70, 0x0F, 0x00, 0x00, 0x70, 0x07, 0x00, 0x00, 0x60, - 0x06, 0x00, 0x00, 0x20, 0x02, 0x00, 0x7F, 0xE7, 0xF0, 0x7E, 0x0F, 0x00, - 0xF8, 0x38, 0x01, 0xE0, 0xC0, 0x07, 0xC6, 0x00, 0x0F, 0x30, 0x00, 0x1E, - 0xC0, 0x00, 0x7E, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, - 0x00, 0x3F, 0x00, 0x00, 0xDE, 0x00, 0x06, 0x7C, 0x00, 0x30, 0xF0, 0x01, - 0xC1, 0xE0, 0x06, 0x07, 0xC0, 0x30, 0x0F, 0x01, 0xC0, 0x1E, 0x0F, 0x00, - 0xFC, 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0xFC, 0xFC, 0x01, 0xE1, 0xE0, 0x03, - 0x07, 0x80, 0x18, 0x0F, 0x00, 0x60, 0x3C, 0x01, 0x80, 0x78, 0x0C, 0x01, - 0xE0, 0x30, 0x03, 0xC0, 0xC0, 0x0F, 0x06, 0x00, 0x3E, 0x18, 0x00, 0x78, - 0x40, 0x01, 0xF3, 0x00, 0x03, 0xCC, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x06, 0x00, 0x00, - 0x18, 0x00, 0x00, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x60, - 0x00, 0x01, 0x80, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x00, 0x7F, 0x80, 0x01, - 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7F, 0xFF, 0x9F, 0xFF, 0xE6, 0x00, - 0xF1, 0x00, 0x78, 0x40, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, 0xE0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0x80, 0x03, - 0xE0, 0x01, 0xF0, 0x04, 0x78, 0x01, 0x3E, 0x00, 0xDF, 0x00, 0x37, 0x80, - 0x1F, 0xFF, 0xFE, 0xFF, 0xFF, 0x80, 0x01, 0xE0, 0x78, 0x1C, 0x07, 0x80, - 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x1C, 0x0E, 0x00, 0x70, - 0x07, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, - 0x1E, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x0F, 0x00, 0x70, 0x0F, 0x00, 0xE0, 0x1C, 0x03, - 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x01, 0xC0, 0x0E, 0x07, 0x01, 0xC0, 0x70, - 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x3C, 0x07, 0x03, 0xC0, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0x0F, 0x87, 0xB8, 0x0F, 0xFC, 0x00, - 0x07, 0xC0 }; - -const GFXglyph FreeSerif24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 5, 32, 16, 6, -31 }, // 0x21 '!' - { 20, 12, 12, 19, 4, -31 }, // 0x22 '"' - { 38, 23, 31, 23, 0, -30 }, // 0x23 '#' - { 128, 19, 37, 24, 2, -33 }, // 0x24 '$' - { 216, 33, 32, 39, 3, -30 }, // 0x25 '%' - { 348, 32, 33, 37, 2, -31 }, // 0x26 '&' - { 480, 4, 12, 9, 3, -31 }, // 0x27 ''' - { 486, 12, 40, 16, 2, -31 }, // 0x28 '(' - { 546, 12, 40, 16, 2, -30 }, // 0x29 ')' - { 606, 16, 19, 24, 4, -30 }, // 0x2A '*' - { 644, 23, 23, 27, 2, -22 }, // 0x2B '+' - { 711, 6, 11, 12, 2, -4 }, // 0x2C ',' - { 720, 11, 2, 16, 2, -10 }, // 0x2D '-' - { 723, 5, 5, 12, 3, -3 }, // 0x2E '.' - { 727, 14, 32, 14, 0, -30 }, // 0x2F '/' - { 783, 22, 33, 23, 1, -31 }, // 0x30 '0' - { 874, 13, 32, 24, 5, -31 }, // 0x31 '1' - { 926, 21, 31, 23, 1, -30 }, // 0x32 '2' - { 1008, 18, 32, 23, 2, -30 }, // 0x33 '3' - { 1080, 21, 31, 24, 1, -30 }, // 0x34 '4' - { 1162, 19, 33, 24, 2, -31 }, // 0x35 '5' - { 1241, 21, 33, 23, 2, -31 }, // 0x36 '6' - { 1328, 20, 31, 24, 1, -30 }, // 0x37 '7' - { 1406, 18, 33, 23, 3, -31 }, // 0x38 '8' - { 1481, 21, 33, 24, 1, -31 }, // 0x39 '9' - { 1568, 5, 22, 12, 4, -20 }, // 0x3A ':' - { 1582, 6, 27, 12, 3, -20 }, // 0x3B ';' - { 1603, 24, 25, 27, 1, -24 }, // 0x3C '<' - { 1678, 24, 11, 27, 1, -16 }, // 0x3D '=' - { 1711, 24, 25, 27, 2, -23 }, // 0x3E '>' - { 1786, 17, 32, 21, 3, -31 }, // 0x3F '?' - { 1854, 32, 33, 41, 4, -31 }, // 0x40 '@' - { 1986, 32, 32, 34, 1, -31 }, // 0x41 'A' - { 2114, 27, 31, 30, 0, -30 }, // 0x42 'B' - { 2219, 28, 33, 31, 2, -31 }, // 0x43 'C' - { 2335, 31, 31, 34, 1, -30 }, // 0x44 'D' - { 2456, 27, 31, 29, 2, -30 }, // 0x45 'E' - { 2561, 24, 31, 27, 2, -30 }, // 0x46 'F' - { 2654, 31, 33, 35, 2, -31 }, // 0x47 'G' - { 2782, 30, 31, 34, 2, -30 }, // 0x48 'H' - { 2899, 13, 31, 15, 1, -30 }, // 0x49 'I' - { 2950, 17, 32, 18, 0, -30 }, // 0x4A 'J' - { 3018, 32, 31, 33, 1, -30 }, // 0x4B 'K' - { 3142, 26, 31, 29, 2, -30 }, // 0x4C 'L' - { 3243, 39, 31, 41, 1, -30 }, // 0x4D 'M' - { 3395, 32, 32, 34, 1, -30 }, // 0x4E 'N' - { 3523, 30, 33, 34, 2, -31 }, // 0x4F 'O' - { 3647, 23, 31, 27, 2, -30 }, // 0x50 'P' - { 3737, 31, 40, 34, 2, -31 }, // 0x51 'Q' - { 3892, 28, 31, 31, 2, -30 }, // 0x52 'R' - { 4001, 21, 33, 25, 2, -31 }, // 0x53 'S' - { 4088, 27, 31, 28, 1, -30 }, // 0x54 'T' - { 4193, 32, 32, 34, 1, -30 }, // 0x55 'U' - { 4321, 32, 32, 33, 0, -30 }, // 0x56 'V' - { 4449, 44, 32, 45, 0, -30 }, // 0x57 'W' - { 4625, 33, 31, 34, 0, -30 }, // 0x58 'X' - { 4753, 32, 31, 33, 0, -30 }, // 0x59 'Y' - { 4877, 27, 31, 29, 1, -30 }, // 0x5A 'Z' - { 4982, 9, 38, 16, 4, -30 }, // 0x5B '[' - { 5025, 14, 32, 14, 0, -30 }, // 0x5C '\' - { 5081, 9, 38, 16, 3, -30 }, // 0x5D ']' - { 5124, 20, 17, 22, 1, -30 }, // 0x5E '^' - { 5167, 24, 2, 23, 0, 5 }, // 0x5F '_' - { 5173, 10, 8, 12, 1, -31 }, // 0x60 '`' - { 5183, 18, 21, 20, 1, -20 }, // 0x61 'a' - { 5231, 21, 32, 24, 1, -31 }, // 0x62 'b' - { 5315, 19, 21, 21, 1, -20 }, // 0x63 'c' - { 5365, 22, 32, 23, 1, -31 }, // 0x64 'd' - { 5453, 18, 21, 21, 1, -20 }, // 0x65 'e' - { 5501, 17, 33, 18, 0, -32 }, // 0x66 'f' - { 5572, 21, 31, 22, 1, -20 }, // 0x67 'g' - { 5654, 22, 32, 23, 0, -31 }, // 0x68 'h' - { 5742, 11, 32, 13, 0, -31 }, // 0x69 'i' - { 5786, 12, 42, 16, 0, -31 }, // 0x6A 'j' - { 5849, 23, 32, 24, 1, -31 }, // 0x6B 'k' - { 5941, 11, 32, 12, 0, -31 }, // 0x6C 'l' - { 5985, 35, 21, 37, 1, -20 }, // 0x6D 'm' - { 6077, 22, 21, 23, 0, -20 }, // 0x6E 'n' - { 6135, 22, 21, 23, 1, -20 }, // 0x6F 'o' - { 6193, 21, 31, 24, 1, -20 }, // 0x70 'p' - { 6275, 21, 31, 23, 1, -20 }, // 0x71 'q' - { 6357, 15, 21, 16, 1, -20 }, // 0x72 'r' - { 6397, 13, 21, 17, 2, -20 }, // 0x73 's' - { 6432, 12, 26, 13, 1, -25 }, // 0x74 't' - { 6471, 22, 21, 23, 1, -20 }, // 0x75 'u' - { 6529, 22, 22, 22, 0, -20 }, // 0x76 'v' - { 6590, 32, 22, 32, 0, -20 }, // 0x77 'w' - { 6678, 22, 21, 23, 0, -20 }, // 0x78 'x' - { 6736, 22, 31, 22, 0, -20 }, // 0x79 'y' - { 6822, 18, 21, 20, 1, -20 }, // 0x7A 'z' - { 6870, 11, 41, 23, 5, -31 }, // 0x7B '{' - { 6927, 3, 32, 9, 3, -30 }, // 0x7C '|' - { 6939, 11, 41, 23, 7, -31 }, // 0x7D '}' - { 6996, 22, 5, 23, 1, -13 } }; // 0x7E '~' - -const GFXfont FreeSerif24pt7b PROGMEM = { - (uint8_t *)FreeSerif24pt7bBitmaps, - (GFXglyph *)FreeSerif24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 7682 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h deleted file mode 100644 index cdb20c77b..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h +++ /dev/null @@ -1,195 +0,0 @@ -const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, - 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, - 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, - 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, - 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, - 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, - 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, - 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, - 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, - 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, - 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, - 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, - 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, - 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, - 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, - 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, - 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, - 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, - 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, - 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, - 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, - 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, - 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, - 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, - 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, - 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, - 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, - 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, - 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, - 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, - 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, - 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, - 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, - 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, - 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, - 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, - 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, - 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, - 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, - 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, - 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, - 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, - 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, - 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, - 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, - 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, - 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, - 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, - 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, - 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, - 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, - 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, - 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, - 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, - 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, - 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, - 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, - 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, - 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, - 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, - 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, - 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, - 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, - 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, - 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, - 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, - 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, - 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, - 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, - 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, - 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, - 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, - 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, - 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, - 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, - 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, - 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, - 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, - 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, - 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, - 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, - 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, - 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, - 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, - 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, - 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, - 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, - 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0 }; - -const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 2, 12, 6, 2, -11 }, // 0x21 '!' - { 3, 5, 4, 7, 1, -11 }, // 0x22 '"' - { 6, 9, 12, 9, 0, -11 }, // 0x23 '#' - { 20, 8, 14, 9, 1, -12 }, // 0x24 '$' - { 34, 13, 12, 15, 1, -11 }, // 0x25 '%' - { 54, 13, 13, 14, 1, -12 }, // 0x26 '&' - { 76, 2, 4, 4, 1, -11 }, // 0x27 ''' - { 77, 5, 15, 6, 1, -11 }, // 0x28 '(' - { 87, 5, 15, 6, 0, -11 }, // 0x29 ')' - { 97, 6, 8, 9, 3, -11 }, // 0x2A '*' - { 103, 9, 9, 10, 0, -8 }, // 0x2B '+' - { 114, 2, 3, 4, 2, 0 }, // 0x2C ',' - { 115, 4, 1, 6, 1, -3 }, // 0x2D '-' - { 116, 2, 2, 5, 1, -1 }, // 0x2E '.' - { 117, 5, 12, 5, 0, -11 }, // 0x2F '/' - { 125, 9, 13, 9, 0, -12 }, // 0x30 '0' - { 140, 5, 13, 9, 2, -12 }, // 0x31 '1' - { 149, 8, 12, 9, 1, -11 }, // 0x32 '2' - { 161, 8, 12, 9, 0, -11 }, // 0x33 '3' - { 173, 7, 12, 9, 1, -11 }, // 0x34 '4' - { 184, 8, 12, 9, 0, -11 }, // 0x35 '5' - { 196, 8, 13, 9, 1, -12 }, // 0x36 '6' - { 209, 8, 12, 9, 0, -11 }, // 0x37 '7' - { 221, 7, 13, 9, 1, -12 }, // 0x38 '8' - { 233, 8, 14, 9, 1, -12 }, // 0x39 '9' - { 247, 2, 8, 5, 1, -7 }, // 0x3A ':' - { 249, 3, 10, 5, 1, -7 }, // 0x3B ';' - { 253, 9, 9, 10, 1, -8 }, // 0x3C '<' - { 264, 9, 5, 10, 1, -6 }, // 0x3D '=' - { 270, 10, 9, 10, 0, -8 }, // 0x3E '>' - { 282, 7, 13, 8, 1, -12 }, // 0x3F '?' - { 294, 12, 13, 16, 2, -12 }, // 0x40 '@' - { 314, 13, 12, 13, 0, -11 }, // 0x41 'A' - { 334, 11, 12, 11, 0, -11 }, // 0x42 'B' - { 351, 11, 12, 12, 1, -11 }, // 0x43 'C' - { 368, 12, 12, 13, 0, -11 }, // 0x44 'D' - { 386, 10, 12, 11, 1, -11 }, // 0x45 'E' - { 401, 9, 12, 10, 1, -11 }, // 0x46 'F' - { 415, 12, 12, 13, 1, -11 }, // 0x47 'G' - { 433, 11, 12, 13, 1, -11 }, // 0x48 'H' - { 450, 4, 12, 6, 1, -11 }, // 0x49 'I' - { 456, 6, 12, 7, 0, -11 }, // 0x4A 'J' - { 465, 12, 12, 13, 1, -11 }, // 0x4B 'K' - { 483, 10, 12, 11, 1, -11 }, // 0x4C 'L' - { 498, 15, 12, 16, 0, -11 }, // 0x4D 'M' - { 521, 11, 12, 13, 1, -11 }, // 0x4E 'N' - { 538, 11, 13, 13, 1, -12 }, // 0x4F 'O' - { 556, 9, 12, 10, 1, -11 }, // 0x50 'P' - { 570, 11, 16, 13, 1, -12 }, // 0x51 'Q' - { 592, 11, 12, 12, 1, -11 }, // 0x52 'R' - { 609, 9, 12, 10, 0, -11 }, // 0x53 'S' - { 623, 11, 12, 11, 0, -11 }, // 0x54 'T' - { 640, 11, 12, 13, 1, -11 }, // 0x55 'U' - { 657, 12, 12, 13, 0, -11 }, // 0x56 'V' - { 675, 17, 12, 17, 0, -11 }, // 0x57 'W' - { 701, 13, 12, 13, 0, -11 }, // 0x58 'X' - { 721, 12, 12, 13, 0, -11 }, // 0x59 'Y' - { 739, 11, 12, 11, 0, -11 }, // 0x5A 'Z' - { 756, 3, 15, 6, 2, -11 }, // 0x5B '[' - { 762, 5, 12, 5, 0, -11 }, // 0x5C '\' - { 770, 3, 15, 6, 1, -11 }, // 0x5D ']' - { 776, 8, 7, 8, 0, -11 }, // 0x5E '^' - { 783, 9, 1, 9, 0, 2 }, // 0x5F '_' - { 785, 4, 3, 5, 0, -11 }, // 0x60 '`' - { 787, 7, 8, 8, 1, -7 }, // 0x61 'a' - { 794, 9, 13, 9, 0, -12 }, // 0x62 'b' - { 809, 7, 8, 8, 0, -7 }, // 0x63 'c' - { 816, 9, 13, 9, 0, -12 }, // 0x64 'd' - { 831, 8, 8, 8, 0, -7 }, // 0x65 'e' - { 839, 7, 13, 7, 1, -12 }, // 0x66 'f' - { 851, 10, 12, 8, 0, -7 }, // 0x67 'g' - { 866, 9, 13, 9, 0, -12 }, // 0x68 'h' - { 881, 4, 11, 5, 1, -10 }, // 0x69 'i' - { 887, 5, 15, 6, 0, -10 }, // 0x6A 'j' - { 897, 9, 13, 9, 1, -12 }, // 0x6B 'k' - { 912, 4, 13, 5, 1, -12 }, // 0x6C 'l' - { 919, 14, 8, 14, 0, -7 }, // 0x6D 'm' - { 933, 9, 8, 9, 0, -7 }, // 0x6E 'n' - { 942, 9, 8, 9, 0, -7 }, // 0x6F 'o' - { 951, 9, 12, 9, 0, -7 }, // 0x70 'p' - { 965, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 979, 6, 8, 6, 0, -7 }, // 0x72 'r' - { 985, 6, 8, 7, 1, -7 }, // 0x73 's' - { 991, 5, 9, 5, 0, -8 }, // 0x74 't' - { 997, 9, 8, 9, 0, -7 }, // 0x75 'u' - { 1006, 8, 8, 8, 0, -7 }, // 0x76 'v' - { 1014, 12, 8, 12, 0, -7 }, // 0x77 'w' - { 1026, 9, 8, 9, 0, -7 }, // 0x78 'x' - { 1035, 8, 12, 8, 0, -7 }, // 0x79 'y' - { 1047, 7, 8, 7, 1, -7 }, // 0x7A 'z' - { 1054, 5, 16, 9, 1, -12 }, // 0x7B '{' - { 1064, 1, 12, 4, 1, -11 }, // 0x7C '|' - { 1066, 5, 16, 9, 3, -11 }, // 0x7D '}' - { 1076, 9, 3, 9, 0, -5 } }; // 0x7E '~' - -const GFXfont FreeSerif9pt7b PROGMEM = { - (uint8_t *)FreeSerif9pt7bBitmaps, - (GFXglyph *)FreeSerif9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1752 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h deleted file mode 100644 index 1d499811f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h +++ /dev/null @@ -1,271 +0,0 @@ -const uint8_t FreeSerifBold12pt7bBitmaps[] PROGMEM = { - 0x7F, 0xFF, 0x77, 0x66, 0x22, 0x00, 0x6F, 0xF7, 0xE3, 0xF1, 0xF8, 0xFC, - 0x7E, 0x3A, 0x09, 0x04, 0x0C, 0x40, 0xCC, 0x0C, 0xC0, 0x8C, 0x18, 0xC7, - 0xFF, 0x18, 0xC1, 0x88, 0x19, 0x81, 0x98, 0xFF, 0xE3, 0x18, 0x31, 0x83, - 0x18, 0x33, 0x03, 0x30, 0x08, 0x01, 0x00, 0xFC, 0x24, 0xEC, 0x8D, 0x90, - 0xBA, 0x07, 0xC0, 0x7E, 0x07, 0xF0, 0x7F, 0x07, 0xF0, 0x9F, 0x11, 0xE2, - 0x3E, 0x46, 0xE9, 0xC7, 0xC0, 0x20, 0x04, 0x00, 0x1E, 0x0C, 0x0E, 0x7F, - 0x07, 0x10, 0x83, 0xC4, 0x40, 0xE1, 0x30, 0x38, 0x88, 0x0E, 0x26, 0x03, - 0x91, 0x1E, 0x78, 0x8E, 0x40, 0x27, 0x10, 0x11, 0xC4, 0x0C, 0xE1, 0x02, - 0x38, 0x81, 0x0E, 0x20, 0x43, 0x90, 0x20, 0x78, 0x03, 0xE0, 0x01, 0x9E, - 0x00, 0xE3, 0x80, 0x38, 0xE0, 0x0F, 0x30, 0x03, 0xF0, 0x00, 0x78, 0x7C, - 0x1F, 0x06, 0x1B, 0xE1, 0x1C, 0x7C, 0x8F, 0x1F, 0x23, 0xC3, 0xF0, 0xF8, - 0x7C, 0x3E, 0x0F, 0x97, 0xC7, 0xFC, 0xFE, 0x3E, 0xFF, 0xFE, 0x90, 0x00, - 0x31, 0x0C, 0x31, 0x86, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0x86, 0x18, 0x60, - 0xC1, 0x02, 0x04, 0x03, 0x06, 0x0C, 0x30, 0x61, 0x87, 0x1C, 0x71, 0xC7, - 0x1C, 0x71, 0x86, 0x38, 0xC2, 0x10, 0x80, 0x1C, 0x6E, 0xFA, 0xEF, 0xF1, - 0xC7, 0xFF, 0xAF, 0xBB, 0x1C, 0x04, 0x00, 0x06, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x6F, 0xF7, 0x11, 0x24, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, 0x03, 0x07, - 0x06, 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0x60, - 0x60, 0x60, 0xC0, 0x0E, 0x07, 0x71, 0xC7, 0x38, 0xEF, 0x1D, 0xE3, 0xFC, - 0x7F, 0x8F, 0xF1, 0xFE, 0x3F, 0xC7, 0xF8, 0xF7, 0x1C, 0xE3, 0x8E, 0xE0, - 0xF8, 0x06, 0x0F, 0x1F, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0xF9, 0xFF, 0x0F, 0x03, 0xFC, 0x7F, 0xC4, - 0x3E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x03, 0x80, 0x30, 0x06, 0x00, - 0xC1, 0x18, 0x13, 0xFE, 0x7F, 0xEF, 0xFE, 0x1F, 0x0C, 0xFA, 0x0F, 0x01, - 0xE0, 0x38, 0x0E, 0x03, 0xE0, 0x3E, 0x03, 0xE0, 0x3C, 0x03, 0x80, 0x70, - 0x0D, 0xC1, 0xBC, 0x43, 0xF0, 0x03, 0x80, 0xE0, 0x78, 0x3E, 0x17, 0x89, - 0xE2, 0x79, 0x1E, 0x87, 0xA1, 0xEF, 0xFF, 0xFF, 0xFF, 0xC1, 0xE0, 0x78, - 0x1E, 0x3F, 0xE7, 0xF8, 0xFF, 0x10, 0x04, 0x00, 0xF8, 0x1F, 0xC7, 0xFC, - 0x1F, 0xC0, 0x78, 0x07, 0x00, 0x60, 0x0D, 0xC1, 0x3C, 0x43, 0xF0, 0x00, - 0xE0, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xF0, 0x3F, 0xE7, 0x9E, 0xF1, 0xFE, - 0x3F, 0xC7, 0xF8, 0xF7, 0x1E, 0xE3, 0x8E, 0x60, 0xF8, 0x7F, 0xEF, 0xFD, - 0xFF, 0xA0, 0x68, 0x0C, 0x03, 0x80, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x0C, - 0x03, 0x00, 0x60, 0x1C, 0x03, 0x00, 0x60, 0x1F, 0x0E, 0x73, 0x87, 0x70, - 0xEF, 0x1D, 0xF3, 0x1F, 0x81, 0xF8, 0x1F, 0xCC, 0xFB, 0x8F, 0xF0, 0xFE, - 0x1F, 0xC3, 0x9C, 0xF1, 0xF8, 0x1F, 0x06, 0x71, 0xC7, 0x78, 0xEF, 0x1F, - 0xE3, 0xFC, 0x7F, 0x8F, 0x79, 0xE7, 0xFC, 0x0F, 0x01, 0xC0, 0x78, 0x1C, - 0x0F, 0x07, 0x00, 0x6F, 0xF6, 0x00, 0x06, 0xFF, 0x60, 0x6F, 0xF6, 0x00, - 0x06, 0xFF, 0x71, 0x22, 0xC0, 0x00, 0x04, 0x00, 0x70, 0x07, 0xC0, 0xFC, - 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, - 0x00, 0x1F, 0x00, 0x1C, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x03, 0x80, 0x0F, - 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x0F, 0x80, 0x1F, 0x01, 0xF0, - 0x1F, 0x03, 0xF0, 0x3E, 0x00, 0xE0, 0x02, 0x00, 0x00, 0x3E, 0x11, 0xEC, - 0x3F, 0x8F, 0xE3, 0xC0, 0xF0, 0x78, 0x18, 0x08, 0x02, 0x00, 0x00, 0x00, - 0x1C, 0x07, 0x81, 0xE0, 0x30, 0x03, 0xF0, 0x0E, 0x18, 0x18, 0x04, 0x30, - 0x66, 0x70, 0xDB, 0x61, 0x99, 0xE3, 0x19, 0xE3, 0x31, 0xE6, 0x31, 0xE6, - 0x31, 0xE6, 0xF2, 0x66, 0xB2, 0x73, 0x3C, 0x38, 0x00, 0x1E, 0x04, 0x03, - 0xF8, 0x00, 0x80, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x3E, 0x00, - 0x1F, 0x00, 0x1B, 0xC0, 0x09, 0xE0, 0x0C, 0xF8, 0x04, 0x3C, 0x02, 0x1F, - 0x03, 0xFF, 0x81, 0x03, 0xC1, 0x80, 0xF0, 0x80, 0x7D, 0xF0, 0xFF, 0xFF, - 0xC0, 0xF3, 0xC3, 0xC7, 0x8F, 0x1E, 0x3C, 0x78, 0xF1, 0xE3, 0xCE, 0x0F, - 0xF0, 0x3C, 0x70, 0xF0, 0xE3, 0xC3, 0xCF, 0x0F, 0x3C, 0x3C, 0xF0, 0xE3, - 0xC7, 0xBF, 0xF8, 0x07, 0xE2, 0x38, 0x7C, 0xE0, 0x3B, 0xC0, 0x37, 0x00, - 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x03, - 0x80, 0x07, 0x80, 0x27, 0x00, 0xC7, 0x86, 0x03, 0xF0, 0xFF, 0xE0, 0x1E, - 0x1E, 0x0F, 0x07, 0x87, 0x81, 0xE3, 0xC0, 0xF1, 0xE0, 0x3C, 0xF0, 0x1E, - 0x78, 0x0F, 0x3C, 0x07, 0x9E, 0x03, 0xCF, 0x01, 0xE7, 0x80, 0xE3, 0xC0, - 0xF1, 0xE0, 0xF0, 0xF0, 0xE1, 0xFF, 0xC0, 0xFF, 0xFC, 0x78, 0x38, 0xF0, - 0x31, 0xE0, 0x23, 0xC4, 0x07, 0x88, 0x0F, 0x30, 0x1F, 0xE0, 0x3C, 0xC0, - 0x78, 0x80, 0xF1, 0x01, 0xE0, 0x23, 0xC0, 0x47, 0x81, 0x8F, 0x07, 0x7F, - 0xFE, 0xFF, 0xFC, 0xF0, 0x73, 0xC0, 0xCF, 0x01, 0x3C, 0x40, 0xF1, 0x03, - 0xCC, 0x0F, 0xF0, 0x3C, 0xC0, 0xF1, 0x03, 0xC4, 0x0F, 0x00, 0x3C, 0x00, - 0xF0, 0x03, 0xC0, 0x3F, 0xC0, 0x07, 0xE2, 0x1C, 0x3E, 0x38, 0x0E, 0x78, - 0x06, 0x70, 0x06, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, 0x00, 0xF0, - 0x7F, 0xF0, 0x1E, 0x70, 0x1E, 0x78, 0x1E, 0x38, 0x1E, 0x1E, 0x1E, 0x07, - 0xF0, 0xFE, 0xFF, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x3C, 0x7F, 0xFC, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xFE, 0xFF, 0xFF, 0x3C, 0x3C, - 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, - 0xFF, 0x0F, 0xF0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, - 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0x03, 0xC0, 0x3C, 0xE3, 0xCE, - 0x38, 0xE3, 0x83, 0xE0, 0xFE, 0x7F, 0x3C, 0x0E, 0x1E, 0x04, 0x0F, 0x04, - 0x07, 0x84, 0x03, 0xCC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0xC0, 0x3C, - 0xF0, 0x1E, 0x7C, 0x0F, 0x1F, 0x07, 0x87, 0xC3, 0xC1, 0xF1, 0xE0, 0x7D, - 0xFC, 0xFF, 0xFE, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x80, 0x1E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x80, 0x1E, 0x01, 0x78, - 0x0D, 0xE0, 0x67, 0x83, 0xBF, 0xFE, 0xFC, 0x01, 0xF3, 0xC0, 0x3E, 0x3E, - 0x03, 0xE2, 0xE0, 0x5E, 0x2F, 0x05, 0xE2, 0xF0, 0x5E, 0x27, 0x09, 0xE2, - 0x78, 0x9E, 0x23, 0x91, 0xE2, 0x3D, 0x1E, 0x23, 0xF1, 0xE2, 0x1E, 0x1E, - 0x21, 0xE1, 0xE2, 0x0C, 0x1E, 0x20, 0xC1, 0xEF, 0x88, 0x3F, 0xF8, 0x1E, - 0xF8, 0x18, 0xF8, 0x11, 0xF8, 0x22, 0xF8, 0x45, 0xF0, 0x89, 0xF1, 0x11, - 0xF2, 0x21, 0xF4, 0x41, 0xF8, 0x81, 0xF1, 0x01, 0xE2, 0x03, 0xC4, 0x03, - 0x8C, 0x03, 0x7C, 0x02, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x03, 0x8F, 0x01, - 0xE7, 0x00, 0x77, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, - 0x03, 0xFC, 0x01, 0xEE, 0x00, 0xE7, 0x80, 0xF1, 0xC0, 0x70, 0x70, 0x70, - 0x0F, 0xE0, 0xFF, 0x87, 0x9E, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, - 0xF7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, - 0x0F, 0xE0, 0x07, 0xF0, 0x0F, 0x1E, 0x0E, 0x07, 0x8F, 0x01, 0xE7, 0x00, - 0xF7, 0x80, 0x3F, 0xC0, 0x1F, 0xE0, 0x0F, 0xF0, 0x07, 0xF8, 0x03, 0xFC, - 0x01, 0xEE, 0x00, 0xE7, 0x00, 0xF1, 0xC0, 0x70, 0x70, 0x70, 0x1C, 0xF0, - 0x03, 0xE0, 0x01, 0xF8, 0x00, 0x3E, 0x00, 0x07, 0xE0, 0xFF, 0xE0, 0x3C, - 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x3C, 0x38, 0x3C, - 0x70, 0x3F, 0xC0, 0x3D, 0xE0, 0x3C, 0xF0, 0x3C, 0xF8, 0x3C, 0x78, 0x3C, - 0x3C, 0x3C, 0x3E, 0xFF, 0x1F, 0x1F, 0x27, 0x0E, 0x60, 0x6E, 0x06, 0xF0, - 0x2F, 0x80, 0x7F, 0x07, 0xFC, 0x1F, 0xE0, 0x7E, 0x01, 0xF8, 0x07, 0xC0, - 0x7C, 0x06, 0xF0, 0xC9, 0xF8, 0xFF, 0xFF, 0xC7, 0x9F, 0x0F, 0x1C, 0x1E, - 0x10, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, - 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x07, 0xF8, 0xFE, - 0x1E, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x4F, 0x00, 0x9E, 0x01, - 0x3C, 0x02, 0x78, 0x04, 0xF0, 0x09, 0xE0, 0x13, 0xC0, 0x27, 0x80, 0x47, - 0x81, 0x07, 0x84, 0x07, 0xF0, 0xFF, 0x0F, 0x9E, 0x03, 0x0F, 0x00, 0x83, - 0xC0, 0x81, 0xE0, 0x40, 0xF8, 0x60, 0x3C, 0x20, 0x1E, 0x10, 0x07, 0x90, - 0x03, 0xC8, 0x00, 0xF4, 0x00, 0x7C, 0x00, 0x3E, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x01, 0x80, 0x00, 0x80, 0x00, 0xFE, 0x7F, 0x9E, 0xF8, 0x3C, 0x08, - 0xF0, 0x78, 0x31, 0xE0, 0xF0, 0x41, 0xE0, 0xF0, 0x83, 0xC3, 0xE3, 0x07, - 0x85, 0xC4, 0x07, 0x93, 0xC8, 0x0F, 0x27, 0xB0, 0x0E, 0x47, 0x40, 0x1F, - 0x0F, 0x80, 0x3E, 0x1F, 0x00, 0x38, 0x1C, 0x00, 0x70, 0x38, 0x00, 0xE0, - 0x30, 0x00, 0x80, 0x40, 0xFF, 0x9F, 0x9F, 0x07, 0x07, 0x83, 0x03, 0xE3, - 0x00, 0xF9, 0x00, 0x3D, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, - 0xF8, 0x00, 0xBE, 0x00, 0x8F, 0x00, 0x83, 0xC0, 0xC1, 0xF0, 0xE0, 0xFD, - 0xF8, 0xFF, 0xFF, 0x1F, 0x7C, 0x06, 0x3C, 0x04, 0x3E, 0x0C, 0x1E, 0x08, - 0x0F, 0x10, 0x0F, 0x30, 0x07, 0xA0, 0x07, 0xC0, 0x03, 0xC0, 0x03, 0xC0, - 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x03, 0xC0, 0x0F, 0xF0, 0x7F, 0xFC, - 0xE0, 0xF1, 0x83, 0xE2, 0x07, 0x84, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x03, - 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x08, 0xF0, 0x13, 0xC0, 0x6F, 0x81, - 0x9E, 0x07, 0x7F, 0xFE, 0xFF, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, - 0x73, 0x9C, 0xE7, 0x39, 0xF0, 0xC0, 0x60, 0x60, 0x60, 0x30, 0x30, 0x30, - 0x18, 0x18, 0x18, 0x0C, 0x0C, 0x0C, 0x06, 0x06, 0x06, 0x03, 0xF9, 0xCE, - 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCF, 0xF0, 0x0C, - 0x07, 0x81, 0xE0, 0xCC, 0x33, 0x18, 0x66, 0x1B, 0x87, 0xC0, 0xC0, 0xFF, - 0xF0, 0xC7, 0x1C, 0x30, 0x1F, 0x0E, 0x71, 0xCF, 0x39, 0xE0, 0x3C, 0x1F, - 0x8E, 0xF3, 0x9E, 0xF3, 0xDE, 0x79, 0xFF, 0x80, 0xF8, 0x07, 0x80, 0x78, - 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, 0x8E, 0x78, 0xF7, 0x8F, 0x78, - 0xF7, 0x8F, 0x78, 0xF7, 0x8E, 0x79, 0xC4, 0x78, 0x1F, 0x1D, 0xDC, 0xFE, - 0x7F, 0x07, 0x83, 0xC1, 0xE0, 0x78, 0x3C, 0x47, 0xC0, 0x03, 0xE0, 0x1E, - 0x01, 0xE0, 0x1E, 0x01, 0xE1, 0xDE, 0x7B, 0xE7, 0x1E, 0xF1, 0xEF, 0x1E, - 0xF1, 0xEF, 0x1E, 0xF1, 0xE7, 0x1E, 0x7B, 0xE1, 0xDF, 0x1F, 0x0C, 0x67, - 0x1B, 0xC7, 0xFF, 0xFC, 0x0F, 0x03, 0xC0, 0x78, 0x4E, 0x21, 0xF0, 0x1E, - 0x3B, 0x7B, 0x78, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0xFC, 0x3E, 0x0E, 0x7F, 0xCE, 0x79, 0xEF, 0x3C, 0xE7, 0x0F, - 0xC1, 0x00, 0x60, 0x1C, 0x03, 0xFE, 0x7F, 0xE3, 0xFF, 0x80, 0xF0, 0x33, - 0xFC, 0xF8, 0x07, 0x80, 0x78, 0x07, 0x80, 0x78, 0x07, 0xB8, 0x7D, 0xE7, - 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xEF, - 0xFF, 0x31, 0xE7, 0x8C, 0x03, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, - 0xBF, 0x06, 0x0F, 0x0F, 0x06, 0x00, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0xCF, 0xCE, 0x7C, 0xF8, 0x03, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0xF9, 0xE1, 0x8F, 0x10, 0x79, - 0x03, 0xD8, 0x1F, 0xE0, 0xF7, 0x87, 0x9E, 0x3C, 0x71, 0xE3, 0xDF, 0xBF, - 0xF9, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0xBF, - 0xFB, 0xCF, 0x0F, 0xBE, 0x79, 0xE7, 0x8F, 0x3C, 0xF1, 0xE7, 0x9E, 0x3C, - 0xF3, 0xC7, 0x9E, 0x78, 0xF3, 0xCF, 0x1E, 0x79, 0xE3, 0xCF, 0x3C, 0x7B, - 0xFF, 0xDF, 0x80, 0xFB, 0x87, 0xDE, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, - 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0xFF, 0xF0, 0x1F, 0x07, 0x71, 0xC7, - 0x78, 0xFF, 0x1F, 0xE3, 0xFC, 0x7F, 0x8F, 0x71, 0xC7, 0x70, 0x7C, 0x00, - 0xFB, 0x87, 0xDE, 0x78, 0xE7, 0x8F, 0x78, 0xF7, 0x8F, 0x78, 0xF7, 0x8F, - 0x78, 0xE7, 0x9E, 0x7F, 0x87, 0x80, 0x78, 0x07, 0x80, 0x78, 0x0F, 0xC0, - 0x1E, 0x23, 0x9E, 0x71, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, 0xF1, 0xEF, 0x1E, - 0x71, 0xE7, 0x9E, 0x1F, 0xE0, 0x1E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3F, - 0xF9, 0xDF, 0xF7, 0xDD, 0xE0, 0x78, 0x1E, 0x07, 0x81, 0xE0, 0x78, 0x1E, - 0x0F, 0xC0, 0x3D, 0x43, 0xC3, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0x83, 0xC2, - 0xBC, 0x08, 0x18, 0x38, 0x78, 0xFC, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, - 0x78, 0x78, 0x79, 0x3E, 0xFB, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, - 0x9E, 0x79, 0xE7, 0x9E, 0x79, 0xE7, 0x9E, 0x3F, 0xF0, 0xFC, 0xEF, 0x08, - 0xE1, 0x1E, 0x41, 0xC8, 0x3D, 0x03, 0xC0, 0x78, 0x0E, 0x00, 0xC0, 0x10, - 0x00, 0xFD, 0xF7, 0xBC, 0x71, 0x9E, 0x38, 0x87, 0x1E, 0x43, 0xCF, 0x40, - 0xEB, 0xA0, 0x7C, 0xF0, 0x1C, 0x70, 0x0E, 0x38, 0x06, 0x08, 0x01, 0x04, - 0x00, 0xFC, 0xF7, 0x84, 0x3C, 0x81, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x80, - 0xBC, 0x13, 0xC2, 0x1E, 0xFB, 0xF0, 0xFC, 0xEF, 0x08, 0xE1, 0x1E, 0x43, - 0xC8, 0x3A, 0x07, 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x18, 0x02, 0x00, 0x41, - 0xC8, 0x3A, 0x03, 0x80, 0xFF, 0xB1, 0xE8, 0x70, 0x3C, 0x1E, 0x07, 0x83, - 0xC1, 0xE0, 0x78, 0xBC, 0x2F, 0xF8, 0x07, 0x0E, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1C, 0x1C, 0x1C, 0xE0, 0x18, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C, - 0x1C, 0x1E, 0x07, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xE0, 0x70, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x38, 0x38, 0x18, 0x07, 0x38, 0x38, 0x38, 0x38, 0x38, - 0x38, 0x38, 0x38, 0x70, 0xE0, 0x70, 0x1F, 0x8B, 0x3F, 0x01, 0xC0 }; - -const GFXglyph FreeSerifBold12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 4, 16, 8, 2, -15 }, // 0x21 '!' - { 8, 9, 7, 13, 2, -15 }, // 0x22 '"' - { 16, 12, 16, 12, 0, -15 }, // 0x23 '#' - { 40, 11, 20, 12, 1, -17 }, // 0x24 '$' - { 68, 18, 16, 24, 3, -15 }, // 0x25 '%' - { 104, 18, 16, 20, 1, -15 }, // 0x26 '&' - { 140, 3, 7, 7, 2, -15 }, // 0x27 ''' - { 143, 6, 21, 8, 1, -16 }, // 0x28 '(' - { 159, 6, 21, 8, 1, -16 }, // 0x29 ')' - { 175, 9, 10, 12, 2, -15 }, // 0x2A '*' - { 187, 12, 12, 16, 2, -11 }, // 0x2B '+' - { 205, 4, 8, 6, 1, -3 }, // 0x2C ',' - { 209, 6, 3, 8, 1, -6 }, // 0x2D '-' - { 212, 4, 4, 6, 1, -3 }, // 0x2E '.' - { 214, 8, 17, 7, -1, -15 }, // 0x2F '/' - { 231, 11, 16, 12, 1, -15 }, // 0x30 '0' - { 253, 9, 16, 12, 1, -15 }, // 0x31 '1' - { 271, 12, 16, 12, 0, -15 }, // 0x32 '2' - { 295, 11, 16, 12, 1, -15 }, // 0x33 '3' - { 317, 10, 16, 12, 1, -15 }, // 0x34 '4' - { 337, 11, 16, 12, 1, -15 }, // 0x35 '5' - { 359, 11, 16, 12, 1, -15 }, // 0x36 '6' - { 381, 11, 16, 12, 0, -15 }, // 0x37 '7' - { 403, 11, 16, 12, 1, -15 }, // 0x38 '8' - { 425, 11, 16, 12, 1, -15 }, // 0x39 '9' - { 447, 4, 11, 8, 2, -10 }, // 0x3A ':' - { 453, 4, 15, 8, 2, -10 }, // 0x3B ';' - { 461, 14, 14, 16, 1, -12 }, // 0x3C '<' - { 486, 14, 8, 16, 1, -9 }, // 0x3D '=' - { 500, 14, 14, 16, 1, -12 }, // 0x3E '>' - { 525, 10, 16, 12, 1, -15 }, // 0x3F '?' - { 545, 16, 16, 22, 3, -15 }, // 0x40 '@' - { 577, 17, 16, 17, 0, -15 }, // 0x41 'A' - { 611, 14, 16, 16, 1, -15 }, // 0x42 'B' - { 639, 15, 16, 17, 1, -15 }, // 0x43 'C' - { 669, 17, 16, 18, 0, -15 }, // 0x44 'D' - { 703, 15, 16, 16, 1, -15 }, // 0x45 'E' - { 733, 14, 16, 15, 1, -15 }, // 0x46 'F' - { 761, 16, 16, 19, 1, -15 }, // 0x47 'G' - { 793, 16, 16, 19, 2, -15 }, // 0x48 'H' - { 825, 8, 16, 9, 1, -15 }, // 0x49 'I' - { 841, 12, 18, 12, 0, -15 }, // 0x4A 'J' - { 868, 17, 16, 19, 2, -15 }, // 0x4B 'K' - { 902, 14, 16, 16, 2, -15 }, // 0x4C 'L' - { 930, 20, 16, 23, 1, -15 }, // 0x4D 'M' - { 970, 15, 16, 17, 1, -15 }, // 0x4E 'N' - { 1000, 17, 16, 19, 1, -15 }, // 0x4F 'O' - { 1034, 12, 16, 15, 2, -15 }, // 0x50 'P' - { 1058, 17, 20, 19, 1, -15 }, // 0x51 'Q' - { 1101, 16, 16, 17, 1, -15 }, // 0x52 'R' - { 1133, 12, 16, 14, 1, -15 }, // 0x53 'S' - { 1157, 15, 16, 15, 0, -15 }, // 0x54 'T' - { 1187, 15, 16, 17, 1, -15 }, // 0x55 'U' - { 1217, 17, 17, 17, 0, -15 }, // 0x56 'V' - { 1254, 23, 16, 24, 0, -15 }, // 0x57 'W' - { 1300, 17, 16, 17, 0, -15 }, // 0x58 'X' - { 1334, 16, 16, 17, 1, -15 }, // 0x59 'Y' - { 1366, 15, 16, 16, 0, -15 }, // 0x5A 'Z' - { 1396, 5, 20, 8, 2, -15 }, // 0x5B '[' - { 1409, 8, 17, 7, -1, -15 }, // 0x5C '\' - { 1426, 5, 20, 8, 2, -15 }, // 0x5D ']' - { 1439, 10, 9, 14, 2, -15 }, // 0x5E '^' - { 1451, 12, 1, 12, 0, 4 }, // 0x5F '_' - { 1453, 5, 4, 8, 0, -16 }, // 0x60 '`' - { 1456, 11, 11, 12, 1, -10 }, // 0x61 'a' - { 1472, 12, 16, 13, 1, -15 }, // 0x62 'b' - { 1496, 9, 11, 10, 1, -10 }, // 0x63 'c' - { 1509, 12, 16, 13, 1, -15 }, // 0x64 'd' - { 1533, 10, 11, 11, 1, -10 }, // 0x65 'e' - { 1547, 8, 16, 9, 1, -15 }, // 0x66 'f' - { 1563, 11, 16, 12, 1, -10 }, // 0x67 'g' - { 1585, 12, 16, 13, 1, -15 }, // 0x68 'h' - { 1609, 6, 16, 7, 1, -15 }, // 0x69 'i' - { 1621, 8, 21, 10, 0, -15 }, // 0x6A 'j' - { 1642, 13, 16, 13, 1, -15 }, // 0x6B 'k' - { 1668, 6, 16, 7, 1, -15 }, // 0x6C 'l' - { 1680, 19, 11, 20, 1, -10 }, // 0x6D 'm' - { 1707, 12, 11, 13, 1, -10 }, // 0x6E 'n' - { 1724, 11, 11, 12, 1, -10 }, // 0x6F 'o' - { 1740, 12, 16, 13, 1, -10 }, // 0x70 'p' - { 1764, 12, 16, 13, 1, -10 }, // 0x71 'q' - { 1788, 10, 11, 10, 1, -10 }, // 0x72 'r' - { 1802, 8, 11, 10, 1, -10 }, // 0x73 's' - { 1813, 8, 15, 8, 1, -14 }, // 0x74 't' - { 1828, 12, 11, 14, 1, -10 }, // 0x75 'u' - { 1845, 11, 11, 12, 0, -10 }, // 0x76 'v' - { 1861, 17, 11, 17, 0, -10 }, // 0x77 'w' - { 1885, 12, 11, 12, 0, -10 }, // 0x78 'x' - { 1902, 11, 16, 12, 0, -10 }, // 0x79 'y' - { 1924, 10, 11, 11, 1, -10 }, // 0x7A 'z' - { 1938, 8, 21, 9, 0, -16 }, // 0x7B '{' - { 1959, 2, 17, 5, 2, -15 }, // 0x7C '|' - { 1964, 8, 21, 9, 2, -16 }, // 0x7D '}' - { 1985, 11, 4, 12, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSerifBold12pt7b PROGMEM = { - (uint8_t *)FreeSerifBold12pt7bBitmaps, - (GFXglyph *)FreeSerifBold12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2663 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h deleted file mode 100644 index 11d3c7ea2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h +++ /dev/null @@ -1,462 +0,0 @@ -const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = { - 0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00, - 0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0, - 0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03, - 0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3, - 0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0, - 0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF, - 0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C, - 0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF, - 0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03, - 0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03, - 0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F, - 0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0, - 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07, - 0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C, - 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C, - 0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E, - 0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01, - 0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7, - 0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F, - 0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01, - 0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE, - 0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8, - 0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0, - 0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3, - 0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81, - 0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F, - 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0, - 0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03, - 0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C, - 0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C, - 0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D, - 0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF, - 0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00, - 0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, - 0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, - 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00, - 0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0, - 0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD, - 0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, - 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, - 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00, - 0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E, - 0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E, - 0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0, - 0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, - 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, - 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF, - 0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E, - 0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78, - 0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01, - 0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE, - 0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E, - 0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE, - 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80, - 0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00, - 0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F, - 0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8, - 0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F, - 0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00, - 0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80, - 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81, - 0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0, - 0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00, - 0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E, - 0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE, - 0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38, - 0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0, - 0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, - 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0, - 0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF, - 0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E, - 0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C, - 0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, - 0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE, - 0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0, - 0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00, - 0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00, - 0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2, - 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0, - 0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F, - 0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80, - 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03, - 0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, - 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F, - 0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07, - 0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01, - 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00, - 0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C, - 0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0, - 0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3, - 0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00, - 0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF, - 0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F, - 0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F, - 0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03, - 0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01, - 0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8, - 0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, - 0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01, - 0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81, - 0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F, - 0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF, - 0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03, - 0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, - 0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0, - 0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, - 0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F, - 0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC, - 0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7, - 0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E, - 0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF, - 0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78, - 0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0, - 0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03, - 0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00, - 0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F, - 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC, - 0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09, - 0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03, - 0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07, - 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F, - 0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0, - 0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8, - 0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F, - 0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03, - 0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF, - 0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, - 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF, - 0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, - 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, - 0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0, - 0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07, - 0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00, - 0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00, - 0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE, - 0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0, - 0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE, - 0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, - 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F, - 0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, - 0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE, - 0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1, - 0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09, - 0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47, - 0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F, - 0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E, - 0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8, - 0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80, - 0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE, - 0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC, - 0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8, - 0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4, - 0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0, - 0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F, - 0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01, - 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC, - 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07, - 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00, - 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80, - 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F, - 0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F, - 0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF, - 0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F, - 0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, - 0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, - 0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, - 0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, - 0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, - 0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, - 0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, - 0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, - 0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, - 0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F, - 0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC, - 0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81, - 0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F, - 0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8, - 0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0, - 0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0, - 0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F, - 0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F, - 0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83, - 0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00, - 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, - 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, - 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, - 0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3, - 0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, - 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, - 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, - 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0, - 0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0, - 0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C, - 0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10, - 0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60, - 0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80, - 0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1, - 0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02, - 0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8, - 0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19, - 0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC, - 0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00, - 0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00, - 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70, - 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00, - 0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F, - 0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03, - 0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00, - 0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06, - 0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F, - 0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07, - 0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01, - 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01, - 0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F, - 0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, - 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80, - 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC, - 0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E, - 0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80, - 0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E, - 0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03, - 0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00, - 0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0, - 0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C, - 0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C, - 0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C, - 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3, - 0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F, - 0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F, - 0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F, - 0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F, - 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, - 0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8, - 0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F, - 0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1, - 0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8, - 0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F, - 0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3, - 0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF, - 0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C, - 0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF, - 0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F, - 0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C, - 0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, - 0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, - 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7, - 0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, - 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0, - 0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F, - 0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87, - 0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF, - 0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E, - 0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, - 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3, - 0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8, - 0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F, - 0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83, - 0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, - 0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C, - 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, - 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7, - 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE, - 0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8, - 0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1, - 0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE, - 0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0, - 0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0, - 0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0, - 0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7, - 0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07, - 0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00, - 0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, - 0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01, - 0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E, - 0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F, - 0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E, - 0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF, - 0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, - 0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7, - 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, - 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, - 0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F, - 0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30, - 0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E, - 0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E, - 0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F, - 0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07, - 0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01, - 0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F, - 0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03, - 0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC, - 0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E, - 0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07, - 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01, - 0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F, - 0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01, - 0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F, - 0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87, - 0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0, - 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, - 0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0, - 0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, - 0x7C }; - -const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 6, 24, 12, 3, -23 }, // 0x21 '!' - { 18, 13, 10, 19, 3, -23 }, // 0x22 '"' - { 35, 18, 24, 17, 0, -23 }, // 0x23 '#' - { 89, 15, 28, 17, 1, -25 }, // 0x24 '$' - { 142, 27, 24, 35, 4, -23 }, // 0x25 '%' - { 223, 26, 25, 29, 2, -23 }, // 0x26 '&' - { 305, 4, 10, 10, 3, -23 }, // 0x27 ''' - { 310, 9, 30, 12, 2, -23 }, // 0x28 '(' - { 344, 9, 30, 12, 1, -23 }, // 0x29 ')' - { 378, 14, 15, 18, 2, -23 }, // 0x2A '*' - { 405, 19, 19, 24, 2, -17 }, // 0x2B '+' - { 451, 6, 12, 9, 1, -5 }, // 0x2C ',' - { 460, 8, 4, 12, 2, -9 }, // 0x2D '-' - { 464, 6, 6, 9, 1, -5 }, // 0x2E '.' - { 469, 11, 25, 10, -1, -23 }, // 0x2F '/' - { 504, 16, 24, 18, 1, -23 }, // 0x30 '0' - { 552, 12, 24, 18, 3, -23 }, // 0x31 '1' - { 588, 16, 24, 17, 1, -23 }, // 0x32 '2' - { 636, 16, 24, 18, 0, -23 }, // 0x33 '3' - { 684, 15, 24, 18, 1, -23 }, // 0x34 '4' - { 729, 15, 24, 18, 1, -23 }, // 0x35 '5' - { 774, 16, 24, 18, 1, -23 }, // 0x36 '6' - { 822, 16, 24, 17, 1, -23 }, // 0x37 '7' - { 870, 16, 24, 17, 1, -23 }, // 0x38 '8' - { 918, 16, 24, 18, 1, -23 }, // 0x39 '9' - { 966, 6, 16, 12, 3, -15 }, // 0x3A ':' - { 978, 7, 22, 12, 2, -15 }, // 0x3B ';' - { 998, 19, 20, 24, 2, -18 }, // 0x3C '<' - { 1046, 19, 12, 24, 2, -14 }, // 0x3D '=' - { 1075, 19, 20, 24, 3, -18 }, // 0x3E '>' - { 1123, 14, 24, 18, 2, -23 }, // 0x3F '?' - { 1165, 24, 25, 33, 4, -23 }, // 0x40 '@' - { 1240, 24, 24, 25, 1, -23 }, // 0x41 'A' - { 1312, 21, 24, 23, 1, -23 }, // 0x42 'B' - { 1375, 23, 25, 25, 1, -23 }, // 0x43 'C' - { 1447, 23, 24, 26, 1, -23 }, // 0x44 'D' - { 1516, 21, 24, 23, 2, -23 }, // 0x45 'E' - { 1579, 19, 24, 22, 2, -23 }, // 0x46 'F' - { 1636, 25, 25, 27, 1, -23 }, // 0x47 'G' - { 1715, 24, 24, 27, 2, -23 }, // 0x48 'H' - { 1787, 11, 24, 14, 2, -23 }, // 0x49 'I' - { 1820, 16, 27, 18, 0, -23 }, // 0x4A 'J' - { 1874, 25, 24, 27, 2, -23 }, // 0x4B 'K' - { 1949, 21, 24, 23, 2, -23 }, // 0x4C 'L' - { 2012, 31, 24, 33, 1, -23 }, // 0x4D 'M' - { 2105, 23, 24, 25, 1, -23 }, // 0x4E 'N' - { 2174, 25, 25, 27, 1, -23 }, // 0x4F 'O' - { 2253, 19, 24, 22, 2, -23 }, // 0x50 'P' - { 2310, 25, 30, 27, 1, -23 }, // 0x51 'Q' - { 2404, 23, 24, 25, 2, -23 }, // 0x52 'R' - { 2473, 16, 25, 20, 2, -23 }, // 0x53 'S' - { 2523, 21, 24, 23, 1, -23 }, // 0x54 'T' - { 2586, 22, 25, 25, 2, -23 }, // 0x55 'U' - { 2655, 24, 24, 25, 0, -23 }, // 0x56 'V' - { 2727, 34, 25, 34, 0, -23 }, // 0x57 'W' - { 2834, 24, 24, 25, 1, -23 }, // 0x58 'X' - { 2906, 24, 24, 25, 1, -23 }, // 0x59 'Y' - { 2978, 21, 24, 23, 1, -23 }, // 0x5A 'Z' - { 3041, 8, 29, 12, 2, -23 }, // 0x5B '[' - { 3070, 11, 25, 10, -1, -23 }, // 0x5C '\' - { 3105, 8, 29, 12, 2, -23 }, // 0x5D ']' - { 3134, 15, 13, 20, 3, -23 }, // 0x5E '^' - { 3159, 18, 3, 17, 0, 3 }, // 0x5F '_' - { 3166, 8, 6, 12, 0, -23 }, // 0x60 '`' - { 3172, 16, 16, 18, 1, -15 }, // 0x61 'a' - { 3204, 18, 24, 19, 1, -23 }, // 0x62 'b' - { 3258, 14, 16, 15, 1, -15 }, // 0x63 'c' - { 3286, 18, 24, 19, 1, -23 }, // 0x64 'd' - { 3340, 14, 16, 16, 1, -15 }, // 0x65 'e' - { 3368, 11, 24, 14, 2, -23 }, // 0x66 'f' - { 3401, 17, 23, 17, 1, -15 }, // 0x67 'g' - { 3450, 17, 24, 19, 1, -23 }, // 0x68 'h' - { 3501, 7, 24, 10, 2, -23 }, // 0x69 'i' - { 3522, 11, 31, 14, 0, -23 }, // 0x6A 'j' - { 3565, 18, 24, 19, 1, -23 }, // 0x6B 'k' - { 3619, 7, 24, 10, 1, -23 }, // 0x6C 'l' - { 3640, 27, 16, 29, 1, -15 }, // 0x6D 'm' - { 3694, 17, 16, 19, 1, -15 }, // 0x6E 'n' - { 3728, 17, 16, 18, 1, -15 }, // 0x6F 'o' - { 3762, 19, 23, 19, 0, -15 }, // 0x70 'p' - { 3817, 17, 23, 19, 1, -15 }, // 0x71 'q' - { 3866, 13, 16, 15, 1, -15 }, // 0x72 'r' - { 3892, 12, 16, 14, 1, -15 }, // 0x73 's' - { 3916, 10, 21, 12, 1, -20 }, // 0x74 't' - { 3943, 18, 16, 20, 1, -15 }, // 0x75 'u' - { 3979, 17, 16, 17, 0, -15 }, // 0x76 'v' - { 4013, 24, 16, 25, 0, -15 }, // 0x77 'w' - { 4061, 16, 16, 18, 1, -15 }, // 0x78 'x' - { 4093, 16, 23, 17, 0, -15 }, // 0x79 'y' - { 4139, 14, 16, 16, 0, -15 }, // 0x7A 'z' - { 4167, 11, 31, 14, 1, -24 }, // 0x7B '{' - { 4210, 3, 25, 8, 2, -23 }, // 0x7C '|' - { 4220, 11, 31, 14, 3, -24 }, // 0x7D '}' - { 4263, 16, 5, 18, 1, -11 } }; // 0x7E '~' - -const GFXfont FreeSerifBold18pt7b PROGMEM = { - (uint8_t *)FreeSerifBold18pt7bBitmaps, - (GFXglyph *)FreeSerifBold18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4945 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h deleted file mode 100644 index 0eb2d0b1a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h +++ /dev/null @@ -1,759 +0,0 @@ -const uint8_t FreeSerifBold24pt7bBitmaps[] PROGMEM = { - 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x7E, 0x7C, 0x7C, - 0x3C, 0x3C, 0x38, 0x38, 0x38, 0x38, 0x18, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x70, 0x07, - 0x7C, 0x07, 0xFE, 0x03, 0xFF, 0x01, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xC0, - 0x3E, 0xE0, 0x0E, 0x70, 0x07, 0x38, 0x03, 0x9C, 0x01, 0xC4, 0x00, 0xE2, - 0x00, 0x20, 0x00, 0xF0, 0x70, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0x0F, - 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x78, 0x01, 0xC0, 0xE0, 0x03, 0x81, 0xC0, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, - 0xF3, 0xFF, 0xFF, 0xE0, 0x78, 0x3C, 0x00, 0xF0, 0x78, 0x01, 0xC0, 0xE0, - 0x03, 0x81, 0xC0, 0x0F, 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x0F, - 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0x03, 0x81, 0xC0, 0x0F, - 0x07, 0x80, 0x1E, 0x0F, 0x00, 0x3C, 0x1E, 0x00, 0x78, 0x3C, 0x00, 0xF0, - 0x78, 0x01, 0xE0, 0xE0, 0x03, 0x81, 0xC0, 0x07, 0x07, 0x80, 0x1E, 0x0F, - 0x00, 0x00, 0x60, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, - 0x7F, 0xF0, 0x0F, 0x37, 0xE0, 0xE1, 0x8F, 0x8E, 0x0C, 0x3C, 0x70, 0x60, - 0xE7, 0x83, 0x03, 0x3C, 0x18, 0x19, 0xF0, 0xC0, 0x4F, 0xC6, 0x02, 0x7F, - 0xF0, 0x03, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0xFF, 0xF0, - 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0x80, 0x1F, 0xFE, 0x00, 0x3F, 0xF8, 0x01, - 0xFF, 0xC0, 0x0C, 0xFF, 0x00, 0x63, 0xFA, 0x03, 0x0F, 0xD0, 0x18, 0x3E, - 0x80, 0xC1, 0xF6, 0x06, 0x0F, 0xB8, 0x30, 0x79, 0xC1, 0x87, 0xCF, 0x0C, - 0x3C, 0x7E, 0x67, 0xC0, 0xFF, 0xF8, 0x00, 0xFE, 0x00, 0x00, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x30, - 0x00, 0x3E, 0x00, 0x0C, 0x00, 0x0F, 0xF0, 0x03, 0x80, 0x07, 0xE7, 0x03, - 0xE0, 0x01, 0xF8, 0x7F, 0xFC, 0x00, 0x3E, 0x07, 0xF7, 0x00, 0x0F, 0xC0, - 0x80, 0xE0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0x7E, 0x02, 0x07, 0x00, 0x0F, - 0x80, 0x41, 0xC0, 0x03, 0xF0, 0x10, 0x30, 0x00, 0x7E, 0x02, 0x0E, 0x00, - 0x0F, 0x80, 0xC1, 0x80, 0x01, 0xF0, 0x10, 0x70, 0x00, 0x3E, 0x06, 0x1C, - 0x00, 0x07, 0xC1, 0x83, 0x80, 0x00, 0x7C, 0x60, 0xE0, 0x1F, 0x07, 0xF8, - 0x18, 0x0F, 0xF8, 0x7C, 0x07, 0x07, 0xF1, 0x00, 0x00, 0xC1, 0xF8, 0x10, - 0x00, 0x38, 0x3F, 0x02, 0x00, 0x06, 0x0F, 0xC0, 0x40, 0x01, 0xC3, 0xF0, - 0x08, 0x00, 0x30, 0x7E, 0x01, 0x00, 0x0E, 0x1F, 0x80, 0x40, 0x03, 0x83, - 0xF0, 0x08, 0x00, 0x60, 0x7E, 0x01, 0x00, 0x1C, 0x0F, 0x80, 0x40, 0x03, - 0x01, 0xF0, 0x18, 0x00, 0xE0, 0x3E, 0x02, 0x00, 0x18, 0x03, 0xC0, 0xC0, - 0x07, 0x00, 0x7C, 0x70, 0x00, 0xC0, 0x07, 0xFC, 0x00, 0x38, 0x00, 0x7E, - 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x07, 0x8F, - 0xE0, 0x00, 0x03, 0xC1, 0xF8, 0x00, 0x00, 0xF0, 0x3F, 0x00, 0x00, 0x7C, - 0x07, 0xC0, 0x00, 0x1F, 0x01, 0xF0, 0x00, 0x07, 0xE0, 0x7C, 0x00, 0x01, - 0xF8, 0x1E, 0x00, 0x00, 0x7F, 0x07, 0x80, 0x00, 0x1F, 0xE3, 0x80, 0x00, - 0x03, 0xFF, 0xC0, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0x1F, 0xE0, 0x3F, - 0xF0, 0x07, 0xFC, 0x01, 0xF0, 0x07, 0xFF, 0x00, 0x78, 0x07, 0xBF, 0xE0, - 0x1C, 0x03, 0x87, 0xFC, 0x07, 0x01, 0xE0, 0xFF, 0x81, 0x80, 0xF0, 0x3F, - 0xE0, 0xC0, 0x7C, 0x07, 0xFC, 0x30, 0x1F, 0x00, 0xFF, 0x98, 0x0F, 0xC0, - 0x3F, 0xFC, 0x03, 0xF0, 0x07, 0xFF, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x3F, - 0x80, 0x3F, 0xF0, 0x0F, 0xF0, 0x07, 0xFE, 0x03, 0xFC, 0x00, 0xFF, 0x81, - 0x7F, 0x80, 0x3F, 0xF8, 0xDF, 0xF0, 0x1F, 0xFF, 0xE3, 0xFF, 0x0E, 0xFF, - 0xF8, 0xFF, 0xFE, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFE, 0x00, - 0x3E, 0x00, 0x77, 0xFF, 0xFF, 0xFF, 0xEE, 0x73, 0x9C, 0xE2, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x60, 0x1C, 0x03, 0x80, 0x70, 0x06, 0x00, 0xE0, 0x1C, - 0x01, 0xC0, 0x3C, 0x03, 0xC0, 0x78, 0x07, 0x80, 0x78, 0x07, 0x80, 0xF8, - 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, 0x0F, 0x80, 0xF8, - 0x0F, 0x80, 0x78, 0x07, 0x80, 0x78, 0x03, 0xC0, 0x3C, 0x01, 0xC0, 0x1C, - 0x00, 0xE0, 0x0E, 0x00, 0x70, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x03, 0x00, - 0x10, 0x00, 0x0C, 0x00, 0x60, 0x03, 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, - 0x70, 0x03, 0x80, 0x38, 0x03, 0xC0, 0x3C, 0x03, 0xE0, 0x1E, 0x01, 0xE0, - 0x1E, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xF0, - 0x1F, 0x01, 0xF0, 0x1F, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x03, 0xC0, - 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0xE0, 0x0C, 0x01, 0x80, 0x30, 0x0C, - 0x00, 0x80, 0x00, 0x01, 0xC0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x03, 0xE0, 0x3C, 0x78, 0xEF, 0x9C, 0x7B, 0xF7, 0x3F, 0xFE, 0xDF, 0x8F, - 0xFF, 0xC0, 0x7F, 0x00, 0x3F, 0xC0, 0x7E, 0xBF, 0x3F, 0x77, 0xEF, 0x9C, - 0xFF, 0xC7, 0x1E, 0x63, 0xE3, 0x80, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x80, - 0x01, 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x00, 0x01, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, 0x80, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x07, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x3C, 0x7E, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0x07, 0x06, 0x06, 0x0C, - 0x18, 0x30, 0x60, 0xC0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0x3C, - 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, 0x00, 0x1E, 0x00, 0x7C, 0x00, - 0xF0, 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, - 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, - 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x01, 0xE0, 0x03, - 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0xF0, 0x00, 0x00, 0xFC, 0x00, - 0x0F, 0x3C, 0x00, 0x78, 0x78, 0x03, 0xE1, 0xF0, 0x1F, 0x03, 0xE0, 0x7C, - 0x0F, 0x83, 0xF0, 0x3F, 0x0F, 0xC0, 0xFC, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, - 0xE7, 0xF0, 0x3F, 0xBF, 0xC0, 0xFE, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, - 0xF0, 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, - 0x3F, 0xFF, 0xC0, 0xFF, 0xFF, 0x03, 0xFF, 0xFC, 0x0F, 0xFF, 0xF0, 0x3F, - 0x9F, 0xC0, 0xFE, 0x7F, 0x03, 0xF9, 0xFC, 0x0F, 0xE3, 0xF0, 0x3F, 0x0F, - 0xC0, 0xFC, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x80, 0xF8, 0x7C, 0x01, 0xE1, - 0xE0, 0x03, 0xCF, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x1E, 0x00, - 0x1F, 0x80, 0x1F, 0xE0, 0x1F, 0xF8, 0x1D, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, - 0xE0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x00, 0x7F, 0x80, 0x3F, 0xF8, 0xFF, 0xFF, 0xC0, 0x00, 0xFC, - 0x00, 0x1F, 0xF8, 0x03, 0xFF, 0xE0, 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x1C, - 0x1F, 0xF1, 0xC0, 0x7F, 0x8C, 0x01, 0xFC, 0x40, 0x0F, 0xE0, 0x00, 0x3F, - 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x00, - 0x00, 0x70, 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x01, 0x03, 0x80, 0x18, 0x38, 0x00, 0x81, 0x80, 0x1C, 0x1F, 0xFF, 0xE1, - 0xFF, 0xFF, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, 0x9F, 0xFF, 0xFC, 0xFF, 0xFF, - 0xE0, 0x00, 0xFE, 0x00, 0x3F, 0xFC, 0x03, 0xFF, 0xF0, 0x30, 0xFF, 0xC2, - 0x01, 0xFE, 0x30, 0x0F, 0xF1, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, - 0xE0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, - 0x1F, 0xC0, 0x03, 0xFF, 0x00, 0x3F, 0xFC, 0x00, 0x7F, 0xF0, 0x00, 0xFF, - 0x80, 0x03, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0x80, 0x00, 0x3C, - 0x00, 0x01, 0xC7, 0x80, 0x0E, 0x7F, 0x00, 0xE3, 0xFC, 0x06, 0x1F, 0xF8, - 0xE0, 0x7F, 0xFC, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, - 0xFF, 0x00, 0x0D, 0xF8, 0x00, 0xEF, 0xC0, 0x06, 0x7E, 0x00, 0x63, 0xF0, - 0x07, 0x1F, 0x80, 0x30, 0xFC, 0x03, 0x07, 0xE0, 0x38, 0x3F, 0x03, 0x81, - 0xF8, 0x18, 0x0F, 0xC1, 0xC0, 0x7E, 0x1C, 0x03, 0xF0, 0xC0, 0x1F, 0x8E, - 0x00, 0xFC, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xC0, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, - 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x07, 0xFF, - 0xF0, 0x7F, 0xFF, 0x0F, 0xFF, 0xE0, 0xFF, 0xFE, 0x0F, 0xFF, 0xE1, 0xFF, - 0xFC, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, 0x03, 0x00, 0x00, 0x3F, - 0x80, 0x03, 0xFF, 0x80, 0x7F, 0xFE, 0x07, 0xFF, 0xF0, 0x7F, 0xFF, 0x87, - 0xFF, 0xFC, 0x7F, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x7E, - 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, - 0xC0, 0x00, 0x0C, 0x78, 0x00, 0x8F, 0xE0, 0x18, 0xFF, 0x87, 0x0F, 0xFF, - 0xE0, 0x7F, 0xF8, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x38, 0x00, 0x1F, 0x00, - 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, - 0x00, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFE, 0x00, 0x0F, 0xF0, 0x00, 0x7F, - 0x00, 0x07, 0xF8, 0x00, 0x3F, 0xFF, 0x01, 0xFF, 0xFE, 0x1F, 0xF1, 0xFC, - 0xFF, 0x07, 0xE7, 0xF8, 0x3F, 0xBF, 0xC1, 0xFD, 0xFE, 0x07, 0xFF, 0xF0, - 0x3F, 0xFF, 0x81, 0xFF, 0xFC, 0x0F, 0xFF, 0xE0, 0x7F, 0xFF, 0x03, 0xFB, - 0xF8, 0x1F, 0xDF, 0xC0, 0xFE, 0xFE, 0x07, 0xE3, 0xF0, 0x3F, 0x1F, 0xC1, - 0xF0, 0x7E, 0x0F, 0x01, 0xF0, 0xF8, 0x03, 0xC7, 0x00, 0x07, 0xE0, 0x00, - 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xE7, 0xFF, - 0xFF, 0x3F, 0xFF, 0xF9, 0x80, 0x07, 0x98, 0x00, 0x3C, 0xC0, 0x03, 0xE4, - 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0xC0, 0x00, 0x3C, 0x00, 0x01, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, - 0x01, 0xFE, 0x00, 0x38, 0x7C, 0x07, 0x80, 0xF0, 0x78, 0x07, 0xC3, 0xC0, - 0x1F, 0x3E, 0x00, 0xF9, 0xF0, 0x07, 0xCF, 0xC0, 0x3E, 0x7E, 0x01, 0xF3, - 0xF8, 0x0F, 0x1F, 0xE0, 0xF8, 0x7F, 0xC7, 0x83, 0xFF, 0xF0, 0x0F, 0xFE, - 0x00, 0x7F, 0xFC, 0x01, 0xFF, 0xF0, 0x03, 0xFF, 0xC0, 0x1F, 0xFF, 0x03, - 0xBF, 0xFC, 0x7C, 0x7F, 0xE7, 0xC1, 0xFF, 0x3E, 0x07, 0xFF, 0xE0, 0x1F, - 0xFF, 0x00, 0x7F, 0xF8, 0x03, 0xFF, 0xC0, 0x0F, 0xFE, 0x00, 0x7F, 0xF0, - 0x03, 0xE7, 0x80, 0x1F, 0x3E, 0x01, 0xF0, 0xF8, 0x0F, 0x83, 0xE1, 0xF8, - 0x0F, 0xFF, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFC, 0x00, 0x1C, 0x3C, 0x00, - 0xF0, 0x78, 0x07, 0x81, 0xF8, 0x3E, 0x07, 0xE1, 0xF8, 0x0F, 0xC7, 0xE0, - 0x3F, 0x3F, 0x80, 0xFE, 0xFE, 0x03, 0xFB, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, - 0xFF, 0x80, 0xFF, 0xFE, 0x03, 0xFF, 0xF8, 0x0F, 0xFF, 0xE0, 0x3F, 0xDF, - 0xC0, 0xFF, 0x7F, 0x03, 0xFC, 0xFC, 0x0F, 0xF3, 0xFC, 0x7F, 0x83, 0xFF, - 0xFE, 0x07, 0xF7, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0x00, 0x03, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x00, 0x3F, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x7E, 0xFF, 0xFF, - 0xFF, 0xFF, 0x7E, 0x3C, 0x3C, 0x3F, 0x3F, 0xDF, 0xEF, 0xF7, 0xF9, 0xF8, - 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7F, 0x7F, - 0xBF, 0xFF, 0xFF, 0xFB, 0xFC, 0xFE, 0x07, 0x03, 0x01, 0x81, 0x81, 0x81, - 0x83, 0x81, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0x80, 0x01, - 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x01, - 0xFF, 0x80, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0x80, 0x00, 0x3F, 0xE0, 0x00, - 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, - 0xE0, 0x00, 0x07, 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFF, 0x00, - 0x00, 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 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, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0xC0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0xFF, 0xC0, 0x00, 0x0F, 0xFC, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x0F, - 0xFE, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xE0, - 0x00, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x1F, 0xF0, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, - 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x1F, 0xF8, 0x00, 0x3F, 0xF0, 0x00, 0x0F, - 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x07, 0xF0, 0x07, 0xFF, 0x03, 0x87, 0xE1, 0xC0, 0xFC, 0xF0, 0x3F, - 0xBE, 0x07, 0xEF, 0xC1, 0xFF, 0xF0, 0x7F, 0xFC, 0x1F, 0xDF, 0x07, 0xF7, - 0x81, 0xFC, 0x00, 0xFE, 0x00, 0x3F, 0x80, 0x1F, 0xC0, 0x07, 0xE0, 0x03, - 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x18, 0x00, 0x04, 0x00, 0x01, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x00, 0x1F, 0x80, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0xFF, 0x00, 0x3F, - 0xC0, 0x07, 0xE0, 0x00, 0xF0, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x1F, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x03, 0x80, 0x3C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x30, 0x3E, - 0x00, 0x00, 0x0C, 0x3E, 0x00, 0x3C, 0x37, 0x1F, 0x00, 0x7E, 0xF1, 0x9F, - 0x00, 0x7C, 0xF8, 0xCF, 0x80, 0x78, 0x7C, 0x37, 0xC0, 0x7C, 0x3C, 0x1F, - 0xC0, 0x3C, 0x1E, 0x0F, 0xE0, 0x3C, 0x0F, 0x07, 0xF0, 0x3E, 0x0F, 0x03, - 0xF8, 0x1E, 0x07, 0x81, 0xFC, 0x0F, 0x03, 0xC0, 0xFE, 0x0F, 0x03, 0xE0, - 0x7F, 0x07, 0x81, 0xE0, 0x6F, 0x83, 0xC1, 0xF0, 0x37, 0xC1, 0xE1, 0x78, - 0x31, 0xF0, 0xF9, 0xBC, 0x18, 0xF8, 0x3F, 0x9E, 0x38, 0x3C, 0x0F, 0x0F, - 0xF8, 0x1F, 0x00, 0x01, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0xC0, 0x01, 0xF8, 0x03, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x03, - 0xFF, 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, - 0x03, 0x80, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, - 0x37, 0xF8, 0x00, 0x00, 0x33, 0xF8, 0x00, 0x00, 0x33, 0xFC, 0x00, 0x00, - 0x61, 0xFC, 0x00, 0x00, 0x61, 0xFE, 0x00, 0x00, 0xC1, 0xFE, 0x00, 0x00, - 0xC0, 0xFF, 0x00, 0x00, 0xC0, 0xFF, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x01, - 0x80, 0x7F, 0x80, 0x03, 0x80, 0x7F, 0x80, 0x03, 0xFF, 0xFF, 0xC0, 0x03, - 0xFF, 0xFF, 0xC0, 0x07, 0x00, 0x3F, 0xC0, 0x06, 0x00, 0x1F, 0xE0, 0x0E, - 0x00, 0x1F, 0xE0, 0x0C, 0x00, 0x0F, 0xF0, 0x0C, 0x00, 0x0F, 0xF0, 0x1C, - 0x00, 0x0F, 0xF8, 0x1C, 0x00, 0x0F, 0xF8, 0x7E, 0x00, 0x0F, 0xFC, 0xFF, - 0x80, 0x7F, 0xFF, 0xFF, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xE0, 0x1F, 0xF8, - 0x7F, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, 0xC0, 0xFF, 0x01, 0xFE, - 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, - 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x3F, - 0x00, 0xFF, 0x0F, 0xC0, 0x0F, 0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xC0, 0x0F, - 0xF0, 0xFF, 0x00, 0xFF, 0x03, 0xFC, 0x0F, 0xF0, 0x1F, 0xE0, 0xFF, 0x01, - 0xFE, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, - 0xFF, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xF0, 0xFF, 0x00, 0xFF, 0x0F, 0xF0, - 0x0F, 0xE0, 0xFF, 0x01, 0xFE, 0x0F, 0xF0, 0x1F, 0xC0, 0xFF, 0x87, 0xF0, - 0x3F, 0xFF, 0xFE, 0x0F, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x01, - 0xFF, 0xF0, 0x60, 0x0F, 0xC1, 0xF9, 0x80, 0xFC, 0x01, 0xFE, 0x07, 0xE0, - 0x01, 0xF8, 0x3F, 0x00, 0x03, 0xE1, 0xFC, 0x00, 0x07, 0x87, 0xE0, 0x00, - 0x1E, 0x3F, 0x80, 0x00, 0x38, 0xFE, 0x00, 0x00, 0x67, 0xF8, 0x00, 0x01, - 0x9F, 0xC0, 0x00, 0x02, 0x7F, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x87, 0xF0, 0x00, 0x07, 0x0F, 0xE0, 0x00, 0x38, 0x1F, 0x80, 0x01, 0xC0, - 0x3F, 0x00, 0x1E, 0x00, 0x7F, 0x01, 0xE0, 0x00, 0x7F, 0xFF, 0x00, 0x00, - 0x3F, 0xE0, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0x3F, 0xFF, 0xFE, 0x00, 0x0F, - 0xF8, 0x7F, 0x80, 0x0F, 0xF0, 0x1F, 0xC0, 0x0F, 0xF0, 0x0F, 0xF0, 0x0F, - 0xF0, 0x07, 0xF0, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, 0xF0, 0x03, 0xFC, 0x0F, - 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, - 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x00, 0xFE, 0x0F, 0xF0, 0x01, 0xFE, 0x0F, - 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x01, 0xFC, 0x0F, 0xF0, 0x03, 0xF8, 0x0F, - 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x07, 0xE0, 0x0F, 0xF0, 0x0F, 0xC0, 0x0F, - 0xF8, 0x3F, 0x80, 0x1F, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, - 0xFF, 0xFF, 0xC3, 0xFF, 0xFF, 0xFC, 0x1F, 0xE0, 0x1F, 0xC1, 0xFE, 0x00, - 0x3C, 0x1F, 0xE0, 0x01, 0xC1, 0xFE, 0x00, 0x0C, 0x1F, 0xE0, 0x00, 0xC1, - 0xFE, 0x00, 0x04, 0x1F, 0xE0, 0x20, 0x41, 0xFE, 0x02, 0x00, 0x1F, 0xE0, - 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0xE0, 0x01, 0xFE, 0x1E, 0x00, - 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xFE, 0x00, 0x1F, 0xE3, 0xE0, 0x01, 0xFE, - 0x0E, 0x00, 0x1F, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x00, 0x1F, 0xE0, 0x20, - 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xE0, 0x00, 0x11, 0xFE, 0x00, 0x03, 0x1F, - 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xE1, 0xFE, 0x00, - 0x1E, 0x1F, 0xE0, 0x03, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, 0xFF, 0xFF, 0xEF, - 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0x9F, 0xFF, 0xFF, 0xC7, 0xFC, 0x07, - 0xE3, 0xFC, 0x00, 0xF1, 0xFE, 0x00, 0x38, 0xFF, 0x00, 0x0C, 0x7F, 0x80, - 0x06, 0x3F, 0xC0, 0x01, 0x1F, 0xE0, 0x20, 0x8F, 0xF0, 0x10, 0x07, 0xF8, - 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x0E, 0x00, 0xFF, 0x1F, 0x00, 0x7F, - 0xFF, 0x80, 0x3F, 0xFF, 0xC0, 0x1F, 0xE3, 0xE0, 0x0F, 0xF0, 0x70, 0x07, - 0xF8, 0x18, 0x03, 0xFC, 0x0C, 0x01, 0xFE, 0x02, 0x00, 0xFF, 0x01, 0x00, - 0x7F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, - 0x07, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, - 0x00, 0xFF, 0xC0, 0x01, 0xFF, 0xFC, 0x00, 0x00, 0x0F, 0xF0, 0x08, 0x00, - 0x3F, 0xFE, 0x0C, 0x00, 0x3F, 0x07, 0xC6, 0x00, 0x7E, 0x00, 0xFF, 0x00, - 0x7E, 0x00, 0x1F, 0x80, 0x7E, 0x00, 0x07, 0xC0, 0x7F, 0x00, 0x01, 0xE0, - 0x3F, 0x00, 0x00, 0x70, 0x3F, 0x80, 0x00, 0x38, 0x1F, 0xC0, 0x00, 0x0C, - 0x1F, 0xE0, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x01, 0x07, 0xF0, 0x00, 0x00, - 0x07, 0xF8, 0x00, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0xFF, 0x00, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x0F, 0xF0, 0x03, 0xFF, 0xFF, 0xF8, 0x00, - 0x3F, 0xF1, 0xFC, 0x00, 0x0F, 0xF0, 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, - 0x03, 0xFC, 0x1F, 0xC0, 0x01, 0xFE, 0x0F, 0xE0, 0x00, 0xFF, 0x03, 0xF8, - 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x1F, 0xE0, 0x0F, - 0xC0, 0x0F, 0xF0, 0x03, 0xF8, 0x1F, 0xF0, 0x00, 0x7F, 0xFF, 0xC0, 0x00, - 0x07, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x1F, 0xFF, 0x9F, 0xF8, 0x03, 0xFF, - 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, - 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, - 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, - 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, - 0x1F, 0xE0, 0x7F, 0x80, 0x0F, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x1F, 0xFF, - 0xFF, 0xFC, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, - 0x00, 0x7F, 0x81, 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0x7F, - 0x80, 0x0F, 0xF0, 0x3F, 0xC0, 0x07, 0xF8, 0x1F, 0xE0, 0x03, 0xFC, 0x0F, - 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x03, 0xFC, 0x00, 0x7F, 0x81, - 0xFE, 0x00, 0x3F, 0xC0, 0xFF, 0x00, 0x1F, 0xE0, 0xFF, 0xC0, 0x1F, 0xF9, - 0xFF, 0xF8, 0x3F, 0xFF, 0xFF, 0xFE, 0x7F, 0xE0, 0x7F, 0x80, 0xFF, 0x01, - 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, - 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, 0xF0, 0x1F, 0xE0, - 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, 0x07, 0xF8, 0x0F, - 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x7F, 0x80, 0xFF, 0x01, 0xFE, 0x03, 0xFC, - 0x0F, 0xFC, 0x7F, 0xFF, 0x01, 0xFF, 0xFC, 0x00, 0xFF, 0xC0, 0x01, 0xFE, - 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, - 0x07, 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, - 0x00, 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, - 0x1F, 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, - 0xE0, 0x00, 0x7F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF8, 0x78, 0x1F, 0xE3, - 0xF0, 0x7F, 0x8F, 0xC1, 0xFC, 0x3F, 0x07, 0xF0, 0xFC, 0x1F, 0xC1, 0xE0, - 0xFE, 0x07, 0xC3, 0xF0, 0x0F, 0xFF, 0x80, 0x07, 0xF0, 0x00, 0xFF, 0xFC, - 0x1F, 0xFF, 0x0F, 0xFC, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0x1E, 0x00, 0x7F, - 0x80, 0x07, 0x00, 0x1F, 0xE0, 0x03, 0x80, 0x07, 0xF8, 0x01, 0xC0, 0x01, - 0xFE, 0x00, 0xE0, 0x00, 0x7F, 0x80, 0x70, 0x00, 0x1F, 0xE0, 0x38, 0x00, - 0x07, 0xF8, 0x1C, 0x00, 0x01, 0xFE, 0x0E, 0x00, 0x00, 0x7F, 0x87, 0x00, - 0x00, 0x1F, 0xE3, 0xC0, 0x00, 0x07, 0xF9, 0xF8, 0x00, 0x01, 0xFE, 0xFE, - 0x00, 0x00, 0x7F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xF8, 0x00, 0x07, 0xFD, - 0xFF, 0x00, 0x01, 0xFE, 0x7F, 0xE0, 0x00, 0x7F, 0x8F, 0xF8, 0x00, 0x1F, - 0xE1, 0xFF, 0x00, 0x07, 0xF8, 0x3F, 0xE0, 0x01, 0xFE, 0x07, 0xFC, 0x00, - 0x7F, 0x81, 0xFF, 0x80, 0x1F, 0xE0, 0x3F, 0xE0, 0x07, 0xF8, 0x07, 0xFC, - 0x01, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0x80, 0x1F, 0xF0, 0x1F, 0xE0, 0x07, - 0xFE, 0x07, 0xF8, 0x00, 0xFF, 0x83, 0xFF, 0x00, 0x3F, 0xF3, 0xFF, 0xF0, - 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, - 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, - 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x01, 0x1F, 0xE0, 0x00, 0x31, 0xFE, - 0x00, 0x03, 0x1F, 0xE0, 0x00, 0x71, 0xFE, 0x00, 0x07, 0x1F, 0xE0, 0x00, - 0xE1, 0xFE, 0x00, 0x1E, 0x1F, 0xE0, 0x07, 0xE3, 0xFF, 0x01, 0xFE, 0xFF, - 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0x7F, 0xF0, 0x00, 0x01, 0xFF, 0xE1, - 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x1F, 0xE0, 0x00, 0x0F, 0xFC, 0x03, 0xFC, - 0x00, 0x01, 0xFF, 0x80, 0x7F, 0xC0, 0x00, 0x2F, 0xF0, 0x0B, 0xF8, 0x00, - 0x0D, 0xFE, 0x01, 0x7F, 0x80, 0x01, 0xBF, 0xC0, 0x27, 0xF0, 0x00, 0x67, - 0xF8, 0x04, 0xFF, 0x00, 0x0C, 0xFF, 0x00, 0x8F, 0xE0, 0x03, 0x1F, 0xE0, - 0x11, 0xFE, 0x00, 0x63, 0xFC, 0x02, 0x3F, 0xC0, 0x08, 0x7F, 0x80, 0x43, - 0xF8, 0x03, 0x0F, 0xF0, 0x08, 0x7F, 0x80, 0x61, 0xFE, 0x01, 0x07, 0xF0, - 0x18, 0x3F, 0xC0, 0x20, 0xFF, 0x03, 0x07, 0xF8, 0x04, 0x0F, 0xE0, 0xC0, - 0xFF, 0x00, 0x81, 0xFE, 0x18, 0x1F, 0xE0, 0x10, 0x3F, 0xC6, 0x03, 0xFC, - 0x02, 0x03, 0xF8, 0xC0, 0x7F, 0x80, 0x40, 0x7F, 0x98, 0x0F, 0xF0, 0x08, - 0x07, 0xF6, 0x01, 0xFE, 0x01, 0x00, 0xFF, 0xC0, 0x3F, 0xC0, 0x20, 0x0F, - 0xF0, 0x07, 0xF8, 0x04, 0x01, 0xFE, 0x00, 0xFF, 0x00, 0x80, 0x1F, 0x80, - 0x1F, 0xE0, 0x10, 0x03, 0xF0, 0x03, 0xFC, 0x02, 0x00, 0x7E, 0x00, 0x7F, - 0x80, 0x40, 0x07, 0x80, 0x0F, 0xF0, 0x0C, 0x00, 0xF0, 0x01, 0xFE, 0x07, - 0xC0, 0x0C, 0x00, 0x7F, 0xE7, 0xFF, 0x01, 0x80, 0x3F, 0xFF, 0xFF, 0xC0, - 0x03, 0xFE, 0xFF, 0xC0, 0x01, 0xF0, 0xFF, 0xC0, 0x01, 0xC0, 0xFF, 0xC0, - 0x01, 0x80, 0xFF, 0x80, 0x03, 0x01, 0xFF, 0x80, 0x06, 0x03, 0xFF, 0x80, - 0x0C, 0x07, 0xFF, 0x80, 0x18, 0x0D, 0xFF, 0x80, 0x30, 0x19, 0xFF, 0x00, - 0x60, 0x31, 0xFF, 0x00, 0xC0, 0x61, 0xFF, 0x01, 0x80, 0xC1, 0xFF, 0x03, - 0x01, 0x83, 0xFF, 0x06, 0x03, 0x03, 0xFE, 0x0C, 0x06, 0x03, 0xFE, 0x18, - 0x0C, 0x03, 0xFE, 0x30, 0x18, 0x03, 0xFE, 0x60, 0x30, 0x03, 0xFE, 0xC0, - 0x60, 0x07, 0xFD, 0x80, 0xC0, 0x07, 0xFF, 0x01, 0x80, 0x07, 0xFE, 0x03, - 0x00, 0x07, 0xFC, 0x06, 0x00, 0x07, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x18, - 0x00, 0x0F, 0xE0, 0x30, 0x00, 0x0F, 0xC0, 0x60, 0x00, 0x0F, 0x80, 0xC0, - 0x00, 0x0F, 0x01, 0xC0, 0x00, 0x0E, 0x0F, 0xC0, 0x00, 0x1C, 0x7F, 0xE0, - 0x00, 0x18, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x3F, 0xFF, 0x80, 0x00, 0x3F, - 0x07, 0xF0, 0x00, 0x7E, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x7E, - 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, 0x3F, 0x00, 0x03, 0xF8, 0x3F, - 0x80, 0x00, 0xFE, 0x3F, 0xC0, 0x00, 0x7F, 0x1F, 0xE0, 0x00, 0x3F, 0xCF, - 0xE0, 0x00, 0x0F, 0xEF, 0xF0, 0x00, 0x07, 0xF7, 0xF8, 0x00, 0x03, 0xFF, - 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x7F, - 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x1F, 0xFF, 0xE0, 0x00, 0x0F, - 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, 0x03, 0xFD, 0xFC, 0x00, 0x01, - 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, 0x00, 0xFF, 0x1F, 0xC0, 0x00, - 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, 0x00, 0x3F, 0x80, 0xFC, 0x00, - 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x03, 0xF8, - 0x3F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0xFF, - 0xFF, 0xE0, 0x1F, 0xFF, 0xFF, 0x01, 0xFE, 0x1F, 0xE0, 0x7F, 0x81, 0xFC, - 0x1F, 0xE0, 0x7F, 0x87, 0xF8, 0x0F, 0xE1, 0xFE, 0x03, 0xFC, 0x7F, 0x80, - 0xFF, 0x1F, 0xE0, 0x3F, 0xC7, 0xF8, 0x0F, 0xF1, 0xFE, 0x03, 0xFC, 0x7F, - 0x80, 0xFF, 0x1F, 0xE0, 0x3F, 0x87, 0xF8, 0x1F, 0xE1, 0xFE, 0x07, 0xF0, - 0x7F, 0x87, 0xF8, 0x1F, 0xFF, 0xF8, 0x07, 0xFF, 0xF8, 0x01, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, 0xFE, - 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF8, 0x00, - 0x03, 0xFF, 0x00, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, - 0x3F, 0xFF, 0x80, 0x00, 0x3F, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0xFC, 0x00, - 0x7E, 0x00, 0x3F, 0x00, 0x7E, 0x00, 0x1F, 0xC0, 0x7F, 0x00, 0x07, 0xF0, - 0x3F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFE, 0x1F, 0xC0, 0x00, 0x7F, - 0x1F, 0xE0, 0x00, 0x3F, 0xCF, 0xE0, 0x00, 0x0F, 0xE7, 0xF0, 0x00, 0x07, - 0xF7, 0xF8, 0x00, 0x03, 0xFF, 0xFC, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x00, - 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xC0, 0x00, - 0x1F, 0xFF, 0xE0, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x03, 0xFD, 0xFC, 0x00, 0x01, 0xFC, 0xFE, 0x00, 0x01, 0xFE, 0x7F, 0x80, - 0x00, 0xFF, 0x1F, 0xC0, 0x00, 0x7F, 0x0F, 0xE0, 0x00, 0x3F, 0x83, 0xF8, - 0x00, 0x3F, 0x80, 0xFC, 0x00, 0x1F, 0x80, 0x3F, 0x00, 0x1F, 0x80, 0x0F, - 0xC0, 0x1F, 0x80, 0x03, 0xF0, 0x1F, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x00, - 0x0F, 0xFC, 0x00, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFF, 0xC0, 0x00, - 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x1F, 0xFC, 0x00, 0x00, 0x07, 0xFF, 0x80, - 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0xFF, 0xFF, 0xE0, - 0x00, 0xFF, 0xFF, 0xF8, 0x00, 0x7F, 0xC3, 0xFC, 0x00, 0xFF, 0x01, 0xFC, - 0x01, 0xFE, 0x03, 0xFC, 0x03, 0xFC, 0x03, 0xF8, 0x07, 0xF8, 0x07, 0xF8, - 0x0F, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0xC0, - 0x7F, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x01, 0xFC, 0x03, - 0xFC, 0x07, 0xF8, 0x07, 0xF8, 0x1F, 0xE0, 0x0F, 0xF0, 0xFF, 0x00, 0x1F, - 0xFF, 0xF8, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0x9F, 0xE0, 0x00, 0xFF, - 0x3F, 0xC0, 0x01, 0xFE, 0x3F, 0xC0, 0x03, 0xFC, 0x7F, 0xC0, 0x07, 0xF8, - 0x7F, 0xC0, 0x0F, 0xF0, 0x7F, 0x80, 0x1F, 0xE0, 0xFF, 0x80, 0x3F, 0xC0, - 0xFF, 0x80, 0x7F, 0x80, 0xFF, 0x00, 0xFF, 0x01, 0xFF, 0x01, 0xFE, 0x01, - 0xFF, 0x03, 0xFC, 0x01, 0xFF, 0x0F, 0xFC, 0x03, 0xFE, 0x7F, 0xFE, 0x03, - 0xFF, 0x03, 0xF8, 0x10, 0x7F, 0xF9, 0x87, 0xC1, 0xFC, 0x78, 0x03, 0xE7, - 0x80, 0x0F, 0x3C, 0x00, 0x3B, 0xE0, 0x01, 0xDF, 0x00, 0x06, 0xF8, 0x00, - 0x37, 0xE0, 0x00, 0xBF, 0x80, 0x01, 0xFF, 0x00, 0x0F, 0xFE, 0x00, 0x3F, - 0xFC, 0x01, 0xFF, 0xF8, 0x07, 0xFF, 0xF0, 0x1F, 0xFF, 0xC0, 0x7F, 0xFF, - 0x00, 0xFF, 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0x80, 0x07, 0xFC, 0x00, - 0x1F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFE, 0x00, 0x07, 0xF0, 0x00, 0x3F, - 0xC0, 0x01, 0xEE, 0x00, 0x0F, 0x78, 0x00, 0xF3, 0xE0, 0x0F, 0x9F, 0xC0, - 0xF8, 0x8F, 0xFF, 0x04, 0x0F, 0xE0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFC, 0x3F, 0xC3, 0xFF, 0x03, 0xFC, 0x0F, 0xE0, 0x3F, 0xC0, - 0x7C, 0x03, 0xFC, 0x03, 0xC0, 0x3F, 0xC0, 0x38, 0x03, 0xFC, 0x01, 0x80, - 0x3F, 0xC0, 0x10, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, - 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, - 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, - 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x3F, 0xFF, 0xC0, 0xFF, - 0xFE, 0x07, 0xFC, 0xFF, 0xC0, 0x07, 0xC1, 0xFE, 0x00, 0x0E, 0x07, 0xF8, - 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, - 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, - 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, - 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, - 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, 0x06, 0x07, 0xF8, - 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x01, 0x81, 0xFE, 0x00, - 0x06, 0x07, 0xF8, 0x00, 0x18, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x80, 0x03, - 0x00, 0xFF, 0x00, 0x0C, 0x03, 0xFC, 0x00, 0x30, 0x07, 0xF0, 0x01, 0x80, - 0x0F, 0xE0, 0x0E, 0x00, 0x1F, 0xE0, 0xF0, 0x00, 0x1F, 0xFF, 0x00, 0x00, - 0x1F, 0xF0, 0x00, 0xFF, 0xFF, 0x01, 0xFF, 0x9F, 0xFC, 0x00, 0x1F, 0x07, - 0xFC, 0x00, 0x07, 0x01, 0xFE, 0x00, 0x03, 0x00, 0x7F, 0x80, 0x03, 0x80, - 0x3F, 0xC0, 0x01, 0x80, 0x1F, 0xE0, 0x00, 0xC0, 0x07, 0xF8, 0x00, 0xC0, - 0x03, 0xFC, 0x00, 0x60, 0x00, 0xFF, 0x00, 0x30, 0x00, 0x7F, 0x80, 0x30, - 0x00, 0x1F, 0xE0, 0x18, 0x00, 0x0F, 0xF0, 0x18, 0x00, 0x07, 0xF8, 0x0C, - 0x00, 0x01, 0xFE, 0x06, 0x00, 0x00, 0xFF, 0x06, 0x00, 0x00, 0x3F, 0xC3, - 0x00, 0x00, 0x1F, 0xE3, 0x80, 0x00, 0x0F, 0xF1, 0x80, 0x00, 0x03, 0xFC, - 0xC0, 0x00, 0x01, 0xFE, 0xC0, 0x00, 0x00, 0x7F, 0xE0, 0x00, 0x00, 0x3F, - 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x01, 0x80, 0x00, 0xFF, 0xF8, 0x7F, 0xFF, 0x0F, 0xFB, 0xFF, 0x00, 0xFF, - 0xC0, 0x1F, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x70, 0x3F, 0x80, 0x0F, 0xE0, - 0x03, 0x81, 0xFE, 0x00, 0x7F, 0x80, 0x1C, 0x0F, 0xF0, 0x03, 0xFC, 0x00, - 0xC0, 0x3F, 0x80, 0x0F, 0xE0, 0x06, 0x01, 0xFE, 0x00, 0x7F, 0x00, 0x70, - 0x0F, 0xF0, 0x07, 0xFC, 0x03, 0x00, 0x3F, 0x80, 0x3F, 0xE0, 0x18, 0x01, - 0xFE, 0x01, 0xFF, 0x01, 0xC0, 0x0F, 0xF0, 0x1B, 0xFC, 0x0C, 0x00, 0x3F, - 0x80, 0xCF, 0xE0, 0x60, 0x01, 0xFE, 0x06, 0x7F, 0x07, 0x00, 0x0F, 0xF0, - 0x63, 0xFC, 0x30, 0x00, 0x3F, 0x83, 0x0F, 0xE1, 0x80, 0x01, 0xFE, 0x30, - 0x7F, 0x1C, 0x00, 0x07, 0xF1, 0x81, 0xFC, 0xC0, 0x00, 0x3F, 0x8C, 0x0F, - 0xE6, 0x00, 0x01, 0xFE, 0xC0, 0x7F, 0x70, 0x00, 0x07, 0xF6, 0x01, 0xFB, - 0x00, 0x00, 0x3F, 0xE0, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x7F, 0xC0, - 0x00, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, - 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x00, 0x07, 0xE0, 0x01, 0xF0, 0x00, 0x00, - 0x3E, 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x00, 0x07, - 0x00, 0x01, 0xC0, 0x00, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x70, 0x00, 0x00, 0x04, 0x00, 0x01, 0x00, 0x00, 0xFF, 0xFF, 0x0F, - 0xFF, 0x3F, 0xF8, 0x01, 0xF8, 0x1F, 0xF8, 0x01, 0xE0, 0x0F, 0xF8, 0x01, - 0xC0, 0x0F, 0xF8, 0x01, 0x80, 0x07, 0xFC, 0x03, 0x80, 0x03, 0xFE, 0x07, - 0x00, 0x03, 0xFE, 0x06, 0x00, 0x01, 0xFF, 0x0C, 0x00, 0x00, 0xFF, 0x9C, - 0x00, 0x00, 0xFF, 0x98, 0x00, 0x00, 0x7F, 0xF0, 0x00, 0x00, 0x3F, 0xF0, - 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x0F, 0xFC, - 0x00, 0x00, 0x0F, 0xFE, 0x00, 0x00, 0x19, 0xFE, 0x00, 0x00, 0x31, 0xFF, - 0x00, 0x00, 0x70, 0xFF, 0x80, 0x00, 0x60, 0x7F, 0x80, 0x00, 0xC0, 0x7F, - 0xC0, 0x01, 0xC0, 0x3F, 0xE0, 0x03, 0x80, 0x1F, 0xE0, 0x07, 0x00, 0x1F, - 0xF0, 0x07, 0x00, 0x0F, 0xF8, 0x0F, 0x00, 0x0F, 0xF8, 0x3F, 0x80, 0x1F, - 0xFC, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0x03, 0xFF, 0x7F, 0xF0, 0x00, - 0x7E, 0x1F, 0xF0, 0x00, 0x38, 0x1F, 0xF0, 0x00, 0x38, 0x0F, 0xF0, 0x00, - 0x70, 0x0F, 0xF8, 0x00, 0x60, 0x07, 0xF8, 0x00, 0x60, 0x07, 0xFC, 0x00, - 0xC0, 0x03, 0xFC, 0x01, 0xC0, 0x01, 0xFE, 0x01, 0x80, 0x01, 0xFE, 0x03, - 0x00, 0x00, 0xFF, 0x03, 0x00, 0x00, 0xFF, 0x86, 0x00, 0x00, 0x7F, 0x8E, - 0x00, 0x00, 0x7F, 0xCC, 0x00, 0x00, 0x3F, 0xD8, 0x00, 0x00, 0x3F, 0xF8, - 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1F, 0xF8, 0x00, 0x00, 0x7F, 0xFE, - 0x00, 0x3F, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0xFC, 0x3F, 0x80, 0x7F, 0xC3, - 0xE0, 0x07, 0xF8, 0x38, 0x00, 0xFF, 0x83, 0x80, 0x0F, 0xF0, 0x30, 0x01, - 0xFE, 0x07, 0x00, 0x3F, 0xE0, 0x60, 0x03, 0xFC, 0x06, 0x00, 0x7F, 0xC0, - 0x00, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xF0, 0x00, 0x01, - 0xFE, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x7F, 0x80, - 0x00, 0x0F, 0xF8, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, - 0xFE, 0x00, 0x00, 0x3F, 0xC0, 0x01, 0x07, 0xFC, 0x00, 0x30, 0xFF, 0x80, - 0x03, 0x0F, 0xF0, 0x00, 0x31, 0xFF, 0x00, 0x07, 0x1F, 0xE0, 0x00, 0xF3, - 0xFE, 0x00, 0x1E, 0x7F, 0xC0, 0x03, 0xE7, 0xF8, 0x01, 0xFE, 0xFF, 0xFF, - 0xFF, 0xEF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xF0, 0x7C, 0x0F, 0x81, - 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, - 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, - 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, - 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xFF, 0xFF, 0xF8, 0xF0, - 0x01, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, - 0x1F, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, - 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1F, - 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xE0, - 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, - 0x1E, 0xFF, 0xFF, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, - 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, - 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, - 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, - 0x0F, 0x81, 0xF0, 0x3F, 0xFF, 0xFF, 0xF8, 0x00, 0x78, 0x00, 0x07, 0xC0, - 0x00, 0x3F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xE0, 0x01, 0xEF, 0x00, 0x0F, - 0x3C, 0x00, 0xF1, 0xE0, 0x07, 0x87, 0x80, 0x78, 0x3C, 0x03, 0xC0, 0xF0, - 0x3C, 0x07, 0x81, 0xE0, 0x1E, 0x1E, 0x00, 0xF0, 0xF0, 0x07, 0xCF, 0x00, - 0x1E, 0x78, 0x00, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x70, 0x1F, 0x03, 0xF0, 0x7E, 0x03, 0xE0, 0x3E, 0x01, 0xE0, 0x1E, - 0x00, 0xE0, 0x03, 0xFC, 0x00, 0x3F, 0xFC, 0x03, 0xE1, 0xF8, 0x0F, 0x03, - 0xF0, 0x7C, 0x07, 0xC1, 0xF8, 0x1F, 0x87, 0xE0, 0x7E, 0x1F, 0x81, 0xF8, - 0x3C, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x01, 0xFE, 0x00, 0x3F, 0xF8, 0x03, - 0xE7, 0xE0, 0x3E, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0x81, 0xF8, 0x7E, 0x07, - 0xE3, 0xF8, 0x1F, 0x8F, 0xE0, 0x7E, 0x3F, 0x83, 0xF8, 0xFF, 0x1F, 0xE1, - 0xFF, 0xDF, 0xF7, 0xFE, 0x3F, 0x07, 0xE0, 0xF8, 0xFF, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, - 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, 0x00, - 0x0F, 0xC7, 0xF0, 0x07, 0xEF, 0xFE, 0x03, 0xFC, 0x3F, 0x81, 0xFC, 0x0F, - 0xE0, 0xFC, 0x03, 0xF0, 0x7E, 0x01, 0xFC, 0x3F, 0x00, 0xFE, 0x1F, 0x80, - 0x3F, 0x8F, 0xC0, 0x1F, 0xC7, 0xE0, 0x0F, 0xE3, 0xF0, 0x07, 0xF1, 0xF8, - 0x03, 0xF8, 0xFC, 0x01, 0xFC, 0x7E, 0x00, 0xFE, 0x3F, 0x00, 0x7F, 0x1F, - 0x80, 0x3F, 0x0F, 0xC0, 0x1F, 0x87, 0xE0, 0x1F, 0xC3, 0xF0, 0x0F, 0xC1, - 0xF8, 0x07, 0xE0, 0xFE, 0x07, 0xE0, 0x73, 0x87, 0xE0, 0x30, 0xFF, 0xC0, - 0x10, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x7F, 0xE0, 0x3E, 0x3E, 0x0F, - 0x83, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0x9F, 0x01, 0xF3, 0xE0, 0x1C, 0x7C, - 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, - 0x00, 0x3F, 0x00, 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, - 0x00, 0x1F, 0xC0, 0x21, 0xFE, 0x0C, 0x3F, 0xFF, 0x01, 0xFF, 0x80, 0x0F, - 0xC0, 0x00, 0x1F, 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x03, 0xF1, 0xF8, 0x07, 0xFD, 0xF8, 0x1F, 0xC7, - 0xF8, 0x1F, 0x83, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, - 0xF8, 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, - 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, - 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, - 0xF8, 0x3F, 0x03, 0xF8, 0x3F, 0x03, 0xF8, 0x1F, 0x87, 0xFC, 0x0F, 0xFD, - 0xFF, 0x03, 0xF1, 0xC0, 0x03, 0xF0, 0x03, 0xFF, 0x01, 0xE1, 0xE0, 0xF8, - 0x7C, 0x3C, 0x0F, 0x1F, 0x03, 0xE7, 0xC0, 0xFB, 0xF0, 0x3E, 0xFC, 0x0F, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x0F, - 0xC0, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x1F, 0x80, 0x07, 0xF0, 0x0C, 0xFC, - 0x06, 0x3F, 0xC3, 0x07, 0xFF, 0x80, 0xFF, 0xC0, 0x0F, 0xC0, 0x00, 0xFC, - 0x01, 0xFF, 0x81, 0xF1, 0xC1, 0xF0, 0xF0, 0xF8, 0xF8, 0xFC, 0x7C, 0x7E, - 0x1C, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x1F, 0xFF, 0x0F, - 0xFF, 0x80, 0xFC, 0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x80, 0x0F, 0xC0, - 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x7E, 0x00, 0x3F, - 0x00, 0x1F, 0x80, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0x7E, 0x00, 0x7F, 0x80, 0xFF, 0xF8, 0x00, 0x07, 0xF0, 0x03, - 0xFF, 0xFC, 0xF8, 0x7F, 0xBE, 0x07, 0x87, 0xC0, 0xF9, 0xF8, 0x1F, 0xBF, - 0x03, 0xF7, 0xE0, 0x7E, 0xFC, 0x0F, 0xDF, 0x81, 0xF9, 0xF0, 0x3F, 0x3E, - 0x07, 0xC3, 0xE1, 0xF8, 0x3C, 0x7E, 0x01, 0xFF, 0x00, 0x60, 0x00, 0x38, - 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, 0x7F, 0xFF, 0x0F, 0xFF, 0xF9, 0xFF, - 0xFF, 0x9F, 0xFF, 0xF9, 0xFF, 0xFF, 0x0F, 0xFF, 0xEF, 0x00, 0x3F, 0xC0, - 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x1C, 0xF8, 0x07, 0x0F, 0xFF, 0xC0, 0x7F, - 0xC0, 0xFF, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, - 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, - 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x87, 0xE0, 0x1F, 0x9F, 0xF0, 0x1F, 0xBF, - 0xF8, 0x1F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, - 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, - 0xFF, 0x0F, 0x07, 0xE1, 0xFE, 0x3F, 0xC7, 0xF8, 0x7F, 0x03, 0xC0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x7F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, - 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, - 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE1, 0xFE, 0xFF, 0xE0, 0x00, - 0x70, 0x07, 0xF0, 0x3F, 0xC0, 0xFF, 0x03, 0xFC, 0x07, 0xF0, 0x0F, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFC, 0x03, 0xF0, - 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, - 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, - 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, - 0xDC, 0x3F, 0xF8, 0xFB, 0xE3, 0xEF, 0x0F, 0xBC, 0x7C, 0x7F, 0xE0, 0x7E, - 0x00, 0xFF, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xF0, - 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, - 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE1, 0xFF, 0x83, - 0xF0, 0x3F, 0x01, 0xF8, 0x0E, 0x00, 0xFC, 0x06, 0x00, 0x7E, 0x06, 0x00, - 0x3F, 0x06, 0x00, 0x1F, 0x86, 0x00, 0x0F, 0xC7, 0x00, 0x07, 0xE7, 0x80, - 0x03, 0xF7, 0xE0, 0x01, 0xFF, 0xF8, 0x00, 0xFF, 0xFC, 0x00, 0x7E, 0x7F, - 0x00, 0x3F, 0x1F, 0xC0, 0x1F, 0x8F, 0xE0, 0x0F, 0xC3, 0xF8, 0x07, 0xE0, - 0xFE, 0x03, 0xF0, 0x7F, 0x81, 0xF8, 0x1F, 0xC0, 0xFC, 0x0F, 0xF0, 0xFF, - 0x07, 0xFD, 0xFF, 0xC7, 0xFF, 0xFF, 0x87, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, - 0x3F, 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, - 0x07, 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, - 0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x0F, 0xF7, - 0xFF, 0x00, 0x07, 0xE0, 0x3F, 0x07, 0xFC, 0xFF, 0x87, 0xFC, 0x0F, 0xEF, - 0xFE, 0x7F, 0xF0, 0x3F, 0xC3, 0xFF, 0x1F, 0x81, 0xFC, 0x0F, 0xE0, 0x7E, - 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, 0x1F, - 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, 0x07, - 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, 0xC0, - 0x7E, 0x0F, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x03, 0xF0, 0x1F, 0x83, 0xF0, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x07, 0xE0, 0xFC, 0x07, 0xE0, 0x3F, - 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x0F, 0xC1, 0xF8, 0x0F, - 0xC0, 0x7E, 0x1F, 0xE0, 0xFF, 0x07, 0xFB, 0xFF, 0x8F, 0xFC, 0x7F, 0xE0, - 0x00, 0x07, 0xE0, 0xFF, 0x9F, 0xF0, 0x3F, 0xBF, 0xF8, 0x1F, 0xF1, 0xF8, - 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, 0x1F, 0x80, 0xFC, - 0x1F, 0x80, 0xFC, 0x3F, 0xC1, 0xFE, 0xFF, 0xE3, 0xFF, 0x01, 0xFC, 0x00, - 0x3F, 0xF8, 0x03, 0xE3, 0xE0, 0x3E, 0x0F, 0x83, 0xF0, 0x7E, 0x1F, 0x01, - 0xF1, 0xF8, 0x0F, 0xCF, 0xC0, 0x7E, 0xFE, 0x03, 0xFF, 0xF0, 0x1F, 0xFF, - 0x80, 0xFF, 0xFC, 0x07, 0xFF, 0xE0, 0x3F, 0xFF, 0x01, 0xFF, 0xF8, 0x0F, - 0xFF, 0xC0, 0x7F, 0x7E, 0x03, 0xF3, 0xF0, 0x1F, 0x8F, 0x80, 0xF8, 0x7E, - 0x0F, 0xC1, 0xF0, 0x7C, 0x07, 0xC7, 0xC0, 0x1F, 0xFC, 0x00, 0x3F, 0x80, - 0x00, 0x0F, 0xC0, 0xFF, 0xBF, 0xF0, 0x3F, 0xF1, 0xF8, 0x1F, 0xC0, 0xFC, - 0x1F, 0xC0, 0xFC, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, 0x1F, 0x80, 0x7F, - 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0x7E, 0x1F, 0x80, 0xFE, 0x1F, 0x80, 0xFC, - 0x1F, 0xC1, 0xF8, 0x1F, 0xE3, 0xF8, 0x1F, 0xBF, 0xE0, 0x1F, 0x8F, 0xC0, - 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, - 0x1F, 0x80, 0x00, 0x1F, 0x80, 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0xF8, 0x00, - 0x00, 0xF8, 0x08, 0x07, 0xFE, 0x18, 0x0F, 0xC7, 0x38, 0x1F, 0x83, 0xF8, - 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7E, 0x01, 0xF8, - 0x7E, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, - 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, 0xFE, 0x01, 0xF8, - 0xFE, 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, - 0x3F, 0x83, 0xF8, 0x1F, 0xC7, 0xF8, 0x0F, 0xFD, 0xF8, 0x03, 0xF1, 0xF8, - 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, - 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x03, 0xFC, 0x00, 0x0F, 0xFF, - 0x00, 0x07, 0x9F, 0xF3, 0xF8, 0xFE, 0xFF, 0x8F, 0xFF, 0xF1, 0xFE, 0x7E, - 0x3F, 0x87, 0x87, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, - 0x7E, 0x00, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F, 0x00, 0x07, 0xE0, 0x00, - 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x0F, 0xC0, 0x01, - 0xF8, 0x00, 0x7F, 0x80, 0x3F, 0xFC, 0x00, 0x0F, 0x84, 0x3F, 0xF8, 0xE1, - 0xF3, 0x80, 0xEF, 0x00, 0xDE, 0x01, 0xBE, 0x01, 0x7E, 0x00, 0xFF, 0x01, - 0xFF, 0x81, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0xC1, 0xFF, 0x80, 0xFF, 0x80, - 0x7F, 0x80, 0x7F, 0x80, 0x7F, 0x00, 0x7E, 0x00, 0xFE, 0x01, 0xDF, 0x0F, - 0x37, 0xFC, 0x43, 0xF0, 0x01, 0x00, 0x0C, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x7C, 0x03, 0xF0, 0x1F, 0xC0, 0xFF, 0xF3, 0xFF, 0xC3, 0xF0, 0x0F, - 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, - 0xF0, 0x0F, 0xC0, 0x3F, 0x00, 0xFC, 0x03, 0xF0, 0x0F, 0xC0, 0x3F, 0x00, - 0xFC, 0x23, 0xF0, 0x8F, 0xE6, 0x1F, 0xF0, 0x7F, 0x80, 0xF8, 0x00, 0xFF, - 0x87, 0xFC, 0x1F, 0xC0, 0xFE, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, - 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, 0xF8, - 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, 0xF0, 0x1F, - 0x81, 0xF8, 0x0F, 0xC0, 0xFC, 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x01, - 0xF8, 0x1F, 0x80, 0xFC, 0x0F, 0xC0, 0x7E, 0x07, 0xE0, 0x7F, 0x03, 0xF8, - 0x7F, 0xC0, 0xFF, 0xEF, 0xF8, 0x3F, 0xE7, 0xC0, 0x0F, 0xC2, 0x00, 0xFF, - 0xF1, 0xFC, 0xFF, 0x01, 0xE3, 0xFC, 0x03, 0x07, 0xF0, 0x0C, 0x1F, 0xC0, - 0x60, 0x3F, 0x81, 0x80, 0xFE, 0x04, 0x01, 0xF8, 0x30, 0x07, 0xF0, 0xC0, - 0x1F, 0xC6, 0x00, 0x3F, 0x98, 0x00, 0xFE, 0x40, 0x01, 0xFB, 0x00, 0x07, - 0xFC, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, 0x01, 0xF0, - 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, - 0x01, 0x00, 0x00, 0xFF, 0xE7, 0xFF, 0x3F, 0xBF, 0xE0, 0xFE, 0x07, 0x0F, - 0xE0, 0x7F, 0x03, 0x83, 0xF0, 0x1F, 0x81, 0x81, 0xFC, 0x0F, 0xC0, 0xC0, - 0xFE, 0x07, 0xF0, 0x40, 0x3F, 0x03, 0xF8, 0x60, 0x1F, 0xC3, 0xFC, 0x30, - 0x07, 0xE1, 0xFE, 0x10, 0x03, 0xF0, 0x9F, 0x98, 0x01, 0xFC, 0xCF, 0xCC, - 0x00, 0x7E, 0x67, 0xEC, 0x00, 0x3F, 0xE1, 0xFE, 0x00, 0x1F, 0xF0, 0xFE, - 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x03, 0xF8, 0x3F, 0x80, 0x00, 0xFC, 0x0F, - 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, 0xE0, 0x00, 0x0F, 0x00, - 0xE0, 0x00, 0x07, 0x00, 0x70, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x80, - 0x08, 0x00, 0xFF, 0xF3, 0xFD, 0xFF, 0x03, 0xC3, 0xFC, 0x0E, 0x07, 0xF0, - 0x30, 0x1F, 0xE1, 0x80, 0x3F, 0x8C, 0x00, 0x7F, 0x70, 0x01, 0xFF, 0x80, - 0x03, 0xFC, 0x00, 0x0F, 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x3F, 0x80, 0x00, - 0xFF, 0x00, 0x07, 0xFE, 0x00, 0x1B, 0xF8, 0x00, 0xCF, 0xF0, 0x06, 0x1F, - 0xC0, 0x38, 0x3F, 0x80, 0xC0, 0xFF, 0x07, 0x01, 0xFC, 0x3C, 0x07, 0xFB, - 0xFC, 0x7F, 0xF0, 0xFF, 0xE3, 0xFB, 0xFC, 0x07, 0x8F, 0xE0, 0x18, 0x7F, - 0x01, 0x81, 0xF8, 0x0C, 0x0F, 0xE0, 0x60, 0x7F, 0x06, 0x01, 0xF8, 0x30, - 0x0F, 0xE1, 0x80, 0x7F, 0x18, 0x01, 0xF8, 0xC0, 0x0F, 0xE6, 0x00, 0x3F, - 0x60, 0x01, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, - 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x38, - 0x00, 0x00, 0x80, 0x00, 0x0C, 0x00, 0x00, 0x60, 0x03, 0x82, 0x00, 0x3E, - 0x30, 0x01, 0xF1, 0x00, 0x0F, 0x98, 0x00, 0x3F, 0x80, 0x00, 0xF0, 0x00, - 0x00, 0x7F, 0xFF, 0xEF, 0xFF, 0xFD, 0xE0, 0x7F, 0x30, 0x1F, 0xC6, 0x07, - 0xF8, 0x80, 0xFE, 0x00, 0x3F, 0xC0, 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x3F, - 0x80, 0x0F, 0xE0, 0x03, 0xFC, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x03, 0xF8, - 0x00, 0xFE, 0x03, 0x3F, 0xC0, 0x67, 0xF0, 0x19, 0xFE, 0x07, 0x3F, 0x83, - 0xEF, 0xFF, 0xFD, 0xFF, 0xFF, 0x80, 0x00, 0x7C, 0x07, 0xE0, 0x3E, 0x00, - 0xF8, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, - 0x1F, 0x00, 0xF8, 0x03, 0xC0, 0x3C, 0x01, 0xF0, 0x00, 0xF0, 0x03, 0xE0, - 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, - 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, - 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x3E, 0x00, - 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, - 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF0, - 0x00, 0xF0, 0x03, 0xE0, 0x3C, 0x01, 0xF0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, - 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, - 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x01, 0xF0, 0x07, 0xC0, 0x7E, - 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0xFF, 0xC0, 0x47, 0xFF, 0xC3, 0x9F, - 0xFF, 0xFF, 0x70, 0x7F, 0xF8, 0x80, 0x7F, 0xC0, 0x00, 0x3E, 0x00 }; - -const GFXglyph FreeSerifBold24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 8, 34, 16, 4, -32 }, // 0x21 '!' - { 34, 17, 13, 26, 4, -32 }, // 0x22 '"' - { 62, 23, 33, 23, 0, -32 }, // 0x23 '#' - { 157, 21, 39, 24, 1, -34 }, // 0x24 '$' - { 260, 35, 34, 47, 6, -32 }, // 0x25 '%' - { 409, 34, 34, 39, 3, -32 }, // 0x26 '&' - { 554, 5, 13, 13, 4, -32 }, // 0x27 ''' - { 563, 12, 41, 16, 2, -32 }, // 0x28 '(' - { 625, 12, 41, 16, 1, -32 }, // 0x29 ')' - { 687, 18, 21, 24, 3, -32 }, // 0x2A '*' - { 735, 26, 25, 32, 3, -24 }, // 0x2B '+' - { 817, 8, 15, 12, 2, -6 }, // 0x2C ',' - { 832, 11, 5, 16, 2, -12 }, // 0x2D '-' - { 839, 8, 8, 12, 2, -6 }, // 0x2E '.' - { 847, 15, 33, 13, -1, -32 }, // 0x2F '/' - { 909, 22, 34, 23, 1, -32 }, // 0x30 '0' - { 1003, 18, 33, 23, 3, -32 }, // 0x31 '1' - { 1078, 21, 33, 24, 1, -32 }, // 0x32 '2' - { 1165, 21, 34, 24, 1, -32 }, // 0x33 '3' - { 1255, 21, 33, 24, 1, -32 }, // 0x34 '4' - { 1342, 20, 32, 23, 2, -31 }, // 0x35 '5' - { 1422, 21, 34, 24, 1, -32 }, // 0x36 '6' - { 1512, 21, 32, 23, 1, -31 }, // 0x37 '7' - { 1596, 21, 34, 23, 1, -32 }, // 0x38 '8' - { 1686, 22, 34, 23, 1, -32 }, // 0x39 '9' - { 1780, 8, 24, 16, 4, -22 }, // 0x3A ':' - { 1804, 9, 31, 16, 3, -22 }, // 0x3B ';' - { 1839, 26, 26, 32, 3, -24 }, // 0x3C '<' - { 1924, 26, 17, 32, 3, -20 }, // 0x3D '=' - { 1980, 26, 26, 32, 3, -24 }, // 0x3E '>' - { 2065, 18, 34, 24, 3, -32 }, // 0x3F '?' - { 2142, 33, 34, 44, 5, -32 }, // 0x40 '@' - { 2283, 32, 33, 34, 1, -32 }, // 0x41 'A' - { 2415, 28, 32, 31, 1, -31 }, // 0x42 'B' - { 2527, 30, 34, 33, 2, -32 }, // 0x43 'C' - { 2655, 32, 32, 34, 1, -31 }, // 0x44 'D' - { 2783, 28, 32, 32, 2, -31 }, // 0x45 'E' - { 2895, 25, 32, 29, 2, -31 }, // 0x46 'F' - { 2995, 33, 34, 36, 2, -32 }, // 0x47 'G' - { 3136, 33, 32, 37, 2, -31 }, // 0x48 'H' - { 3268, 15, 32, 18, 2, -31 }, // 0x49 'I' - { 3328, 22, 37, 24, 0, -31 }, // 0x4A 'J' - { 3430, 34, 32, 36, 2, -31 }, // 0x4B 'K' - { 3566, 28, 32, 31, 2, -31 }, // 0x4C 'L' - { 3678, 43, 32, 45, 0, -31 }, // 0x4D 'M' - { 3850, 31, 32, 34, 1, -31 }, // 0x4E 'N' - { 3974, 33, 34, 37, 2, -32 }, // 0x4F 'O' - { 4115, 26, 32, 30, 2, -31 }, // 0x50 'P' - { 4219, 33, 41, 37, 2, -32 }, // 0x51 'Q' - { 4389, 31, 32, 34, 2, -31 }, // 0x52 'R' - { 4513, 21, 34, 27, 3, -32 }, // 0x53 'S' - { 4603, 28, 32, 30, 1, -31 }, // 0x54 'T' - { 4715, 30, 33, 34, 2, -31 }, // 0x55 'U' - { 4839, 33, 32, 33, 0, -31 }, // 0x56 'V' - { 4971, 45, 33, 46, 1, -31 }, // 0x57 'W' - { 5157, 32, 32, 34, 1, -31 }, // 0x58 'X' - { 5285, 32, 32, 33, 1, -31 }, // 0x59 'Y' - { 5413, 28, 32, 30, 1, -31 }, // 0x5A 'Z' - { 5525, 11, 39, 16, 3, -31 }, // 0x5B '[' - { 5579, 15, 33, 13, -1, -32 }, // 0x5C '\' - { 5641, 11, 39, 16, 2, -31 }, // 0x5D ']' - { 5695, 21, 17, 27, 3, -31 }, // 0x5E '^' - { 5740, 24, 3, 23, 0, 5 }, // 0x5F '_' - { 5749, 11, 9, 16, 0, -33 }, // 0x60 '`' - { 5762, 22, 24, 23, 1, -22 }, // 0x61 'a' - { 5828, 25, 33, 26, 0, -31 }, // 0x62 'b' - { 5932, 19, 24, 20, 1, -22 }, // 0x63 'c' - { 5989, 24, 33, 26, 1, -31 }, // 0x64 'd' - { 6088, 18, 24, 21, 1, -22 }, // 0x65 'e' - { 6142, 17, 33, 18, 1, -32 }, // 0x66 'f' - { 6213, 19, 32, 24, 2, -22 }, // 0x67 'g' - { 6289, 24, 32, 26, 0, -31 }, // 0x68 'h' - { 6385, 11, 33, 14, 1, -32 }, // 0x69 'i' - { 6431, 14, 42, 18, 0, -32 }, // 0x6A 'j' - { 6505, 25, 32, 26, 0, -31 }, // 0x6B 'k' - { 6605, 11, 32, 13, 0, -31 }, // 0x6C 'l' - { 6649, 37, 23, 39, 0, -22 }, // 0x6D 'm' - { 6756, 24, 23, 26, 0, -22 }, // 0x6E 'n' - { 6825, 21, 24, 24, 1, -22 }, // 0x6F 'o' - { 6888, 24, 32, 26, 0, -22 }, // 0x70 'p' - { 6984, 24, 32, 26, 1, -22 }, // 0x71 'q' - { 7080, 19, 23, 20, 0, -22 }, // 0x72 'r' - { 7135, 15, 24, 19, 2, -22 }, // 0x73 's' - { 7180, 14, 31, 16, 1, -29 }, // 0x74 't' - { 7235, 25, 23, 27, 0, -21 }, // 0x75 'u' - { 7307, 22, 23, 23, 0, -21 }, // 0x76 'v' - { 7371, 33, 23, 33, 0, -21 }, // 0x77 'w' - { 7466, 22, 22, 24, 1, -21 }, // 0x78 'x' - { 7527, 21, 31, 23, 0, -21 }, // 0x79 'y' - { 7609, 19, 22, 21, 1, -21 }, // 0x7A 'z' - { 7662, 14, 42, 19, 1, -33 }, // 0x7B '{' - { 7736, 4, 33, 10, 3, -32 }, // 0x7C '|' - { 7753, 14, 42, 19, 4, -33 }, // 0x7D '}' - { 7827, 22, 7, 24, 1, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifBold24pt7b PROGMEM = { - (uint8_t *)FreeSerifBold24pt7bBitmaps, - (GFXglyph *)FreeSerifBold24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8519 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h deleted file mode 100644 index 52dbe36e1..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h +++ /dev/null @@ -1,202 +0,0 @@ -const uint8_t FreeSerifBold9pt7bBitmaps[] PROGMEM = { - 0xFF, 0xF4, 0x92, 0x1F, 0xF0, 0xCF, 0x3C, 0xE3, 0x88, 0x13, 0x09, 0x84, - 0xC2, 0x47, 0xF9, 0x90, 0xC8, 0x4C, 0xFF, 0x13, 0x09, 0x0C, 0x86, 0x40, - 0x10, 0x38, 0xD6, 0x92, 0xD2, 0xF0, 0x7C, 0x3E, 0x17, 0x93, 0x93, 0xD6, - 0x7C, 0x10, 0x3C, 0x21, 0xCF, 0x0E, 0x24, 0x30, 0xA0, 0xC5, 0x03, 0x34, - 0xE7, 0x26, 0x40, 0xB9, 0x04, 0xC4, 0x23, 0x30, 0x8C, 0x84, 0x1C, 0x0F, - 0x00, 0xCC, 0x06, 0x60, 0x3E, 0x00, 0xE7, 0x8F, 0x18, 0x9C, 0x8C, 0xE4, - 0xE3, 0xC7, 0x9E, 0x3C, 0x72, 0xFD, 0xE0, 0xFF, 0x80, 0x32, 0x44, 0xCC, - 0xCC, 0xCC, 0xC4, 0x62, 0x10, 0x84, 0x22, 0x33, 0x33, 0x33, 0x32, 0x64, - 0x80, 0x31, 0x6B, 0xB1, 0x8E, 0xD6, 0x8C, 0x00, 0x08, 0x04, 0x02, 0x01, - 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xDF, 0x95, 0x00, 0xFF, 0xFF, - 0x80, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC0, 0x1C, - 0x33, 0x98, 0xDC, 0x7E, 0x3F, 0x1F, 0x8F, 0xC7, 0xE3, 0xB1, 0x98, 0xC3, - 0x80, 0x08, 0xE3, 0x8E, 0x38, 0xE3, 0x8E, 0x38, 0xE3, 0xBF, 0x3C, 0x3F, - 0x23, 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x18, 0x18, 0x18, 0x5F, 0xDF, 0xE0, - 0x7C, 0x8E, 0x0E, 0x0E, 0x0C, 0x1E, 0x07, 0x03, 0x03, 0x02, 0xE6, 0xF8, - 0x06, 0x0E, 0x0E, 0x3E, 0x2E, 0x4E, 0x8E, 0x8E, 0xFF, 0xFF, 0x0E, 0x0E, - 0x3F, 0x7E, 0x40, 0x40, 0xF8, 0xFC, 0x1E, 0x06, 0x02, 0x02, 0xE4, 0xF8, - 0x07, 0x1C, 0x30, 0x70, 0xFC, 0xE6, 0xE7, 0xE7, 0xE7, 0x67, 0x66, 0x3C, - 0x7F, 0x3F, 0xA0, 0xD0, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x04, 0x06, - 0x03, 0x00, 0x3C, 0xC6, 0xC6, 0xC6, 0xFC, 0x7C, 0x3E, 0xCF, 0xC7, 0xC7, - 0xC6, 0x7C, 0x3E, 0x33, 0xB8, 0xDC, 0x7E, 0x3F, 0x1D, 0xCE, 0x7F, 0x07, - 0x07, 0x0F, 0x1C, 0x00, 0xFF, 0x80, 0x3F, 0xE0, 0xFF, 0x80, 0x37, 0xE5, - 0x40, 0x00, 0x00, 0x70, 0x78, 0x78, 0x78, 0x38, 0x03, 0x80, 0x3C, 0x03, - 0xC0, 0x30, 0xFF, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0xC0, 0xC0, 0x3C, 0x03, - 0xC0, 0x1C, 0x01, 0xC1, 0xE1, 0xE1, 0xE0, 0xE0, 0x00, 0x00, 0x3D, 0x9F, - 0x3E, 0x70, 0xE1, 0x04, 0x08, 0x00, 0x70, 0xE1, 0xC0, 0x0F, 0x81, 0x83, - 0x18, 0xC4, 0x89, 0x9C, 0x4C, 0xE4, 0x67, 0x22, 0x39, 0x22, 0x4F, 0xE3, - 0x00, 0x0C, 0x10, 0x1F, 0x00, 0x02, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, - 0xB8, 0x05, 0xC0, 0x4F, 0x02, 0x38, 0x3F, 0xE1, 0x07, 0x18, 0x3D, 0xE3, - 0xF0, 0xFF, 0x87, 0x1C, 0xE3, 0x9C, 0x73, 0x9C, 0x7F, 0x0E, 0x71, 0xC7, - 0x38, 0xE7, 0x1C, 0xE7, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0xC1, 0xB0, 0x1E, - 0x01, 0xC0, 0x38, 0x07, 0x00, 0xE0, 0x0E, 0x04, 0xE1, 0x0F, 0xC0, 0xFF, - 0x0E, 0x71, 0xC7, 0x38, 0x77, 0x0E, 0xE1, 0xDC, 0x3B, 0x87, 0x70, 0xCE, - 0x39, 0xC6, 0x7F, 0x80, 0xFF, 0xCE, 0x19, 0xC1, 0x38, 0x87, 0x30, 0xFE, - 0x1C, 0xC3, 0x88, 0x70, 0x2E, 0x0D, 0xC3, 0x7F, 0xE0, 0xFF, 0xDC, 0x37, - 0x05, 0xC4, 0x73, 0x1F, 0xC7, 0x31, 0xC4, 0x70, 0x1C, 0x07, 0x03, 0xE0, - 0x1F, 0x23, 0x0E, 0x70, 0x6E, 0x02, 0xE0, 0x0E, 0x00, 0xE1, 0xFE, 0x0E, - 0x60, 0xE7, 0x0E, 0x38, 0xE0, 0xF8, 0xF9, 0xF7, 0x0E, 0x70, 0xE7, 0x0E, - 0x70, 0xE7, 0xFE, 0x70, 0xE7, 0x0E, 0x70, 0xE7, 0x0E, 0x70, 0xEF, 0x9F, - 0xFB, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0x1F, 0x0E, 0x0E, 0x0E, - 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0x0E, 0xCE, 0xCC, 0x78, 0xF9, 0xF3, - 0x82, 0x1C, 0x20, 0xE2, 0x07, 0x20, 0x3F, 0x01, 0xDC, 0x0E, 0x70, 0x73, - 0xC3, 0x8F, 0x1C, 0x3D, 0xF3, 0xF0, 0xF8, 0x0E, 0x01, 0xC0, 0x38, 0x07, - 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x70, 0x2E, 0x09, 0xC3, 0x7F, 0xE0, 0xF8, - 0x0F, 0x3C, 0x1E, 0x3C, 0x1E, 0x2E, 0x2E, 0x2E, 0x2E, 0x26, 0x4E, 0x27, - 0x4E, 0x27, 0x4E, 0x23, 0x8E, 0x23, 0x8E, 0x21, 0x0E, 0x71, 0x1F, 0xF0, - 0xEE, 0x09, 0xE1, 0x3E, 0x25, 0xE4, 0x9E, 0x91, 0xD2, 0x1E, 0x43, 0xC8, - 0x39, 0x03, 0x70, 0x20, 0x1F, 0x83, 0x0C, 0x70, 0xEE, 0x07, 0xE0, 0x7E, - 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x77, 0x0E, 0x30, 0xC1, 0xF8, 0xFF, 0x1C, - 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0xE7, 0xF1, 0xC0, 0x70, 0x1C, 0x07, 0x03, - 0xE0, 0x0F, 0x83, 0x9C, 0x70, 0xE6, 0x06, 0xE0, 0x7E, 0x07, 0xE0, 0x7E, - 0x07, 0xE0, 0x76, 0x06, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0x78, 0x03, 0xE0, - 0xFF, 0x07, 0x38, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x38, 0x7E, 0x07, 0x70, - 0x77, 0x87, 0x3C, 0x71, 0xEF, 0x8F, 0x39, 0x47, 0xC1, 0xC0, 0xF0, 0x7C, - 0x3E, 0x0F, 0x83, 0xC3, 0xC6, 0xBC, 0xFF, 0xFC, 0xE3, 0x8E, 0x10, 0xE0, - 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xF0, - 0xF8, 0xEE, 0x09, 0xC1, 0x38, 0x27, 0x04, 0xE0, 0x9C, 0x13, 0x82, 0x70, - 0x4E, 0x08, 0xE2, 0x0F, 0x80, 0xFC, 0x7B, 0xC1, 0x0E, 0x08, 0x70, 0x81, - 0xC4, 0x0E, 0x20, 0x7A, 0x01, 0xD0, 0x0E, 0x80, 0x38, 0x01, 0xC0, 0x04, - 0x00, 0x20, 0x00, 0xFD, 0xFB, 0xDC, 0x38, 0x43, 0x87, 0x10, 0xE1, 0xC4, - 0x38, 0xF2, 0x07, 0x2E, 0x81, 0xD3, 0xA0, 0x34, 0x70, 0x0E, 0x1C, 0x03, - 0x87, 0x00, 0x60, 0x80, 0x10, 0x20, 0xFE, 0xF3, 0xC3, 0x0F, 0x10, 0x39, - 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x01, 0x70, 0x09, 0xC0, 0x8F, 0x08, 0x3D, - 0xF3, 0xF0, 0xFC, 0x7B, 0xC1, 0x8E, 0x08, 0x38, 0x81, 0xE8, 0x07, 0x40, - 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x1F, 0x00, 0xFF, 0xD8, - 0x72, 0x1E, 0x43, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xC0, 0x38, 0x2E, 0x0F, - 0x83, 0x7F, 0xE0, 0xFC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xF0, 0xC1, - 0x06, 0x18, 0x20, 0xC3, 0x04, 0x18, 0x60, 0x83, 0x0C, 0xF3, 0x33, 0x33, - 0x33, 0x33, 0x33, 0x33, 0xF0, 0x18, 0x1C, 0x34, 0x26, 0x62, 0x43, 0xC1, - 0xFF, 0x80, 0xC6, 0x30, 0x7C, 0x63, 0xB1, 0xC0, 0xE1, 0xF3, 0x3B, 0x9D, - 0xCE, 0xFF, 0x80, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0x77, 0x1D, - 0xC7, 0x71, 0xDC, 0x77, 0x39, 0x3C, 0x3C, 0xED, 0x9F, 0x0E, 0x1C, 0x38, - 0x39, 0x3C, 0x07, 0x80, 0xE0, 0x38, 0xEE, 0x77, 0xB8, 0xEE, 0x3B, 0x8E, - 0xE3, 0xB8, 0xE7, 0x78, 0xEF, 0x3C, 0x66, 0xE6, 0xFE, 0xE0, 0xE0, 0xE0, - 0x72, 0x3C, 0x3E, 0xED, 0xC7, 0xC7, 0x0E, 0x1C, 0x38, 0x70, 0xE1, 0xC7, - 0xC0, 0x31, 0xDF, 0xBF, 0x7E, 0xE7, 0x90, 0x60, 0xFC, 0xFE, 0x0C, 0x17, - 0xC0, 0xF0, 0x1C, 0x07, 0x01, 0xDC, 0x7B, 0x9C, 0xE7, 0x39, 0xCE, 0x73, - 0x9C, 0xE7, 0x3B, 0xFF, 0x73, 0x9D, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, - 0x1C, 0x71, 0xCF, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xC7, 0x1C, 0x7D, 0xBE, - 0xF0, 0x1C, 0x07, 0x01, 0xCE, 0x71, 0x1C, 0x87, 0x41, 0xF8, 0x77, 0x1C, - 0xE7, 0x1B, 0xEF, 0xF3, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9D, 0xF0, 0xF7, - 0x38, 0xF7, 0xB9, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, - 0x39, 0xCE, 0xFF, 0xFE, 0xF7, 0x1E, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, - 0x39, 0xCE, 0xFF, 0xC0, 0x3E, 0x31, 0xB8, 0xFC, 0x7E, 0x3F, 0x1F, 0x8E, - 0xC6, 0x3E, 0x00, 0xF7, 0x1E, 0xE7, 0x1D, 0xC7, 0x71, 0xDC, 0x77, 0x1D, - 0xCE, 0x7F, 0x1C, 0x07, 0x01, 0xC0, 0xF8, 0x00, 0x3C, 0x9C, 0xEE, 0x3B, - 0x8E, 0xE3, 0xB8, 0xEE, 0x39, 0xCE, 0x3F, 0x80, 0xE0, 0x38, 0x0E, 0x07, - 0xC0, 0xF7, 0x7B, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0xF8, 0x7E, 0x73, - 0xC7, 0x8E, 0x39, 0xB0, 0x10, 0xCF, 0x9C, 0x71, 0xC7, 0x1C, 0x71, 0xD3, - 0x80, 0xF7, 0x9C, 0xE7, 0x39, 0xCE, 0x73, 0x9C, 0xE7, 0x39, 0xCE, 0x3F, - 0xC0, 0xFB, 0xB8, 0x8C, 0x87, 0x43, 0xC0, 0xE0, 0x70, 0x10, 0x08, 0x00, - 0xF7, 0xB6, 0x31, 0x73, 0xA3, 0x3A, 0x3D, 0xA3, 0xDC, 0x18, 0xC1, 0x88, - 0x10, 0x80, 0xFB, 0xB8, 0x8E, 0x83, 0x81, 0xC0, 0xF0, 0x98, 0xCE, 0xEF, - 0x80, 0xF7, 0x62, 0x72, 0x34, 0x34, 0x3C, 0x18, 0x18, 0x10, 0x10, 0x10, - 0xE0, 0xE0, 0xFF, 0x1C, 0x70, 0xE3, 0x87, 0x1C, 0x71, 0xFE, 0x19, 0x8C, - 0x63, 0x18, 0xCC, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF8, 0xC3, 0x18, - 0xC6, 0x31, 0x86, 0x33, 0x18, 0xC6, 0x31, 0x98, 0xF0, 0x8E }; - -const GFXglyph FreeSerifBold9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 3, 12, 6, 1, -11 }, // 0x21 '!' - { 5, 6, 5, 10, 2, -11 }, // 0x22 '"' - { 9, 9, 13, 9, 0, -12 }, // 0x23 '#' - { 24, 8, 14, 9, 1, -12 }, // 0x24 '$' - { 38, 14, 12, 18, 2, -11 }, // 0x25 '%' - { 59, 13, 12, 15, 1, -11 }, // 0x26 '&' - { 79, 2, 5, 5, 1, -11 }, // 0x27 ''' - { 81, 4, 15, 6, 1, -11 }, // 0x28 '(' - { 89, 4, 15, 6, 1, -11 }, // 0x29 ')' - { 97, 7, 7, 9, 2, -11 }, // 0x2A '*' - { 104, 9, 9, 12, 1, -8 }, // 0x2B '+' - { 115, 3, 6, 4, 1, -2 }, // 0x2C ',' - { 118, 4, 2, 6, 1, -4 }, // 0x2D '-' - { 119, 3, 3, 4, 1, -2 }, // 0x2E '.' - { 121, 6, 13, 5, 0, -11 }, // 0x2F '/' - { 131, 9, 12, 9, 0, -11 }, // 0x30 '0' - { 145, 6, 12, 9, 1, -11 }, // 0x31 '1' - { 154, 9, 12, 9, 0, -11 }, // 0x32 '2' - { 168, 8, 12, 9, 0, -11 }, // 0x33 '3' - { 180, 8, 12, 9, 1, -11 }, // 0x34 '4' - { 192, 8, 12, 9, 1, -11 }, // 0x35 '5' - { 204, 8, 12, 9, 1, -11 }, // 0x36 '6' - { 216, 9, 12, 9, 0, -11 }, // 0x37 '7' - { 230, 8, 12, 9, 1, -11 }, // 0x38 '8' - { 242, 9, 12, 9, 0, -11 }, // 0x39 '9' - { 256, 3, 9, 6, 1, -8 }, // 0x3A ':' - { 260, 3, 12, 6, 2, -8 }, // 0x3B ';' - { 265, 10, 10, 12, 1, -9 }, // 0x3C '<' - { 278, 10, 5, 12, 1, -6 }, // 0x3D '=' - { 285, 10, 10, 12, 1, -8 }, // 0x3E '>' - { 298, 7, 12, 9, 1, -11 }, // 0x3F '?' - { 309, 13, 12, 17, 2, -11 }, // 0x40 '@' - { 329, 13, 12, 13, 0, -11 }, // 0x41 'A' - { 349, 11, 12, 12, 0, -11 }, // 0x42 'B' - { 366, 11, 12, 13, 1, -11 }, // 0x43 'C' - { 383, 11, 12, 13, 1, -11 }, // 0x44 'D' - { 400, 11, 12, 12, 1, -11 }, // 0x45 'E' - { 417, 10, 12, 11, 1, -11 }, // 0x46 'F' - { 432, 12, 12, 14, 1, -11 }, // 0x47 'G' - { 450, 12, 12, 14, 1, -11 }, // 0x48 'H' - { 468, 5, 12, 7, 1, -11 }, // 0x49 'I' - { 476, 8, 14, 9, 0, -11 }, // 0x4A 'J' - { 490, 13, 12, 14, 1, -11 }, // 0x4B 'K' - { 510, 11, 12, 12, 1, -11 }, // 0x4C 'L' - { 527, 16, 12, 17, 0, -11 }, // 0x4D 'M' - { 551, 11, 12, 13, 1, -11 }, // 0x4E 'N' - { 568, 12, 12, 14, 1, -11 }, // 0x4F 'O' - { 586, 10, 12, 11, 1, -11 }, // 0x50 'P' - { 601, 12, 15, 14, 1, -11 }, // 0x51 'Q' - { 624, 12, 12, 13, 1, -11 }, // 0x52 'R' - { 642, 8, 12, 10, 1, -11 }, // 0x53 'S' - { 654, 12, 12, 12, 0, -11 }, // 0x54 'T' - { 672, 11, 12, 13, 1, -11 }, // 0x55 'U' - { 689, 13, 13, 13, 0, -11 }, // 0x56 'V' - { 711, 18, 12, 18, 0, -11 }, // 0x57 'W' - { 738, 13, 12, 13, 0, -11 }, // 0x58 'X' - { 758, 13, 12, 13, 0, -11 }, // 0x59 'Y' - { 778, 11, 12, 12, 1, -11 }, // 0x5A 'Z' - { 795, 4, 15, 6, 1, -11 }, // 0x5B '[' - { 803, 6, 13, 5, 0, -11 }, // 0x5C '\' - { 813, 4, 15, 6, 1, -11 }, // 0x5D ']' - { 821, 8, 7, 10, 1, -11 }, // 0x5E '^' - { 828, 9, 1, 9, 0, 3 }, // 0x5F '_' - { 830, 4, 3, 6, 0, -12 }, // 0x60 '`' - { 832, 9, 9, 9, 0, -8 }, // 0x61 'a' - { 843, 10, 12, 10, 0, -11 }, // 0x62 'b' - { 858, 7, 9, 8, 0, -8 }, // 0x63 'c' - { 866, 10, 12, 10, 0, -11 }, // 0x64 'd' - { 881, 8, 9, 8, 0, -8 }, // 0x65 'e' - { 890, 7, 12, 7, 0, -11 }, // 0x66 'f' - { 901, 7, 13, 9, 1, -8 }, // 0x67 'g' - { 913, 10, 12, 10, 0, -11 }, // 0x68 'h' - { 928, 5, 12, 5, 0, -11 }, // 0x69 'i' - { 936, 6, 16, 7, 0, -11 }, // 0x6A 'j' - { 948, 10, 12, 10, 0, -11 }, // 0x6B 'k' - { 963, 5, 12, 5, 0, -11 }, // 0x6C 'l' - { 971, 15, 9, 15, 0, -8 }, // 0x6D 'm' - { 988, 10, 9, 10, 0, -8 }, // 0x6E 'n' - { 1000, 9, 9, 9, 0, -8 }, // 0x6F 'o' - { 1011, 10, 13, 10, 0, -8 }, // 0x70 'p' - { 1028, 10, 13, 10, 0, -8 }, // 0x71 'q' - { 1045, 8, 9, 8, 0, -8 }, // 0x72 'r' - { 1054, 5, 9, 7, 1, -8 }, // 0x73 's' - { 1060, 6, 11, 6, 0, -10 }, // 0x74 't' - { 1069, 10, 9, 10, 0, -8 }, // 0x75 'u' - { 1081, 9, 9, 9, 0, -8 }, // 0x76 'v' - { 1092, 12, 9, 13, 0, -8 }, // 0x77 'w' - { 1106, 9, 9, 9, 0, -8 }, // 0x78 'x' - { 1117, 8, 13, 9, 0, -8 }, // 0x79 'y' - { 1130, 7, 9, 8, 1, -8 }, // 0x7A 'z' - { 1138, 5, 16, 7, 0, -12 }, // 0x7B '{' - { 1148, 1, 13, 4, 1, -11 }, // 0x7C '|' - { 1150, 5, 16, 7, 2, -12 }, // 0x7D '}' - { 1160, 8, 2, 9, 1, -4 } }; // 0x7E '~' - -const GFXfont FreeSerifBold9pt7b PROGMEM = { - (uint8_t *)FreeSerifBold9pt7bBitmaps, - (GFXglyph *)FreeSerifBold9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1834 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h deleted file mode 100644 index 1f674e98d..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h +++ /dev/null @@ -1,292 +0,0 @@ -const uint8_t FreeSerifBoldItalic12pt7bBitmaps[] PROGMEM = { - 0x07, 0x07, 0x07, 0x0F, 0x0E, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x10, 0x00, - 0x00, 0x60, 0xF0, 0xF0, 0x60, 0x61, 0xF1, 0xF8, 0xF8, 0x6C, 0x34, 0x12, - 0x08, 0x01, 0x8C, 0x06, 0x60, 0x31, 0x80, 0xCC, 0x06, 0x30, 0xFF, 0xF0, - 0xC6, 0x03, 0x18, 0x0C, 0xC0, 0x63, 0x0F, 0xFF, 0x0C, 0x60, 0x33, 0x01, - 0x8C, 0x06, 0x30, 0x19, 0x80, 0x00, 0x80, 0x08, 0x07, 0xC1, 0x96, 0x31, - 0x33, 0x13, 0x3A, 0x23, 0xE0, 0x1E, 0x01, 0xF0, 0x07, 0x80, 0x7C, 0x05, - 0xC4, 0xCC, 0x48, 0xCC, 0x8C, 0xF8, 0x83, 0x30, 0x1E, 0x01, 0x00, 0x00, - 0x02, 0x07, 0x83, 0x03, 0x9F, 0x81, 0xC4, 0x20, 0x71, 0x10, 0x3C, 0x44, - 0x0E, 0x22, 0x03, 0x88, 0x80, 0xE4, 0x40, 0x1E, 0x31, 0xE0, 0x08, 0xE4, - 0x06, 0x71, 0x01, 0x3C, 0x40, 0x8E, 0x10, 0x23, 0x88, 0x10, 0xE2, 0x04, - 0x39, 0x02, 0x07, 0x80, 0x00, 0xF0, 0x01, 0x98, 0x03, 0x98, 0x03, 0x98, - 0x03, 0xB0, 0x03, 0xE0, 0x03, 0x80, 0x0F, 0x9F, 0x19, 0xCE, 0x31, 0xCC, - 0x61, 0xC8, 0xE1, 0xC8, 0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x78, 0x79, - 0x3F, 0xBE, 0x7F, 0xED, 0x20, 0x02, 0x08, 0x20, 0xC3, 0x0E, 0x18, 0x30, - 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, 0x20, 0x40, 0x80, 0x81, 0x01, 0x00, - 0x10, 0x10, 0x20, 0x20, 0x40, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0x70, 0xE1, - 0x83, 0x0C, 0x18, 0x61, 0x86, 0x00, 0x00, 0x0C, 0x33, 0x6C, 0x9B, 0xAE, - 0x1C, 0x3F, 0xEC, 0x9B, 0x36, 0x0C, 0x02, 0x00, 0x06, 0x00, 0x60, 0x06, - 0x00, 0x60, 0x06, 0x0F, 0xFF, 0xFF, 0xF0, 0x60, 0x06, 0x00, 0x60, 0x06, - 0x00, 0x60, 0x31, 0xCE, 0x31, 0x08, 0x98, 0xFF, 0xFF, 0xC0, 0x6F, 0xF6, - 0x01, 0x80, 0x60, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0x30, 0x1C, 0x06, - 0x01, 0x80, 0xC0, 0x30, 0x18, 0x06, 0x03, 0x00, 0x03, 0x81, 0xC8, 0x71, - 0x1C, 0x33, 0x86, 0xE1, 0xDC, 0x3B, 0x87, 0xE0, 0xFC, 0x3B, 0x87, 0x70, - 0xEC, 0x39, 0x87, 0x31, 0xC2, 0x30, 0x3C, 0x00, 0x01, 0xC3, 0xF0, 0x38, - 0x0E, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x80, 0xE0, 0x38, 0x1E, - 0x07, 0x01, 0xC0, 0xF0, 0xFF, 0x80, 0x07, 0x81, 0xF8, 0x47, 0x90, 0x70, - 0x0E, 0x01, 0xC0, 0x30, 0x0E, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 0x80, - 0x40, 0x8F, 0xF3, 0xFC, 0xFF, 0x80, 0x07, 0xC3, 0x3C, 0x03, 0x80, 0x70, - 0x0C, 0x03, 0x81, 0xC0, 0xFC, 0x07, 0xC0, 0x78, 0x07, 0x00, 0xE0, 0x1C, - 0x03, 0x30, 0xE7, 0x10, 0x7C, 0x00, 0x00, 0x10, 0x01, 0x80, 0x3C, 0x03, - 0xE0, 0x2E, 0x02, 0x70, 0x23, 0x82, 0x38, 0x21, 0xC2, 0x0E, 0x1F, 0xF9, - 0xFF, 0xC0, 0x38, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0xF0, 0x7E, 0x0F, - 0xE0, 0x80, 0x08, 0x01, 0xE0, 0x1F, 0x83, 0xF8, 0x03, 0xC0, 0x1C, 0x00, - 0xC0, 0x0C, 0x00, 0xC0, 0x08, 0x61, 0x8F, 0x30, 0x7C, 0x00, 0x00, 0x60, - 0x78, 0x1C, 0x0F, 0x01, 0xC0, 0x70, 0x1F, 0xC3, 0x8C, 0xE1, 0xDC, 0x3B, - 0x87, 0x61, 0xEC, 0x3D, 0x87, 0x31, 0xE2, 0x38, 0x3C, 0x00, 0x3F, 0xEF, - 0xF9, 0xFF, 0x60, 0xC8, 0x18, 0x06, 0x00, 0x80, 0x30, 0x0C, 0x01, 0x80, - 0x60, 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x06, 0x00, 0x03, 0x81, 0x88, 0x61, - 0x8C, 0x31, 0x86, 0x38, 0xC7, 0xB0, 0x78, 0x0F, 0x86, 0x71, 0x87, 0x60, - 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x18, 0x3E, 0x00, 0x07, 0x81, 0xC8, 0x71, - 0x8E, 0x33, 0xC6, 0x70, 0xCE, 0x39, 0xC7, 0x38, 0xE3, 0x38, 0x3F, 0x01, - 0xC0, 0x38, 0x0E, 0x03, 0x81, 0xC0, 0xE0, 0x00, 0x0C, 0x3C, 0x78, 0x60, - 0x00, 0x00, 0x00, 0x61, 0xE3, 0xC3, 0x00, 0x0E, 0x0F, 0x0F, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x18, 0x10, 0x20, 0x40, 0x00, 0x10, - 0x07, 0x01, 0xF0, 0x7C, 0x3F, 0x0F, 0x80, 0xE0, 0x0F, 0x80, 0x3E, 0x00, - 0xF8, 0x03, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, - 0xFF, 0xFF, 0xFF, 0x80, 0x07, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, 0x00, - 0xF8, 0x01, 0xE0, 0x1F, 0x07, 0xE0, 0xF8, 0x1F, 0x01, 0xE0, 0x0C, 0x00, - 0x00, 0x1E, 0x19, 0x8C, 0xE6, 0x70, 0x38, 0x38, 0x1C, 0x18, 0x18, 0x08, - 0x08, 0x00, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x03, 0xF0, 0x07, - 0x06, 0x06, 0x00, 0x86, 0x0E, 0x66, 0x0D, 0xDB, 0x0C, 0xE7, 0x06, 0x33, - 0x83, 0x31, 0xC3, 0x18, 0xE1, 0x8C, 0x70, 0xCC, 0x4C, 0x66, 0x46, 0x1F, - 0xC1, 0x80, 0x00, 0x30, 0x10, 0x07, 0xF0, 0x00, 0x10, 0x00, 0x30, 0x00, - 0x70, 0x00, 0x70, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0x78, 0x03, 0x78, 0x02, - 0x38, 0x04, 0x38, 0x0C, 0x38, 0x0F, 0xF8, 0x18, 0x3C, 0x30, 0x3C, 0x20, - 0x3C, 0x60, 0x3C, 0xF8, 0x7F, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, - 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, 0x0F, 0xE0, 0x1E, 0x3C, 0x1E, - 0x1E, 0x1C, 0x1E, 0x3C, 0x1E, 0x3C, 0x1E, 0x3C, 0x3E, 0x38, 0x3C, 0x7C, - 0x78, 0xFF, 0xE0, 0x01, 0xF2, 0x0E, 0x1C, 0x38, 0x18, 0xE0, 0x33, 0xC0, - 0x4F, 0x00, 0x9E, 0x00, 0x7C, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x04, 0x1E, 0x30, 0x0F, 0x80, 0x1F, - 0xFC, 0x01, 0xE3, 0xC0, 0x70, 0x78, 0x1C, 0x0E, 0x0F, 0x03, 0xC3, 0xC0, - 0xF0, 0xE0, 0x3C, 0x38, 0x0F, 0x1E, 0x03, 0xC7, 0x81, 0xF1, 0xC0, 0x78, - 0xF0, 0x1E, 0x3C, 0x0F, 0x0F, 0x03, 0xC3, 0x81, 0xC1, 0xE1, 0xE0, 0xFF, - 0xE0, 0x00, 0x1F, 0xFF, 0x83, 0xC1, 0xC1, 0xC0, 0x40, 0xE0, 0x20, 0xF0, - 0x00, 0x78, 0xC0, 0x38, 0x40, 0x1F, 0xE0, 0x1E, 0x70, 0x0F, 0x18, 0x07, - 0x08, 0x03, 0x84, 0x03, 0xC0, 0x61, 0xE0, 0x20, 0xE0, 0x30, 0xF8, 0x78, - 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0x07, 0x87, 0x07, 0x02, 0x07, 0x02, 0x0F, - 0x00, 0x0F, 0x18, 0x0E, 0x10, 0x0F, 0xF0, 0x1E, 0x70, 0x1E, 0x30, 0x1C, - 0x20, 0x1C, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x7C, 0x00, 0xFE, - 0x00, 0x01, 0xF9, 0x03, 0xC3, 0x83, 0x81, 0xC3, 0x80, 0x43, 0xC0, 0x23, - 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x00, 0xF0, 0x3F, 0xF8, 0x0F, 0x3C, 0x07, - 0x9E, 0x03, 0xCF, 0x01, 0xC3, 0x80, 0xE1, 0xE0, 0xF0, 0x78, 0x70, 0x0F, - 0xE0, 0x00, 0x1F, 0xE7, 0xF0, 0x78, 0x3C, 0x07, 0x83, 0xC0, 0x70, 0x3C, - 0x0F, 0x03, 0x80, 0xF0, 0x78, 0x0E, 0x07, 0x80, 0xE0, 0x70, 0x1F, 0xFF, - 0x01, 0xE0, 0xF0, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, - 0xE0, 0x38, 0x1E, 0x07, 0xC3, 0xE0, 0xFE, 0x7F, 0x00, 0x1F, 0xC1, 0xE0, - 0x70, 0x1C, 0x0F, 0x03, 0xC0, 0xE0, 0x38, 0x1E, 0x07, 0x81, 0xC0, 0x70, - 0x3C, 0x0F, 0x03, 0x81, 0xF0, 0xFE, 0x00, 0x01, 0xFC, 0x03, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x0E, 0x70, 0x3B, 0xC0, 0xCE, - 0x01, 0xF0, 0x00, 0x1F, 0xEF, 0x83, 0xC1, 0x81, 0xC1, 0x80, 0xE1, 0x80, - 0xF1, 0x80, 0x79, 0x00, 0x39, 0x00, 0x1F, 0x80, 0x1F, 0xE0, 0x0F, 0x70, - 0x07, 0x3C, 0x07, 0x8E, 0x03, 0xC7, 0x01, 0xE3, 0xC0, 0xE0, 0xE0, 0xF8, - 0x78, 0xFE, 0xFE, 0x00, 0x1F, 0xE0, 0x0F, 0x00, 0x1C, 0x00, 0x38, 0x00, - 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, - 0x00, 0xE0, 0x03, 0xC0, 0x27, 0x00, 0xCE, 0x03, 0x3C, 0x1E, 0xFF, 0xFC, - 0x0F, 0x80, 0x7E, 0x0F, 0x00, 0xF0, 0x1E, 0x03, 0xE0, 0x3C, 0x0F, 0x80, - 0xB8, 0x17, 0x01, 0x70, 0x5E, 0x02, 0xF1, 0xBC, 0x05, 0xE2, 0x70, 0x11, - 0xC8, 0xE0, 0x23, 0xB3, 0xC0, 0x47, 0x47, 0x81, 0x0F, 0x8E, 0x02, 0x1E, - 0x1C, 0x04, 0x38, 0x78, 0x08, 0x70, 0xF0, 0x30, 0xC3, 0xE0, 0xF9, 0x8F, - 0xE0, 0x1F, 0x03, 0xE0, 0xF0, 0x38, 0x1E, 0x02, 0x03, 0xE0, 0xC0, 0xBC, - 0x10, 0x13, 0xC2, 0x02, 0x78, 0x40, 0x47, 0x90, 0x10, 0xF2, 0x02, 0x0F, - 0x40, 0x41, 0xE8, 0x18, 0x1E, 0x02, 0x03, 0xC0, 0x40, 0x38, 0x08, 0x06, - 0x03, 0x00, 0x40, 0x10, 0x08, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, - 0x1E, 0x0F, 0x3C, 0x0F, 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x0F, 0xF8, 0x1F, - 0xF0, 0x1E, 0xF0, 0x1E, 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, - 0x38, 0xE0, 0x1F, 0x80, 0x1F, 0xFC, 0x07, 0x9E, 0x07, 0x0F, 0x07, 0x0F, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0E, 0x1E, 0x0E, 0x3C, 0x1F, 0xF0, 0x1E, 0x00, - 0x1C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x7C, 0x00, - 0xFE, 0x00, 0x01, 0xF8, 0x07, 0x1C, 0x0E, 0x0E, 0x1E, 0x0F, 0x3C, 0x0F, - 0x3C, 0x0F, 0x78, 0x0F, 0x78, 0x1F, 0xF8, 0x1F, 0xF0, 0x1E, 0xF0, 0x1E, - 0xF0, 0x3C, 0xF0, 0x3C, 0xF0, 0x78, 0x70, 0x70, 0x39, 0xC0, 0x0E, 0x00, - 0x08, 0x02, 0x3F, 0x04, 0x7F, 0xF8, 0x83, 0xF0, 0x1F, 0xF8, 0x07, 0x9E, - 0x07, 0x8F, 0x07, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1E, 0x0E, 0x3C, - 0x1F, 0xF0, 0x1E, 0xF0, 0x1C, 0xF0, 0x3C, 0xF0, 0x3C, 0x78, 0x3C, 0x78, - 0x3C, 0x78, 0x7C, 0x3C, 0xFE, 0x3E, 0x07, 0x91, 0xC7, 0x18, 0x73, 0x82, - 0x38, 0x23, 0xC0, 0x3E, 0x01, 0xF0, 0x0F, 0x80, 0x7C, 0x01, 0xE0, 0x1E, - 0x40, 0xE4, 0x0E, 0x60, 0xCE, 0x1C, 0x9F, 0x00, 0x7F, 0xFE, 0xE7, 0x9D, - 0x0E, 0x16, 0x3C, 0x20, 0x78, 0x40, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, - 0x00, 0x1C, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0x80, 0x0F, 0x00, - 0x1E, 0x00, 0xFF, 0x00, 0x7F, 0x1F, 0x3C, 0x0E, 0x38, 0x04, 0x38, 0x0C, - 0x78, 0x08, 0x78, 0x08, 0x70, 0x08, 0x70, 0x10, 0xF0, 0x10, 0xF0, 0x10, - 0xF0, 0x10, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x20, 0xF0, 0x40, 0x78, 0xC0, - 0x3F, 0x00, 0xFF, 0x1F, 0x3C, 0x06, 0x3C, 0x04, 0x3C, 0x08, 0x3C, 0x08, - 0x3C, 0x10, 0x1C, 0x20, 0x1C, 0x20, 0x1E, 0x40, 0x1E, 0x80, 0x1E, 0x80, - 0x1F, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x08, 0x00, 0xFE, 0x7C, - 0x79, 0xE1, 0xC1, 0x8F, 0x0E, 0x08, 0x78, 0x70, 0x43, 0xC7, 0x84, 0x1E, - 0x3E, 0x20, 0x72, 0xF2, 0x03, 0x97, 0x90, 0x1D, 0x1D, 0x00, 0xE8, 0xE8, - 0x07, 0x87, 0x80, 0x3C, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x0E, 0x00, 0x20, - 0x60, 0x01, 0x02, 0x00, 0x1F, 0xCF, 0x83, 0xC1, 0x81, 0xE1, 0x80, 0x71, - 0x80, 0x39, 0x80, 0x1F, 0x80, 0x07, 0x80, 0x03, 0x80, 0x01, 0xE0, 0x01, - 0xF0, 0x00, 0xB8, 0x00, 0x9C, 0x00, 0x8F, 0x00, 0x83, 0x80, 0xC1, 0xC0, - 0xE0, 0xF0, 0xF9, 0xFE, 0x00, 0xFE, 0x7C, 0xE0, 0x63, 0x81, 0x0F, 0x08, - 0x1C, 0x40, 0x71, 0x01, 0xE8, 0x03, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xE0, - 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0xFF, 0x00, 0x1F, - 0xFE, 0x38, 0x78, 0x60, 0xF1, 0x83, 0xC2, 0x0F, 0x00, 0x1E, 0x00, 0x78, - 0x01, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x47, - 0x81, 0x1F, 0x06, 0x3C, 0x3C, 0xFF, 0xF0, 0x07, 0xC1, 0x80, 0xE0, 0x30, - 0x0C, 0x03, 0x01, 0xC0, 0x60, 0x18, 0x06, 0x03, 0x80, 0xC0, 0x30, 0x0C, - 0x07, 0x01, 0xC0, 0x60, 0x18, 0x0E, 0x03, 0xE0, 0xC3, 0x06, 0x18, 0x61, - 0x83, 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x60, 0xC3, 0x0F, 0x81, 0xC0, 0xE0, - 0x60, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, 0xC0, 0x60, - 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x1F, 0x00, 0x0C, 0x07, 0x81, 0xE0, 0xDC, - 0x33, 0x18, 0xC6, 0x1B, 0x06, 0xC0, 0xC0, 0xFF, 0xF0, 0xC7, 0x0C, 0x30, - 0x07, 0x70, 0xCE, 0x1C, 0xE3, 0x8E, 0x70, 0xC7, 0x0C, 0x71, 0xCE, 0x1C, - 0xE1, 0x8E, 0x79, 0xE9, 0xA7, 0x1C, 0x02, 0x07, 0xC0, 0x38, 0x06, 0x01, - 0xC0, 0x38, 0x06, 0x71, 0xF7, 0x38, 0xE7, 0x1C, 0xC3, 0xB8, 0x77, 0x1C, - 0xE3, 0xB8, 0xE7, 0x18, 0xE6, 0x0F, 0x80, 0x07, 0x0C, 0xCE, 0x66, 0x07, - 0x03, 0x83, 0x81, 0xC0, 0xE0, 0x70, 0xBC, 0x87, 0x80, 0x00, 0x08, 0x03, - 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x77, 0x03, 0x3C, 0x18, - 0xE0, 0xE3, 0x87, 0x0E, 0x1C, 0x70, 0x71, 0xC3, 0x87, 0x0E, 0x3C, 0x38, - 0xE8, 0xE5, 0xA1, 0xE7, 0x00, 0x07, 0x0C, 0xCE, 0x66, 0x37, 0x33, 0xBB, - 0xB1, 0xE0, 0xE0, 0x70, 0xB8, 0x87, 0x80, 0x00, 0x38, 0x01, 0xB0, 0x0C, - 0xC0, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x7E, 0x00, 0xE0, 0x03, 0x80, 0x0E, - 0x00, 0x30, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0x80, 0x0E, - 0x00, 0x38, 0x00, 0xC0, 0x33, 0x00, 0xD8, 0x01, 0xC0, 0x00, 0x03, 0x80, - 0x73, 0xC7, 0x1C, 0x38, 0xE1, 0xCF, 0x06, 0x70, 0x1E, 0x01, 0x00, 0x1C, - 0x00, 0xF8, 0x07, 0xF0, 0xC7, 0x8C, 0x0C, 0x60, 0x63, 0x86, 0x07, 0xE0, - 0x01, 0x00, 0xF8, 0x01, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x31, 0xC3, - 0xBE, 0x1E, 0x70, 0xE3, 0x8F, 0x38, 0x71, 0xC3, 0x8E, 0x1C, 0xE1, 0xC7, - 0x0E, 0x3A, 0x71, 0xD3, 0x0F, 0x00, 0x1C, 0x71, 0xC0, 0x00, 0x6F, 0x8E, - 0x31, 0xC7, 0x18, 0x63, 0x8E, 0xBC, 0xE0, 0x00, 0xE0, 0x1C, 0x03, 0x80, - 0x00, 0x00, 0x0F, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x70, 0x0E, 0x01, 0xC0, - 0x38, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x01, 0xC3, 0x38, 0x6E, 0x07, 0x80, - 0x01, 0x00, 0xF8, 0x01, 0xC0, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x33, 0xE3, - 0x8C, 0x1C, 0xC0, 0xE4, 0x06, 0x40, 0x7E, 0x03, 0xF0, 0x1D, 0x81, 0xCE, - 0x0E, 0x72, 0x71, 0xA3, 0x8E, 0x00, 0x06, 0x7C, 0x70, 0xE1, 0xC3, 0x0E, - 0x1C, 0x38, 0x61, 0xC3, 0x87, 0x0C, 0x38, 0x72, 0xE9, 0xE0, 0x3C, 0x73, - 0xC7, 0x7D, 0x71, 0xE7, 0x9C, 0xF1, 0xCE, 0x3C, 0xF3, 0x8E, 0x39, 0xC3, - 0x8E, 0x71, 0xC3, 0x1C, 0x71, 0xC7, 0x1C, 0x71, 0xD7, 0x1C, 0x7B, 0x8E, - 0x1C, 0x3C, 0xF1, 0xD7, 0x1E, 0x73, 0xCE, 0x3C, 0xE3, 0x8E, 0x39, 0xC7, - 0x9C, 0x71, 0xC7, 0x1D, 0x71, 0xEE, 0x1C, 0x0F, 0x06, 0x63, 0x9D, 0xC7, - 0x71, 0xF8, 0x7E, 0x3F, 0x8E, 0xE3, 0xB9, 0xC6, 0x60, 0xF0, 0x0F, 0x38, - 0x1F, 0x70, 0x71, 0xC1, 0xC7, 0x0E, 0x1C, 0x38, 0xF0, 0xE3, 0x83, 0x8E, - 0x1C, 0x70, 0x71, 0xC1, 0xCE, 0x07, 0xE0, 0x38, 0x00, 0xE0, 0x03, 0x80, - 0x3F, 0x00, 0x07, 0x70, 0xCE, 0x18, 0xE3, 0x8E, 0x70, 0xE7, 0x1C, 0xF1, - 0xCE, 0x1C, 0xE3, 0x8E, 0x38, 0xE7, 0x87, 0xB0, 0x07, 0x00, 0x70, 0x0F, - 0x03, 0xF8, 0x0D, 0xDF, 0x71, 0xAC, 0xF0, 0x38, 0x0E, 0x03, 0x81, 0xC0, - 0x70, 0x1C, 0x0E, 0x00, 0x1D, 0x99, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x70, - 0x1C, 0x06, 0x23, 0x19, 0x17, 0x00, 0x0C, 0x10, 0xE3, 0xF3, 0x86, 0x1C, - 0x38, 0x71, 0xC3, 0x87, 0x0E, 0x9E, 0x38, 0x00, 0xF8, 0xE3, 0x8E, 0x38, - 0xC3, 0x9C, 0x71, 0xC7, 0x18, 0x71, 0x87, 0x38, 0xE3, 0x8E, 0xFA, 0xF3, - 0xAE, 0x3C, 0xF0, 0xDC, 0x33, 0x0C, 0xC2, 0x31, 0x8C, 0xC3, 0x60, 0xF0, - 0x38, 0x0C, 0x02, 0x00, 0xE0, 0x86, 0xE3, 0x0C, 0xC6, 0x19, 0x9C, 0x23, - 0x78, 0xC7, 0xF9, 0x0E, 0x74, 0x1C, 0xF0, 0x31, 0xC0, 0x43, 0x00, 0x84, - 0x00, 0x0E, 0x31, 0xF3, 0x83, 0xA0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x1C, - 0x00, 0xE0, 0x0B, 0x02, 0x5D, 0x3C, 0xF1, 0xC3, 0x00, 0x04, 0x67, 0x8C, - 0x79, 0x87, 0x10, 0xE2, 0x1C, 0x81, 0x90, 0x3A, 0x07, 0x80, 0xF0, 0x1C, - 0x03, 0x00, 0x40, 0x08, 0x32, 0x07, 0x80, 0x3F, 0xCF, 0xE6, 0x30, 0x08, - 0x04, 0x02, 0x01, 0x00, 0xC0, 0x30, 0x1E, 0x0F, 0x98, 0x76, 0x07, 0x00, - 0x01, 0xE0, 0x70, 0x1C, 0x03, 0x80, 0x60, 0x1C, 0x03, 0x80, 0x60, 0x0C, - 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x00, 0x40, 0x0C, 0x01, 0x80, 0x70, 0x0E, - 0x01, 0xC0, 0x30, 0x03, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x07, 0x00, 0xE0, - 0x18, 0x06, 0x01, 0x80, 0xE0, 0x38, 0x0C, 0x03, 0x00, 0xC0, 0x10, 0x1F, - 0x07, 0x03, 0x80, 0xE0, 0x30, 0x0C, 0x07, 0x01, 0x80, 0xE0, 0xE0, 0x00, - 0x38, 0x0F, 0xCD, 0x1F, 0x80, 0xE0 }; - -const GFXglyph FreeSerifBoldItalic12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 8, 17, 9, 2, -15 }, // 0x21 '!' - { 17, 9, 7, 13, 4, -15 }, // 0x22 '"' - { 25, 14, 16, 12, -1, -15 }, // 0x23 '#' - { 53, 12, 20, 12, 0, -17 }, // 0x24 '$' - { 83, 18, 18, 20, 1, -16 }, // 0x25 '%' - { 124, 16, 17, 19, 0, -15 }, // 0x26 '&' - { 158, 3, 7, 7, 3, -15 }, // 0x27 ''' - { 161, 7, 21, 8, 1, -15 }, // 0x28 '(' - { 180, 7, 21, 8, -1, -15 }, // 0x29 ')' - { 199, 10, 10, 12, 1, -15 }, // 0x2A '*' - { 212, 12, 12, 14, 1, -11 }, // 0x2B '+' - { 230, 5, 8, 6, -2, -3 }, // 0x2C ',' - { 235, 6, 3, 8, 0, -6 }, // 0x2D '-' - { 238, 4, 4, 6, 0, -2 }, // 0x2E '.' - { 240, 10, 16, 8, 0, -15 }, // 0x2F '/' - { 260, 11, 17, 12, 0, -15 }, // 0x30 '0' - { 284, 10, 17, 12, 0, -15 }, // 0x31 '1' - { 306, 11, 17, 12, 0, -15 }, // 0x32 '2' - { 330, 11, 17, 12, 0, -15 }, // 0x33 '3' - { 354, 13, 16, 12, 0, -15 }, // 0x34 '4' - { 380, 12, 17, 12, 0, -15 }, // 0x35 '5' - { 406, 11, 17, 12, 1, -15 }, // 0x36 '6' - { 430, 11, 16, 12, 2, -15 }, // 0x37 '7' - { 452, 11, 17, 12, 0, -15 }, // 0x38 '8' - { 476, 11, 17, 12, 0, -15 }, // 0x39 '9' - { 500, 7, 12, 6, 0, -10 }, // 0x3A ':' - { 511, 8, 15, 6, -1, -10 }, // 0x3B ';' - { 526, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 546, 12, 6, 14, 2, -8 }, // 0x3D '=' - { 555, 13, 13, 14, 1, -12 }, // 0x3E '>' - { 577, 9, 17, 12, 2, -15 }, // 0x3F '?' - { 597, 17, 16, 20, 1, -15 }, // 0x40 '@' - { 631, 16, 17, 17, 0, -15 }, // 0x41 'A' - { 665, 16, 17, 15, 0, -15 }, // 0x42 'B' - { 699, 15, 17, 15, 1, -15 }, // 0x43 'C' - { 731, 18, 17, 17, 0, -15 }, // 0x44 'D' - { 770, 17, 17, 15, 0, -15 }, // 0x45 'E' - { 807, 16, 17, 15, 0, -15 }, // 0x46 'F' - { 841, 17, 17, 17, 1, -15 }, // 0x47 'G' - { 878, 20, 17, 18, 0, -15 }, // 0x48 'H' - { 921, 10, 17, 9, 0, -15 }, // 0x49 'I' - { 943, 14, 18, 12, 0, -15 }, // 0x4A 'J' - { 975, 17, 17, 16, 0, -15 }, // 0x4B 'K' - { 1012, 15, 17, 15, 0, -15 }, // 0x4C 'L' - { 1044, 23, 17, 21, 0, -15 }, // 0x4D 'M' - { 1093, 19, 17, 17, 0, -15 }, // 0x4E 'N' - { 1134, 16, 17, 16, 1, -15 }, // 0x4F 'O' - { 1168, 16, 17, 14, 0, -15 }, // 0x50 'P' - { 1202, 16, 21, 16, 1, -15 }, // 0x51 'Q' - { 1244, 16, 17, 16, 0, -15 }, // 0x52 'R' - { 1278, 12, 17, 12, 0, -15 }, // 0x53 'S' - { 1304, 15, 17, 14, 2, -15 }, // 0x54 'T' - { 1336, 16, 17, 17, 3, -15 }, // 0x55 'U' - { 1370, 16, 16, 17, 3, -15 }, // 0x56 'V' - { 1402, 21, 16, 22, 3, -15 }, // 0x57 'W' - { 1444, 17, 17, 17, 0, -15 }, // 0x58 'X' - { 1481, 14, 17, 15, 3, -15 }, // 0x59 'Y' - { 1511, 15, 17, 13, 0, -15 }, // 0x5A 'Z' - { 1543, 10, 20, 8, -1, -15 }, // 0x5B '[' - { 1568, 6, 16, 10, 3, -15 }, // 0x5C '\' - { 1580, 9, 20, 8, -1, -15 }, // 0x5D ']' - { 1603, 10, 9, 14, 2, -15 }, // 0x5E '^' - { 1615, 12, 1, 12, 0, 4 }, // 0x5F '_' - { 1617, 5, 4, 8, 2, -15 }, // 0x60 '`' - { 1620, 12, 12, 12, 0, -10 }, // 0x61 'a' - { 1638, 11, 18, 12, 1, -16 }, // 0x62 'b' - { 1663, 9, 12, 10, 1, -10 }, // 0x63 'c' - { 1677, 14, 18, 12, 0, -16 }, // 0x64 'd' - { 1709, 9, 12, 10, 1, -10 }, // 0x65 'e' - { 1723, 14, 22, 12, -2, -16 }, // 0x66 'f' - { 1762, 13, 16, 12, -1, -10 }, // 0x67 'g' - { 1788, 13, 18, 13, 0, -16 }, // 0x68 'h' - { 1818, 6, 17, 7, 1, -15 }, // 0x69 'i' - { 1831, 11, 21, 8, -2, -15 }, // 0x6A 'j' - { 1860, 13, 18, 12, 0, -16 }, // 0x6B 'k' - { 1890, 7, 18, 7, 1, -16 }, // 0x6C 'l' - { 1906, 18, 12, 18, 0, -10 }, // 0x6D 'm' - { 1933, 12, 12, 13, 0, -10 }, // 0x6E 'n' - { 1951, 10, 12, 11, 1, -10 }, // 0x6F 'o' - { 1966, 14, 16, 12, -2, -10 }, // 0x70 'p' - { 1994, 12, 16, 12, 0, -10 }, // 0x71 'q' - { 2018, 10, 11, 10, 0, -10 }, // 0x72 'r' - { 2032, 9, 12, 9, 0, -10 }, // 0x73 's' - { 2046, 7, 15, 7, 1, -13 }, // 0x74 't' - { 2060, 12, 12, 13, 1, -10 }, // 0x75 'u' - { 2078, 10, 11, 11, 1, -10 }, // 0x76 'v' - { 2092, 15, 11, 16, 1, -10 }, // 0x77 'w' - { 2113, 13, 12, 11, -1, -10 }, // 0x78 'x' - { 2133, 11, 16, 10, -1, -10 }, // 0x79 'y' - { 2155, 10, 13, 10, 0, -10 }, // 0x7A 'z' - { 2172, 11, 21, 8, 0, -16 }, // 0x7B '{' - { 2201, 2, 16, 6, 3, -15 }, // 0x7C '|' - { 2205, 10, 21, 8, -3, -16 }, // 0x7D '}' - { 2232, 11, 4, 14, 1, -7 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic12pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic12pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2910 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h deleted file mode 100644 index e24eea61f..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h +++ /dev/null @@ -1,500 +0,0 @@ -const uint8_t FreeSerifBoldItalic18pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x3C, 0x07, - 0x80, 0xE0, 0x1C, 0x03, 0x00, 0x60, 0x0C, 0x03, 0x00, 0x60, 0x08, 0x00, - 0x00, 0x00, 0x00, 0x07, 0x81, 0xF8, 0x3F, 0x07, 0xE0, 0x78, 0x00, 0x38, - 0x1D, 0xE0, 0xF7, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC0, 0xE6, 0x03, 0x18, - 0x0C, 0x40, 0x23, 0x01, 0x80, 0x00, 0x38, 0x60, 0x07, 0x0E, 0x00, 0x70, - 0xC0, 0x06, 0x1C, 0x00, 0xE1, 0xC0, 0x0E, 0x38, 0x01, 0xC3, 0x81, 0xFF, - 0xFF, 0x1F, 0xFF, 0xE1, 0xFF, 0xFE, 0x03, 0x86, 0x00, 0x30, 0xE0, 0x07, - 0x0E, 0x00, 0x71, 0xC0, 0x0E, 0x1C, 0x0F, 0xFF, 0xF8, 0xFF, 0xFF, 0x0F, - 0xFF, 0xF0, 0x1C, 0x30, 0x01, 0x87, 0x00, 0x38, 0x70, 0x03, 0x0E, 0x00, - 0x70, 0xE0, 0x07, 0x0C, 0x00, 0xE1, 0xC0, 0x00, 0x00, 0x08, 0x00, 0x0C, - 0x00, 0x7E, 0x00, 0xFF, 0xC0, 0xF3, 0x70, 0x71, 0x9C, 0x70, 0xC6, 0x38, - 0x43, 0x1C, 0x61, 0x0F, 0x30, 0x87, 0xD8, 0x03, 0xF8, 0x00, 0xFE, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xDF, 0x10, 0x47, - 0x88, 0x63, 0xCC, 0x31, 0xE6, 0x10, 0xF3, 0x98, 0x71, 0xCC, 0x78, 0x7E, - 0x78, 0x07, 0xF8, 0x03, 0xF0, 0x01, 0x80, 0x00, 0xC0, 0x00, 0x03, 0xC0, - 0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x98, 0x07, - 0xC1, 0x06, 0x00, 0xF8, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0xC1, 0x8C, - 0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x0C, 0x00, 0x78, - 0xC3, 0x03, 0xC7, 0xF8, 0x61, 0xFC, 0x7C, 0x18, 0x7C, 0xC0, 0x06, 0x1F, - 0x08, 0x00, 0xC7, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x06, 0x3E, 0x04, 0x01, - 0x87, 0xC1, 0x00, 0x30, 0xF0, 0x20, 0x0C, 0x1E, 0x0C, 0x03, 0x03, 0xC1, - 0x00, 0x60, 0x3C, 0xC0, 0x18, 0x07, 0xF8, 0x03, 0x00, 0x7C, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x1E, 0x38, 0x00, 0x0E, 0x0E, 0x00, - 0x0F, 0x07, 0x00, 0x07, 0x83, 0x80, 0x03, 0xC3, 0x80, 0x01, 0xE3, 0x80, - 0x00, 0xF7, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x7F, 0x0F, - 0xF0, 0xE7, 0x81, 0xE0, 0xE3, 0xE0, 0xE0, 0xE1, 0xF0, 0x60, 0xE0, 0x7C, - 0x60, 0xF0, 0x3E, 0x20, 0x78, 0x1F, 0xB0, 0x3C, 0x07, 0xF0, 0x1F, 0x03, - 0xF0, 0x0F, 0x80, 0xFC, 0x03, 0xF0, 0x7F, 0x8D, 0xFF, 0xEF, 0xFC, 0x7F, - 0xE3, 0xFC, 0x0F, 0xC0, 0x78, 0x00, 0x3B, 0xDE, 0xE7, 0x39, 0x8C, 0x46, - 0x00, 0x00, 0x60, 0x18, 0x06, 0x01, 0x80, 0x60, 0x1C, 0x07, 0x01, 0xE0, - 0x38, 0x0F, 0x01, 0xC0, 0x38, 0x0F, 0x01, 0xE0, 0x38, 0x07, 0x00, 0xE0, - 0x1C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0xC0, 0x18, 0x03, 0x00, 0x60, 0x06, - 0x00, 0xC0, 0x08, 0x00, 0x80, 0x10, 0x00, 0x06, 0x00, 0x40, 0x04, 0x00, - 0x80, 0x18, 0x01, 0x00, 0x30, 0x06, 0x00, 0xC0, 0x1C, 0x03, 0x80, 0x70, - 0x0E, 0x01, 0xC0, 0x38, 0x07, 0x01, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x3C, - 0x07, 0x00, 0xE0, 0x38, 0x06, 0x01, 0xC0, 0x70, 0x18, 0x06, 0x01, 0x80, - 0x00, 0x07, 0x00, 0x38, 0x01, 0xC1, 0x8E, 0x3E, 0x23, 0xF9, 0x3F, 0xEB, - 0xE0, 0xE0, 0xFF, 0xF7, 0x93, 0xF8, 0x9F, 0x8E, 0x60, 0x70, 0x03, 0x80, - 0x08, 0x00, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, - 0x00, 0x0E, 0x00, 0x07, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, - 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x01, 0xC0, 0x00, 0x1C, 0x7C, 0xF9, 0xF1, 0xE1, 0xC3, 0x0C, 0x30, 0xC2, - 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xE0, 0x7B, 0xFF, 0xFF, 0x78, 0x00, 0x1C, - 0x00, 0xE0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, - 0x01, 0xC0, 0x07, 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, - 0x03, 0x80, 0x0E, 0x00, 0x70, 0x01, 0xC0, 0x0E, 0x00, 0x38, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0xE0, 0x00, 0x00, 0xF0, 0x07, 0x30, 0x1C, 0x30, - 0x78, 0x60, 0xE0, 0xE3, 0xC1, 0xCF, 0x83, 0x9E, 0x0F, 0x3C, 0x1E, 0xF8, - 0x3D, 0xE0, 0x7B, 0xC1, 0xFF, 0x83, 0xFF, 0x07, 0xBC, 0x0F, 0x78, 0x3E, - 0xF0, 0x7D, 0xE0, 0xF3, 0x81, 0xE7, 0x07, 0x8E, 0x0F, 0x0C, 0x3C, 0x18, - 0x70, 0x19, 0xC0, 0x1E, 0x00, 0x00, 0x06, 0x01, 0xF8, 0x1F, 0xF0, 0x03, - 0xE0, 0x07, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x03, 0xE0, - 0x07, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xE0, 0x07, - 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, - 0x0F, 0xC0, 0xFF, 0xF0, 0x00, 0xF8, 0x01, 0xFC, 0x03, 0xFE, 0x06, 0x3F, - 0x08, 0x1F, 0x18, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xC0, - 0x01, 0x80, 0x03, 0x00, 0x06, 0x02, 0x0C, 0x06, 0x08, 0x0C, 0x1F, 0xFC, - 0x3F, 0xFC, 0x7F, 0xF8, 0xFF, 0xF8, 0x00, 0xF0, 0x07, 0xF8, 0x1F, 0xF0, - 0x61, 0xF0, 0x81, 0xE0, 0x03, 0xC0, 0x07, 0x80, 0x0E, 0x00, 0x3C, 0x00, - 0xE0, 0x07, 0xC0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, 0x1F, 0x00, 0x1E, - 0x00, 0x3C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0x9C, 0x0E, 0x3C, - 0x38, 0x7F, 0xE0, 0x7E, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x70, 0x00, 0x3C, - 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x07, 0xE0, 0x02, 0xF8, 0x01, 0x3C, 0x00, - 0x9F, 0x00, 0x47, 0xC0, 0x31, 0xE0, 0x18, 0x78, 0x0C, 0x3E, 0x06, 0x0F, - 0x83, 0x03, 0xC1, 0x80, 0xF0, 0x7F, 0xFF, 0x1F, 0xFF, 0xCF, 0xFF, 0xF0, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xFF, 0x00, 0xFF, 0x80, 0xFF, 0xC0, 0x7F, 0xE0, 0x60, 0x00, 0x30, 0x00, - 0x10, 0x00, 0x1F, 0x00, 0x0F, 0xE0, 0x0F, 0xF8, 0x07, 0xFE, 0x00, 0x3F, - 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1C, 0x00, - 0x0E, 0x00, 0x06, 0x00, 0x03, 0x00, 0x03, 0x87, 0x83, 0x83, 0xE3, 0x81, - 0xFF, 0x80, 0x3F, 0x00, 0x00, 0x00, 0x03, 0x80, 0x0F, 0x80, 0x1F, 0x00, - 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x1F, 0x00, - 0x1F, 0xF0, 0x1F, 0xFE, 0x0F, 0xCF, 0x07, 0xC3, 0xC7, 0xE1, 0xE3, 0xE0, - 0xF1, 0xF0, 0x78, 0xF8, 0x3C, 0x78, 0x3E, 0x3C, 0x1F, 0x1E, 0x0F, 0x0F, - 0x0F, 0x83, 0x87, 0x81, 0xE7, 0x80, 0x7F, 0x80, 0x0F, 0x80, 0x00, 0x3F, - 0xFF, 0x3F, 0xFE, 0x3F, 0xFE, 0x7F, 0xFC, 0x60, 0x1C, 0x80, 0x38, 0x80, - 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x01, 0xC0, 0x03, - 0x80, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x1C, - 0x00, 0x38, 0x00, 0x38, 0x00, 0x70, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0x00, - 0xF8, 0x00, 0xFF, 0x00, 0xE1, 0xC0, 0xE0, 0xF0, 0xF0, 0x38, 0x78, 0x1C, - 0x3C, 0x0E, 0x1F, 0x07, 0x0F, 0x87, 0x07, 0xE7, 0x01, 0xFF, 0x00, 0x7E, - 0x00, 0x1F, 0x80, 0x3F, 0xE0, 0x73, 0xF0, 0x70, 0xFC, 0x70, 0x3E, 0x70, - 0x0F, 0x38, 0x07, 0x9C, 0x03, 0xCE, 0x01, 0xE7, 0x00, 0xE1, 0xC0, 0xE0, - 0x70, 0xE0, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x01, 0xFF, 0x01, 0xF3, 0xC1, - 0xF0, 0xE1, 0xF0, 0x70, 0xF0, 0x3C, 0xF8, 0x1E, 0x7C, 0x0F, 0x3C, 0x0F, - 0x9E, 0x07, 0xCF, 0x03, 0xE7, 0x83, 0xF3, 0xC1, 0xF0, 0xF1, 0xF8, 0x3F, - 0xF8, 0x0F, 0xFC, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0x7E, 0x00, 0x3E, 0x00, - 0x3C, 0x00, 0x7C, 0x00, 0x7C, 0x00, 0xF0, 0x00, 0xC0, 0x00, 0x00, 0x07, - 0x83, 0xF0, 0xFC, 0x3F, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x78, 0x3F, 0x0F, 0xC3, 0xF0, 0x78, 0x00, 0x03, 0xC0, 0xFC, - 0x1F, 0x83, 0xF0, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x0C, 0x03, 0xC0, 0x7C, 0x0F, 0x80, 0xF0, 0x0E, 0x01, 0x80, 0x30, 0x0C, - 0x03, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x7C, 0x00, - 0x7F, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xFE, 0x00, 0xFE, 0x00, - 0x3E, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xE0, 0x01, 0xFE, 0x00, - 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x0F, 0xC0, 0x00, 0xF0, 0x00, 0x04, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x38, 0x00, 0x0F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xFC, 0x00, - 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0xFC, 0x00, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xFC, 0x00, 0xFC, 0x00, - 0x3C, 0x00, 0x08, 0x00, 0x00, 0x07, 0xC0, 0xFF, 0x0E, 0x3C, 0x70, 0xF3, - 0xC7, 0x8C, 0x3C, 0x01, 0xE0, 0x1F, 0x00, 0xF0, 0x07, 0x80, 0x78, 0x07, - 0x80, 0x30, 0x03, 0x00, 0x10, 0x01, 0x80, 0x08, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x80, 0x7E, 0x03, 0xF0, 0x1F, 0x80, 0x78, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0xFF, 0xF8, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x03, 0x81, 0xC0, - 0x00, 0xE1, 0xC0, 0x18, 0x38, 0xE0, 0x3F, 0xCC, 0xE0, 0x3C, 0xE7, 0x70, - 0x3C, 0x71, 0xF0, 0x1C, 0x30, 0xF8, 0x1E, 0x38, 0x7C, 0x0E, 0x1C, 0x3E, - 0x0F, 0x0E, 0x1F, 0x07, 0x0E, 0x0F, 0x83, 0x87, 0x0D, 0xC1, 0xC7, 0x86, - 0x70, 0xE5, 0xC6, 0x38, 0x7C, 0xFE, 0x1C, 0x1C, 0x3E, 0x07, 0x00, 0x00, - 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x40, 0x1F, 0x00, 0xE0, 0x03, 0xFF, - 0xE0, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x03, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x17, 0xC0, 0x00, 0x67, 0x80, 0x00, 0x8F, - 0x00, 0x03, 0x1F, 0x00, 0x0C, 0x3E, 0x00, 0x10, 0x7C, 0x00, 0x60, 0xF8, - 0x00, 0x81, 0xF0, 0x03, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x07, 0xC0, - 0x60, 0x0F, 0x81, 0xC0, 0x1F, 0x03, 0x00, 0x3E, 0x0E, 0x00, 0x7C, 0x3C, - 0x00, 0xFC, 0xFE, 0x0F, 0xFE, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, 0x01, - 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, 0x01, 0xF0, 0x3F, 0x01, - 0xF0, 0x3F, 0x03, 0xE0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFC, 0x03, - 0xE3, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xC3, 0xE0, 0x07, 0xC1, 0xF8, 0x0F, - 0xC0, 0xF8, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x0F, 0x80, 0xFC, 0x1F, - 0x80, 0xFC, 0x1F, 0x01, 0xFC, 0x1F, 0x01, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, - 0x0F, 0xE0, 0x7F, 0xFF, 0xC0, 0xFF, 0xFE, 0x00, 0x00, 0x1F, 0x82, 0x01, - 0xFF, 0xE8, 0x07, 0xE0, 0xF0, 0x3F, 0x80, 0xE0, 0xFE, 0x00, 0xC1, 0xF8, - 0x01, 0x87, 0xE0, 0x02, 0x1F, 0x80, 0x04, 0x3F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0xE0, 0x01, 0x07, 0xE0, 0x06, 0x07, 0xE0, 0x18, 0x07, - 0xE0, 0xE0, 0x07, 0xFF, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xFF, 0xE0, 0x01, - 0xFF, 0xFE, 0x00, 0x1F, 0x87, 0xE0, 0x07, 0xE0, 0x7C, 0x01, 0xF0, 0x1F, - 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x0F, 0x80, 0x3F, 0x03, 0xE0, - 0x0F, 0xC0, 0xF8, 0x03, 0xF0, 0x3E, 0x00, 0xFC, 0x1F, 0x00, 0x3F, 0x07, - 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xF0, 0xFC, 0x01, 0xF8, 0x3E, 0x00, 0x7E, - 0x0F, 0x80, 0x3F, 0x83, 0xE0, 0x0F, 0xC1, 0xF8, 0x07, 0xF0, 0x7C, 0x01, - 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0x7E, 0x03, 0xF0, 0x7E, 0x01, 0xFF, - 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, - 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, - 0x7C, 0x01, 0x01, 0xF8, 0x10, 0x03, 0xE0, 0x60, 0x07, 0xC3, 0x80, 0x0F, - 0xFF, 0x00, 0x3F, 0xFE, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, - 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x10, 0x7E, 0x00, - 0x60, 0xF8, 0x01, 0xC1, 0xF0, 0x07, 0x03, 0xE0, 0x1E, 0x0F, 0xC0, 0xFC, - 0x3F, 0xFF, 0xF8, 0xFF, 0xFF, 0xE0, 0x07, 0xFF, 0xFE, 0x03, 0xFF, 0xFC, - 0x07, 0xE0, 0x78, 0x0F, 0xC0, 0x60, 0x1F, 0x00, 0x40, 0x3E, 0x00, 0x80, - 0x7C, 0x01, 0x01, 0xF8, 0x20, 0x03, 0xE0, 0xC0, 0x07, 0xC3, 0x80, 0x0F, - 0xFE, 0x00, 0x3F, 0xFC, 0x00, 0x7C, 0x38, 0x00, 0xF8, 0x30, 0x03, 0xF0, - 0x60, 0x07, 0xC0, 0x80, 0x0F, 0x81, 0x00, 0x1F, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, - 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x00, 0x1F, 0xC2, 0x00, 0xFF, 0xF6, - 0x01, 0xF8, 0x3C, 0x03, 0xE0, 0x1C, 0x0F, 0xC0, 0x0C, 0x0F, 0xC0, 0x08, - 0x1F, 0x80, 0x08, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0xFC, 0x03, 0xFF, - 0xFC, 0x00, 0xFC, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, 0xFC, 0x00, 0xF8, - 0xFC, 0x00, 0xF0, 0x7C, 0x01, 0xF0, 0x7E, 0x01, 0xF0, 0x3E, 0x01, 0xF0, - 0x1F, 0x83, 0xE0, 0x0F, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xFF, 0x3F, - 0xF8, 0x0F, 0xE0, 0x7F, 0x00, 0x7E, 0x01, 0xF8, 0x03, 0xF0, 0x0F, 0x80, - 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x07, 0xE0, 0x07, 0xC0, 0x3E, 0x00, 0x7E, - 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0xF8, 0x00, 0xF8, 0x07, - 0xC0, 0x0F, 0xFF, 0xFE, 0x00, 0x7F, 0xFF, 0xF0, 0x03, 0xE0, 0x1F, 0x00, - 0x3F, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x7E, 0x00, 0x7C, - 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x01, 0xF0, 0x0F, - 0xC0, 0x0F, 0x80, 0x7C, 0x00, 0xFC, 0x03, 0xE0, 0x0F, 0xE0, 0x3F, 0x80, - 0xFF, 0xC7, 0xFF, 0x00, 0x07, 0xFE, 0x03, 0xF8, 0x07, 0xE0, 0x0F, 0xC0, - 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x01, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x0F, - 0x80, 0x3E, 0x00, 0x7C, 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x0F, 0x80, - 0x1F, 0x00, 0x7C, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0xC0, 0x3F, - 0x80, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x01, 0xFE, 0x00, 0x0F, 0xC0, 0x00, - 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xF0, 0x00, - 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, - 0x07, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0xC0, - 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x61, 0xF0, - 0x0F, 0x3F, 0x00, 0xE7, 0xE0, 0x07, 0xFC, 0x00, 0x3F, 0x00, 0x00, 0x07, - 0xFF, 0x3F, 0x80, 0xFE, 0x07, 0x80, 0x7E, 0x03, 0x00, 0x3F, 0x03, 0x00, - 0x1F, 0x03, 0x00, 0x0F, 0x83, 0x00, 0x07, 0xC3, 0x00, 0x07, 0xE3, 0x00, - 0x03, 0xE3, 0x00, 0x01, 0xF3, 0x00, 0x00, 0xFB, 0x80, 0x00, 0xFB, 0xC0, - 0x00, 0x7F, 0xE0, 0x00, 0x3E, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x1F, - 0x00, 0x0F, 0x8F, 0x80, 0x07, 0xC7, 0xE0, 0x07, 0xE1, 0xF0, 0x03, 0xE0, - 0xFC, 0x01, 0xF0, 0x3E, 0x00, 0xF8, 0x1F, 0x00, 0xFC, 0x07, 0xC0, 0xFE, - 0x07, 0xF0, 0xFF, 0xCF, 0xFC, 0x00, 0x07, 0xFF, 0x00, 0x07, 0xF0, 0x00, - 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, - 0x00, 0x00, 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, - 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x1F, 0x00, 0x00, 0xFC, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x11, 0xF0, 0x00, 0xC7, 0xC0, - 0x06, 0x1F, 0x00, 0x38, 0x7C, 0x01, 0xE3, 0xF0, 0x3F, 0x9F, 0xFF, 0xFC, - 0xFF, 0xFF, 0xF0, 0x07, 0xF8, 0x00, 0x7F, 0x80, 0xFC, 0x00, 0x3F, 0x80, - 0x3E, 0x00, 0x3F, 0x80, 0x1F, 0x00, 0x3F, 0x80, 0x1F, 0x80, 0x1F, 0xC0, - 0x0F, 0xE0, 0x1B, 0xE0, 0x07, 0xF0, 0x0D, 0xF0, 0x02, 0xF8, 0x0D, 0xF0, - 0x03, 0x7C, 0x0C, 0xF8, 0x01, 0xBE, 0x06, 0x7C, 0x00, 0xDF, 0x06, 0x7C, - 0x00, 0xCF, 0x83, 0x3E, 0x00, 0x67, 0xC3, 0x1F, 0x00, 0x31, 0xE3, 0x0F, - 0x80, 0x38, 0xF9, 0x8F, 0x80, 0x18, 0x7D, 0x87, 0xC0, 0x0C, 0x3F, 0x83, - 0xE0, 0x06, 0x1F, 0xC1, 0xF0, 0x06, 0x0F, 0xC1, 0xF0, 0x03, 0x07, 0xC0, - 0xF8, 0x01, 0x83, 0xE0, 0x7C, 0x01, 0xC0, 0xE0, 0x7E, 0x00, 0xE0, 0x70, - 0x3F, 0x00, 0xF8, 0x30, 0x3F, 0x80, 0xFF, 0x10, 0x7F, 0xF0, 0x00, 0x07, - 0xF0, 0x0F, 0xE0, 0x3E, 0x00, 0x78, 0x07, 0xE0, 0x06, 0x00, 0x7C, 0x00, - 0xC0, 0x1F, 0xC0, 0x10, 0x03, 0xF8, 0x06, 0x00, 0x6F, 0x80, 0xC0, 0x19, - 0xF0, 0x10, 0x03, 0x3F, 0x02, 0x00, 0x63, 0xE0, 0xC0, 0x0C, 0x7C, 0x18, - 0x03, 0x07, 0xC2, 0x00, 0x60, 0xF8, 0x40, 0x0C, 0x0F, 0x98, 0x03, 0x81, - 0xF3, 0x00, 0x60, 0x3F, 0x40, 0x0C, 0x03, 0xF8, 0x01, 0x80, 0x7F, 0x00, - 0x60, 0x07, 0xC0, 0x0C, 0x00, 0xF8, 0x01, 0x80, 0x0F, 0x00, 0x70, 0x01, - 0xE0, 0x0E, 0x00, 0x18, 0x03, 0xE0, 0x03, 0x00, 0x02, 0x00, 0x60, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, - 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, - 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xE0, 0x03, 0xF7, 0xC0, - 0x07, 0xDF, 0x80, 0x1F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, - 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x0F, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, - 0x0F, 0x81, 0xF0, 0x0F, 0x87, 0xC0, 0x0F, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xFF, 0xE0, 0x03, 0xFF, 0xF0, 0x07, 0xE3, 0xF0, 0x0F, 0x83, 0xE0, - 0x1F, 0x07, 0xE0, 0x3E, 0x0F, 0xC0, 0x7C, 0x1F, 0x81, 0xF0, 0x3F, 0x03, - 0xE0, 0xFE, 0x07, 0xC1, 0xF8, 0x0F, 0x87, 0xF0, 0x3E, 0x1F, 0xC0, 0x7F, - 0xFE, 0x00, 0xFF, 0xF0, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x80, - 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF8, 0x00, 0x01, 0xF0, 0x00, - 0x03, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x80, 0x00, 0xFF, 0xC0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0xFF, 0xC0, 0x07, 0xC3, 0xE0, 0x1F, 0x03, 0xC0, - 0x7C, 0x03, 0xC1, 0xF0, 0x07, 0x87, 0xE0, 0x0F, 0x8F, 0x80, 0x1F, 0x3F, - 0x00, 0x3E, 0x7C, 0x00, 0x7D, 0xF8, 0x01, 0xFB, 0xF0, 0x03, 0xF7, 0xC0, - 0x07, 0xDF, 0x80, 0x0F, 0xBF, 0x00, 0x3F, 0x7C, 0x00, 0x7C, 0xF8, 0x01, - 0xF9, 0xF0, 0x03, 0xE3, 0xE0, 0x07, 0xC7, 0xC0, 0x1F, 0x07, 0x80, 0x7C, - 0x0F, 0x01, 0xF0, 0x0F, 0x07, 0x80, 0x07, 0xFE, 0x00, 0x03, 0x80, 0x00, - 0x0C, 0x00, 0x00, 0x3C, 0x00, 0x20, 0xFF, 0xC1, 0x87, 0xFF, 0xFE, 0x1E, - 0xFF, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xFF, 0xE0, 0x01, 0xFF, 0xFC, - 0x01, 0xF8, 0x7E, 0x01, 0xF8, 0x3F, 0x01, 0xF8, 0x3F, 0x01, 0xF0, 0x3F, - 0x01, 0xF0, 0x3F, 0x03, 0xF0, 0x3F, 0x03, 0xE0, 0x7E, 0x03, 0xE0, 0xFE, - 0x03, 0xE1, 0xF8, 0x07, 0xFF, 0xF0, 0x07, 0xFF, 0x80, 0x07, 0xDF, 0xC0, - 0x0F, 0xCF, 0xC0, 0x0F, 0xCF, 0xC0, 0x0F, 0x8F, 0xE0, 0x0F, 0x87, 0xE0, - 0x1F, 0x87, 0xE0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, 0x1F, 0x03, 0xF0, - 0x3F, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0xE1, 0xFE, 0x00, 0xF8, 0x40, - 0xFF, 0xB0, 0x38, 0x3C, 0x1C, 0x07, 0x0F, 0x01, 0xC3, 0xC0, 0x20, 0xF0, - 0x08, 0x3E, 0x02, 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x7F, 0x00, 0x0F, 0xE0, - 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x00, - 0x03, 0xC4, 0x00, 0xF1, 0x00, 0x3C, 0x60, 0x0F, 0x38, 0x07, 0x8F, 0x83, - 0xC2, 0x3F, 0xE0, 0x83, 0xF0, 0x00, 0x3F, 0xFF, 0xF9, 0xFF, 0xFF, 0xCF, - 0x1F, 0x1E, 0x70, 0xF8, 0x77, 0x0F, 0x83, 0x30, 0x7C, 0x09, 0x03, 0xE0, - 0x40, 0x3F, 0x02, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x07, - 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, - 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, - 0x7F, 0xF0, 0xFF, 0x1F, 0xC0, 0x3E, 0x1F, 0x80, 0x1C, 0x1F, 0x80, 0x18, - 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x18, 0x1F, 0x00, 0x30, 0x3F, 0x00, 0x30, - 0x3E, 0x00, 0x30, 0x3E, 0x00, 0x30, 0x7E, 0x00, 0x60, 0x7C, 0x00, 0x60, - 0x7C, 0x00, 0x60, 0x7C, 0x00, 0xC0, 0x7C, 0x00, 0xC0, 0xF8, 0x00, 0xC0, - 0xF8, 0x00, 0xC0, 0xF8, 0x01, 0x80, 0xF8, 0x01, 0x80, 0xF8, 0x03, 0x80, - 0xF8, 0x03, 0x00, 0x7C, 0x06, 0x00, 0x7E, 0x1E, 0x00, 0x3F, 0xF8, 0x00, - 0x0F, 0xE0, 0x00, 0xFF, 0xE0, 0x7F, 0x3F, 0x80, 0x1C, 0x1F, 0x80, 0x18, - 0x1F, 0x80, 0x18, 0x1F, 0x80, 0x30, 0x1F, 0x80, 0x30, 0x0F, 0x80, 0x60, - 0x0F, 0x80, 0x40, 0x0F, 0x80, 0xC0, 0x0F, 0x81, 0x80, 0x0F, 0x81, 0x00, - 0x0F, 0xC3, 0x00, 0x0F, 0xC6, 0x00, 0x07, 0xC6, 0x00, 0x07, 0xCC, 0x00, - 0x07, 0xC8, 0x00, 0x07, 0xD8, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0xC0, 0x00, 0x03, 0x80, 0x00, - 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0xFF, 0xCF, 0xF8, 0x7E, 0x7F, 0x07, - 0xE0, 0x38, 0x7C, 0x07, 0x80, 0x60, 0xF8, 0x0F, 0x00, 0x81, 0xF0, 0x1E, - 0x03, 0x03, 0xE0, 0x3E, 0x04, 0x07, 0xE0, 0xFC, 0x18, 0x07, 0xC1, 0xF8, - 0x20, 0x0F, 0x87, 0xF0, 0xC0, 0x1F, 0x0B, 0xE1, 0x00, 0x3E, 0x37, 0xC6, - 0x00, 0x7C, 0x47, 0x88, 0x00, 0xF9, 0x8F, 0x30, 0x01, 0xF2, 0x1F, 0x40, - 0x03, 0xEC, 0x3E, 0x80, 0x03, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0xFC, 0x00, - 0x0F, 0x81, 0xF8, 0x00, 0x1F, 0x03, 0xE0, 0x00, 0x3C, 0x07, 0xC0, 0x00, - 0x78, 0x07, 0x00, 0x00, 0xF0, 0x0E, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x01, - 0x80, 0x30, 0x00, 0x02, 0x00, 0x40, 0x00, 0x0F, 0xFE, 0x3F, 0x81, 0xFC, - 0x07, 0x80, 0x7C, 0x03, 0x00, 0x3F, 0x03, 0x00, 0x0F, 0x83, 0x80, 0x07, - 0xC1, 0x80, 0x03, 0xE1, 0x80, 0x00, 0xF9, 0x80, 0x00, 0x7D, 0x80, 0x00, - 0x3F, 0x80, 0x00, 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x03, 0xE0, 0x00, - 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xBE, 0x00, 0x00, 0xCF, 0x00, - 0x00, 0xC7, 0xC0, 0x00, 0xC3, 0xE0, 0x00, 0xC1, 0xF0, 0x00, 0xC0, 0x7C, - 0x00, 0xE0, 0x3E, 0x00, 0xE0, 0x1F, 0x00, 0xF8, 0x1F, 0xE0, 0xFF, 0x1F, - 0xF8, 0x00, 0xFF, 0xC3, 0xF9, 0xF8, 0x07, 0x87, 0xC0, 0x38, 0x3E, 0x01, - 0x81, 0xF0, 0x18, 0x07, 0xC0, 0x80, 0x3E, 0x0C, 0x01, 0xF0, 0xC0, 0x07, - 0xC4, 0x00, 0x3E, 0x60, 0x01, 0xF6, 0x00, 0x07, 0xA0, 0x00, 0x3F, 0x00, - 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xC0, 0x00, 0x3E, - 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, - 0x7E, 0x00, 0x07, 0xF0, 0x00, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xF8, 0x3F, - 0xFF, 0xC3, 0xE0, 0x7E, 0x1C, 0x07, 0xE0, 0xC0, 0x3E, 0x0C, 0x03, 0xF0, - 0x40, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x1F, - 0x80, 0x00, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x00, - 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x83, 0xE0, 0x0C, 0x3F, 0x00, - 0xC3, 0xF0, 0x0E, 0x1F, 0x00, 0xF1, 0xF8, 0x1F, 0x9F, 0xFF, 0xF8, 0xFF, - 0xFF, 0xC0, 0x01, 0xFC, 0x0F, 0xE0, 0x3C, 0x00, 0xE0, 0x03, 0x80, 0x1E, - 0x00, 0x78, 0x01, 0xC0, 0x07, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0x80, 0x0E, - 0x00, 0x38, 0x01, 0xE0, 0x07, 0x00, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, - 0x00, 0x38, 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, - 0x00, 0x3C, 0x00, 0xFF, 0x03, 0xF8, 0x00, 0xE0, 0x38, 0x07, 0x01, 0xC0, - 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, - 0x80, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x70, 0x0C, 0x03, 0x80, 0xE0, 0x38, - 0x07, 0x01, 0xC0, 0x03, 0xFC, 0x0F, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x38, - 0x01, 0xE0, 0x07, 0x80, 0x1C, 0x00, 0x70, 0x03, 0xC0, 0x0F, 0x00, 0x38, - 0x00, 0xE0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x01, 0xC0, 0x0F, 0x00, 0x3C, - 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x1C, - 0x00, 0xF0, 0x03, 0xC0, 0xFE, 0x03, 0xF8, 0x00, 0x03, 0xC0, 0x03, 0xC0, - 0x07, 0xE0, 0x07, 0xE0, 0x0E, 0x70, 0x0E, 0x70, 0x1C, 0x78, 0x1C, 0x38, - 0x3C, 0x3C, 0x38, 0x1C, 0x78, 0x1E, 0x70, 0x0E, 0xF0, 0x0E, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE1, 0xE3, 0xC1, 0xC1, 0xC0, 0xC0, 0x00, - 0xF7, 0x80, 0xFD, 0xE0, 0x7C, 0xF0, 0x3C, 0x3C, 0x1E, 0x0F, 0x0F, 0x83, - 0x83, 0xC1, 0xE1, 0xE0, 0x78, 0x78, 0x1C, 0x3E, 0x0F, 0x0F, 0x03, 0xC3, - 0xC1, 0xF0, 0xF0, 0xFC, 0xFE, 0x6F, 0x6F, 0xF3, 0xF1, 0xF8, 0xF8, 0x3C, - 0x1C, 0x00, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x07, 0x80, - 0x07, 0x80, 0x0F, 0x80, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x3C, 0x1E, 0xFE, - 0x1F, 0x9F, 0x1F, 0x0F, 0x1E, 0x0F, 0x3E, 0x0F, 0x3C, 0x0F, 0x3C, 0x1F, - 0x78, 0x1E, 0x78, 0x1E, 0x78, 0x3C, 0x78, 0x3C, 0xF0, 0x78, 0xF0, 0xF0, - 0xF1, 0xE0, 0x7F, 0xC0, 0x3F, 0x00, 0x01, 0xF0, 0x3F, 0xC3, 0xCE, 0x3C, - 0xF3, 0xC7, 0x1E, 0x01, 0xE0, 0x0F, 0x00, 0xF8, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x0F, 0x03, 0x78, 0x31, 0xE3, 0x0F, 0xF0, 0x1E, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, - 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x01, 0xEF, 0x00, 0x7F, 0xE0, 0x3E, 0x7C, - 0x07, 0x8F, 0x01, 0xE1, 0xE0, 0x78, 0x3C, 0x0F, 0x0F, 0x83, 0xC1, 0xE0, - 0x78, 0x3C, 0x1E, 0x0F, 0x83, 0xC1, 0xF0, 0x78, 0x7C, 0x0F, 0x0F, 0x91, - 0xE3, 0xF6, 0x3F, 0xDF, 0x83, 0xF3, 0xE0, 0x3C, 0x38, 0x00, 0x01, 0xE0, - 0x3F, 0x83, 0xCE, 0x3C, 0x73, 0xC3, 0x9E, 0x1D, 0xE1, 0xCF, 0x1C, 0xFB, - 0xC7, 0xF8, 0x3C, 0x01, 0xE0, 0x0F, 0x02, 0x78, 0x31, 0xE3, 0x0F, 0xF0, - 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x1D, 0xC0, 0x01, 0xCE, 0x00, 0x1C, - 0x70, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x07, 0x80, 0x00, - 0x3C, 0x00, 0x0F, 0xFC, 0x00, 0x7F, 0xE0, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x3C, 0x00, 0x03, 0xE0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, 0x00, - 0x07, 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, - 0x00, 0x0F, 0x00, 0x0E, 0x70, 0x00, 0x77, 0x80, 0x03, 0xF8, 0x00, 0x0F, - 0x80, 0x00, 0x00, 0xFE, 0x00, 0x7F, 0xFC, 0x1F, 0x1F, 0x87, 0xC3, 0xC1, - 0xF0, 0x78, 0x3C, 0x1F, 0x07, 0x83, 0xE0, 0xF0, 0xF8, 0x0E, 0x3E, 0x01, - 0xFF, 0x80, 0x3F, 0xC0, 0x0C, 0x00, 0x03, 0xC0, 0x00, 0x7F, 0x80, 0x0F, - 0xFE, 0x00, 0x7F, 0xF0, 0x70, 0xFF, 0x1C, 0x03, 0xE3, 0x80, 0x3C, 0x70, - 0x07, 0x0F, 0x03, 0xE0, 0xFF, 0xF0, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x03, - 0xE0, 0x00, 0xF0, 0x00, 0xF8, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x1F, 0x00, 0x0F, 0x0E, 0x07, 0x9F, 0x83, 0xDF, 0xC3, 0xE9, 0xE1, 0xE8, - 0xF0, 0xF8, 0xF8, 0x7C, 0x78, 0x7C, 0x3C, 0x3E, 0x3E, 0x1E, 0x1E, 0x1F, - 0x0F, 0x0F, 0x0F, 0x87, 0x87, 0xCB, 0xC3, 0xCB, 0xE1, 0xE9, 0xE0, 0xFC, - 0xF0, 0x38, 0x00, 0x03, 0x03, 0xC1, 0xE0, 0xF0, 0x30, 0x00, 0x00, 0x00, - 0x07, 0x3F, 0x87, 0x83, 0xC1, 0xE0, 0xF0, 0xF0, 0x78, 0x3C, 0x1E, 0x1E, - 0x0F, 0x27, 0x17, 0x93, 0xF1, 0xF8, 0x70, 0x00, 0x00, 0x06, 0x00, 0x0F, - 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0xFE, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3C, - 0x00, 0x7C, 0x00, 0x78, 0x00, 0x78, 0x00, 0x78, 0x00, 0xF8, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0xF0, 0x01, 0xF0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x03, 0xC0, 0xE3, 0xC0, 0xE7, 0x80, 0xFF, 0x00, 0x7C, 0x00, 0x1F, 0xC0, - 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1E, - 0x00, 0x1F, 0x00, 0x0F, 0x3F, 0x87, 0x87, 0x83, 0xC3, 0x03, 0xE3, 0x01, - 0xE3, 0x00, 0xF3, 0x00, 0x7B, 0x80, 0x7B, 0xC0, 0x3F, 0xE0, 0x1E, 0xF0, - 0x1F, 0x78, 0x0F, 0x1E, 0x07, 0x8F, 0x13, 0xC7, 0x93, 0xE1, 0xF9, 0xE0, - 0xF8, 0xF0, 0x38, 0x00, 0x1F, 0xC0, 0xF8, 0x1F, 0x03, 0xC0, 0x78, 0x1F, - 0x03, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x0F, - 0x01, 0xE0, 0x3C, 0x0F, 0x81, 0xE0, 0x3C, 0x8F, 0x31, 0xEC, 0x3F, 0x07, - 0xC0, 0x70, 0x00, 0x01, 0x87, 0x07, 0x0F, 0xE7, 0xE7, 0xE0, 0xF3, 0xF9, - 0xF8, 0x3D, 0x9E, 0x9E, 0x0F, 0x47, 0xC7, 0x83, 0xE1, 0xD1, 0xE1, 0xF8, - 0xF8, 0xF0, 0x7C, 0x3C, 0x3C, 0x1F, 0x0F, 0x1F, 0x0F, 0x87, 0xC7, 0x83, - 0xE1, 0xE1, 0xE0, 0xF0, 0x78, 0x78, 0x3C, 0x1E, 0x3C, 0x1F, 0x0F, 0x0F, - 0x27, 0x83, 0xC3, 0xD1, 0xE0, 0xF0, 0xFC, 0xF8, 0x78, 0x1C, 0x00, 0x01, - 0x8F, 0x0F, 0xE7, 0xE0, 0xF3, 0xF8, 0x3C, 0x9E, 0x0F, 0x47, 0x87, 0xA3, - 0xC1, 0xE8, 0xF0, 0x7C, 0x3C, 0x1E, 0x1E, 0x0F, 0x87, 0x83, 0xE1, 0xE0, - 0xF0, 0xF8, 0x3C, 0x3C, 0x1F, 0x0F, 0x27, 0x83, 0xD1, 0xE0, 0xFC, 0x78, - 0x1C, 0x00, 0x01, 0xF0, 0x0E, 0x30, 0x38, 0x70, 0xF0, 0xF3, 0xC1, 0xE7, - 0x83, 0xDE, 0x07, 0xBC, 0x1F, 0xF8, 0x3F, 0xE0, 0x7B, 0xC0, 0xF7, 0x83, - 0xCF, 0x07, 0x9E, 0x1E, 0x1C, 0x38, 0x1C, 0xE0, 0x1F, 0x00, 0x00, 0xE3, - 0x80, 0xFD, 0xF8, 0x0F, 0xFF, 0x81, 0xE8, 0xF0, 0x3E, 0x1E, 0x07, 0x83, - 0xC0, 0xF0, 0x78, 0x3E, 0x1F, 0x07, 0x83, 0xC0, 0xF0, 0x78, 0x1E, 0x1F, - 0x07, 0x83, 0xC0, 0xF0, 0xF8, 0x1E, 0x1E, 0x03, 0xC7, 0x80, 0xFF, 0xE0, - 0x1E, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, - 0xF8, 0x00, 0x3F, 0xC0, 0x00, 0x01, 0xEF, 0x07, 0xFF, 0x0F, 0x1E, 0x1E, - 0x1E, 0x1E, 0x1E, 0x3C, 0x1E, 0x7C, 0x3C, 0x78, 0x3C, 0x78, 0x3C, 0xF0, - 0x7C, 0xF0, 0x78, 0xF0, 0xF8, 0xF0, 0xF8, 0xF1, 0xF0, 0xFE, 0xF0, 0x7E, - 0xF0, 0x39, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x01, 0xE0, 0x03, 0xC0, 0x03, - 0xC0, 0x1F, 0xF8, 0x03, 0x9C, 0x7F, 0x7C, 0x3D, 0xF8, 0x7A, 0xE0, 0xF8, - 0x03, 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xF0, 0x01, - 0xE0, 0x07, 0xC0, 0x0F, 0x00, 0x1E, 0x00, 0x7C, 0x00, 0x07, 0x18, 0xFF, - 0xC7, 0x1C, 0x70, 0x63, 0x81, 0x1E, 0x08, 0xF8, 0x07, 0xE0, 0x1F, 0x00, - 0x7C, 0x01, 0xF0, 0x07, 0x84, 0x3C, 0x20, 0xE1, 0x87, 0x1C, 0x70, 0x9E, - 0x00, 0x00, 0x80, 0x60, 0x30, 0x1C, 0x1F, 0x1F, 0xF7, 0xFC, 0x78, 0x1E, - 0x07, 0x83, 0xC0, 0xF0, 0x3C, 0x1F, 0x07, 0x81, 0xE0, 0x79, 0x3C, 0x4F, - 0x23, 0xF0, 0xFC, 0x1C, 0x00, 0x0F, 0x0F, 0x3F, 0x87, 0x8F, 0x83, 0xC7, - 0xC1, 0xE3, 0xE1, 0xE1, 0xE0, 0xF0, 0xF0, 0x78, 0xF8, 0x78, 0x78, 0x3C, - 0x3C, 0x3E, 0x1E, 0x1F, 0x1E, 0x1F, 0x0F, 0x17, 0x97, 0x9B, 0xCB, 0xF9, - 0xF9, 0xF8, 0xF8, 0x78, 0x38, 0x00, 0x18, 0x37, 0xC3, 0xDE, 0x1E, 0x78, - 0x73, 0xC1, 0x9E, 0x08, 0xF0, 0xC7, 0x84, 0x3C, 0x41, 0xE4, 0x0F, 0x40, - 0x7C, 0x03, 0xC0, 0x1C, 0x00, 0xC0, 0x04, 0x00, 0x38, 0x10, 0xDF, 0x06, - 0x3D, 0xE0, 0xC7, 0xBC, 0x38, 0x73, 0xC7, 0x06, 0x79, 0xF0, 0x8F, 0x3E, - 0x11, 0xEB, 0xC4, 0x3F, 0x79, 0x07, 0xCF, 0x60, 0xF9, 0xE8, 0x1E, 0x3E, - 0x03, 0x87, 0x80, 0x70, 0xF0, 0x0C, 0x0C, 0x01, 0x01, 0x00, 0x03, 0x83, - 0x87, 0xF1, 0xF0, 0x3C, 0xF8, 0x0F, 0x60, 0x03, 0xD0, 0x00, 0xF8, 0x00, - 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x0F, - 0xC0, 0x02, 0xF1, 0x39, 0x3C, 0xCF, 0xCF, 0xE3, 0xE1, 0xF0, 0x70, 0x38, - 0x00, 0x01, 0x83, 0x07, 0xE3, 0xC1, 0xF1, 0xE0, 0x78, 0xF0, 0x3E, 0x18, - 0x1F, 0x08, 0x07, 0x84, 0x03, 0xC6, 0x01, 0xE2, 0x00, 0xFB, 0x00, 0x3D, - 0x00, 0x1F, 0x80, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xE0, 0x00, 0x60, 0x00, 0x60, 0x0E, 0x60, 0x0F, 0xE0, 0x07, 0xE0, 0x01, - 0xC0, 0x00, 0x1F, 0xFC, 0x3F, 0xF8, 0x7F, 0xE1, 0x81, 0x82, 0x06, 0x00, - 0x08, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x40, - 0x01, 0x80, 0x07, 0xC0, 0x1F, 0x86, 0x3F, 0x8E, 0xCF, 0x9C, 0x07, 0x30, - 0x03, 0xC0, 0x00, 0x1E, 0x00, 0xF8, 0x03, 0xC0, 0x0F, 0x00, 0x1E, 0x00, - 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x78, 0x01, 0xE0, 0x03, 0xC0, 0x1F, 0x00, 0x7E, 0x00, 0x30, 0x00, - 0x60, 0x00, 0xE0, 0x01, 0xC0, 0x07, 0x80, 0x0F, 0x00, 0x1E, 0x00, 0x38, - 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, 0x00, 0x0E, 0x00, 0x0C, 0x00, - 0x0F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, - 0x00, 0xF0, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x78, 0x00, 0xE0, 0x03, 0xC0, 0x07, - 0x80, 0x0F, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x10, 0x00, 0xF0, 0x03, 0xF0, - 0x0F, 0x00, 0x1E, 0x00, 0x38, 0x00, 0xF0, 0x01, 0xE0, 0x03, 0xC0, 0x07, - 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x70, 0x01, 0xE0, 0x0F, 0x80, 0x7C, 0x00, - 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00, 0x7C }; - -const GFXglyph FreeSerifBoldItalic18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 11, 25, 14, 2, -23 }, // 0x21 '!' - { 35, 14, 10, 19, 4, -23 }, // 0x22 '"' - { 53, 20, 25, 17, -1, -24 }, // 0x23 '#' - { 116, 17, 29, 18, 0, -25 }, // 0x24 '$' - { 178, 27, 25, 29, 1, -23 }, // 0x25 '%' - { 263, 25, 25, 27, 0, -23 }, // 0x26 '&' - { 342, 5, 10, 10, 4, -23 }, // 0x27 ''' - { 349, 11, 30, 12, 1, -23 }, // 0x28 '(' - { 391, 11, 30, 12, -2, -23 }, // 0x29 ')' - { 433, 13, 15, 18, 2, -23 }, // 0x2A '*' - { 458, 17, 17, 20, 1, -16 }, // 0x2B '+' - { 495, 7, 11, 9, -2, -4 }, // 0x2C ',' - { 505, 9, 4, 12, 0, -9 }, // 0x2D '-' - { 510, 6, 5, 9, 0, -3 }, // 0x2E '.' - { 514, 14, 25, 12, 0, -23 }, // 0x2F '/' - { 558, 15, 25, 18, 1, -23 }, // 0x30 '0' - { 605, 15, 25, 17, 0, -23 }, // 0x31 '1' - { 652, 16, 25, 18, 0, -23 }, // 0x32 '2' - { 702, 15, 25, 17, 1, -23 }, // 0x33 '3' - { 749, 18, 24, 17, 0, -23 }, // 0x34 '4' - { 803, 17, 25, 18, 0, -23 }, // 0x35 '5' - { 857, 17, 25, 18, 1, -23 }, // 0x36 '6' - { 911, 16, 24, 17, 3, -23 }, // 0x37 '7' - { 959, 17, 25, 18, 0, -23 }, // 0x38 '8' - { 1013, 17, 25, 18, 0, -23 }, // 0x39 '9' - { 1067, 10, 17, 9, 0, -15 }, // 0x3A ':' - { 1089, 11, 22, 9, -1, -15 }, // 0x3B ';' - { 1120, 18, 19, 20, 1, -18 }, // 0x3C '<' - { 1163, 18, 10, 20, 2, -13 }, // 0x3D '=' - { 1186, 18, 19, 20, 2, -18 }, // 0x3E '>' - { 1229, 13, 25, 17, 3, -23 }, // 0x3F '?' - { 1270, 25, 25, 29, 2, -23 }, // 0x40 '@' - { 1349, 23, 25, 24, 0, -23 }, // 0x41 'A' - { 1421, 24, 25, 22, 0, -23 }, // 0x42 'B' - { 1496, 23, 25, 22, 1, -23 }, // 0x43 'C' - { 1568, 26, 25, 25, 0, -23 }, // 0x44 'D' - { 1650, 23, 25, 22, 0, -23 }, // 0x45 'E' - { 1722, 23, 25, 21, 0, -23 }, // 0x46 'F' - { 1794, 24, 25, 25, 2, -23 }, // 0x47 'G' - { 1869, 29, 25, 26, 0, -23 }, // 0x48 'H' - { 1960, 15, 25, 13, 0, -23 }, // 0x49 'I' - { 2007, 20, 27, 17, 0, -23 }, // 0x4A 'J' - { 2075, 25, 25, 23, 0, -23 }, // 0x4B 'K' - { 2154, 22, 25, 21, 0, -23 }, // 0x4C 'L' - { 2223, 33, 25, 31, 0, -23 }, // 0x4D 'M' - { 2327, 27, 25, 25, 0, -23 }, // 0x4E 'N' - { 2412, 23, 25, 24, 1, -23 }, // 0x4F 'O' - { 2484, 23, 25, 21, 0, -23 }, // 0x50 'P' - { 2556, 23, 31, 24, 1, -23 }, // 0x51 'Q' - { 2646, 24, 25, 23, 0, -23 }, // 0x52 'R' - { 2721, 18, 25, 18, 0, -23 }, // 0x53 'S' - { 2778, 21, 25, 21, 3, -23 }, // 0x54 'T' - { 2844, 24, 25, 25, 4, -23 }, // 0x55 'U' - { 2919, 24, 25, 25, 4, -23 }, // 0x56 'V' - { 2994, 31, 25, 32, 4, -23 }, // 0x57 'W' - { 3091, 25, 25, 24, 0, -23 }, // 0x58 'X' - { 3170, 21, 25, 22, 4, -23 }, // 0x59 'Y' - { 3236, 21, 25, 20, 0, -23 }, // 0x5A 'Z' - { 3302, 14, 30, 12, -1, -23 }, // 0x5B '[' - { 3355, 10, 25, 14, 4, -23 }, // 0x5C '\' - { 3387, 14, 30, 12, -2, -23 }, // 0x5D ']' - { 3440, 16, 13, 20, 2, -23 }, // 0x5E '^' - { 3466, 18, 3, 17, 0, 3 }, // 0x5F '_' - { 3473, 7, 6, 12, 3, -23 }, // 0x60 '`' - { 3479, 18, 17, 18, 0, -15 }, // 0x61 'a' - { 3518, 16, 26, 17, 1, -24 }, // 0x62 'b' - { 3570, 13, 17, 15, 1, -15 }, // 0x63 'c' - { 3598, 19, 25, 18, 1, -23 }, // 0x64 'd' - { 3658, 13, 17, 15, 1, -15 }, // 0x65 'e' - { 3686, 21, 32, 17, -3, -24 }, // 0x66 'f' - { 3770, 19, 23, 17, -1, -15 }, // 0x67 'g' - { 3825, 17, 25, 19, 1, -23 }, // 0x68 'h' - { 3879, 9, 25, 10, 1, -23 }, // 0x69 'i' - { 3908, 16, 31, 12, -3, -23 }, // 0x6A 'j' - { 3970, 17, 25, 18, 1, -23 }, // 0x6B 'k' - { 4024, 11, 25, 10, 1, -23 }, // 0x6C 'l' - { 4059, 26, 17, 27, 0, -15 }, // 0x6D 'm' - { 4115, 18, 17, 18, 0, -15 }, // 0x6E 'n' - { 4154, 15, 17, 17, 1, -15 }, // 0x6F 'o' - { 4186, 19, 23, 17, -2, -15 }, // 0x70 'p' - { 4241, 16, 23, 17, 1, -15 }, // 0x71 'q' - { 4287, 15, 16, 14, 0, -15 }, // 0x72 'r' - { 4317, 13, 17, 12, 0, -15 }, // 0x73 's' - { 4345, 10, 22, 10, 1, -20 }, // 0x74 't' - { 4373, 17, 17, 19, 1, -15 }, // 0x75 'u' - { 4410, 13, 16, 15, 2, -15 }, // 0x76 'v' - { 4436, 19, 16, 23, 3, -15 }, // 0x77 'w' - { 4474, 18, 17, 17, -1, -15 }, // 0x78 'x' - { 4513, 17, 23, 15, -2, -15 }, // 0x79 'y' - { 4562, 15, 19, 14, 0, -15 }, // 0x7A 'z' - { 4598, 15, 32, 12, 0, -24 }, // 0x7B '{' - { 4658, 3, 25, 9, 4, -23 }, // 0x7C '|' - { 4668, 15, 32, 12, -5, -24 }, // 0x7D '}' - { 4728, 16, 5, 20, 2, -11 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic18pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic18pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 5410 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h deleted file mode 100644 index fcb857ef9..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h +++ /dev/null @@ -1,793 +0,0 @@ -const uint8_t FreeSerifBoldItalic24pt7bBitmaps[] PROGMEM = { - 0x00, 0x3C, 0x00, 0xFC, 0x01, 0xF8, 0x07, 0xF0, 0x0F, 0xE0, 0x1F, 0xC0, - 0x3F, 0x00, 0x7E, 0x00, 0xF8, 0x01, 0xF0, 0x07, 0xC0, 0x0F, 0x80, 0x1E, - 0x00, 0x3C, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, - 0x18, 0x00, 0x30, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xF0, 0x03, 0xF0, 0x0F, 0xF0, 0x1F, 0xE0, 0x3F, 0xC0, 0x3F, 0x00, - 0x3C, 0x00, 0x1C, 0x01, 0xC7, 0xC0, 0x7D, 0xF8, 0x1F, 0xBF, 0x03, 0xF7, - 0xC0, 0x7C, 0xF8, 0x0F, 0x9E, 0x01, 0xE3, 0xC0, 0x3C, 0x70, 0x07, 0x1E, - 0x00, 0xE3, 0x80, 0x38, 0x70, 0x07, 0x0C, 0x00, 0xC0, 0x00, 0x03, 0xC1, - 0xE0, 0x00, 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0xC1, 0xE0, 0x00, - 0x70, 0x38, 0x00, 0x1E, 0x0F, 0x00, 0x03, 0x81, 0xC0, 0x00, 0xF0, 0x78, - 0x00, 0x1E, 0x0F, 0x00, 0x07, 0x83, 0xC0, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xF0, 0x7F, 0xFF, 0xFC, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, - 0x07, 0x83, 0xC0, 0x00, 0xE0, 0x70, 0x00, 0x3C, 0x1E, 0x00, 0x07, 0x83, - 0xC0, 0x00, 0xE0, 0x70, 0x07, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFC, 0x1F, - 0xFF, 0xFF, 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xE0, 0xF0, - 0x00, 0x38, 0x1C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, - 0x3C, 0x00, 0x0F, 0x07, 0x80, 0x01, 0xC0, 0xE0, 0x00, 0x78, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0x1F, - 0xE0, 0x00, 0x7F, 0xF8, 0x01, 0xF1, 0x9E, 0x01, 0xC1, 0x8F, 0x03, 0x83, - 0x8F, 0x03, 0x83, 0x06, 0x07, 0x83, 0x06, 0x07, 0x87, 0x06, 0x07, 0xC7, - 0x04, 0x07, 0xE6, 0x04, 0x07, 0xFE, 0x00, 0x03, 0xFE, 0x00, 0x03, 0xFF, - 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, 0xE0, 0x00, 0x1F, - 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x3F, 0xF0, 0x00, 0x3B, 0xF8, 0x20, 0x31, - 0xF8, 0x20, 0x30, 0xF8, 0x60, 0x70, 0xF8, 0x60, 0x60, 0xF8, 0x60, 0x60, - 0xF8, 0xF0, 0xE0, 0xF0, 0xF0, 0xE1, 0xE0, 0x78, 0xC3, 0xE0, 0x3C, 0xC7, - 0xC0, 0x0F, 0xFF, 0x00, 0x03, 0xFC, 0x00, 0x01, 0x80, 0x00, 0x03, 0x80, - 0x00, 0x03, 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x01, 0xF0, - 0x00, 0x70, 0x00, 0xFF, 0x80, 0x1C, 0x00, 0x3F, 0x38, 0x1F, 0x00, 0x0F, - 0xC7, 0xFF, 0xE0, 0x03, 0xF0, 0x3F, 0xB8, 0x00, 0x7E, 0x04, 0x07, 0x00, - 0x1F, 0x80, 0x81, 0xC0, 0x03, 0xF0, 0x10, 0x38, 0x00, 0xFC, 0x02, 0x0E, - 0x00, 0x1F, 0x80, 0x81, 0x80, 0x03, 0xF0, 0x10, 0x70, 0x00, 0x7C, 0x06, - 0x1C, 0x00, 0x0F, 0x80, 0x83, 0x80, 0x01, 0xF0, 0x30, 0xE0, 0x00, 0x1E, - 0x0C, 0x1C, 0x07, 0xC3, 0xE3, 0x07, 0x03, 0xFC, 0x3F, 0xC0, 0xC0, 0xFC, - 0x43, 0xE0, 0x38, 0x3E, 0x0C, 0x00, 0x0E, 0x0F, 0xC0, 0x80, 0x01, 0xC3, - 0xF0, 0x10, 0x00, 0x70, 0xFC, 0x02, 0x00, 0x0C, 0x1F, 0x80, 0x40, 0x03, - 0x83, 0xE0, 0x08, 0x00, 0x60, 0xFC, 0x02, 0x00, 0x1C, 0x1F, 0x80, 0x40, - 0x07, 0x03, 0xE0, 0x10, 0x00, 0xE0, 0x7C, 0x02, 0x00, 0x38, 0x0F, 0x80, - 0xC0, 0x06, 0x01, 0xF0, 0x30, 0x01, 0xC0, 0x1F, 0x0C, 0x00, 0x30, 0x01, - 0xFF, 0x00, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x01, 0xF1, 0xE0, 0x00, 0x00, 0xF0, 0x78, 0x00, 0x00, - 0xF0, 0x3C, 0x00, 0x00, 0x78, 0x1E, 0x00, 0x00, 0x7C, 0x0F, 0x00, 0x00, - 0x3E, 0x0F, 0x80, 0x00, 0x1F, 0x07, 0x80, 0x00, 0x0F, 0x87, 0x80, 0x00, - 0x07, 0xC7, 0x80, 0x00, 0x03, 0xFF, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, - 0x00, 0xFC, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFF, 0x07, 0xFE, - 0x03, 0xCF, 0xC0, 0xFE, 0x03, 0xC7, 0xE0, 0x3C, 0x07, 0xC3, 0xF0, 0x1C, - 0x07, 0xC0, 0xFC, 0x0C, 0x03, 0xC0, 0x7E, 0x0E, 0x03, 0xE0, 0x3F, 0x0E, - 0x01, 0xF0, 0x1F, 0xC6, 0x01, 0xF8, 0x07, 0xF6, 0x00, 0xFC, 0x03, 0xFF, - 0x00, 0x7E, 0x00, 0xFF, 0x00, 0x3F, 0x80, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, - 0xC0, 0x07, 0xF0, 0x0F, 0xF0, 0x13, 0xFE, 0x0F, 0xFE, 0x18, 0xFF, 0xFE, - 0xFF, 0xF8, 0x3F, 0xFE, 0x3F, 0xF8, 0x07, 0xF8, 0x03, 0xF0, 0x00, 0x1C, - 0x7D, 0xFB, 0xF7, 0xCF, 0x9E, 0x3C, 0x71, 0xE3, 0x87, 0x0C, 0x00, 0x00, - 0x04, 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x3C, 0x01, - 0xE0, 0x0F, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x80, 0x3C, 0x00, 0xF0, 0x07, - 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3E, 0x00, 0xF0, 0x03, - 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, - 0x70, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x01, 0x80, - 0x06, 0x00, 0x0C, 0x00, 0x30, 0x00, 0x60, 0x01, 0x80, 0x00, 0x00, 0x01, - 0x00, 0x06, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x01, 0x80, 0x06, 0x00, - 0x1C, 0x00, 0x30, 0x00, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xF0, - 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x7C, - 0x01, 0xF0, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x03, 0xE0, 0x0F, 0x80, 0x3C, - 0x01, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0xF0, - 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x06, 0x00, 0x30, 0x00, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x07, 0x0E, 0x1D, 0xF1, - 0xC7, 0xFF, 0x11, 0xFF, 0xE2, 0x3F, 0x7E, 0x4F, 0xC0, 0x3E, 0x00, 0x07, - 0xC0, 0x3F, 0x27, 0xEF, 0xC4, 0x7F, 0xF8, 0x8F, 0xFE, 0x38, 0xFB, 0x87, - 0x0E, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x70, 0x00, 0x00, - 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x03, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x01, - 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x07, 0x80, 0x00, 0x0F, 0x07, 0xE1, 0xFC, 0x7F, 0x1F, 0xC3, 0xF0, 0x7C, - 0x0E, 0x03, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x1C, 0x04, 0x00, 0x7F, 0xF7, - 0xFF, 0x7F, 0xEF, 0xFE, 0xFF, 0xE0, 0x3C, 0x7E, 0xFF, 0xFF, 0xFF, 0x7E, - 0x3C, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, - 0xC0, 0x00, 0xF0, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3C, - 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x01, 0xE0, - 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, - 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, - 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0xE3, 0x80, 0x0F, 0x07, 0x00, 0x7C, 0x1C, 0x03, 0xE0, 0x78, 0x0F, 0x81, - 0xE0, 0x7C, 0x07, 0x83, 0xF0, 0x1F, 0x0F, 0xC0, 0xFC, 0x7E, 0x03, 0xF1, - 0xF8, 0x0F, 0xCF, 0xE0, 0x3F, 0x3F, 0x00, 0xFD, 0xFC, 0x07, 0xF7, 0xF0, - 0x1F, 0xDF, 0xC0, 0x7F, 0x7E, 0x01, 0xFB, 0xF8, 0x0F, 0xEF, 0xE0, 0x3F, - 0xBF, 0x80, 0xFE, 0xFC, 0x03, 0xF3, 0xF0, 0x1F, 0xCF, 0xC0, 0x7F, 0x3F, - 0x01, 0xF8, 0xFC, 0x07, 0xE3, 0xE0, 0x3F, 0x0F, 0x80, 0xFC, 0x1E, 0x07, - 0xE0, 0x78, 0x1F, 0x00, 0xE0, 0x78, 0x03, 0x83, 0xC0, 0x07, 0x1E, 0x00, - 0x07, 0xE0, 0x00, 0x00, 0x00, 0x70, 0x01, 0xFE, 0x01, 0xFF, 0xE0, 0x00, - 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, - 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x3F, 0x00, - 0x03, 0xF0, 0x00, 0x7F, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xE0, - 0x00, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0xFC, 0x00, 0x1F, 0xC0, 0x01, 0xFC, - 0x00, 0x1F, 0x80, 0x01, 0xF8, 0x00, 0x3F, 0x80, 0x03, 0xF0, 0x00, 0x3F, - 0x00, 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xF8, 0x0F, 0xFF, 0xF0, 0x00, - 0x0F, 0x80, 0x01, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x7F, 0xFE, 0x03, 0x83, - 0xF8, 0x0C, 0x07, 0xF0, 0x60, 0x1F, 0xC3, 0x00, 0x3F, 0x00, 0x00, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, - 0x07, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x3C, 0x00, 0x01, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x06, 0x03, 0x80, 0x10, 0x1C, 0x00, 0xC0, 0xE0, - 0x06, 0x07, 0xFF, 0xF8, 0x3F, 0xFF, 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, - 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x0F, 0xFF, 0x80, - 0x60, 0xFE, 0x03, 0x01, 0xFC, 0x08, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, - 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0xFC, - 0x00, 0x07, 0xC0, 0x00, 0x3E, 0x00, 0x07, 0xF8, 0x00, 0x7F, 0xF0, 0x00, - 0x7F, 0xE0, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFC, 0x00, 0x03, - 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, - 0x00, 0x0F, 0x80, 0x00, 0x3C, 0x1C, 0x01, 0xF0, 0xF8, 0x07, 0x83, 0xF0, - 0x3C, 0x0F, 0xE1, 0xE0, 0x1F, 0xFE, 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x07, 0x80, 0x00, 0x07, 0xC0, 0x00, 0x07, 0xE0, 0x00, - 0x07, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x07, 0xFC, 0x00, - 0x06, 0xFC, 0x00, 0x06, 0x7E, 0x00, 0x06, 0x3F, 0x00, 0x06, 0x3F, 0x00, - 0x06, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x07, 0xE0, 0x03, 0x07, 0xE0, - 0x03, 0x03, 0xF0, 0x03, 0x01, 0xF8, 0x03, 0x01, 0xFC, 0x03, 0x00, 0xFC, - 0x03, 0x00, 0x7E, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, - 0xF0, 0xFF, 0xFF, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x07, 0xE0, 0x00, 0x03, - 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x3F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, 0x7F, 0xFE, 0x00, - 0x7F, 0xFC, 0x00, 0xFF, 0xFC, 0x00, 0xC0, 0x00, 0x01, 0x80, 0x00, 0x01, - 0x80, 0x00, 0x03, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x07, 0xFE, 0x00, 0x07, - 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0xC0, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0xE0, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, - 0x03, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, - 0x01, 0xE0, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0xFC, - 0x07, 0x80, 0xFC, 0x0F, 0x00, 0xFE, 0x1E, 0x00, 0x7F, 0xF8, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0x80, 0x00, - 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x01, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0x3F, 0x80, 0x00, 0xFE, 0x00, - 0x01, 0xFF, 0xF0, 0x07, 0xFF, 0xF0, 0x0F, 0xE1, 0xF0, 0x3F, 0x81, 0xF0, - 0x7F, 0x03, 0xF0, 0xFC, 0x07, 0xE3, 0xF8, 0x0F, 0xC7, 0xF0, 0x1F, 0x8F, - 0xC0, 0x7F, 0x1F, 0x80, 0xFE, 0x3F, 0x01, 0xFC, 0x7C, 0x03, 0xF0, 0xF8, - 0x0F, 0xE1, 0xF0, 0x1F, 0xC1, 0xE0, 0x3F, 0x03, 0xC0, 0xFC, 0x07, 0x81, - 0xF0, 0x07, 0x87, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x0F, 0xFF, - 0xFC, 0x1F, 0xFF, 0xF8, 0x3F, 0xFF, 0xE0, 0xFF, 0xFF, 0xC1, 0xFF, 0xFF, - 0x07, 0x00, 0x1C, 0x08, 0x00, 0x78, 0x30, 0x01, 0xE0, 0x40, 0x03, 0xC0, - 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, - 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, 0x00, 0x01, - 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x1E, 0x00, - 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, - 0x1E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFE, 0x00, 0x3C, 0x78, - 0x03, 0xC1, 0xE0, 0x3C, 0x07, 0x81, 0xE0, 0x3C, 0x1F, 0x01, 0xE0, 0xF8, - 0x0F, 0x07, 0xC0, 0x78, 0x3F, 0x03, 0xC1, 0xF8, 0x3C, 0x0F, 0xE1, 0xE0, - 0x3F, 0x9E, 0x01, 0xFF, 0xC0, 0x07, 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0xFF, - 0x00, 0x1F, 0xFC, 0x03, 0xCF, 0xF0, 0x3C, 0x3F, 0x83, 0xC0, 0xFC, 0x3C, - 0x03, 0xF1, 0xE0, 0x1F, 0x9E, 0x00, 0x7C, 0xF0, 0x03, 0xE7, 0x80, 0x1F, - 0x3C, 0x00, 0xF9, 0xE0, 0x07, 0x87, 0x00, 0x3C, 0x3C, 0x03, 0xC0, 0xF0, - 0x3C, 0x03, 0xC3, 0xC0, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, - 0xE0, 0x03, 0xF1, 0xE0, 0x0F, 0xC1, 0xC0, 0x3F, 0x03, 0xC0, 0xFE, 0x07, - 0x81, 0xF8, 0x0F, 0x87, 0xF0, 0x1F, 0x0F, 0xC0, 0x3E, 0x3F, 0x80, 0xFC, - 0x7F, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x1F, 0xC7, - 0xE0, 0x3F, 0x8F, 0xC0, 0x7E, 0x0F, 0x81, 0xFC, 0x1F, 0x03, 0xF8, 0x1F, - 0x0F, 0xE0, 0x1F, 0xFF, 0xC0, 0x1F, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x03, - 0xF8, 0x00, 0x0F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF8, - 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x1F, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x01, 0xE0, 0x1F, 0x81, 0xFE, 0x0F, - 0xF0, 0x7F, 0x81, 0xF8, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x7E, 0x07, 0xF8, 0x3F, - 0xC1, 0xFE, 0x07, 0xE0, 0x1E, 0x00, 0x00, 0x78, 0x01, 0xF8, 0x07, 0xF8, - 0x0F, 0xF0, 0x1F, 0xE0, 0x1F, 0x80, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, - 0x1F, 0x80, 0x3F, 0x80, 0x7F, 0x00, 0xFE, 0x00, 0xFC, 0x00, 0xF8, 0x00, - 0xE0, 0x01, 0xC0, 0x07, 0x00, 0x0C, 0x00, 0x30, 0x01, 0xC0, 0x0E, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0x00, 0x0F, 0xFC, 0x00, 0x3F, 0xF0, - 0x01, 0xFF, 0xC0, 0x07, 0xFE, 0x00, 0x1F, 0xF8, 0x00, 0x7F, 0xE0, 0x00, - 0xFF, 0x80, 0x00, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xE0, 0x00, - 0x1F, 0xF8, 0x00, 0x07, 0xFE, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, - 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x01, 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, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0x80, 0x00, 0x00, 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x00, 0x0F, 0xFC, 0x00, 0x03, 0xFF, 0x80, - 0x00, 0x7F, 0xE0, 0x00, 0x1F, 0xF8, 0x00, 0x07, 0xFF, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFF, 0x00, 0x03, 0xFF, 0x00, 0x1F, 0xFC, - 0x00, 0x7F, 0xE0, 0x01, 0xFF, 0x80, 0x0F, 0xFE, 0x00, 0x3F, 0xF0, 0x00, - 0xFF, 0xC0, 0x00, 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x01, 0xF8, 0x01, 0xFF, 0x80, 0xF1, 0xF0, 0x38, 0x3E, - 0x1E, 0x0F, 0xC7, 0xC3, 0xF1, 0xF0, 0xFC, 0x7C, 0x3F, 0x0E, 0x0F, 0xC0, - 0x07, 0xF0, 0x01, 0xF8, 0x00, 0xFC, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x07, - 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0x60, 0x00, 0x30, 0x00, 0x0C, 0x00, - 0x06, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x03, 0xC0, 0x01, 0xF8, 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, - 0x01, 0xF8, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0xC0, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, - 0x00, 0x03, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x7C, 0x00, 0x00, 0x38, 0x3C, - 0x00, 0xF0, 0x4C, 0x3E, 0x00, 0xFD, 0xE7, 0x1E, 0x00, 0xF3, 0xF1, 0x9F, - 0x00, 0xF1, 0xF0, 0xEF, 0x80, 0xF0, 0x78, 0x3F, 0x80, 0xF0, 0x3C, 0x1F, - 0xC0, 0x78, 0x1E, 0x0F, 0xE0, 0x78, 0x1E, 0x07, 0xF0, 0x3C, 0x0F, 0x03, - 0xF8, 0x3E, 0x07, 0x81, 0xFC, 0x1E, 0x07, 0x81, 0xFE, 0x0F, 0x03, 0xC0, - 0xDF, 0x07, 0x83, 0xC0, 0x6F, 0x83, 0xC3, 0xE0, 0x63, 0xE1, 0xF3, 0xF0, - 0x71, 0xF0, 0x7E, 0x78, 0x70, 0xF8, 0x1E, 0x3F, 0xF0, 0x3E, 0x00, 0x07, - 0xE0, 0x0F, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, - 0x07, 0xC0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x06, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, - 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, - 0x7E, 0x00, 0x00, 0x06, 0xFC, 0x00, 0x00, 0x19, 0xF8, 0x00, 0x00, 0x63, - 0xF8, 0x00, 0x00, 0xC7, 0xF0, 0x00, 0x03, 0x07, 0xE0, 0x00, 0x06, 0x0F, - 0xC0, 0x00, 0x18, 0x1F, 0x80, 0x00, 0x60, 0x3F, 0x00, 0x00, 0xC0, 0x7F, - 0x00, 0x03, 0x00, 0xFE, 0x00, 0x0F, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xF8, - 0x00, 0x60, 0x03, 0xF0, 0x00, 0xC0, 0x07, 0xE0, 0x03, 0x00, 0x0F, 0xE0, - 0x0E, 0x00, 0x1F, 0xC0, 0x18, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x01, - 0xC0, 0x00, 0xFE, 0x03, 0x80, 0x01, 0xFE, 0x1F, 0x80, 0x07, 0xFE, 0x7F, - 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, - 0xFE, 0x1F, 0xE0, 0x01, 0xFC, 0x1F, 0xE0, 0x03, 0xF8, 0x1F, 0xE0, 0x0F, - 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7F, - 0x01, 0xFE, 0x01, 0xFC, 0x03, 0xF8, 0x03, 0xF8, 0x0F, 0xF0, 0x07, 0xF0, - 0x1F, 0xC0, 0x0F, 0xC0, 0x7F, 0x00, 0x3F, 0x87, 0xF0, 0x00, 0x7F, 0xFF, - 0x00, 0x00, 0xFE, 0x1F, 0xC0, 0x03, 0xF8, 0x0F, 0xE0, 0x07, 0xF0, 0x0F, - 0xE0, 0x0F, 0xE0, 0x1F, 0xC0, 0x1F, 0xC0, 0x3F, 0xC0, 0x7F, 0x00, 0x7F, - 0x80, 0xFE, 0x00, 0xFF, 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xF0, 0x07, 0xFC, - 0x0F, 0xE0, 0x0F, 0xF0, 0x1F, 0xC0, 0x3F, 0xE0, 0x3F, 0x80, 0x7F, 0x80, - 0xFE, 0x01, 0xFE, 0x01, 0xFE, 0x0F, 0xF8, 0x07, 0xFF, 0xFF, 0xC0, 0x3F, - 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x08, 0x00, 0x7F, 0xFE, 0xC0, - 0x0F, 0xF0, 0x7E, 0x00, 0xFE, 0x01, 0xF0, 0x1F, 0xE0, 0x07, 0x01, 0xFE, - 0x00, 0x38, 0x1F, 0xE0, 0x00, 0xC0, 0xFE, 0x00, 0x06, 0x0F, 0xF0, 0x00, - 0x30, 0xFF, 0x00, 0x01, 0x07, 0xF8, 0x00, 0x08, 0x7F, 0x80, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x3F, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, - 0x00, 0x00, 0xFF, 0x80, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x03, - 0xFC, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x60, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x00, - 0x70, 0x0F, 0xE0, 0x07, 0x00, 0x1F, 0xC0, 0xE0, 0x00, 0x7F, 0xFE, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x01, 0xFF, 0xFF, 0x80, 0x00, 0x3F, 0xFF, 0xFE, - 0x00, 0x00, 0xFE, 0x07, 0xF0, 0x00, 0x1F, 0xC0, 0x3F, 0x00, 0x03, 0xF8, - 0x07, 0xF0, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x03, - 0xF8, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x1F, 0xC0, 0x03, 0xFC, - 0x03, 0xF8, 0x00, 0x7F, 0x80, 0x7F, 0x00, 0x0F, 0xF0, 0x0F, 0xC0, 0x01, - 0xFE, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, 0xE0, - 0x01, 0xFF, 0x03, 0xF8, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, 0x0F, - 0xE0, 0x00, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xE0, 0x7F, 0x00, 0x07, 0xF8, - 0x0F, 0xE0, 0x01, 0xFF, 0x01, 0xFC, 0x00, 0x3F, 0xC0, 0x3F, 0x00, 0x0F, - 0xF0, 0x0F, 0xE0, 0x01, 0xFC, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x3F, 0x80, - 0x1F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x01, 0xFE, 0x07, 0xF8, 0x00, 0x7F, - 0xFF, 0xFC, 0x00, 0x3F, 0xFF, 0xF8, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, - 0x00, 0x7F, 0xFF, 0xFF, 0x00, 0x3F, 0xC0, 0x7E, 0x00, 0x3F, 0x80, 0x1E, - 0x00, 0x3F, 0x80, 0x0E, 0x00, 0x7F, 0x00, 0x06, 0x00, 0x7F, 0x00, 0x04, - 0x00, 0x7F, 0x00, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x01, 0x80, - 0x00, 0xFE, 0x01, 0x00, 0x00, 0xFE, 0x03, 0x00, 0x00, 0xFC, 0x0F, 0x00, - 0x01, 0xFF, 0xFF, 0x00, 0x01, 0xFF, 0xFE, 0x00, 0x01, 0xFC, 0x3E, 0x00, - 0x03, 0xF8, 0x1E, 0x00, 0x03, 0xF8, 0x0C, 0x00, 0x03, 0xF8, 0x0C, 0x00, - 0x03, 0xF8, 0x0C, 0x00, 0x07, 0xF0, 0x08, 0x00, 0x07, 0xF0, 0x00, 0x08, - 0x07, 0xF0, 0x00, 0x18, 0x07, 0xE0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, - 0x0F, 0xE0, 0x00, 0x70, 0x0F, 0xE0, 0x01, 0xE0, 0x1F, 0xC0, 0x07, 0xE0, - 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0xFF, 0xFF, 0xE0, 0xFF, 0xFF, 0xFF, 0xC0, - 0x01, 0xFF, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFC, 0x00, 0xFF, 0x03, 0xF0, - 0x01, 0xFC, 0x01, 0xE0, 0x03, 0xF8, 0x01, 0xC0, 0x0F, 0xE0, 0x01, 0x80, - 0x1F, 0xC0, 0x02, 0x00, 0x3F, 0x80, 0x04, 0x00, 0x7F, 0x00, 0x00, 0x01, - 0xFC, 0x03, 0x00, 0x03, 0xF8, 0x04, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, - 0xC0, 0xF0, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x7F, 0xFF, 0x80, 0x00, 0xFE, - 0x1F, 0x00, 0x03, 0xF8, 0x1E, 0x00, 0x07, 0xF0, 0x18, 0x00, 0x0F, 0xE0, - 0x30, 0x00, 0x1F, 0xC0, 0x60, 0x00, 0x7F, 0x00, 0x80, 0x00, 0xFE, 0x01, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, - 0x00, 0x1F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFF, 0x00, 0x00, - 0x01, 0xFE, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0x02, 0x00, 0x0F, 0xFF, 0xEE, 0x00, 0x3F, 0xC0, - 0xFC, 0x00, 0x7F, 0x00, 0x7C, 0x01, 0xFE, 0x00, 0x3C, 0x03, 0xFC, 0x00, - 0x38, 0x07, 0xF8, 0x00, 0x18, 0x07, 0xF0, 0x00, 0x18, 0x0F, 0xF0, 0x00, - 0x10, 0x1F, 0xE0, 0x00, 0x10, 0x1F, 0xE0, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x00, 0x7F, 0x80, 0x00, - 0x00, 0x7F, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x00, 0x00, 0xFF, 0x80, 0x1F, - 0xFF, 0xFF, 0x00, 0x07, 0xFC, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, - 0xF8, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x03, 0xF0, 0xFF, 0x00, 0x07, - 0xF0, 0x7F, 0x00, 0x07, 0xF0, 0x7F, 0x00, 0x07, 0xE0, 0x7F, 0x80, 0x07, - 0xE0, 0x3F, 0x80, 0x0F, 0xE0, 0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, - 0xC0, 0x07, 0xF0, 0x3F, 0x80, 0x01, 0xFF, 0xFE, 0x00, 0x00, 0x3F, 0xE0, - 0x00, 0x01, 0xFF, 0xFC, 0x7F, 0xFE, 0x00, 0xFF, 0xC0, 0x3F, 0xF0, 0x00, - 0xFE, 0x00, 0x3F, 0xC0, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, - 0xFE, 0x00, 0x0F, 0xE0, 0x01, 0xFC, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x01, 0xFC, 0x00, - 0x7F, 0x00, 0x03, 0xF8, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x01, 0xFC, 0x00, - 0x0F, 0xC0, 0x03, 0xF8, 0x00, 0x3F, 0x80, 0x0F, 0xE0, 0x00, 0x7F, 0xFF, - 0xFF, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0x80, 0x03, 0xF8, 0x00, 0x7F, 0x00, - 0x07, 0xF0, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, - 0x07, 0xF0, 0x00, 0x7F, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x3F, 0x80, - 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x03, 0xF0, 0x00, 0xFE, 0x00, 0x0F, 0xE0, - 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x07, 0xF0, 0x00, 0x3F, 0x80, 0x0F, 0xE0, - 0x00, 0xFF, 0x00, 0x3F, 0xC0, 0x01, 0xFE, 0x00, 0x7F, 0x80, 0x07, 0xFC, - 0x01, 0xFF, 0x00, 0x3F, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x01, 0xFF, 0xF8, - 0x03, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, - 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xF0, 0x00, - 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, - 0x00, 0x3F, 0x80, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, - 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFC, 0x00, - 0x0F, 0xE0, 0x00, 0x7F, 0x00, 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xFC, - 0x00, 0x1F, 0xF0, 0x03, 0xFF, 0xF0, 0x00, 0x00, 0x07, 0xFF, 0xE0, 0x00, - 0x3F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x0F, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x07, 0x03, 0xF0, 0x01, 0xF0, 0xFE, 0x00, - 0x3E, 0x1F, 0xC0, 0x07, 0xC3, 0xF0, 0x00, 0xF8, 0xFC, 0x00, 0x0F, 0x3F, - 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x01, 0xFF, 0xF8, - 0xFF, 0xC0, 0x1F, 0xF8, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xC0, 0x00, 0xFE, - 0x00, 0xE0, 0x00, 0x3F, 0x80, 0x70, 0x00, 0x1F, 0xC0, 0x38, 0x00, 0x07, - 0xF0, 0x1C, 0x00, 0x01, 0xFC, 0x0E, 0x00, 0x00, 0x7F, 0x07, 0x00, 0x00, - 0x3F, 0x83, 0x80, 0x00, 0x0F, 0xE1, 0xC0, 0x00, 0x03, 0xF8, 0xE0, 0x00, - 0x00, 0xFC, 0x60, 0x00, 0x00, 0x7F, 0x7C, 0x00, 0x00, 0x1F, 0xFF, 0x00, - 0x00, 0x07, 0xFF, 0xE0, 0x00, 0x03, 0xFB, 0xF8, 0x00, 0x00, 0xFE, 0x7F, - 0x00, 0x00, 0x3F, 0x9F, 0xC0, 0x00, 0x0F, 0xE3, 0xF8, 0x00, 0x07, 0xF0, - 0xFE, 0x00, 0x01, 0xFC, 0x1F, 0xC0, 0x00, 0x7F, 0x07, 0xF0, 0x00, 0x1F, - 0x80, 0xFE, 0x00, 0x0F, 0xE0, 0x3F, 0x80, 0x03, 0xF8, 0x0F, 0xE0, 0x00, - 0xFE, 0x01, 0xFC, 0x00, 0x7F, 0x00, 0x7F, 0x00, 0x1F, 0xE0, 0x0F, 0xE0, - 0x0F, 0xF8, 0x07, 0xFC, 0x0F, 0xFF, 0xC7, 0xFF, 0xC0, 0x01, 0xFF, 0xF8, - 0x00, 0x03, 0xFF, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x7F, 0x00, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, - 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x01, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, - 0x07, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x03, 0xF8, 0x00, 0x04, 0x1F, 0xC0, 0x00, 0x60, 0xFC, 0x00, 0x06, - 0x0F, 0xE0, 0x00, 0x30, 0x7F, 0x00, 0x03, 0x83, 0xF8, 0x00, 0x7C, 0x3F, - 0x80, 0x0F, 0xC1, 0xFE, 0x03, 0xFE, 0x1F, 0xFF, 0xFF, 0xF3, 0xFF, 0xFF, - 0xFF, 0x00, 0x01, 0xFF, 0xC0, 0x00, 0x3F, 0xF0, 0x03, 0xFC, 0x00, 0x03, - 0xFC, 0x00, 0x3F, 0xC0, 0x00, 0x7F, 0x80, 0x03, 0xFC, 0x00, 0x0F, 0xF8, - 0x00, 0x3F, 0xC0, 0x00, 0xFF, 0x80, 0x03, 0xFC, 0x00, 0x1F, 0xF0, 0x00, - 0x6F, 0xC0, 0x03, 0xFF, 0x00, 0x06, 0xFC, 0x00, 0x37, 0xF0, 0x00, 0x6F, - 0xE0, 0x06, 0x7E, 0x00, 0x04, 0xFE, 0x00, 0xEF, 0xE0, 0x00, 0xCF, 0xE0, - 0x0C, 0xFE, 0x00, 0x0C, 0xFE, 0x01, 0x8F, 0xE0, 0x00, 0xCF, 0xE0, 0x38, - 0xFC, 0x00, 0x18, 0x7E, 0x03, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0x61, 0xFC, - 0x00, 0x18, 0x7E, 0x0E, 0x1F, 0xC0, 0x01, 0x87, 0xE0, 0xC3, 0xF8, 0x00, - 0x30, 0x7F, 0x18, 0x3F, 0x80, 0x03, 0x07, 0xF3, 0x83, 0xF8, 0x00, 0x30, - 0x7F, 0x30, 0x3F, 0x00, 0x06, 0x07, 0xF7, 0x07, 0xF0, 0x00, 0x60, 0x3F, - 0xE0, 0x7F, 0x00, 0x06, 0x03, 0xFC, 0x07, 0xF0, 0x00, 0xE0, 0x3F, 0xC0, - 0x7E, 0x00, 0x0C, 0x03, 0xF8, 0x0F, 0xE0, 0x00, 0xC0, 0x3F, 0x00, 0xFE, - 0x00, 0x0C, 0x03, 0xF0, 0x0F, 0xE0, 0x01, 0xC0, 0x3E, 0x01, 0xFC, 0x00, - 0x1C, 0x03, 0xC0, 0x1F, 0xC0, 0x07, 0xE0, 0x3C, 0x03, 0xFE, 0x00, 0xFF, - 0xC1, 0x81, 0xFF, 0xFC, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0xFF, - 0x00, 0x1F, 0xF8, 0x03, 0xF8, 0x00, 0x3F, 0x00, 0x0F, 0xE0, 0x00, 0xF0, - 0x00, 0x7F, 0x00, 0x07, 0x00, 0x03, 0xFC, 0x00, 0x38, 0x00, 0x1F, 0xE0, - 0x01, 0x80, 0x01, 0xBF, 0x80, 0x0C, 0x00, 0x0D, 0xFC, 0x00, 0x60, 0x00, - 0x67, 0xF0, 0x07, 0x00, 0x02, 0x3F, 0x80, 0x30, 0x00, 0x30, 0xFE, 0x01, - 0x80, 0x01, 0x87, 0xF0, 0x0C, 0x00, 0x0C, 0x1F, 0xC0, 0xC0, 0x00, 0xC0, - 0xFE, 0x06, 0x00, 0x06, 0x07, 0xF8, 0x30, 0x00, 0x30, 0x1F, 0xC1, 0x80, - 0x01, 0x80, 0xFF, 0x18, 0x00, 0x18, 0x03, 0xF8, 0xC0, 0x00, 0xC0, 0x1F, - 0xC6, 0x00, 0x06, 0x00, 0x7F, 0x60, 0x00, 0x60, 0x03, 0xFB, 0x00, 0x03, - 0x00, 0x0F, 0xF8, 0x00, 0x18, 0x00, 0x7F, 0xC0, 0x01, 0xC0, 0x01, 0xFC, - 0x00, 0x0C, 0x00, 0x0F, 0xE0, 0x00, 0x60, 0x00, 0x3F, 0x00, 0x03, 0x00, - 0x01, 0xF0, 0x00, 0x38, 0x00, 0x07, 0x80, 0x01, 0xC0, 0x00, 0x3C, 0x00, - 0x3F, 0x00, 0x01, 0xE0, 0x03, 0xFF, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, - 0x30, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x80, 0x00, 0x7E, - 0x1F, 0x80, 0x01, 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x00, - 0x1F, 0x80, 0xFE, 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, - 0xFE, 0x1F, 0xC0, 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, - 0xF3, 0xFC, 0x00, 0x1F, 0xE7, 0xF0, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, - 0xBF, 0xC0, 0x00, 0xFE, 0x7F, 0x80, 0x03, 0xFC, 0xFE, 0x00, 0x07, 0xFB, - 0xFC, 0x00, 0x0F, 0xF7, 0xF8, 0x00, 0x3F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, - 0xC0, 0x00, 0xFE, 0x3F, 0x80, 0x03, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, - 0x00, 0x1F, 0xC0, 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0xFE, 0x03, 0xF0, - 0x03, 0xF8, 0x03, 0xF0, 0x07, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x03, 0xE0, - 0xFC, 0x00, 0x03, 0xFF, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x01, 0xFF, - 0xFF, 0x80, 0x00, 0xFF, 0xFF, 0xE0, 0x00, 0xFE, 0x1F, 0xE0, 0x01, 0xFC, - 0x1F, 0xE0, 0x03, 0xF0, 0x1F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x1F, 0xC0, - 0x7F, 0x80, 0x3F, 0x80, 0xFF, 0x00, 0x7E, 0x01, 0xFE, 0x01, 0xFC, 0x03, - 0xFC, 0x03, 0xF8, 0x0F, 0xF8, 0x07, 0xF0, 0x1F, 0xE0, 0x0F, 0xC0, 0x7F, - 0x80, 0x3F, 0x81, 0xFE, 0x00, 0x7F, 0x07, 0xF8, 0x00, 0xFF, 0xFF, 0xC0, - 0x03, 0xFF, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x1F, 0x80, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, - 0xFC, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x0F, 0xE0, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x01, 0xFC, - 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x3F, 0xFF, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x7E, 0x1F, 0x80, 0x01, - 0xF0, 0x0F, 0x80, 0x0F, 0xC0, 0x1F, 0x80, 0x3F, 0x80, 0x1F, 0x80, 0xFE, - 0x00, 0x3F, 0x03, 0xF8, 0x00, 0x7E, 0x07, 0xF0, 0x00, 0xFE, 0x1F, 0xC0, - 0x01, 0xFC, 0x7F, 0x80, 0x03, 0xF8, 0xFE, 0x00, 0x07, 0xF3, 0xFC, 0x00, - 0x1F, 0xE7, 0xF8, 0x00, 0x3F, 0xDF, 0xE0, 0x00, 0x7F, 0xBF, 0xC0, 0x00, - 0xFF, 0x7F, 0x80, 0x01, 0xFC, 0xFE, 0x00, 0x07, 0xFB, 0xFC, 0x00, 0x0F, - 0xF7, 0xF8, 0x00, 0x1F, 0xCF, 0xF0, 0x00, 0x7F, 0x9F, 0xC0, 0x00, 0xFE, - 0x3F, 0x80, 0x01, 0xFC, 0x7F, 0x00, 0x07, 0xF0, 0xFE, 0x00, 0x0F, 0xE1, - 0xFC, 0x00, 0x3F, 0x81, 0xF8, 0x00, 0x7E, 0x03, 0xF0, 0x01, 0xF8, 0x03, - 0xE0, 0x07, 0xE0, 0x07, 0xE0, 0x1F, 0x80, 0x03, 0xE0, 0x7E, 0x00, 0x03, - 0xF3, 0xF0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xC0, 0x7F, 0xE0, 0x03, 0x03, 0xFF, - 0xF8, 0x1C, 0x0F, 0xFF, 0xFF, 0xF0, 0x3F, 0xFF, 0xFF, 0xC0, 0xE0, 0x3F, - 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, 0xFF, 0xFF, 0xC0, 0x00, 0x7F, - 0xFF, 0xF8, 0x00, 0x3F, 0xC3, 0xFC, 0x00, 0x3F, 0x81, 0xFE, 0x00, 0x3F, - 0x80, 0xFF, 0x00, 0x7F, 0x80, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0x7F, - 0x00, 0xFF, 0x00, 0x7F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xFE, 0x00, 0xFE, - 0x01, 0xFE, 0x00, 0xFE, 0x03, 0xFC, 0x00, 0xFE, 0x07, 0xF8, 0x01, 0xFC, - 0x1F, 0xF0, 0x01, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, 0x03, 0xFD, - 0xFE, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, 0xFF, 0x00, 0x03, 0xF8, - 0xFF, 0x00, 0x07, 0xF8, 0x7F, 0x80, 0x07, 0xF0, 0x7F, 0x80, 0x07, 0xF0, - 0x3F, 0x80, 0x07, 0xF0, 0x3F, 0xC0, 0x0F, 0xE0, 0x3F, 0xC0, 0x0F, 0xE0, - 0x1F, 0xC0, 0x0F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, 0x1F, 0xE0, - 0x0F, 0xF0, 0x3F, 0xF0, 0x0F, 0xF8, 0xFF, 0xFC, 0x0F, 0xFE, 0x00, 0x1F, - 0x83, 0x00, 0x7F, 0xF7, 0x00, 0xF8, 0x7E, 0x01, 0xE0, 0x1E, 0x03, 0xC0, - 0x0E, 0x03, 0xC0, 0x0E, 0x07, 0xC0, 0x0E, 0x07, 0xC0, 0x04, 0x07, 0xC0, - 0x04, 0x07, 0xE0, 0x04, 0x07, 0xF0, 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFC, - 0x00, 0x03, 0xFF, 0x00, 0x01, 0xFF, 0x80, 0x00, 0xFF, 0xC0, 0x00, 0x7F, - 0xE0, 0x00, 0x3F, 0xE0, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x07, - 0xF8, 0x00, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x20, 0x00, 0xF8, 0x20, 0x00, - 0xF8, 0x20, 0x00, 0xF8, 0x70, 0x00, 0xF8, 0x70, 0x00, 0xF0, 0x78, 0x01, - 0xF0, 0x78, 0x03, 0xE0, 0x7E, 0x07, 0xC0, 0x47, 0xFF, 0x80, 0xC0, 0xFC, - 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFC, 0xFE, 0x3F, 0x8F, 0x9E, - 0x07, 0xF0, 0xF3, 0x81, 0xFC, 0x0E, 0x60, 0x3F, 0x81, 0x98, 0x07, 0xF0, - 0x13, 0x00, 0xFC, 0x02, 0x00, 0x3F, 0x80, 0x40, 0x07, 0xF0, 0x00, 0x00, - 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, - 0x03, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, - 0x00, 0x00, 0x7E, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x3F, 0xFF, 0xC0, 0x00, 0x7F, 0xFF, - 0x03, 0xFF, 0x0F, 0xFC, 0x00, 0xFC, 0x07, 0xF0, 0x00, 0x38, 0x07, 0xF0, - 0x00, 0x38, 0x07, 0xF0, 0x00, 0x30, 0x0F, 0xE0, 0x00, 0x30, 0x0F, 0xE0, - 0x00, 0x70, 0x0F, 0xE0, 0x00, 0x60, 0x0F, 0xE0, 0x00, 0x60, 0x1F, 0xC0, - 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0xC0, 0x1F, 0xC0, 0x00, 0xC0, 0x3F, 0x80, - 0x00, 0xC0, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, 0x01, 0x80, 0x3F, 0x80, - 0x01, 0x80, 0x7F, 0x00, 0x01, 0x80, 0x7F, 0x00, 0x03, 0x00, 0x7F, 0x00, - 0x03, 0x00, 0x7E, 0x00, 0x03, 0x00, 0xFE, 0x00, 0x06, 0x00, 0xFE, 0x00, - 0x06, 0x00, 0xFC, 0x00, 0x06, 0x00, 0xFC, 0x00, 0x0E, 0x00, 0xFC, 0x00, - 0x0C, 0x00, 0xFC, 0x00, 0x1C, 0x00, 0xFC, 0x00, 0x18, 0x00, 0x7E, 0x00, - 0x38, 0x00, 0x7E, 0x00, 0x70, 0x00, 0x3F, 0x81, 0xE0, 0x00, 0x0F, 0xFF, - 0x80, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF, 0xFC, 0x03, 0xFE, 0x7F, 0xE0, - 0x01, 0xF8, 0x7F, 0x80, 0x01, 0xC0, 0xFF, 0x00, 0x03, 0x80, 0xFE, 0x00, - 0x0E, 0x01, 0xFC, 0x00, 0x18, 0x03, 0xF8, 0x00, 0x70, 0x07, 0xF0, 0x00, - 0xC0, 0x0F, 0xF0, 0x03, 0x80, 0x1F, 0xE0, 0x0E, 0x00, 0x1F, 0xC0, 0x18, - 0x00, 0x3F, 0x80, 0x70, 0x00, 0x7F, 0x00, 0xC0, 0x00, 0xFE, 0x03, 0x00, - 0x01, 0xFC, 0x0E, 0x00, 0x03, 0xF8, 0x18, 0x00, 0x07, 0xF8, 0x60, 0x00, - 0x07, 0xF1, 0xC0, 0x00, 0x0F, 0xE3, 0x00, 0x00, 0x1F, 0xCC, 0x00, 0x00, - 0x3F, 0xB8, 0x00, 0x00, 0x7F, 0x60, 0x00, 0x00, 0xFF, 0xC0, 0x00, 0x00, - 0xFF, 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x07, - 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xFF, 0xF8, - 0xFF, 0xF0, 0xFF, 0x9F, 0xF8, 0x1F, 0xE0, 0x0F, 0x87, 0xF8, 0x07, 0xE0, - 0x07, 0x03, 0xF8, 0x03, 0xF0, 0x03, 0x80, 0xFE, 0x01, 0xF8, 0x01, 0x80, - 0x7F, 0x00, 0xFC, 0x00, 0xC0, 0x3F, 0x80, 0x7F, 0x00, 0xC0, 0x1F, 0xC0, - 0x7F, 0x80, 0x60, 0x0F, 0xE0, 0x3F, 0xC0, 0x60, 0x07, 0xF0, 0x37, 0xE0, - 0x30, 0x03, 0xF8, 0x1B, 0xF0, 0x30, 0x00, 0xFC, 0x19, 0xF8, 0x18, 0x00, - 0x7E, 0x0C, 0xFE, 0x18, 0x00, 0x3F, 0x84, 0x7F, 0x0C, 0x00, 0x1F, 0xC6, - 0x3F, 0x8C, 0x00, 0x0F, 0xE2, 0x1F, 0xC6, 0x00, 0x07, 0xF3, 0x07, 0xE6, - 0x00, 0x03, 0xF9, 0x83, 0xF3, 0x00, 0x01, 0xFD, 0x81, 0xFB, 0x00, 0x00, - 0x7E, 0xC0, 0xFD, 0x80, 0x00, 0x3F, 0xC0, 0x7F, 0x80, 0x00, 0x1F, 0xE0, - 0x3F, 0xC0, 0x00, 0x0F, 0xE0, 0x1F, 0xC0, 0x00, 0x07, 0xF0, 0x0F, 0xE0, - 0x00, 0x03, 0xF0, 0x07, 0xE0, 0x00, 0x01, 0xF8, 0x01, 0xF0, 0x00, 0x00, - 0x78, 0x00, 0xF0, 0x00, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x00, 0x06, 0x00, 0x0C, 0x00, - 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x03, 0xFF, 0xF0, 0xFF, 0xC0, 0x3F, - 0xE0, 0x0F, 0xC0, 0x03, 0xF8, 0x01, 0xE0, 0x00, 0xFE, 0x00, 0xE0, 0x00, - 0x3F, 0x80, 0x70, 0x00, 0x07, 0xE0, 0x18, 0x00, 0x01, 0xFC, 0x0C, 0x00, - 0x00, 0x7F, 0x06, 0x00, 0x00, 0x0F, 0xC3, 0x00, 0x00, 0x03, 0xF9, 0x80, - 0x00, 0x00, 0xFE, 0xC0, 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x07, 0xF8, - 0x00, 0x00, 0x01, 0xFC, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x0F, - 0xC0, 0x00, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x00, - 0xFF, 0x80, 0x00, 0x00, 0x77, 0xF0, 0x00, 0x00, 0x39, 0xFC, 0x00, 0x00, - 0x1C, 0x3F, 0x00, 0x00, 0x06, 0x0F, 0xE0, 0x00, 0x03, 0x03, 0xF8, 0x00, - 0x01, 0x80, 0x7E, 0x00, 0x00, 0xE0, 0x1F, 0xC0, 0x00, 0x70, 0x07, 0xF0, - 0x00, 0x38, 0x01, 0xFC, 0x00, 0x1E, 0x00, 0x7F, 0x80, 0x1F, 0xC0, 0x1F, - 0xF0, 0x0F, 0xFC, 0x3F, 0xFF, 0x80, 0xFF, 0xF8, 0x3F, 0xF3, 0xFC, 0x00, - 0xFC, 0x1F, 0xC0, 0x07, 0x81, 0xFC, 0x00, 0x70, 0x0F, 0xC0, 0x0E, 0x00, - 0xFE, 0x00, 0xC0, 0x0F, 0xE0, 0x1C, 0x00, 0x7E, 0x03, 0x80, 0x07, 0xF0, - 0x30, 0x00, 0x7F, 0x06, 0x00, 0x03, 0xF0, 0xE0, 0x00, 0x3F, 0x8C, 0x00, - 0x03, 0xF9, 0x80, 0x00, 0x1F, 0xB0, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x1F, - 0xE0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x1F, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x03, - 0xF8, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x7F, 0x00, - 0x00, 0x07, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x01, - 0xFF, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF0, 0x3F, - 0xFF, 0xFF, 0x03, 0xF8, 0x0F, 0xF0, 0x7C, 0x01, 0xFE, 0x07, 0x80, 0x3F, - 0xC0, 0x70, 0x03, 0xF8, 0x06, 0x00, 0x7F, 0x80, 0xC0, 0x0F, 0xF0, 0x08, - 0x01, 0xFE, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x7F, - 0x80, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, 0xE0, 0x00, - 0x03, 0xFC, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x07, 0xF8, 0x00, 0x00, 0xFF, - 0x00, 0x00, 0x1F, 0xE0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0x3F, 0xC0, 0x00, - 0x07, 0xF8, 0x00, 0xC0, 0xFF, 0x00, 0x0C, 0x1F, 0xE0, 0x01, 0x81, 0xFE, - 0x00, 0x38, 0x3F, 0xC0, 0x07, 0x87, 0xF8, 0x01, 0xF0, 0xFF, 0x00, 0xFF, - 0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x7F, 0xE0, 0x0F, - 0xFC, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, - 0x00, 0x07, 0x80, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, - 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x03, 0xC0, - 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x78, 0x00, 0x0F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, - 0x0F, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, - 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xFE, 0x01, - 0xFF, 0xC0, 0x00, 0xF0, 0x07, 0x80, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x1C, - 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, - 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x07, 0x00, 0x3C, 0x01, 0xE0, 0x0F, 0x00, - 0x3C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x01, - 0xC0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x00, 0x78, 0x00, 0x7F, 0xE0, - 0x0F, 0xFC, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, - 0x07, 0x80, 0x01, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF0, 0x00, - 0x3E, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x1E, 0x00, 0x07, 0xC0, 0x00, - 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x78, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x0F, - 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, 0xE0, 0x07, 0xFC, - 0x01, 0xFF, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0x00, 0x7F, 0x00, - 0x03, 0xF8, 0x00, 0x3F, 0xC0, 0x01, 0xEF, 0x00, 0x1E, 0x78, 0x00, 0xF1, - 0xE0, 0x0F, 0x0F, 0x00, 0x78, 0x3C, 0x07, 0xC1, 0xE0, 0x3C, 0x07, 0x83, - 0xE0, 0x3C, 0x1E, 0x00, 0xF1, 0xF0, 0x07, 0x8F, 0x00, 0x1E, 0xF8, 0x00, - 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x70, 0x3E, - 0x0F, 0x83, 0xF0, 0x3E, 0x07, 0x80, 0xF0, 0x0E, 0x01, 0xC0, 0x00, 0x3C, - 0x0C, 0x03, 0xF9, 0xF0, 0x1F, 0x3F, 0x80, 0xF8, 0x7E, 0x07, 0xC1, 0xF8, - 0x3F, 0x07, 0xC0, 0xF8, 0x1F, 0x07, 0xE0, 0x7C, 0x3F, 0x01, 0xF0, 0xFC, - 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, 0x03, 0xC3, 0xF8, 0x1F, - 0x0F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, 0x83, 0xF0, 0x7E, 0x3F, - 0xC2, 0xF8, 0xBF, 0x9B, 0xE4, 0x7F, 0xCF, 0xE0, 0xFE, 0x3F, 0x01, 0xE0, - 0x78, 0x00, 0x00, 0x7C, 0x00, 0x3F, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0x7E, - 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x00, 0x00, 0x7C, 0x00, - 0x03, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x3E, 0x01, 0xF9, 0xFC, 0x07, - 0xEF, 0xF8, 0x1F, 0x47, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x0F, 0xC0, - 0xFC, 0x3F, 0x03, 0xF1, 0xF8, 0x0F, 0xC7, 0xE0, 0x3F, 0x1F, 0x01, 0xF8, - 0x7C, 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0xFC, 0x3E, 0x03, 0xF1, 0xF8, - 0x0F, 0x87, 0xE0, 0x7C, 0x1F, 0x03, 0xE0, 0xFC, 0x0F, 0x03, 0xF0, 0x78, - 0x0F, 0xC7, 0xC0, 0x1F, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x3F, 0x00, - 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x87, 0xC3, 0xE1, 0xF1, 0xF0, - 0x38, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x80, 0x07, 0xE0, 0x01, 0xF8, 0x00, - 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0xC0, 0x03, 0xF0, 0x00, 0xFC, 0x03, 0x3F, - 0x00, 0xCF, 0xE0, 0x61, 0xFC, 0x70, 0x3F, 0xF8, 0x07, 0xFC, 0x00, 0xFC, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x7F, 0xE0, 0x00, - 0x07, 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0xFC, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x80, - 0x07, 0x9F, 0x80, 0x0F, 0xFF, 0xC0, 0x0F, 0x9F, 0xE0, 0x0F, 0x87, 0xF0, - 0x0F, 0x83, 0xF0, 0x0F, 0xC1, 0xF8, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x7C, - 0x07, 0xE0, 0x7E, 0x03, 0xF0, 0x3F, 0x03, 0xF0, 0x1F, 0x81, 0xF8, 0x0F, - 0x80, 0xFC, 0x0F, 0xC0, 0xFE, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0x3F, 0x03, - 0xF0, 0x1F, 0x83, 0xF8, 0x0F, 0xC1, 0xF8, 0xC7, 0xE1, 0xFC, 0xC3, 0xF9, - 0xBE, 0xC0, 0xFF, 0x9F, 0xC0, 0x7F, 0x8F, 0xC0, 0x0F, 0x83, 0xC0, 0x00, - 0x00, 0x3F, 0x00, 0x3F, 0xE0, 0x1E, 0x3C, 0x0F, 0x0F, 0x07, 0x83, 0xC3, - 0xE0, 0xF1, 0xF0, 0x3C, 0xFC, 0x1E, 0x3F, 0x0F, 0x9F, 0x83, 0xC7, 0xE3, - 0xE1, 0xFB, 0xE0, 0xFF, 0xE0, 0x3F, 0xC0, 0x0F, 0xC0, 0x03, 0xF0, 0x00, - 0xFC, 0x03, 0x3F, 0x01, 0x8F, 0xC0, 0xC1, 0xF8, 0x70, 0x7F, 0xF8, 0x07, - 0xFC, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x03, 0xCE, 0x00, - 0x00, 0x78, 0xF0, 0x00, 0x0F, 0x8F, 0x00, 0x00, 0xF0, 0xF0, 0x00, 0x1F, - 0x06, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x03, 0xFF, 0xC0, 0x00, 0x3F, - 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, - 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x03, 0xF0, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x07, 0xC0, - 0x00, 0x00, 0xFC, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x06, 0x1F, 0x00, 0x00, 0xF1, 0xE0, - 0x00, 0x0F, 0x3E, 0x00, 0x00, 0xF3, 0xC0, 0x00, 0x07, 0xF8, 0x00, 0x00, - 0x3E, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x7F, 0xF0, 0x00, 0x7E, - 0x3F, 0xE0, 0x7C, 0x0F, 0xF0, 0x7E, 0x07, 0xC0, 0x7E, 0x03, 0xE0, 0x3F, - 0x01, 0xF0, 0x1F, 0x01, 0xF8, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0xFC, 0x01, - 0xE0, 0xFC, 0x00, 0x78, 0xFC, 0x00, 0x1F, 0xFC, 0x00, 0x0F, 0xF0, 0x00, - 0x1C, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xF8, 0x00, - 0x07, 0xFF, 0x80, 0x01, 0xFF, 0xF8, 0x00, 0x7F, 0xFE, 0x00, 0x77, 0xFF, - 0x80, 0xF0, 0x7F, 0xC0, 0xF0, 0x07, 0xE0, 0xF0, 0x01, 0xF0, 0x78, 0x00, - 0xF8, 0x3C, 0x00, 0x78, 0x1F, 0x00, 0x7C, 0x07, 0xC0, 0x78, 0x01, 0xFF, - 0xF8, 0x00, 0x1F, 0xE0, 0x00, 0x00, 0x04, 0x00, 0x01, 0xF8, 0x00, 0x1F, - 0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x7E, - 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x0F, 0xC0, - 0x00, 0x1F, 0x87, 0xC0, 0x3E, 0x1F, 0xC0, 0xFC, 0x7F, 0x81, 0xF9, 0x9F, - 0x03, 0xE6, 0x3E, 0x07, 0xD8, 0x7C, 0x1F, 0xA0, 0xF8, 0x3F, 0x83, 0xF0, - 0x7F, 0x07, 0xE0, 0xFC, 0x0F, 0xC3, 0xF8, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, - 0xC0, 0xFC, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xE0, 0xFC, 0x0F, 0xC1, 0xF0, - 0x3F, 0x17, 0xE0, 0x7E, 0x6F, 0xC0, 0xF9, 0x9F, 0x01, 0xF6, 0x3E, 0x03, - 0xF8, 0xFC, 0x07, 0xF1, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x3F, 0x03, 0xF0, - 0x3F, 0x03, 0xF0, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xC7, - 0xFC, 0x1F, 0xC0, 0xF8, 0x0F, 0x81, 0xF8, 0x1F, 0x81, 0xF0, 0x1F, 0x03, - 0xF0, 0x3E, 0x03, 0xE0, 0x3E, 0x07, 0xE0, 0x7C, 0x07, 0xC0, 0xFC, 0x2F, - 0x84, 0xF8, 0xCF, 0x98, 0xFF, 0x0F, 0xE0, 0x78, 0x00, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, - 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0xFC, 0x00, 0x1F, 0xF0, 0x00, 0x1F, 0xC0, - 0x00, 0x3E, 0x00, 0x01, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, - 0x7C, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xF8, - 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, - 0x0F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x1F, - 0x80, 0x00, 0x7E, 0x00, 0x01, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x3F, 0x00, - 0x60, 0xF8, 0x03, 0xC3, 0xC0, 0x0F, 0x1F, 0x00, 0x3C, 0xF8, 0x00, 0x7F, - 0xC0, 0x00, 0xFC, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0xFC, 0x00, 0x07, - 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x01, - 0xF8, 0x00, 0x01, 0xF8, 0x00, 0x01, 0xF0, 0x00, 0x01, 0xF0, 0x00, 0x03, - 0xF0, 0x00, 0x03, 0xF0, 0x00, 0x03, 0xE3, 0xFF, 0x03, 0xE0, 0xFC, 0x07, - 0xE0, 0xF0, 0x07, 0xE0, 0xE0, 0x07, 0xC1, 0xC0, 0x0F, 0xC3, 0x80, 0x0F, - 0xC7, 0x00, 0x0F, 0x8E, 0x00, 0x0F, 0xBE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, - 0xFE, 0x00, 0x1F, 0xFE, 0x00, 0x1F, 0x3E, 0x00, 0x3F, 0x3F, 0x00, 0x3F, - 0x1F, 0x00, 0x3E, 0x1F, 0x00, 0x7E, 0x1F, 0x04, 0x7E, 0x1F, 0x8C, 0x7E, - 0x0F, 0x98, 0x7C, 0x0F, 0xF0, 0xFC, 0x07, 0xE0, 0xE0, 0x03, 0xC0, 0x00, - 0x08, 0x0F, 0xC7, 0xFE, 0x07, 0xF0, 0x3F, 0x01, 0xF8, 0x0F, 0xC0, 0x7C, - 0x07, 0xE0, 0x3F, 0x01, 0xF8, 0x0F, 0x80, 0x7C, 0x07, 0xE0, 0x3E, 0x01, - 0xF0, 0x1F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, 0x03, 0xF0, 0x1F, 0x80, 0xF8, - 0x0F, 0xC0, 0x7E, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x8F, 0x8C, 0x7C, 0x43, - 0xE4, 0x1F, 0xE0, 0xFE, 0x03, 0xC0, 0x00, 0x00, 0x70, 0x78, 0x0F, 0x83, - 0xFE, 0x3F, 0x87, 0xF8, 0x1F, 0xCF, 0xF1, 0xFF, 0x03, 0xF1, 0x3E, 0x73, - 0xE0, 0x7E, 0x47, 0xD8, 0x7C, 0x0F, 0xD0, 0xFB, 0x1F, 0x81, 0xF4, 0x3E, - 0xC3, 0xF0, 0x3E, 0x87, 0xF0, 0x7C, 0x0F, 0xE0, 0xFE, 0x1F, 0x81, 0xF4, - 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x1F, 0x81, - 0xF8, 0x1F, 0x83, 0xF0, 0x3F, 0x07, 0xE0, 0x7C, 0x07, 0xE0, 0xFC, 0x0F, - 0x80, 0xF8, 0x1F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x07, 0xE0, 0xFC, - 0x0F, 0x88, 0xF8, 0x1F, 0x81, 0xF3, 0x3F, 0x03, 0xE0, 0x3E, 0x47, 0xE0, - 0xFC, 0x07, 0xF0, 0xFC, 0x1F, 0x80, 0xFE, 0x18, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x70, 0xF8, 0x7F, 0xC3, 0xF8, 0x1F, 0x8F, 0xF0, 0x3F, 0x33, 0xE0, - 0x7C, 0x87, 0xC1, 0xF9, 0x0F, 0x83, 0xF4, 0x1F, 0x07, 0xD0, 0x3E, 0x0F, - 0xE0, 0xFC, 0x3F, 0x81, 0xF8, 0x7F, 0x03, 0xE0, 0xFC, 0x0F, 0xC1, 0xF8, - 0x1F, 0x87, 0xE0, 0x3E, 0x0F, 0xC0, 0xFC, 0x1F, 0x81, 0xF0, 0x3E, 0x03, - 0xE0, 0xFC, 0x0F, 0xC9, 0xF8, 0x1F, 0x33, 0xE0, 0x3E, 0x47, 0xC0, 0x7F, - 0x1F, 0x80, 0xFE, 0x38, 0x00, 0xF0, 0x00, 0x00, 0x3F, 0x00, 0x0E, 0x38, - 0x03, 0xC1, 0xC0, 0x78, 0x1E, 0x0F, 0x81, 0xF0, 0xF0, 0x1F, 0x1F, 0x01, - 0xF3, 0xE0, 0x1F, 0x3E, 0x03, 0xF7, 0xC0, 0x3F, 0x7C, 0x03, 0xF7, 0xC0, - 0x3E, 0xFC, 0x03, 0xEF, 0xC0, 0x7E, 0xF8, 0x07, 0xCF, 0x80, 0x7C, 0xF8, - 0x0F, 0x8F, 0x80, 0xF8, 0xF8, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x3C, 0x03, - 0xC7, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0x0F, 0x1F, 0x00, 0x3F, 0xE7, 0xF8, - 0x01, 0xF9, 0xFF, 0x00, 0x1F, 0x47, 0xF0, 0x07, 0xF0, 0x7E, 0x00, 0xFE, - 0x0F, 0xC0, 0x1F, 0x81, 0xF8, 0x03, 0xF0, 0x3F, 0x00, 0xFC, 0x07, 0xE0, - 0x1F, 0x81, 0xFC, 0x03, 0xE0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x1F, 0x81, - 0xFC, 0x03, 0xF0, 0x3F, 0x00, 0x7C, 0x07, 0xE0, 0x0F, 0x81, 0xF8, 0x03, - 0xF0, 0x3E, 0x00, 0x7E, 0x0F, 0xC0, 0x0F, 0x81, 0xF0, 0x01, 0xF0, 0x7C, - 0x00, 0x7F, 0x1F, 0x00, 0x0F, 0xFF, 0xC0, 0x01, 0xF3, 0xE0, 0x00, 0x3E, - 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x3E, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3F, 0xFC, - 0x00, 0x00, 0x00, 0x3E, 0x00, 0x03, 0xF9, 0xF0, 0x1F, 0x1F, 0xC0, 0xF8, - 0x7E, 0x07, 0xC1, 0xF8, 0x3F, 0x07, 0xE0, 0xF8, 0x1F, 0x87, 0xE0, 0x7C, - 0x3F, 0x01, 0xF0, 0xFC, 0x0F, 0xC7, 0xE0, 0x3E, 0x1F, 0x80, 0xF8, 0x7E, - 0x07, 0xE3, 0xF0, 0x1F, 0x8F, 0xC0, 0x7C, 0x3F, 0x03, 0xF0, 0xFC, 0x0F, - 0xC3, 0xF0, 0x7E, 0x0F, 0xC3, 0xF8, 0x3F, 0x9B, 0xE0, 0x7F, 0xDF, 0x01, - 0xFE, 0x7C, 0x01, 0xF1, 0xF0, 0x00, 0x0F, 0xC0, 0x00, 0x3E, 0x00, 0x00, - 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x7C, 0x00, 0x03, 0xF8, - 0x00, 0x7F, 0xF8, 0x00, 0x00, 0x71, 0xE1, 0xFF, 0x3E, 0x07, 0xE7, 0xF0, - 0x7E, 0xFF, 0x07, 0xE9, 0xE0, 0x7D, 0x0E, 0x07, 0xD0, 0x00, 0xFE, 0x00, - 0x0F, 0xE0, 0x00, 0xFC, 0x00, 0x0F, 0xC0, 0x01, 0xFC, 0x00, 0x1F, 0x80, - 0x01, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x03, 0xF0, - 0x00, 0x7E, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, 0xC0, 0x00, 0x01, - 0xF1, 0x07, 0xFF, 0x0F, 0x0F, 0x0E, 0x07, 0x1E, 0x06, 0x1E, 0x06, 0x1F, - 0x02, 0x1F, 0x02, 0x1F, 0x80, 0x0F, 0xC0, 0x0F, 0xE0, 0x0F, 0xF0, 0x07, - 0xF8, 0x03, 0xF8, 0x01, 0xFC, 0x00, 0xFC, 0x40, 0x7C, 0x40, 0x7C, 0x60, - 0x3C, 0xE0, 0x38, 0xF0, 0x38, 0xF8, 0xF0, 0xDF, 0xC0, 0x00, 0x20, 0x03, - 0x00, 0x38, 0x03, 0x80, 0x3C, 0x03, 0xE0, 0x7F, 0x07, 0xFF, 0x3F, 0xF8, - 0x7C, 0x07, 0xE0, 0x3F, 0x01, 0xF0, 0x0F, 0x80, 0xFC, 0x07, 0xC0, 0x3E, - 0x03, 0xF0, 0x1F, 0x80, 0xF8, 0x07, 0xC0, 0x7E, 0x03, 0xF1, 0x1F, 0x08, - 0xF8, 0x87, 0xC8, 0x3F, 0xC1, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x40, 0x00, - 0x1F, 0x03, 0xF7, 0xF8, 0x0F, 0x87, 0xE0, 0x3E, 0x1F, 0x81, 0xF8, 0x7E, - 0x07, 0xC1, 0xF0, 0x1F, 0x07, 0xC0, 0xFC, 0x3F, 0x03, 0xE0, 0xF8, 0x0F, - 0x83, 0xE0, 0x7E, 0x0F, 0x81, 0xF8, 0x7E, 0x0F, 0xC1, 0xF0, 0x3F, 0x07, - 0xC1, 0xFC, 0x1F, 0x07, 0xE0, 0xF8, 0x2F, 0x83, 0xE1, 0x3C, 0x6F, 0x8D, - 0xF1, 0x3E, 0x67, 0xC8, 0xFF, 0x1F, 0xE3, 0xF8, 0x7F, 0x07, 0xC0, 0xF0, - 0x00, 0x06, 0x07, 0x1F, 0x07, 0xBF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, - 0xF8, 0x3C, 0x7C, 0x0C, 0x3E, 0x06, 0x1F, 0x03, 0x0F, 0x83, 0x07, 0xC1, - 0x83, 0xE1, 0x81, 0xF1, 0x80, 0xF9, 0x80, 0x7C, 0xC0, 0x3E, 0xC0, 0x1F, - 0xC0, 0x0F, 0xC0, 0x07, 0xC0, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0xC0, 0x00, - 0x40, 0x00, 0x06, 0x01, 0x81, 0xC7, 0xC0, 0x30, 0x7F, 0xF8, 0x0E, 0x0F, - 0x9F, 0x01, 0xC1, 0xF3, 0xE0, 0x78, 0x3E, 0x7C, 0x1F, 0x03, 0xCF, 0xC3, - 0xE0, 0x30, 0xF8, 0xFC, 0x06, 0x1F, 0x1F, 0xC0, 0x83, 0xE7, 0xF8, 0x30, - 0x7C, 0xFF, 0x04, 0x0F, 0xB7, 0xE1, 0x81, 0xF6, 0xFC, 0x60, 0x3F, 0x8F, - 0x98, 0x07, 0xE1, 0xF3, 0x00, 0xFC, 0x3E, 0xC0, 0x1F, 0x07, 0xF0, 0x03, - 0xE0, 0xFC, 0x00, 0x78, 0x1F, 0x80, 0x0F, 0x03, 0xE0, 0x01, 0xC0, 0x78, - 0x00, 0x30, 0x0E, 0x00, 0x06, 0x01, 0x80, 0x00, 0x00, 0xF0, 0x1E, 0x0F, - 0xF0, 0x3E, 0x01, 0xF8, 0x7F, 0x01, 0xF8, 0xFF, 0x00, 0xF9, 0x8E, 0x00, - 0xFB, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, - 0xBF, 0x08, 0x73, 0x1F, 0x18, 0xFF, 0x1F, 0x30, 0xFE, 0x1F, 0xE0, 0xFC, - 0x0F, 0xC0, 0x78, 0x07, 0x80, 0x00, 0x30, 0x1C, 0x0F, 0xF0, 0x7C, 0x07, - 0xE0, 0xF8, 0x0F, 0xC1, 0xF0, 0x0F, 0xC1, 0xE0, 0x1F, 0x81, 0xC0, 0x3F, - 0x03, 0x00, 0x3E, 0x06, 0x00, 0x7E, 0x08, 0x00, 0xFC, 0x30, 0x01, 0xF8, - 0x60, 0x01, 0xF1, 0x80, 0x03, 0xE3, 0x00, 0x07, 0xCC, 0x00, 0x0F, 0xD8, - 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0xC0, 0x00, 0x3F, 0x00, 0x00, 0x7E, 0x00, - 0x00, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x07, 0x00, 0x00, - 0x0C, 0x00, 0x00, 0x18, 0x00, 0x00, 0x60, 0x01, 0xC1, 0x80, 0x07, 0xE6, - 0x00, 0x0F, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x07, - 0xFF, 0xE1, 0xFF, 0xF8, 0x3F, 0xFF, 0x07, 0xFF, 0xC0, 0x80, 0x70, 0x30, - 0x1C, 0x04, 0x07, 0x00, 0x00, 0xC0, 0x00, 0x38, 0x00, 0x0E, 0x00, 0x03, - 0x80, 0x00, 0x60, 0x00, 0x18, 0x00, 0x06, 0x00, 0x01, 0xC0, 0x00, 0x30, - 0x00, 0x0C, 0x00, 0x03, 0xE0, 0x00, 0xFE, 0x00, 0x1F, 0xE0, 0xC7, 0xFC, - 0x3D, 0xCF, 0xC7, 0x90, 0xF8, 0xF0, 0x07, 0x9C, 0x00, 0x3E, 0x00, 0x00, - 0x01, 0xF0, 0x00, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, - 0x07, 0xC0, 0x00, 0x78, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, 0x80, - 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x03, - 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7E, 0x00, - 0x03, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, - 0x3E, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, - 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x7C, 0x00, 0x07, 0xC0, 0x00, 0x7C, - 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, 0x0F, - 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, - 0xF8, 0x00, 0x03, 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x03, 0xE0, 0x00, - 0x7C, 0x00, 0x07, 0xC0, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x00, 0xF8, 0x00, - 0x0F, 0x80, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, - 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x07, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, - 0x03, 0xF0, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x03, 0xFF, 0x01, 0x3F, - 0xFE, 0x1D, 0xFF, 0xFF, 0xFE, 0x0F, 0xFF, 0x00, 0x1F, 0xF0, 0x00, 0x1F, - 0x00 }; - -const GFXglyph FreeSerifBoldItalic24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 15, 33, 18, 3, -31 }, // 0x21 '!' - { 62, 19, 13, 26, 6, -31 }, // 0x22 '"' - { 93, 27, 33, 23, -2, -32 }, // 0x23 '#' - { 205, 24, 39, 24, -1, -33 }, // 0x24 '$' - { 322, 35, 32, 39, 2, -30 }, // 0x25 '%' - { 462, 33, 33, 37, 0, -31 }, // 0x26 '&' - { 599, 7, 13, 13, 6, -31 }, // 0x27 ''' - { 611, 14, 41, 16, 1, -31 }, // 0x28 '(' - { 683, 14, 41, 16, -2, -31 }, // 0x29 ')' - { 755, 19, 20, 23, 3, -31 }, // 0x2A '*' - { 803, 22, 23, 27, 2, -22 }, // 0x2B '+' - { 867, 10, 15, 12, -3, -5 }, // 0x2C ',' - { 886, 12, 5, 16, 0, -12 }, // 0x2D '-' - { 894, 8, 7, 12, 0, -5 }, // 0x2E '.' - { 901, 19, 33, 16, 0, -31 }, // 0x2F '/' - { 980, 22, 33, 23, 1, -31 }, // 0x30 '0' - { 1071, 20, 32, 23, 0, -31 }, // 0x31 '1' - { 1151, 22, 32, 23, 1, -31 }, // 0x32 '2' - { 1239, 22, 33, 24, 0, -31 }, // 0x33 '3' - { 1330, 25, 32, 23, 0, -31 }, // 0x34 '4' - { 1430, 24, 32, 24, 0, -30 }, // 0x35 '5' - { 1526, 23, 32, 24, 1, -30 }, // 0x36 '6' - { 1618, 23, 31, 23, 3, -30 }, // 0x37 '7' - { 1708, 21, 33, 23, 1, -31 }, // 0x38 '8' - { 1795, 23, 33, 23, 0, -31 }, // 0x39 '9' - { 1890, 13, 22, 12, 0, -20 }, // 0x3A ':' - { 1926, 15, 30, 12, -2, -20 }, // 0x3B ';' - { 1983, 24, 25, 27, 1, -23 }, // 0x3C '<' - { 2058, 24, 14, 27, 3, -18 }, // 0x3D '=' - { 2100, 24, 25, 27, 3, -23 }, // 0x3E '>' - { 2175, 18, 33, 24, 4, -31 }, // 0x3F '?' - { 2250, 33, 33, 39, 3, -31 }, // 0x40 '@' - { 2387, 31, 32, 33, 0, -31 }, // 0x41 'A' - { 2511, 31, 31, 30, 0, -30 }, // 0x42 'B' - { 2632, 29, 33, 29, 2, -31 }, // 0x43 'C' - { 2752, 35, 31, 34, 0, -30 }, // 0x44 'D' - { 2888, 32, 31, 30, 0, -30 }, // 0x45 'E' - { 3012, 31, 31, 29, 0, -30 }, // 0x46 'F' - { 3133, 32, 33, 33, 2, -31 }, // 0x47 'G' - { 3265, 39, 31, 35, 0, -30 }, // 0x48 'H' - { 3417, 21, 31, 18, 0, -30 }, // 0x49 'I' - { 3499, 27, 36, 23, 0, -30 }, // 0x4A 'J' - { 3621, 34, 31, 31, 0, -30 }, // 0x4B 'K' - { 3753, 29, 31, 29, 0, -30 }, // 0x4C 'L' - { 3866, 44, 32, 41, 0, -30 }, // 0x4D 'M' - { 4042, 37, 32, 33, 0, -30 }, // 0x4E 'N' - { 4190, 31, 33, 32, 2, -31 }, // 0x4F 'O' - { 4318, 31, 31, 28, 0, -30 }, // 0x50 'P' - { 4439, 31, 42, 32, 2, -31 }, // 0x51 'Q' - { 4602, 32, 31, 31, 0, -30 }, // 0x52 'R' - { 4726, 24, 33, 24, 0, -31 }, // 0x53 'S' - { 4825, 27, 31, 28, 4, -30 }, // 0x54 'T' - { 4930, 32, 32, 34, 5, -30 }, // 0x55 'U' - { 5058, 31, 32, 33, 6, -30 }, // 0x56 'V' - { 5182, 41, 32, 44, 6, -30 }, // 0x57 'W' - { 5346, 34, 31, 33, 0, -30 }, // 0x58 'X' - { 5478, 28, 31, 30, 6, -30 }, // 0x59 'Y' - { 5587, 28, 31, 26, 0, -30 }, // 0x5A 'Z' - { 5696, 19, 38, 16, -2, -30 }, // 0x5B '[' - { 5787, 13, 33, 19, 6, -31 }, // 0x5C '\' - { 5841, 19, 38, 16, -3, -30 }, // 0x5D ']' - { 5932, 21, 17, 27, 3, -30 }, // 0x5E '^' - { 5977, 24, 3, 23, 0, 5 }, // 0x5F '_' - { 5986, 10, 9, 16, 4, -32 }, // 0x60 '`' - { 5998, 22, 23, 24, 1, -21 }, // 0x61 'a' - { 6062, 22, 33, 23, 1, -31 }, // 0x62 'b' - { 6153, 18, 23, 20, 1, -21 }, // 0x63 'c' - { 6205, 25, 34, 24, 1, -32 }, // 0x64 'd' - { 6312, 18, 23, 20, 1, -21 }, // 0x65 'e' - { 6364, 28, 41, 23, -4, -31 }, // 0x66 'f' - { 6508, 25, 31, 23, -1, -21 }, // 0x67 'g' - { 6605, 23, 34, 26, 1, -32 }, // 0x68 'h' - { 6703, 12, 33, 14, 2, -31 }, // 0x69 'i' - { 6753, 22, 42, 16, -4, -31 }, // 0x6A 'j' - { 6869, 24, 34, 24, 1, -32 }, // 0x6B 'k' - { 6971, 13, 34, 14, 2, -32 }, // 0x6C 'l' - { 7027, 35, 23, 36, 0, -21 }, // 0x6D 'm' - { 7128, 23, 23, 25, 0, -21 }, // 0x6E 'n' - { 7195, 20, 23, 22, 1, -21 }, // 0x6F 'o' - { 7253, 27, 31, 23, -4, -21 }, // 0x70 'p' - { 7358, 22, 31, 23, 1, -21 }, // 0x71 'q' - { 7444, 20, 22, 19, 0, -21 }, // 0x72 'r' - { 7499, 16, 23, 17, 0, -21 }, // 0x73 's' - { 7545, 13, 29, 13, 2, -27 }, // 0x74 't' - { 7593, 22, 23, 25, 2, -21 }, // 0x75 'u' - { 7657, 17, 23, 21, 3, -21 }, // 0x76 'v' - { 7706, 27, 23, 31, 3, -21 }, // 0x77 'w' - { 7784, 24, 23, 22, -1, -21 }, // 0x78 'x' - { 7853, 23, 31, 20, -3, -21 }, // 0x79 'y' - { 7943, 19, 25, 19, 0, -20 }, // 0x7A 'z' - { 8003, 20, 41, 16, 0, -31 }, // 0x7B '{' - { 8106, 4, 33, 13, 5, -31 }, // 0x7C '|' - { 8123, 20, 41, 16, -6, -31 }, // 0x7D '}' - { 8226, 21, 7, 27, 3, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic24pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic24pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8917 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h deleted file mode 100644 index 47711ee7c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h +++ /dev/null @@ -1,215 +0,0 @@ -const uint8_t FreeSerifBoldItalic9pt7bBitmaps[] PROGMEM = { - 0x0C, 0x31, 0xC6, 0x18, 0x41, 0x08, 0x20, 0x0E, 0x38, 0xE0, 0xCF, 0x38, - 0xA2, 0x88, 0x02, 0x40, 0xC8, 0x13, 0x06, 0x43, 0xFC, 0x32, 0x06, 0x40, - 0x98, 0x7F, 0x84, 0xC0, 0x90, 0x32, 0x04, 0xC0, 0x01, 0x01, 0xF0, 0x4B, - 0x99, 0x33, 0x24, 0x78, 0x07, 0x80, 0x38, 0x0B, 0x89, 0x31, 0x26, 0x64, - 0xC7, 0x30, 0x3C, 0x04, 0x00, 0x38, 0x41, 0x9F, 0x06, 0x48, 0x31, 0x60, - 0xCD, 0x03, 0x2C, 0x07, 0x27, 0x81, 0x39, 0x05, 0xC4, 0x26, 0x10, 0x98, - 0x84, 0x66, 0x10, 0xE0, 0x03, 0x80, 0x22, 0x03, 0x10, 0x19, 0x00, 0xF0, - 0x0F, 0x3C, 0xF8, 0xCC, 0xC4, 0xE7, 0x47, 0x3E, 0x38, 0xE1, 0xE7, 0x97, - 0xCF, 0x00, 0xFA, 0x80, 0x08, 0x88, 0x84, 0x62, 0x10, 0x84, 0x21, 0x08, - 0x41, 0x00, 0x20, 0x84, 0x10, 0x84, 0x21, 0x08, 0xC6, 0x23, 0x11, 0x00, - 0x18, 0x18, 0xD6, 0x38, 0x18, 0xF7, 0x18, 0x18, 0x08, 0x04, 0x02, 0x01, - 0x0F, 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0x6D, 0x95, 0x00, 0xFF, 0xC0, - 0xFF, 0x80, 0x06, 0x0C, 0x30, 0x60, 0x83, 0x04, 0x18, 0x20, 0xC1, 0x06, - 0x00, 0x0F, 0x0C, 0x8C, 0x6E, 0x37, 0x1B, 0x1F, 0x8F, 0xC7, 0xC7, 0x63, - 0xB1, 0x89, 0x83, 0x80, 0x06, 0x1E, 0x0E, 0x0E, 0x0C, 0x0C, 0x1C, 0x18, - 0x18, 0x18, 0x38, 0x38, 0xFC, 0x1F, 0x13, 0xD0, 0xE0, 0x70, 0x38, 0x38, - 0x18, 0x18, 0x18, 0x08, 0x08, 0x4F, 0xCF, 0xE0, 0x1F, 0x11, 0xC0, 0xE0, - 0x60, 0xC1, 0xF0, 0x38, 0x0C, 0x06, 0x03, 0x01, 0x19, 0x8F, 0x00, 0x00, - 0x80, 0xC0, 0xE1, 0xE0, 0xB0, 0x98, 0x9C, 0x8C, 0xFF, 0x07, 0x03, 0x01, - 0x80, 0x0F, 0x88, 0x08, 0x07, 0x83, 0xE0, 0x78, 0x1C, 0x06, 0x03, 0x01, - 0x80, 0x9C, 0x87, 0x80, 0x03, 0x87, 0x07, 0x07, 0x07, 0x03, 0xE3, 0x99, - 0xCC, 0xC6, 0x63, 0x33, 0x89, 0x87, 0x80, 0x3F, 0xBF, 0x90, 0x80, 0xC0, - 0x40, 0x60, 0x20, 0x30, 0x30, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x13, 0x31, - 0x31, 0x3A, 0x1C, 0x1C, 0x6E, 0xC6, 0xC6, 0xC6, 0x44, 0x38, 0x0E, 0x1C, - 0x8C, 0x6C, 0x36, 0x3B, 0x1D, 0x8E, 0x7E, 0x0E, 0x07, 0x07, 0x0E, 0x0C, - 0x00, 0x39, 0xCE, 0x00, 0x03, 0x9C, 0xE0, 0x39, 0xCE, 0x00, 0x01, 0x8C, - 0x22, 0x20, 0x00, 0x01, 0xC3, 0xC7, 0x8E, 0x06, 0x01, 0xE0, 0x3C, 0x07, - 0x80, 0x40, 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x00, 0x60, 0x1E, 0x03, - 0xC0, 0x78, 0x1C, 0x3C, 0x78, 0xF0, 0x40, 0x00, 0x1C, 0x27, 0x37, 0x07, - 0x0E, 0x1C, 0x30, 0x60, 0x40, 0x00, 0xE0, 0xE0, 0xE0, 0x0F, 0x80, 0xC3, - 0x08, 0x04, 0xC3, 0x3C, 0x24, 0xE2, 0x27, 0x33, 0x39, 0x11, 0xC9, 0x93, - 0x77, 0x18, 0x00, 0x70, 0x40, 0xFC, 0x00, 0x00, 0x80, 0x18, 0x01, 0x80, - 0x38, 0x05, 0x80, 0x5C, 0x09, 0xC1, 0x1C, 0x1F, 0xC2, 0x0C, 0x20, 0xC4, - 0x0E, 0xF3, 0xF0, 0x3F, 0xE0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0xE1, 0xF0, - 0x39, 0xC3, 0x8E, 0x38, 0xE3, 0x0E, 0x71, 0xE7, 0x1C, 0xFF, 0x00, 0x07, - 0xD1, 0xC7, 0x38, 0x27, 0x02, 0x70, 0x0F, 0x00, 0xE0, 0x0E, 0x00, 0xE0, - 0x0E, 0x00, 0x60, 0x87, 0x18, 0x1E, 0x00, 0x3F, 0xE0, 0x30, 0xE0, 0xC1, - 0x87, 0x07, 0x1C, 0x1C, 0x60, 0x73, 0x81, 0xCE, 0x07, 0x38, 0x38, 0xC0, - 0xE7, 0x07, 0x1C, 0x78, 0xFF, 0x80, 0x1F, 0xF8, 0x61, 0xC3, 0x04, 0x38, - 0x81, 0xCC, 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x81, 0x1C, 0x18, - 0xE3, 0x8F, 0xFC, 0x00, 0x3F, 0xF8, 0x61, 0xC3, 0x04, 0x38, 0x81, 0xCC, - 0x0F, 0xE0, 0xE2, 0x07, 0x10, 0x38, 0x81, 0x80, 0x1C, 0x00, 0xE0, 0x0F, - 0x80, 0x00, 0x07, 0x91, 0xC7, 0x38, 0x27, 0x00, 0x70, 0x0F, 0x00, 0xE1, - 0xFE, 0x0E, 0xE0, 0xCE, 0x0C, 0x60, 0xC7, 0x1C, 0x1F, 0x00, 0x1F, 0x7E, - 0x1C, 0x38, 0x30, 0x60, 0xE1, 0xC1, 0xC3, 0x83, 0x06, 0x0F, 0xFC, 0x1C, - 0x38, 0x38, 0x70, 0x60, 0xC1, 0xC3, 0x83, 0x87, 0x0F, 0x9F, 0x00, 0x3F, - 0x0C, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0xF8, - 0x07, 0xC0, 0xE0, 0x38, 0x0C, 0x07, 0x01, 0xC0, 0x70, 0x18, 0x0E, 0x03, - 0x80, 0xC3, 0x30, 0xDC, 0x1E, 0x00, 0x1F, 0x78, 0x71, 0x83, 0x18, 0x39, - 0x81, 0xD0, 0x0D, 0x00, 0xFC, 0x07, 0x60, 0x3B, 0x81, 0x8C, 0x1C, 0x70, - 0xE1, 0x8F, 0xBE, 0x00, 0x1F, 0x00, 0xC0, 0x0C, 0x01, 0xC0, 0x1C, 0x01, - 0x80, 0x38, 0x03, 0x80, 0x38, 0x03, 0x01, 0x70, 0x37, 0x0E, 0xFF, 0xE0, - 0x1E, 0x07, 0x87, 0x07, 0x83, 0x83, 0x82, 0xC3, 0xC1, 0x62, 0xE0, 0xB1, - 0x70, 0x99, 0x30, 0x4D, 0xB8, 0x27, 0x9C, 0x13, 0x8C, 0x11, 0xC6, 0x0C, - 0xC7, 0x0F, 0x47, 0xC0, 0x3C, 0x3C, 0x38, 0x20, 0xE0, 0x85, 0xC4, 0x13, - 0x10, 0x4E, 0x42, 0x3A, 0x08, 0x78, 0x21, 0xE0, 0x83, 0x84, 0x0C, 0x18, - 0x10, 0x00, 0x40, 0x07, 0xC1, 0xCE, 0x38, 0x73, 0x87, 0x70, 0x77, 0x07, - 0xF0, 0xFE, 0x0E, 0xE0, 0xEE, 0x1C, 0xE1, 0xC6, 0x38, 0x3E, 0x00, 0x3F, - 0xC0, 0xC7, 0x0C, 0x71, 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0xC3, 0x80, 0x30, - 0x03, 0x00, 0x70, 0x07, 0x00, 0xF8, 0x00, 0x07, 0xC0, 0xCE, 0x38, 0x73, - 0x87, 0x70, 0x77, 0x07, 0xF0, 0x7E, 0x0E, 0xE0, 0xEE, 0x0C, 0xE1, 0xC6, - 0x38, 0x36, 0x01, 0x80, 0x3C, 0x2D, 0xFC, 0x3F, 0xC0, 0xE7, 0x0C, 0x71, - 0xC7, 0x1C, 0x71, 0x8E, 0x3F, 0x83, 0xB8, 0x3B, 0x83, 0x3C, 0x71, 0xC7, - 0x1C, 0xF9, 0xF0, 0x0C, 0x89, 0x8C, 0x46, 0x23, 0x80, 0xE0, 0x78, 0x0E, - 0x03, 0x21, 0x90, 0xCC, 0xC9, 0xC0, 0x7F, 0xE9, 0xDF, 0x31, 0x4E, 0x21, - 0xC0, 0x38, 0x06, 0x01, 0xC0, 0x38, 0x06, 0x00, 0xC0, 0x38, 0x0F, 0xC0, - 0x7C, 0xF3, 0x82, 0x30, 0x27, 0x04, 0x70, 0x46, 0x04, 0xE0, 0x4E, 0x08, - 0xE0, 0x8E, 0x08, 0xE1, 0x0F, 0x30, 0x3C, 0x00, 0xFC, 0x73, 0x82, 0x38, - 0x23, 0x84, 0x38, 0x83, 0x90, 0x39, 0x01, 0xA0, 0x1C, 0x01, 0xC0, 0x18, - 0x01, 0x00, 0xF9, 0xF7, 0x30, 0xE2, 0x30, 0xC2, 0x38, 0xC4, 0x3B, 0xC4, - 0x3A, 0xE8, 0x3C, 0xE8, 0x3C, 0xF0, 0x18, 0xF0, 0x18, 0x60, 0x10, 0x60, - 0x10, 0x40, 0x3F, 0x78, 0x61, 0x83, 0x98, 0x1D, 0x00, 0x70, 0x03, 0x80, - 0x1C, 0x01, 0x60, 0x0B, 0x80, 0x9C, 0x08, 0x60, 0xC3, 0x8F, 0x7E, 0x00, - 0xF9, 0xE6, 0x18, 0xC2, 0x1C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0xC0, 0x18, - 0x07, 0x00, 0xE0, 0x1C, 0x0F, 0xC0, 0x3F, 0xE6, 0x19, 0x87, 0x21, 0xC0, - 0x30, 0x0E, 0x03, 0x80, 0x60, 0x1C, 0x07, 0x05, 0xC1, 0x38, 0xEF, 0xFC, - 0x0E, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 0x30, 0x20, 0x60, 0x60, - 0x60, 0x40, 0xF0, 0xC6, 0x10, 0xC6, 0x10, 0x86, 0x30, 0x86, 0x30, 0x1E, - 0x0C, 0x18, 0x20, 0xC1, 0x83, 0x04, 0x18, 0x30, 0x60, 0x83, 0x06, 0x3C, - 0x00, 0x18, 0x1C, 0x34, 0x26, 0x66, 0x43, 0xC3, 0xFF, 0x80, 0xC6, 0x30, - 0x0D, 0x9D, 0x8C, 0xCC, 0x6E, 0x26, 0x33, 0x19, 0xBE, 0x66, 0x00, 0x00, - 0x78, 0x18, 0x30, 0x30, 0x3E, 0x73, 0x63, 0x63, 0x63, 0xC6, 0xC6, 0xCC, - 0x70, 0x0F, 0x3B, 0x70, 0x70, 0xE0, 0xE0, 0xE2, 0xE4, 0x78, 0x00, 0x00, - 0xF0, 0x1C, 0x06, 0x01, 0x83, 0xE3, 0x30, 0xCC, 0x63, 0x19, 0xCC, 0x63, - 0x38, 0xCF, 0x1D, 0x80, 0x0E, 0x75, 0xCB, 0xBE, 0xDE, 0x38, 0x72, 0x78, - 0x00, 0xE0, 0x34, 0x0C, 0x01, 0x80, 0x30, 0x1F, 0x01, 0x80, 0x30, 0x06, - 0x01, 0xC0, 0x30, 0x06, 0x00, 0xC0, 0x30, 0x06, 0x04, 0x80, 0xE0, 0x00, - 0x1C, 0x19, 0xD8, 0xCC, 0x66, 0x60, 0xE1, 0x80, 0xF0, 0x7E, 0x43, 0x21, - 0x8F, 0x00, 0x00, 0x1E, 0x07, 0x03, 0x01, 0x80, 0xD8, 0xFC, 0x76, 0x33, - 0x19, 0x99, 0xCC, 0xD6, 0x77, 0x30, 0x39, 0xC0, 0x0F, 0x31, 0x8C, 0xC6, - 0x31, 0xAE, 0x00, 0x03, 0x81, 0xC0, 0x00, 0x00, 0xE0, 0x30, 0x18, 0x18, - 0x0C, 0x06, 0x03, 0x03, 0x01, 0x80, 0xC2, 0xC1, 0xC0, 0x00, 0x0F, 0x00, - 0xC0, 0x60, 0x18, 0x06, 0xF3, 0x90, 0xC8, 0x34, 0x0F, 0x06, 0xC1, 0x98, - 0x66, 0xB9, 0xC0, 0x03, 0xCC, 0x63, 0x39, 0x8C, 0x66, 0x31, 0x8E, 0x70, - 0x7B, 0x99, 0xAF, 0xCE, 0x66, 0x63, 0x67, 0x33, 0x31, 0x99, 0x8C, 0xCC, - 0xE7, 0xC6, 0x30, 0x73, 0x7F, 0x73, 0x73, 0x63, 0x67, 0xE6, 0xC7, 0xC6, - 0x1E, 0x33, 0x63, 0x63, 0xC3, 0xC6, 0xC6, 0xCC, 0x78, 0x1D, 0xC3, 0xB1, - 0xCC, 0x63, 0x19, 0xCE, 0x63, 0x18, 0xCC, 0x3E, 0x1C, 0x06, 0x03, 0xE0, - 0x0D, 0x99, 0x8C, 0xCC, 0x6E, 0x76, 0x33, 0x19, 0x9C, 0x7C, 0x06, 0x07, - 0x07, 0xC0, 0x76, 0x3A, 0x30, 0x70, 0x60, 0x60, 0x60, 0xE0, 0x3D, 0x14, - 0x58, 0x38, 0x60, 0xA2, 0xF0, 0x08, 0xCC, 0xF6, 0x31, 0x98, 0xC6, 0x35, - 0xC0, 0xE3, 0x63, 0x66, 0x66, 0x66, 0xCC, 0xCC, 0xFE, 0xEC, 0xE6, 0xCD, - 0x8B, 0x26, 0x8E, 0x18, 0x20, 0xE4, 0xD9, 0x36, 0xE5, 0xDA, 0x77, 0x19, - 0xC6, 0x61, 0x10, 0x39, 0xC7, 0xB0, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0xE1, - 0x5A, 0x67, 0x00, 0x39, 0x8C, 0xC3, 0x21, 0xA0, 0xD0, 0x68, 0x38, 0x0C, - 0x04, 0x04, 0x14, 0x0C, 0x00, 0x3E, 0x46, 0x0C, 0x08, 0x10, 0x20, 0x70, - 0x1A, 0x0E, 0x03, 0x0E, 0x0C, 0x0C, 0x08, 0x18, 0x18, 0x10, 0x60, 0x30, - 0x30, 0x30, 0x60, 0x60, 0x60, 0x30, 0xFF, 0xF0, 0x0C, 0x06, 0x06, 0x06, - 0x04, 0x0C, 0x0C, 0x0C, 0x06, 0x18, 0x18, 0x18, 0x30, 0x30, 0x30, 0xE0, - 0x71, 0x8F }; - -const GFXglyph FreeSerifBoldItalic9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 6, 13, 7, 1, -11 }, // 0x21 '!' - { 10, 6, 5, 10, 3, -11 }, // 0x22 '"' - { 14, 11, 13, 9, -1, -12 }, // 0x23 '#' - { 32, 11, 15, 9, -1, -12 }, // 0x24 '$' - { 53, 14, 13, 15, 1, -11 }, // 0x25 '%' - { 76, 13, 13, 14, 0, -11 }, // 0x26 '&' - { 98, 2, 5, 5, 3, -11 }, // 0x27 ''' - { 100, 5, 16, 6, 1, -11 }, // 0x28 '(' - { 110, 5, 16, 6, -1, -11 }, // 0x29 ')' - { 120, 8, 8, 9, 1, -11 }, // 0x2A '*' - { 128, 9, 9, 10, 0, -8 }, // 0x2B '+' - { 139, 3, 6, 5, -1, -2 }, // 0x2C ',' - { 142, 5, 2, 6, 0, -4 }, // 0x2D '-' - { 144, 3, 3, 4, 0, -1 }, // 0x2E '.' - { 146, 7, 12, 6, 0, -11 }, // 0x2F '/' - { 157, 9, 13, 9, 0, -11 }, // 0x30 '0' - { 172, 8, 13, 9, 0, -11 }, // 0x31 '1' - { 185, 9, 13, 9, 0, -11 }, // 0x32 '2' - { 200, 9, 13, 9, 0, -11 }, // 0x33 '3' - { 215, 9, 12, 9, 0, -11 }, // 0x34 '4' - { 229, 9, 13, 9, 0, -11 }, // 0x35 '5' - { 244, 9, 13, 9, 1, -11 }, // 0x36 '6' - { 259, 9, 12, 9, 1, -11 }, // 0x37 '7' - { 273, 8, 13, 9, 0, -11 }, // 0x38 '8' - { 286, 9, 13, 9, 0, -11 }, // 0x39 '9' - { 301, 5, 9, 5, 0, -7 }, // 0x3A ':' - { 307, 5, 11, 5, 0, -7 }, // 0x3B ';' - { 314, 9, 10, 10, 1, -9 }, // 0x3C '<' - { 326, 9, 5, 10, 1, -6 }, // 0x3D '=' - { 332, 9, 10, 10, 1, -9 }, // 0x3E '>' - { 344, 8, 13, 9, 1, -11 }, // 0x3F '?' - { 357, 13, 13, 15, 1, -12 }, // 0x40 '@' - { 379, 12, 13, 13, 0, -11 }, // 0x41 'A' - { 399, 12, 13, 12, 0, -11 }, // 0x42 'B' - { 419, 12, 13, 11, 1, -11 }, // 0x43 'C' - { 439, 14, 13, 13, 0, -11 }, // 0x44 'D' - { 462, 13, 13, 11, 0, -11 }, // 0x45 'E' - { 484, 13, 13, 11, 0, -11 }, // 0x46 'F' - { 506, 12, 13, 13, 1, -11 }, // 0x47 'G' - { 526, 15, 13, 14, 0, -11 }, // 0x48 'H' - { 551, 8, 13, 7, 0, -11 }, // 0x49 'I' - { 564, 10, 14, 9, 0, -11 }, // 0x4A 'J' - { 582, 13, 13, 12, 0, -11 }, // 0x4B 'K' - { 604, 12, 13, 11, 0, -11 }, // 0x4C 'L' - { 624, 17, 13, 16, 0, -11 }, // 0x4D 'M' - { 652, 14, 13, 13, 0, -11 }, // 0x4E 'N' - { 675, 12, 13, 12, 1, -11 }, // 0x4F 'O' - { 695, 12, 13, 11, 0, -11 }, // 0x50 'P' - { 715, 12, 16, 12, 1, -11 }, // 0x51 'Q' - { 739, 12, 13, 12, 0, -11 }, // 0x52 'R' - { 759, 9, 13, 9, 0, -11 }, // 0x53 'S' - { 774, 11, 13, 11, 2, -11 }, // 0x54 'T' - { 792, 12, 13, 13, 2, -11 }, // 0x55 'U' - { 812, 12, 12, 13, 2, -11 }, // 0x56 'V' - { 830, 16, 12, 17, 2, -11 }, // 0x57 'W' - { 854, 13, 13, 13, 0, -11 }, // 0x58 'X' - { 876, 11, 13, 11, 2, -11 }, // 0x59 'Y' - { 894, 11, 13, 10, 0, -11 }, // 0x5A 'Z' - { 912, 8, 15, 6, -1, -11 }, // 0x5B '[' - { 927, 5, 12, 7, 2, -11 }, // 0x5C '\' - { 935, 7, 15, 6, -1, -11 }, // 0x5D ']' - { 949, 8, 7, 10, 1, -11 }, // 0x5E '^' - { 956, 9, 1, 9, 0, 3 }, // 0x5F '_' - { 958, 4, 3, 6, 2, -11 }, // 0x60 '`' - { 960, 9, 9, 9, 0, -7 }, // 0x61 'a' - { 971, 8, 14, 9, 0, -12 }, // 0x62 'b' - { 985, 8, 9, 8, 0, -7 }, // 0x63 'c' - { 994, 10, 14, 9, 0, -12 }, // 0x64 'd' - { 1012, 7, 9, 7, 0, -7 }, // 0x65 'e' - { 1020, 11, 17, 9, -2, -12 }, // 0x66 'f' - { 1044, 9, 12, 9, 0, -7 }, // 0x67 'g' - { 1058, 9, 14, 10, 0, -12 }, // 0x68 'h' - { 1074, 5, 13, 5, 1, -11 }, // 0x69 'i' - { 1083, 9, 16, 6, -1, -11 }, // 0x6A 'j' - { 1101, 10, 14, 9, 0, -12 }, // 0x6B 'k' - { 1119, 5, 14, 5, 1, -12 }, // 0x6C 'l' - { 1128, 13, 9, 14, 0, -7 }, // 0x6D 'm' - { 1143, 8, 9, 9, 0, -7 }, // 0x6E 'n' - { 1152, 8, 9, 9, 0, -7 }, // 0x6F 'o' - { 1161, 10, 12, 9, -2, -7 }, // 0x70 'p' - { 1176, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 1190, 8, 8, 7, 0, -7 }, // 0x72 'r' - { 1198, 6, 9, 6, 0, -7 }, // 0x73 's' - { 1205, 5, 12, 5, 1, -10 }, // 0x74 't' - { 1213, 8, 9, 10, 1, -7 }, // 0x75 'u' - { 1222, 7, 8, 8, 1, -7 }, // 0x76 'v' - { 1229, 10, 8, 12, 1, -7 }, // 0x77 'w' - { 1239, 10, 9, 9, -1, -7 }, // 0x78 'x' - { 1251, 9, 12, 8, -1, -7 }, // 0x79 'y' - { 1265, 8, 9, 7, 0, -7 }, // 0x7A 'z' - { 1274, 8, 16, 6, 0, -12 }, // 0x7B '{' - { 1290, 1, 12, 5, 2, -11 }, // 0x7C '|' - { 1292, 8, 16, 6, -2, -12 }, // 0x7D '}' - { 1308, 8, 2, 10, 1, -4 } }; // 0x7E '~' - -const GFXfont FreeSerifBoldItalic9pt7b PROGMEM = { - (uint8_t *)FreeSerifBoldItalic9pt7bBitmaps, - (GFXglyph *)FreeSerifBoldItalic9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1982 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h deleted file mode 100644 index 52332a7ad..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h +++ /dev/null @@ -1,271 +0,0 @@ -const uint8_t FreeSerifItalic12pt7bBitmaps[] PROGMEM = { - 0x0C, 0x31, 0xC6, 0x18, 0x43, 0x0C, 0x20, 0x84, 0x10, 0x03, 0x0C, 0x30, - 0x66, 0xCD, 0x12, 0x24, 0x51, 0x00, 0x03, 0x10, 0x11, 0x80, 0x8C, 0x0C, - 0x40, 0x46, 0x1F, 0xFC, 0x21, 0x01, 0x18, 0x18, 0x80, 0x84, 0x3F, 0xF8, - 0x62, 0x02, 0x30, 0x31, 0x01, 0x08, 0x08, 0xC0, 0x00, 0x40, 0x08, 0x07, - 0xC0, 0xCA, 0x18, 0xA1, 0x92, 0x19, 0x01, 0xD0, 0x0F, 0x00, 0x78, 0x03, - 0xC0, 0x2E, 0x02, 0x64, 0x46, 0x44, 0x64, 0x46, 0x64, 0xC1, 0xF0, 0x08, - 0x00, 0x80, 0x00, 0x08, 0x0F, 0x0C, 0x0C, 0x7C, 0x0C, 0x22, 0x06, 0x12, - 0x06, 0x09, 0x03, 0x09, 0x01, 0x84, 0x80, 0xC4, 0x8F, 0x3C, 0x4C, 0x40, - 0x4C, 0x20, 0x4E, 0x10, 0x26, 0x08, 0x23, 0x08, 0x11, 0x84, 0x10, 0xC4, - 0x08, 0x3C, 0x00, 0x00, 0xE0, 0x02, 0x60, 0x0C, 0xC0, 0x19, 0x80, 0x36, - 0x00, 0x70, 0x00, 0xC0, 0x07, 0x9F, 0x33, 0x08, 0xC3, 0x13, 0x06, 0x46, - 0x0D, 0x0C, 0x0C, 0x18, 0x1C, 0x1C, 0x5C, 0x9F, 0x1E, 0xFA, 0xA0, 0x02, - 0x08, 0x20, 0xC3, 0x06, 0x18, 0x30, 0xE1, 0x83, 0x06, 0x0C, 0x18, 0x30, - 0x60, 0x40, 0x80, 0x81, 0x00, 0x08, 0x10, 0x10, 0x20, 0x40, 0xC1, 0x83, - 0x06, 0x0C, 0x18, 0x70, 0xC1, 0x83, 0x0C, 0x10, 0x41, 0x04, 0x00, 0x18, - 0x18, 0x18, 0x93, 0x74, 0x38, 0xD7, 0x93, 0x18, 0x18, 0x04, 0x00, 0x80, - 0x10, 0x02, 0x00, 0x41, 0xFF, 0xC1, 0x00, 0x20, 0x04, 0x00, 0x80, 0x10, - 0x00, 0x6C, 0x95, 0x00, 0xF8, 0xFC, 0x00, 0x40, 0x18, 0x02, 0x00, 0xC0, - 0x30, 0x06, 0x01, 0x80, 0x20, 0x0C, 0x01, 0x00, 0x60, 0x18, 0x03, 0x00, - 0xC0, 0x10, 0x06, 0x00, 0x07, 0x81, 0x98, 0x61, 0x18, 0x33, 0x06, 0xC0, - 0xD8, 0x1B, 0x03, 0xE0, 0xF8, 0x1F, 0x03, 0x60, 0x6C, 0x19, 0x83, 0x10, - 0xC3, 0x30, 0x3C, 0x00, 0x01, 0x87, 0xC0, 0xC0, 0x60, 0x30, 0x18, 0x18, - 0x0C, 0x06, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, 0xFE, 0x00, - 0x0F, 0x0C, 0x64, 0x0C, 0x03, 0x00, 0xC0, 0x20, 0x18, 0x0C, 0x02, 0x01, - 0x00, 0x80, 0x40, 0x20, 0x10, 0x2F, 0xF0, 0x07, 0x86, 0x30, 0x0C, 0x03, - 0x01, 0x81, 0x81, 0xF0, 0x1E, 0x03, 0x80, 0x60, 0x18, 0x06, 0x01, 0x00, - 0xCC, 0x63, 0xE0, 0x00, 0x20, 0x0C, 0x03, 0x80, 0xA0, 0x2C, 0x09, 0x82, - 0x30, 0x84, 0x31, 0x8C, 0x33, 0x06, 0x7F, 0xE0, 0x30, 0x06, 0x00, 0x80, - 0x30, 0x03, 0xE1, 0x80, 0x20, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x06, - 0x00, 0xC0, 0x18, 0x03, 0x00, 0x40, 0x18, 0x02, 0x30, 0x87, 0xE0, 0x00, - 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x03, 0x80, 0x7F, 0x07, 0x18, 0x60, - 0xCE, 0x0C, 0xC0, 0xCC, 0x0C, 0xC0, 0xCC, 0x18, 0x41, 0x86, 0x30, 0x3E, - 0x00, 0x7F, 0xF0, 0x18, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x01, 0x80, 0x30, - 0x0C, 0x01, 0x00, 0x60, 0x08, 0x03, 0x00, 0xC0, 0x10, 0x06, 0x00, 0x0F, - 0x83, 0x18, 0xC1, 0x98, 0x33, 0x06, 0x71, 0x87, 0x60, 0x70, 0x17, 0x0C, - 0x71, 0x07, 0x60, 0x6C, 0x0D, 0x81, 0xB0, 0x63, 0x1C, 0x3E, 0x00, 0x07, - 0x83, 0x18, 0xC1, 0x18, 0x36, 0x06, 0xC0, 0xD8, 0x1B, 0x07, 0x60, 0xE6, - 0x38, 0x7F, 0x00, 0xC0, 0x30, 0x0C, 0x07, 0x03, 0xC0, 0xC0, 0x00, 0x33, - 0x30, 0x00, 0x00, 0xCC, 0xC0, 0x18, 0xC6, 0x00, 0x00, 0x00, 0x03, 0x18, - 0x44, 0x40, 0x00, 0x00, 0x03, 0x00, 0xF0, 0x38, 0x1E, 0x07, 0x80, 0xE0, - 0x0F, 0x00, 0x1C, 0x00, 0x78, 0x01, 0xE0, 0x07, 0x00, 0x10, 0xFF, 0xF0, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x0C, 0x00, 0xF0, 0x01, - 0xC0, 0x07, 0x80, 0x1E, 0x00, 0x70, 0x0F, 0x03, 0xC1, 0xE0, 0x78, 0x0E, - 0x00, 0x80, 0x00, 0x3E, 0x21, 0x90, 0x60, 0x30, 0x38, 0x38, 0x30, 0x30, - 0x20, 0x20, 0x10, 0x00, 0x00, 0x06, 0x03, 0x01, 0x80, 0x07, 0xE0, 0x1C, - 0x18, 0x30, 0x04, 0x60, 0x02, 0x61, 0xDA, 0xC3, 0x31, 0xC6, 0x31, 0xC4, - 0x31, 0xCC, 0x31, 0xCC, 0x21, 0xCC, 0x62, 0x6C, 0xE4, 0x67, 0x38, 0x30, - 0x00, 0x1C, 0x08, 0x07, 0xF0, 0x00, 0x20, 0x00, 0xC0, 0x03, 0x80, 0x0B, - 0x00, 0x16, 0x00, 0x4E, 0x00, 0x9C, 0x02, 0x18, 0x08, 0x30, 0x1F, 0xE0, - 0x40, 0xC1, 0x81, 0xC2, 0x03, 0x8C, 0x07, 0x3C, 0x1F, 0x80, 0x1F, 0xF0, - 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x60, 0xC3, 0x03, 0xF0, - 0x1C, 0x30, 0x60, 0x61, 0x81, 0x86, 0x06, 0x38, 0x18, 0xC0, 0xC3, 0x06, - 0x3F, 0xF0, 0x01, 0xF9, 0x06, 0x0F, 0x1C, 0x06, 0x38, 0x02, 0x30, 0x02, - 0x60, 0x00, 0x60, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0xC0, 0x00, - 0xC0, 0x00, 0xC0, 0x08, 0x60, 0x10, 0x30, 0x60, 0x1F, 0x80, 0x1F, 0xF0, - 0x07, 0x0C, 0x06, 0x06, 0x06, 0x06, 0x06, 0x03, 0x0E, 0x03, 0x0C, 0x03, - 0x0C, 0x03, 0x1C, 0x03, 0x1C, 0x07, 0x18, 0x06, 0x18, 0x06, 0x38, 0x0C, - 0x30, 0x18, 0x30, 0x70, 0xFF, 0x80, 0x1F, 0xFF, 0x07, 0x07, 0x06, 0x02, - 0x06, 0x02, 0x06, 0x00, 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, - 0x18, 0x20, 0x18, 0x00, 0x18, 0x00, 0x38, 0x04, 0x30, 0x08, 0x30, 0x38, - 0xFF, 0xF8, 0x1F, 0xFF, 0x07, 0x07, 0x07, 0x02, 0x06, 0x02, 0x06, 0x00, - 0x0E, 0x10, 0x0C, 0x30, 0x0F, 0xF0, 0x1C, 0x20, 0x1C, 0x20, 0x18, 0x00, - 0x18, 0x00, 0x38, 0x00, 0x30, 0x00, 0x30, 0x00, 0xFC, 0x00, 0x01, 0xF1, - 0x06, 0x0F, 0x18, 0x07, 0x38, 0x02, 0x30, 0x02, 0x60, 0x00, 0x60, 0x00, - 0xE0, 0x00, 0xC0, 0x7F, 0xC0, 0x1C, 0xC0, 0x1C, 0xC0, 0x18, 0xC0, 0x18, - 0x60, 0x18, 0x30, 0x38, 0x0F, 0xC0, 0x1F, 0xC7, 0xE0, 0xE0, 0x70, 0x18, - 0x0E, 0x03, 0x01, 0x80, 0x60, 0x30, 0x1C, 0x0E, 0x03, 0x01, 0x80, 0x7F, - 0xF0, 0x1C, 0x06, 0x03, 0x01, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 0x81, - 0xC0, 0x60, 0x38, 0x0C, 0x06, 0x07, 0xE3, 0xF0, 0x1F, 0x83, 0x81, 0x80, - 0xC0, 0x60, 0x70, 0x30, 0x18, 0x1C, 0x0C, 0x06, 0x03, 0x03, 0x81, 0x80, - 0xC1, 0xF8, 0x03, 0xF0, 0x0C, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x18, 0x03, - 0x80, 0x30, 0x03, 0x00, 0x30, 0x07, 0x00, 0x60, 0x06, 0x0C, 0xE0, 0xCC, - 0x07, 0x80, 0x1F, 0xCF, 0x83, 0x83, 0x81, 0x81, 0x00, 0xC3, 0x00, 0x62, - 0x00, 0x72, 0x00, 0x36, 0x00, 0x1E, 0x00, 0x1D, 0x80, 0x0C, 0xE0, 0x06, - 0x30, 0x03, 0x1C, 0x03, 0x87, 0x01, 0x81, 0x80, 0xC0, 0xE1, 0xF9, 0xFC, - 0x1F, 0xC0, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x00, 0xC0, - 0x03, 0x00, 0x1C, 0x00, 0x60, 0x01, 0x80, 0x06, 0x00, 0x38, 0x0C, 0xC0, - 0x23, 0x03, 0xBF, 0xFE, 0x0F, 0x00, 0x78, 0x38, 0x07, 0x81, 0xC0, 0x38, - 0x0E, 0x02, 0xC0, 0x70, 0x3E, 0x05, 0xC1, 0x70, 0x2E, 0x13, 0x01, 0x31, - 0x98, 0x11, 0x89, 0xC0, 0x8C, 0x8C, 0x04, 0x6C, 0x60, 0x23, 0x43, 0x02, - 0x1C, 0x38, 0x10, 0xE1, 0x81, 0x86, 0x1C, 0x1F, 0x23, 0xF8, 0x1E, 0x07, - 0xC1, 0xC0, 0x60, 0x70, 0x10, 0x1C, 0x0C, 0x05, 0x82, 0x02, 0x60, 0x80, - 0x9C, 0x60, 0x23, 0x10, 0x10, 0xC4, 0x04, 0x19, 0x01, 0x06, 0xC0, 0x40, - 0xE0, 0x20, 0x38, 0x08, 0x0E, 0x06, 0x01, 0x03, 0xE0, 0x40, 0x01, 0xF0, - 0x0C, 0x10, 0x30, 0x10, 0xC0, 0x33, 0x00, 0x6E, 0x00, 0xD8, 0x01, 0xF0, - 0x03, 0xC0, 0x0D, 0x80, 0x1B, 0x00, 0x76, 0x00, 0xCC, 0x03, 0x08, 0x0C, - 0x18, 0x70, 0x0F, 0x80, 0x1F, 0xF0, 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, - 0x0C, 0x38, 0x30, 0xC1, 0x83, 0x0E, 0x1F, 0xE0, 0x60, 0x01, 0x80, 0x06, - 0x00, 0x38, 0x00, 0xC0, 0x03, 0x00, 0x3F, 0x00, 0x01, 0xF0, 0x06, 0x10, - 0x30, 0x30, 0xC0, 0x33, 0x00, 0x66, 0x00, 0xD8, 0x01, 0xB0, 0x03, 0xE0, - 0x0F, 0x80, 0x1B, 0x00, 0x36, 0x00, 0xCC, 0x03, 0x98, 0x06, 0x18, 0x18, - 0x18, 0xC0, 0x0E, 0x00, 0x20, 0x01, 0xF8, 0x36, 0x7F, 0x80, 0x1F, 0xF0, - 0x1C, 0x60, 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x38, 0x70, 0xC3, 0x83, 0xF8, - 0x1D, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x18, 0x38, 0x60, 0xC1, 0xC3, 0x03, - 0x3F, 0x0F, 0x07, 0x90, 0xC7, 0x18, 0x21, 0x82, 0x18, 0x01, 0xC0, 0x0E, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xC4, 0x0C, 0x40, 0xC6, 0x08, 0xE1, - 0x89, 0xE0, 0x7F, 0xFE, 0xC7, 0x1D, 0x0C, 0x14, 0x18, 0x20, 0x70, 0x00, - 0xE0, 0x01, 0x80, 0x03, 0x00, 0x0E, 0x00, 0x18, 0x00, 0x30, 0x00, 0x60, - 0x01, 0xC0, 0x03, 0x00, 0x0E, 0x00, 0x7F, 0x80, 0x7E, 0x1F, 0x38, 0x0C, - 0x38, 0x0C, 0x30, 0x08, 0x30, 0x08, 0x70, 0x08, 0x70, 0x10, 0x60, 0x10, - 0x60, 0x10, 0xE0, 0x10, 0xC0, 0x20, 0xC0, 0x20, 0xC0, 0x60, 0xC0, 0x40, - 0x61, 0x80, 0x3F, 0x00, 0xFC, 0x3E, 0xE0, 0x18, 0xC0, 0x21, 0x80, 0xC3, - 0x81, 0x07, 0x04, 0x0E, 0x08, 0x0C, 0x20, 0x18, 0x80, 0x31, 0x00, 0x64, - 0x00, 0xF0, 0x01, 0xE0, 0x01, 0x80, 0x02, 0x00, 0x04, 0x00, 0xFD, 0xF8, - 0xF7, 0x07, 0x06, 0x30, 0x60, 0x63, 0x07, 0x04, 0x30, 0x70, 0x83, 0x8F, - 0x08, 0x38, 0xB1, 0x03, 0x93, 0x10, 0x19, 0x32, 0x01, 0xA3, 0x20, 0x1A, - 0x34, 0x01, 0xC3, 0x40, 0x1C, 0x38, 0x01, 0x83, 0x00, 0x18, 0x30, 0x01, - 0x02, 0x00, 0x1F, 0x9F, 0x0E, 0x06, 0x06, 0x04, 0x07, 0x08, 0x03, 0x10, - 0x03, 0x20, 0x03, 0xC0, 0x01, 0x80, 0x01, 0xC0, 0x03, 0xC0, 0x06, 0xE0, - 0x0C, 0x60, 0x18, 0x60, 0x30, 0x70, 0x70, 0x78, 0xF8, 0xFC, 0xFC, 0xFB, - 0x81, 0x8C, 0x08, 0x60, 0x83, 0x8C, 0x0C, 0xC0, 0x64, 0x03, 0xC0, 0x0C, - 0x00, 0xE0, 0x07, 0x00, 0x30, 0x01, 0x80, 0x1C, 0x00, 0xC0, 0x1F, 0xC0, - 0x1F, 0xFE, 0x30, 0x38, 0xC0, 0xF1, 0x01, 0xC0, 0x07, 0x00, 0x1C, 0x00, - 0x70, 0x01, 0xE0, 0x03, 0x80, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x01, 0xC0, - 0x47, 0x01, 0x1C, 0x06, 0x7F, 0xF8, 0x07, 0x04, 0x08, 0x08, 0x08, 0x18, - 0x10, 0x10, 0x10, 0x20, 0x20, 0x20, 0x20, 0x40, 0x40, 0x40, 0x80, 0x80, - 0x80, 0xE0, 0xC0, 0xC0, 0x40, 0x60, 0x20, 0x30, 0x30, 0x18, 0x18, 0x08, - 0x0C, 0x04, 0x06, 0x06, 0x03, 0x03, 0x0E, 0x04, 0x08, 0x10, 0x60, 0x81, - 0x02, 0x04, 0x18, 0x20, 0x40, 0x81, 0x02, 0x08, 0x10, 0x20, 0x47, 0x80, - 0x0C, 0x03, 0x81, 0xE0, 0x4C, 0x33, 0x08, 0x66, 0x19, 0x03, 0xC0, 0xC0, - 0xFF, 0xF0, 0xCE, 0x63, 0x07, 0xA0, 0xCE, 0x18, 0x63, 0x04, 0x60, 0xC6, - 0x0C, 0xC0, 0xCC, 0x18, 0xC3, 0x8C, 0x5A, 0x79, 0xC0, 0x38, 0x06, 0x01, - 0x80, 0x40, 0x30, 0x0C, 0xE3, 0xCC, 0xC3, 0x70, 0xD8, 0x36, 0x19, 0x06, - 0xC3, 0x30, 0x8C, 0xC3, 0xE0, 0x0F, 0x0C, 0xCC, 0x6C, 0x06, 0x06, 0x03, - 0x01, 0x80, 0xC0, 0x73, 0x1E, 0x00, 0x00, 0x70, 0x01, 0x80, 0x0C, 0x00, - 0x60, 0x02, 0x03, 0xF0, 0x31, 0x83, 0x08, 0x30, 0xC3, 0x06, 0x18, 0x31, - 0x81, 0x8C, 0x18, 0x61, 0xCB, 0x16, 0x8F, 0x38, 0x07, 0x19, 0x31, 0x63, - 0x62, 0xEC, 0xD0, 0xC0, 0xC0, 0xE6, 0x78, 0x00, 0x38, 0x01, 0x30, 0x0C, - 0x00, 0x20, 0x01, 0x80, 0x06, 0x00, 0xFE, 0x00, 0x40, 0x03, 0x00, 0x0C, - 0x00, 0x30, 0x00, 0x80, 0x06, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x04, - 0x00, 0x30, 0x00, 0xC0, 0x02, 0x00, 0x90, 0x03, 0x80, 0x00, 0x07, 0xC0, - 0xC7, 0x18, 0x61, 0x86, 0x18, 0xE1, 0x8C, 0x07, 0x80, 0x80, 0x1C, 0x00, - 0xF0, 0x33, 0x84, 0x18, 0x80, 0x88, 0x08, 0x61, 0x03, 0xE0, 0x1C, 0x00, - 0xC0, 0x0C, 0x00, 0xC0, 0x18, 0x01, 0x8E, 0x1B, 0x61, 0xC6, 0x38, 0x63, - 0x8C, 0x30, 0xC3, 0x0C, 0x60, 0xC6, 0x1A, 0x61, 0xA4, 0x1C, 0x18, 0xC6, - 0x00, 0x0B, 0xC6, 0x23, 0x18, 0x8C, 0x63, 0x5C, 0x01, 0x80, 0xC0, 0x60, - 0x00, 0x00, 0x0C, 0x1E, 0x02, 0x03, 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, - 0x18, 0x08, 0x0C, 0x06, 0x02, 0x1B, 0x0F, 0x00, 0x1C, 0x01, 0x80, 0x30, - 0x06, 0x01, 0x80, 0x33, 0xC6, 0x30, 0x88, 0x32, 0x06, 0x80, 0xF0, 0x1B, - 0x06, 0x60, 0xC4, 0x18, 0xD2, 0x0C, 0x3C, 0x61, 0x86, 0x18, 0xC3, 0x0C, - 0x21, 0x86, 0x18, 0x43, 0x2D, 0x38, 0x78, 0xE7, 0x0D, 0xB5, 0x8D, 0x1C, - 0xC7, 0x0C, 0x63, 0x8E, 0x31, 0x86, 0x30, 0xC3, 0x18, 0xC1, 0x0C, 0x61, - 0x84, 0xB0, 0xC6, 0xB0, 0x63, 0x80, 0x78, 0xE1, 0xB6, 0x14, 0x63, 0x84, - 0x38, 0xC3, 0x0C, 0x70, 0x86, 0x18, 0x61, 0x96, 0x1A, 0xC1, 0xC0, 0x0F, - 0x06, 0x63, 0x0D, 0x83, 0x60, 0xF0, 0x3C, 0x1B, 0x06, 0xC3, 0x39, 0x87, - 0x80, 0x1E, 0xF0, 0x39, 0xC1, 0x86, 0x0C, 0x30, 0xC1, 0x86, 0x0C, 0x30, - 0xC3, 0x06, 0x18, 0x60, 0xC6, 0x07, 0xC0, 0x60, 0x03, 0x00, 0x18, 0x00, - 0xC0, 0x1F, 0x00, 0x07, 0x81, 0x9C, 0x63, 0x98, 0x76, 0x0C, 0xC1, 0xB0, - 0x76, 0x0E, 0xC3, 0x98, 0xB1, 0xE6, 0x00, 0x80, 0x30, 0x06, 0x00, 0xC0, - 0xFC, 0x79, 0x8F, 0xC5, 0x07, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x60, 0x30, - 0x10, 0x00, 0x1E, 0x98, 0xCC, 0x27, 0x11, 0x80, 0xE0, 0x39, 0x0C, 0x86, - 0x62, 0x2E, 0x00, 0x08, 0x67, 0xCC, 0x30, 0xC6, 0x18, 0x61, 0x8C, 0x34, - 0xE0, 0xF0, 0xCC, 0x19, 0x83, 0x30, 0xC6, 0x18, 0x87, 0x31, 0x66, 0x3C, - 0xCB, 0x1A, 0x6B, 0x8E, 0x00, 0x70, 0xCC, 0x33, 0x04, 0xC2, 0x18, 0x86, - 0x41, 0x90, 0x68, 0x1C, 0x06, 0x01, 0x00, 0x61, 0x0F, 0x84, 0x36, 0x30, - 0xDC, 0xC1, 0x35, 0x08, 0xD4, 0x23, 0x91, 0x0E, 0x48, 0x30, 0xE0, 0xC3, - 0x02, 0x08, 0x00, 0x0C, 0x63, 0x4A, 0x07, 0x00, 0x70, 0x06, 0x00, 0x20, - 0x07, 0x00, 0xB0, 0x0B, 0x21, 0x14, 0xE1, 0x80, 0x38, 0x63, 0x0C, 0x30, - 0x86, 0x10, 0xC4, 0x0C, 0x81, 0xA0, 0x34, 0x07, 0x00, 0x60, 0x08, 0x02, - 0x00, 0x40, 0x10, 0x04, 0x07, 0x00, 0x1F, 0x90, 0x80, 0x80, 0xC0, 0xC0, - 0x40, 0x60, 0x60, 0x60, 0x38, 0x3E, 0x03, 0xA0, 0x60, 0x00, 0x83, 0x81, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x10, 0x10, 0x1C, 0x06, 0x03, 0x03, - 0x01, 0x80, 0xC0, 0x40, 0x60, 0x30, 0x18, 0x07, 0x00, 0xFF, 0xFF, 0x07, - 0x00, 0xC0, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x03, 0x01, 0x80, - 0x60, 0x40, 0x60, 0x30, 0x10, 0x18, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x78, - 0x18, 0x8C, 0x0F, 0x00 }; - -const GFXglyph FreeSerifItalic12pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 6, 16, 8, 1, -15 }, // 0x21 '!' - { 12, 7, 6, 8, 3, -15 }, // 0x22 '"' - { 18, 13, 16, 12, 0, -15 }, // 0x23 '#' - { 44, 12, 20, 12, 0, -17 }, // 0x24 '$' - { 74, 17, 17, 20, 2, -16 }, // 0x25 '%' - { 111, 15, 16, 19, 2, -15 }, // 0x26 '&' - { 141, 2, 6, 5, 4, -15 }, // 0x27 ''' - { 143, 7, 20, 8, 1, -15 }, // 0x28 '(' - { 161, 7, 20, 8, 0, -15 }, // 0x29 ')' - { 179, 8, 10, 12, 4, -15 }, // 0x2A '*' - { 189, 11, 11, 16, 2, -10 }, // 0x2B '+' - { 205, 3, 6, 6, 0, -2 }, // 0x2C ',' - { 208, 5, 1, 8, 1, -5 }, // 0x2D '-' - { 209, 2, 3, 6, 1, -2 }, // 0x2E '.' - { 210, 11, 16, 7, 0, -15 }, // 0x2F '/' - { 232, 11, 17, 12, 1, -16 }, // 0x30 '0' - { 256, 9, 17, 12, 1, -16 }, // 0x31 '1' - { 276, 10, 15, 12, 1, -14 }, // 0x32 '2' - { 295, 10, 16, 12, 1, -15 }, // 0x33 '3' - { 315, 11, 16, 12, 0, -15 }, // 0x34 '4' - { 337, 11, 16, 12, 0, -15 }, // 0x35 '5' - { 359, 12, 17, 12, 1, -16 }, // 0x36 '6' - { 385, 11, 16, 12, 2, -15 }, // 0x37 '7' - { 407, 11, 17, 12, 1, -16 }, // 0x38 '8' - { 431, 11, 17, 12, 1, -16 }, // 0x39 '9' - { 455, 4, 11, 6, 1, -10 }, // 0x3A ':' - { 461, 5, 14, 6, 0, -10 }, // 0x3B ';' - { 470, 12, 13, 14, 1, -12 }, // 0x3C '<' - { 490, 12, 6, 16, 2, -8 }, // 0x3D '=' - { 499, 12, 13, 14, 2, -12 }, // 0x3E '>' - { 519, 9, 16, 11, 3, -15 }, // 0x3F '?' - { 537, 16, 16, 19, 2, -15 }, // 0x40 '@' - { 569, 15, 15, 16, 0, -14 }, // 0x41 'A' - { 598, 14, 16, 14, 0, -15 }, // 0x42 'B' - { 626, 16, 16, 15, 1, -15 }, // 0x43 'C' - { 658, 16, 16, 17, 0, -15 }, // 0x44 'D' - { 690, 16, 16, 14, 0, -15 }, // 0x45 'E' - { 722, 16, 16, 14, 0, -15 }, // 0x46 'F' - { 754, 16, 16, 17, 1, -15 }, // 0x47 'G' - { 786, 19, 16, 17, 0, -15 }, // 0x48 'H' - { 824, 9, 16, 8, 0, -15 }, // 0x49 'I' - { 842, 12, 16, 10, 0, -15 }, // 0x4A 'J' - { 866, 17, 16, 15, 0, -15 }, // 0x4B 'K' - { 900, 14, 16, 14, 0, -15 }, // 0x4C 'L' - { 928, 21, 16, 20, 0, -15 }, // 0x4D 'M' - { 970, 18, 16, 16, 0, -15 }, // 0x4E 'N' - { 1006, 15, 16, 16, 1, -15 }, // 0x4F 'O' - { 1036, 14, 16, 14, 0, -15 }, // 0x50 'P' - { 1064, 15, 20, 16, 1, -15 }, // 0x51 'Q' - { 1102, 14, 16, 15, 0, -15 }, // 0x52 'R' - { 1130, 12, 16, 11, 0, -15 }, // 0x53 'S' - { 1154, 15, 16, 14, 2, -15 }, // 0x54 'T' - { 1184, 16, 16, 17, 3, -15 }, // 0x55 'U' - { 1216, 15, 16, 16, 3, -15 }, // 0x56 'V' - { 1246, 20, 16, 21, 3, -15 }, // 0x57 'W' - { 1286, 16, 16, 16, 0, -15 }, // 0x58 'X' - { 1318, 13, 16, 14, 3, -15 }, // 0x59 'Y' - { 1344, 15, 16, 14, 0, -15 }, // 0x5A 'Z' - { 1374, 8, 20, 9, 1, -15 }, // 0x5B '[' - { 1394, 8, 16, 12, 3, -15 }, // 0x5C '\' - { 1410, 7, 20, 9, 1, -15 }, // 0x5D ']' - { 1428, 10, 9, 10, 0, -15 }, // 0x5E '^' - { 1440, 12, 1, 12, 0, 3 }, // 0x5F '_' - { 1442, 4, 4, 6, 3, -15 }, // 0x60 '`' - { 1444, 12, 11, 12, 0, -10 }, // 0x61 'a' - { 1461, 10, 16, 11, 1, -15 }, // 0x62 'b' - { 1481, 9, 11, 10, 1, -10 }, // 0x63 'c' - { 1494, 13, 16, 12, 0, -15 }, // 0x64 'd' - { 1520, 8, 11, 10, 1, -10 }, // 0x65 'e' - { 1531, 14, 22, 10, -2, -16 }, // 0x66 'f' - { 1570, 12, 16, 11, -1, -10 }, // 0x67 'g' - { 1594, 12, 16, 12, 0, -15 }, // 0x68 'h' - { 1618, 5, 16, 6, 1, -15 }, // 0x69 'i' - { 1628, 9, 21, 7, -2, -15 }, // 0x6A 'j' - { 1652, 11, 16, 11, 0, -15 }, // 0x6B 'k' - { 1674, 6, 16, 6, 1, -15 }, // 0x6C 'l' - { 1686, 17, 11, 17, 0, -10 }, // 0x6D 'm' - { 1710, 12, 11, 12, 0, -10 }, // 0x6E 'n' - { 1727, 10, 11, 11, 1, -10 }, // 0x6F 'o' - { 1741, 13, 16, 11, -2, -10 }, // 0x70 'p' - { 1767, 11, 16, 12, 0, -10 }, // 0x71 'q' - { 1789, 9, 11, 9, 0, -10 }, // 0x72 'r' - { 1802, 9, 11, 8, 0, -10 }, // 0x73 's' - { 1815, 6, 13, 6, 1, -12 }, // 0x74 't' - { 1825, 11, 11, 12, 1, -10 }, // 0x75 'u' - { 1841, 10, 11, 11, 1, -10 }, // 0x76 'v' - { 1855, 14, 11, 16, 2, -10 }, // 0x77 'w' - { 1875, 12, 11, 10, -1, -10 }, // 0x78 'x' - { 1892, 11, 16, 11, 0, -10 }, // 0x79 'y' - { 1914, 9, 13, 9, 0, -10 }, // 0x7A 'z' - { 1929, 9, 21, 10, 1, -16 }, // 0x7B '{' - { 1953, 1, 16, 7, 3, -15 }, // 0x7C '|' - { 1955, 9, 21, 10, 0, -16 }, // 0x7D '}' - { 1979, 11, 3, 13, 1, -6 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic12pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic12pt7bBitmaps, - (GFXglyph *)FreeSerifItalic12pt7bGlyphs, - 0x20, 0x7E, 29 }; - -// Approx. 2656 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h deleted file mode 100644 index 666ae7eb2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h +++ /dev/null @@ -1,450 +0,0 @@ -const uint8_t FreeSerifItalic18pt7bBitmaps[] PROGMEM = { - 0x01, 0xC0, 0xF0, 0x3C, 0x0F, 0x03, 0x81, 0xE0, 0x70, 0x1C, 0x06, 0x01, - 0x80, 0xC0, 0x30, 0x0C, 0x02, 0x01, 0x80, 0x40, 0x10, 0x00, 0x00, 0x01, - 0x80, 0xF0, 0x3C, 0x06, 0x00, 0x38, 0x77, 0x8F, 0x78, 0xF7, 0x0E, 0x60, - 0xE6, 0x0C, 0xC1, 0x8C, 0x18, 0x81, 0x00, 0x00, 0x60, 0xC0, 0x0C, 0x38, - 0x03, 0x86, 0x00, 0x60, 0xC0, 0x0C, 0x38, 0x03, 0x06, 0x00, 0x60, 0xC0, - 0xFF, 0xFF, 0x1F, 0xFF, 0xE0, 0x61, 0xC0, 0x1C, 0x30, 0x03, 0x06, 0x00, - 0x61, 0xC0, 0x18, 0x30, 0x3F, 0xFF, 0xC7, 0xFF, 0xF8, 0x18, 0x30, 0x03, - 0x0E, 0x00, 0xE1, 0x80, 0x18, 0x30, 0x03, 0x0C, 0x00, 0xC1, 0x80, 0x18, - 0x70, 0x00, 0x00, 0x08, 0x00, 0x30, 0x00, 0x40, 0x0F, 0xC0, 0x61, 0xE1, - 0x86, 0xC6, 0x0D, 0x8C, 0x1A, 0x18, 0x24, 0x38, 0xC0, 0x39, 0x80, 0x7F, - 0x00, 0x7E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0xDC, 0x03, 0x38, - 0x06, 0x32, 0x0C, 0x64, 0x18, 0xDC, 0x71, 0xB8, 0xC6, 0x39, 0x8C, 0x3F, - 0x30, 0x1F, 0x80, 0x18, 0x00, 0x30, 0x00, 0x60, 0x00, 0x07, 0x80, 0x60, - 0x0F, 0xE0, 0xE0, 0x0F, 0x0F, 0xB0, 0x0E, 0x04, 0x30, 0x07, 0x02, 0x18, - 0x07, 0x01, 0x18, 0x03, 0x00, 0x8C, 0x01, 0x80, 0x8C, 0x00, 0xC0, 0x4C, - 0x00, 0x60, 0x66, 0x1F, 0x30, 0x66, 0x1F, 0xCC, 0x63, 0x1C, 0x67, 0xE3, - 0x1C, 0x19, 0xE1, 0x1C, 0x04, 0x01, 0x8C, 0x02, 0x00, 0x8E, 0x01, 0x00, - 0xC7, 0x00, 0x80, 0xC3, 0x00, 0x80, 0x61, 0x80, 0xC0, 0x60, 0xC0, 0xC0, - 0x20, 0x70, 0xE0, 0x30, 0x1F, 0xC0, 0x10, 0x07, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xFC, 0x00, 0x07, 0x18, 0x00, 0x18, 0x60, 0x00, 0xE1, 0x80, 0x03, - 0x8C, 0x00, 0x0E, 0x60, 0x00, 0x3B, 0x00, 0x00, 0xF0, 0x00, 0x07, 0x80, - 0x00, 0x7F, 0x1F, 0xC3, 0x3C, 0x1C, 0x38, 0x70, 0x61, 0xE1, 0xE3, 0x87, - 0x07, 0x8C, 0x3C, 0x0F, 0x60, 0xF0, 0x3D, 0x03, 0xC0, 0x78, 0x0F, 0x01, - 0xE0, 0x3E, 0x07, 0xC0, 0x7C, 0x77, 0x84, 0xFF, 0x8F, 0xE1, 0xF8, 0x0F, - 0x00, 0x3B, 0xDE, 0xE7, 0x33, 0x18, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, - 0xC0, 0xC0, 0xE0, 0x60, 0x70, 0x38, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x01, - 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x01, 0x00, 0x80, 0x40, 0x30, - 0x08, 0x04, 0x02, 0x00, 0x04, 0x01, 0x00, 0x80, 0x60, 0x10, 0x08, 0x04, - 0x03, 0x01, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x0E, 0x07, 0x03, 0x81, - 0x80, 0xC0, 0xE0, 0x60, 0x30, 0x30, 0x18, 0x18, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x06, 0x00, 0x60, 0x06, 0x0C, 0x43, 0xE4, 0xF1, 0x58, 0x0E, 0x00, - 0xF0, 0x74, 0xEE, 0x47, 0xC4, 0x30, 0x60, 0x06, 0x00, 0x60, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0xFF, 0xFF, 0xFF, 0xFF, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, - 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x80, 0x31, 0xCE, - 0x31, 0x08, 0x98, 0xFF, 0xFF, 0x6F, 0xF6, 0x00, 0x06, 0x00, 0x0E, 0x00, - 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, - 0xE0, 0x00, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, 0x07, 0x00, 0x06, - 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, - 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, 0x78, 0x00, 0xC3, 0x00, 0xC1, 0xC0, - 0xC0, 0x60, 0xE0, 0x30, 0xE0, 0x1C, 0x70, 0x0E, 0x70, 0x07, 0x38, 0x03, - 0xBC, 0x01, 0xDC, 0x01, 0xEE, 0x00, 0xFF, 0x00, 0x7F, 0x80, 0x3B, 0x80, - 0x1D, 0xC0, 0x1E, 0xE0, 0x0E, 0x70, 0x0F, 0x38, 0x07, 0x1C, 0x07, 0x06, - 0x03, 0x83, 0x83, 0x80, 0xC3, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x7F, 0x00, - 0x70, 0x07, 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0E, 0x01, 0xC0, 0x1C, 0x01, - 0xC0, 0x38, 0x03, 0x80, 0x38, 0x03, 0x80, 0x70, 0x07, 0x00, 0x70, 0x0E, - 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x1E, 0x0F, 0xF8, 0x01, 0xF0, 0x07, 0xFC, - 0x0C, 0x3E, 0x10, 0x1F, 0x20, 0x0F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F, - 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x38, 0x00, 0x30, 0x00, 0x70, 0x00, 0xE0, - 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x38, 0x04, - 0x30, 0x0C, 0x7F, 0xF8, 0xFF, 0xF0, 0x00, 0x7C, 0x00, 0xFF, 0x00, 0xC3, - 0xC0, 0x80, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1C, 0x00, - 0x38, 0x00, 0xF0, 0x03, 0xFC, 0x00, 0x1F, 0x00, 0x03, 0xC0, 0x01, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, - 0x00, 0x03, 0x07, 0x87, 0x03, 0xFF, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x80, - 0x01, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xB0, 0x01, 0xB8, - 0x01, 0x9C, 0x01, 0x8C, 0x00, 0x86, 0x00, 0x87, 0x00, 0x83, 0x80, 0x81, - 0x80, 0x81, 0xC0, 0xC0, 0xE0, 0xC0, 0x70, 0xFF, 0xFF, 0x7F, 0xFF, 0x00, - 0x1C, 0x00, 0x0C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0x80, - 0x01, 0xFF, 0x01, 0xFF, 0x02, 0x00, 0x02, 0x00, 0x06, 0x00, 0x07, 0x00, - 0x0F, 0xC0, 0x0F, 0xF0, 0x00, 0xF8, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, - 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x0C, 0x00, 0x08, 0x00, 0x18, - 0x00, 0x30, 0x00, 0x30, 0x70, 0xE0, 0xFF, 0x80, 0x7E, 0x00, 0x00, 0x03, - 0x80, 0x1F, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x38, - 0x00, 0x3C, 0x00, 0x3D, 0xF0, 0x1F, 0xFE, 0x1F, 0x0F, 0x8E, 0x03, 0xC7, - 0x00, 0xF7, 0x00, 0x7B, 0x80, 0x3D, 0x80, 0x1E, 0xC0, 0x0F, 0x60, 0x0F, - 0xB0, 0x07, 0x98, 0x03, 0xC4, 0x03, 0xC3, 0x03, 0xC0, 0xC3, 0x80, 0x1F, - 0x00, 0x3F, 0xFF, 0x7F, 0xFE, 0x40, 0x0E, 0x80, 0x0C, 0x00, 0x18, 0x00, - 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xC0, 0x01, 0xC0, 0x01, - 0x80, 0x03, 0x80, 0x03, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, - 0x00, 0x18, 0x00, 0x30, 0x00, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0x00, - 0xF8, 0x03, 0x0E, 0x06, 0x06, 0x0C, 0x03, 0x0C, 0x03, 0x0C, 0x03, 0x0C, - 0x03, 0x0E, 0x06, 0x07, 0x8E, 0x07, 0xD8, 0x03, 0xE0, 0x07, 0xF0, 0x1C, - 0xF8, 0x30, 0x3C, 0x60, 0x1C, 0x60, 0x0E, 0xC0, 0x06, 0xC0, 0x06, 0xC0, - 0x06, 0xC0, 0x06, 0xE0, 0x0C, 0x60, 0x18, 0x38, 0x30, 0x0F, 0xC0, 0x01, - 0xF8, 0x07, 0x8C, 0x0E, 0x06, 0x1E, 0x02, 0x3C, 0x03, 0x3C, 0x03, 0x78, - 0x03, 0x78, 0x03, 0x78, 0x03, 0x78, 0x07, 0x78, 0x07, 0x78, 0x07, 0x3C, - 0x0E, 0x3E, 0x1E, 0x1F, 0xEE, 0x07, 0x9C, 0x00, 0x38, 0x00, 0x78, 0x00, - 0x70, 0x01, 0xE0, 0x03, 0xC0, 0x0F, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x0C, - 0x3C, 0x78, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1E, 0x18, - 0x00, 0x07, 0x03, 0xC1, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x03, 0x81, 0xC0, 0xE0, 0x30, 0x10, 0x10, 0x10, 0x00, 0x00, - 0x00, 0x00, 0xC0, 0x01, 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, - 0xF0, 0x03, 0xF0, 0x03, 0xF0, 0x00, 0xF0, 0x00, 0x3E, 0x00, 0x07, 0xE0, - 0x00, 0x7E, 0x00, 0x03, 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xF0, 0x00, 0x3F, - 0x00, 0x03, 0xC0, 0x00, 0x10, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xFF, - 0xFF, 0xC0, 0xC0, 0x00, 0x3C, 0x00, 0x07, 0xE0, 0x00, 0x7E, 0x00, 0x07, - 0xE0, 0x00, 0x3E, 0x00, 0x03, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xC0, 0x01, - 0xF0, 0x01, 0xF8, 0x01, 0xF8, 0x01, 0xF0, 0x01, 0xF0, 0x03, 0xF0, 0x03, - 0xF0, 0x00, 0xF0, 0x00, 0x20, 0x00, 0x00, 0x0F, 0x81, 0x86, 0x30, 0x33, - 0x03, 0x30, 0x30, 0x03, 0x00, 0x60, 0x0E, 0x01, 0xC0, 0x38, 0x06, 0x00, - 0xC0, 0x08, 0x01, 0x00, 0x10, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0xF0, 0x0F, 0x00, 0x60, 0x00, 0x00, 0x7F, 0x00, 0x03, 0xFF, 0xE0, - 0x07, 0x80, 0xF0, 0x0E, 0x00, 0x38, 0x1C, 0x00, 0x0C, 0x38, 0x0E, 0x06, - 0x70, 0x3F, 0xE2, 0x70, 0x71, 0xE3, 0xF0, 0x60, 0xE1, 0xE0, 0xC0, 0xC1, - 0xE0, 0xC0, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0xC1, 0xE1, 0x81, 0x82, - 0xE1, 0x83, 0x82, 0x71, 0x83, 0x86, 0x71, 0xC7, 0x8C, 0x38, 0xF9, 0xF8, - 0x3C, 0xF0, 0xF0, 0x1E, 0x00, 0x00, 0x0F, 0x80, 0x30, 0x03, 0xFF, 0xE0, - 0x00, 0x7F, 0x00, 0x00, 0x03, 0x00, 0x00, 0x18, 0x00, 0x01, 0xC0, 0x00, - 0x1E, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x5E, 0x00, 0x04, 0xF0, - 0x00, 0x63, 0x80, 0x02, 0x1C, 0x00, 0x20, 0xE0, 0x01, 0x07, 0x00, 0x10, - 0x3C, 0x01, 0xFF, 0xE0, 0x0F, 0xFF, 0x00, 0xC0, 0x38, 0x04, 0x01, 0xC0, - 0x60, 0x0E, 0x06, 0x00, 0x78, 0x30, 0x03, 0xC3, 0x00, 0x1E, 0x38, 0x00, - 0xFB, 0xF0, 0x1F, 0xE0, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, - 0x03, 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, - 0x1E, 0x03, 0x83, 0xE0, 0x1F, 0xF8, 0x01, 0xFF, 0xC0, 0x0F, 0x0F, 0x00, - 0x70, 0x3C, 0x03, 0x80, 0xF0, 0x3C, 0x07, 0x81, 0xC0, 0x3C, 0x0E, 0x01, - 0xE0, 0xF0, 0x0F, 0x07, 0x80, 0xF0, 0x38, 0x0F, 0x81, 0xC1, 0xF8, 0x1F, - 0xFF, 0x83, 0xFF, 0xE0, 0x00, 0x00, 0x3F, 0x08, 0x07, 0xFF, 0xC0, 0xF8, - 0x3E, 0x0F, 0x00, 0x70, 0xF0, 0x03, 0x8F, 0x00, 0x08, 0xF0, 0x00, 0x47, - 0x80, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x01, 0xE0, 0x00, - 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xF0, - 0x00, 0x03, 0x80, 0x02, 0x1E, 0x00, 0x20, 0x78, 0x02, 0x03, 0xE0, 0x60, - 0x07, 0xFE, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, 0xFF, 0xFC, - 0x00, 0x78, 0x1F, 0x00, 0x3C, 0x03, 0xC0, 0x1E, 0x00, 0xF0, 0x0E, 0x00, - 0x78, 0x07, 0x00, 0x1E, 0x07, 0x80, 0x0F, 0x03, 0x80, 0x07, 0x81, 0xC0, - 0x03, 0xC1, 0xE0, 0x01, 0xE0, 0xF0, 0x00, 0xF0, 0x70, 0x00, 0x78, 0x38, - 0x00, 0x78, 0x3C, 0x00, 0x3C, 0x1E, 0x00, 0x3E, 0x0E, 0x00, 0x1E, 0x0F, - 0x00, 0x1E, 0x07, 0x80, 0x1E, 0x03, 0x80, 0x3E, 0x01, 0xC0, 0x7E, 0x01, - 0xFF, 0xFC, 0x03, 0xFF, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x07, 0xFF, 0xF0, - 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, 0x07, 0x00, 0x00, 0x1C, - 0x08, 0x00, 0xF0, 0x60, 0x03, 0x83, 0x80, 0x0F, 0xFC, 0x00, 0x7F, 0xF0, - 0x01, 0xE0, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x08, 0x00, 0xF0, 0x20, 0x03, - 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x81, 0xE0, 0x06, 0x07, 0x00, - 0x38, 0x1C, 0x03, 0xC0, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x07, 0xFF, - 0xFC, 0x07, 0xFF, 0xF0, 0x1E, 0x01, 0xC0, 0x78, 0x02, 0x01, 0xE0, 0x08, - 0x07, 0x00, 0x20, 0x1C, 0x00, 0x00, 0xF0, 0x20, 0x03, 0x81, 0x80, 0x0E, - 0x0C, 0x00, 0x7F, 0xF0, 0x01, 0xFF, 0xC0, 0x07, 0x03, 0x00, 0x1C, 0x0C, - 0x00, 0xF0, 0x20, 0x03, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x01, - 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF8, 0x00, 0x0F, 0xF8, - 0x00, 0x00, 0x00, 0x3F, 0x02, 0x01, 0xFF, 0x88, 0x0F, 0x81, 0xF0, 0x3C, - 0x01, 0xE0, 0xF0, 0x01, 0xC3, 0xC0, 0x01, 0x0F, 0x80, 0x02, 0x1E, 0x00, - 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x00, 0x01, 0xE0, 0x00, 0x07, 0xC0, 0x00, - 0x0F, 0x00, 0x3F, 0xFE, 0x00, 0x1E, 0x3C, 0x00, 0x38, 0x78, 0x00, 0x70, - 0xF0, 0x00, 0xE0, 0xE0, 0x01, 0xC1, 0xE0, 0x07, 0x01, 0xE0, 0x0E, 0x01, - 0xF0, 0x3C, 0x01, 0xFF, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x3F, - 0xE0, 0x3E, 0x00, 0xF0, 0x07, 0x80, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x1C, - 0x00, 0xF0, 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1E, 0x00, 0x70, - 0x03, 0x80, 0x1E, 0x00, 0x70, 0x03, 0x80, 0x1F, 0xFF, 0xF0, 0x03, 0xFF, - 0xFE, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0xC0, 0x0E, 0x00, - 0x70, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xC0, 0x0E, 0x00, 0x78, 0x01, - 0xC0, 0x0E, 0x00, 0x78, 0x01, 0xC0, 0x0E, 0x00, 0x78, 0x03, 0xE0, 0x3F, - 0xE1, 0xFF, 0x00, 0x07, 0xFC, 0x07, 0xC0, 0x1E, 0x00, 0x78, 0x01, 0xC0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x03, 0x80, 0x0E, 0x00, 0x78, 0x01, 0xE0, - 0x07, 0x00, 0x1C, 0x00, 0xF0, 0x0F, 0xF8, 0x00, 0x00, 0xFF, 0x80, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x70, 0x00, 0x38, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, - 0x1E, 0x78, 0x0F, 0x38, 0x07, 0xF8, 0x01, 0xF0, 0x00, 0x07, 0xFC, 0x7F, - 0x80, 0xF8, 0x0F, 0x00, 0x38, 0x07, 0x00, 0x3C, 0x07, 0x00, 0x1C, 0x06, - 0x00, 0x0E, 0x06, 0x00, 0x07, 0x0C, 0x00, 0x07, 0x8C, 0x00, 0x03, 0x9C, - 0x00, 0x01, 0xD8, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x73, - 0x80, 0x00, 0x39, 0xE0, 0x00, 0x3C, 0x78, 0x00, 0x1C, 0x1C, 0x00, 0x0E, - 0x0F, 0x00, 0x07, 0x03, 0x80, 0x07, 0x81, 0xE0, 0x03, 0x80, 0x70, 0x01, - 0xC0, 0x3C, 0x01, 0xE0, 0x1F, 0x03, 0xFE, 0x3F, 0xE0, 0x07, 0xFC, 0x00, - 0x1F, 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, - 0x01, 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, - 0x00, 0x78, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x0F, 0x00, 0x00, 0xE0, - 0x00, 0x0E, 0x00, 0x11, 0xE0, 0x03, 0x1E, 0x00, 0x61, 0xC0, 0x06, 0x1C, - 0x01, 0xE3, 0xFF, 0xFC, 0xFF, 0xFF, 0xC0, 0x07, 0xF0, 0x00, 0x7E, 0x03, - 0xE0, 0x01, 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x07, 0x80, 0x0F, 0x80, 0x1F, - 0x00, 0x37, 0x00, 0x2E, 0x00, 0x5E, 0x00, 0x5C, 0x01, 0xB8, 0x01, 0xB8, - 0x06, 0x70, 0x02, 0x78, 0x09, 0xE0, 0x04, 0x70, 0x33, 0xC0, 0x08, 0xE0, - 0xC7, 0x00, 0x31, 0xC1, 0x0E, 0x00, 0x43, 0x86, 0x3C, 0x00, 0x87, 0x18, - 0x70, 0x03, 0x0E, 0x20, 0xE0, 0x06, 0x1C, 0xC3, 0xC0, 0x08, 0x3B, 0x07, - 0x80, 0x10, 0x7C, 0x0E, 0x00, 0x60, 0x78, 0x1C, 0x00, 0x80, 0xE0, 0x78, - 0x03, 0x01, 0x80, 0xF0, 0x07, 0x03, 0x03, 0xE0, 0x3F, 0x84, 0x1F, 0xF0, - 0x00, 0x07, 0xC0, 0x3F, 0xC0, 0x78, 0x03, 0xE0, 0x0E, 0x00, 0x70, 0x03, - 0xC0, 0x18, 0x01, 0xF0, 0x0E, 0x00, 0x6C, 0x03, 0x00, 0x1B, 0x80, 0xC0, - 0x0C, 0xE0, 0x30, 0x03, 0x18, 0x1C, 0x00, 0xC7, 0x06, 0x00, 0x30, 0xC1, - 0x80, 0x18, 0x38, 0xE0, 0x06, 0x06, 0x30, 0x01, 0x81, 0x8C, 0x00, 0xC0, - 0x73, 0x00, 0x30, 0x0D, 0xC0, 0x0C, 0x03, 0xE0, 0x03, 0x00, 0x78, 0x01, - 0x80, 0x1E, 0x00, 0x60, 0x07, 0x00, 0x38, 0x00, 0xC0, 0x0E, 0x00, 0x30, - 0x0F, 0xE0, 0x04, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x07, 0xC1, - 0xE0, 0x1E, 0x01, 0xE0, 0x78, 0x01, 0xC1, 0xE0, 0x03, 0xC7, 0x80, 0x07, - 0x9F, 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0xF8, 0x00, 0x3D, 0xE0, 0x00, 0xFF, - 0xC0, 0x01, 0xEF, 0x80, 0x03, 0xDE, 0x00, 0x0F, 0xBC, 0x00, 0x1E, 0x78, - 0x00, 0x7C, 0xF0, 0x00, 0xF1, 0xE0, 0x03, 0xC1, 0xC0, 0x0F, 0x03, 0xC0, - 0x3C, 0x03, 0xC1, 0xF0, 0x03, 0xFF, 0x80, 0x01, 0xFC, 0x00, 0x00, 0x07, - 0xFF, 0xC0, 0x07, 0xFF, 0xC0, 0x0E, 0x0F, 0x80, 0x78, 0x1F, 0x01, 0xC0, - 0x3C, 0x07, 0x00, 0xF0, 0x1C, 0x03, 0xC0, 0xF0, 0x0F, 0x03, 0x80, 0x78, - 0x0E, 0x01, 0xE0, 0x78, 0x1F, 0x01, 0xFF, 0xF8, 0x07, 0x7F, 0x00, 0x1C, - 0x00, 0x00, 0xF0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, - 0x01, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x0F, - 0xF0, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0xFF, 0xE0, 0x03, 0xC1, 0xE0, - 0x1E, 0x01, 0xC0, 0x78, 0x03, 0xC1, 0xE0, 0x03, 0x87, 0x80, 0x07, 0x8F, - 0x00, 0x0F, 0x3C, 0x00, 0x1E, 0x78, 0x00, 0x3D, 0xE0, 0x00, 0x7B, 0xC0, - 0x01, 0xFF, 0x80, 0x03, 0xDE, 0x00, 0x07, 0xBC, 0x00, 0x1F, 0x78, 0x00, - 0x3C, 0xF0, 0x00, 0xF1, 0xE0, 0x01, 0xE3, 0xC0, 0x07, 0x83, 0x80, 0x1E, - 0x07, 0x80, 0x78, 0x07, 0x01, 0xC0, 0x03, 0xDE, 0x00, 0x01, 0xC0, 0x00, - 0x06, 0x00, 0x00, 0x18, 0x00, 0x10, 0x7F, 0xC0, 0xC3, 0xFF, 0xFF, 0x08, - 0x07, 0xF0, 0x00, 0x07, 0xFF, 0x80, 0x0F, 0xFF, 0x00, 0x78, 0x3C, 0x03, - 0xC0, 0xF0, 0x1E, 0x07, 0x80, 0xE0, 0x3C, 0x07, 0x01, 0xE0, 0x78, 0x1E, - 0x03, 0x83, 0xF0, 0x1F, 0xFE, 0x01, 0xFF, 0xC0, 0x0F, 0x38, 0x00, 0x71, - 0xE0, 0x03, 0x87, 0x00, 0x3C, 0x38, 0x01, 0xC1, 0xE0, 0x0E, 0x07, 0x00, - 0xF0, 0x3C, 0x07, 0x81, 0xE0, 0x38, 0x07, 0x01, 0xC0, 0x3C, 0x1E, 0x00, - 0xF3, 0xFC, 0x07, 0xC0, 0x00, 0xF8, 0x81, 0xFF, 0xC1, 0xE1, 0xE1, 0xE0, - 0x70, 0xF0, 0x10, 0x78, 0x08, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0x80, 0x01, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, - 0x80, 0x3C, 0x40, 0x1E, 0x20, 0x0F, 0x38, 0x07, 0x9E, 0x07, 0x8F, 0x87, - 0x84, 0x7F, 0xC2, 0x0F, 0x80, 0x3F, 0xFF, 0xF7, 0xFF, 0xFF, 0x70, 0x78, - 0x76, 0x07, 0x02, 0xC0, 0x70, 0x28, 0x0F, 0x02, 0x00, 0xF0, 0x00, 0x0E, - 0x00, 0x01, 0xE0, 0x00, 0x1E, 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x03, - 0xC0, 0x00, 0x3C, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, - 0x70, 0x00, 0x07, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF0, 0x00, - 0xFF, 0xE0, 0x00, 0x7F, 0xE0, 0xFE, 0x3F, 0x00, 0x78, 0x3C, 0x00, 0x60, - 0xF0, 0x01, 0x81, 0xE0, 0x03, 0x03, 0xC0, 0x06, 0x07, 0x00, 0x08, 0x1E, - 0x00, 0x30, 0x3C, 0x00, 0x60, 0x70, 0x00, 0x81, 0xE0, 0x01, 0x03, 0xC0, - 0x06, 0x07, 0x80, 0x0C, 0x0E, 0x00, 0x10, 0x3C, 0x00, 0x60, 0x78, 0x00, - 0xC0, 0xF0, 0x01, 0x01, 0xE0, 0x06, 0x03, 0xC0, 0x08, 0x03, 0xC0, 0x30, - 0x07, 0xC1, 0xC0, 0x07, 0xFF, 0x00, 0x03, 0xF8, 0x00, 0x00, 0xFF, 0x01, - 0xFB, 0xE0, 0x07, 0x8E, 0x00, 0x18, 0x78, 0x01, 0x83, 0xC0, 0x0C, 0x1E, - 0x00, 0xC0, 0xF0, 0x06, 0x03, 0x80, 0x60, 0x1C, 0x02, 0x00, 0xE0, 0x30, - 0x07, 0x83, 0x00, 0x3C, 0x10, 0x01, 0xE1, 0x80, 0x07, 0x08, 0x00, 0x38, - 0x80, 0x01, 0xC4, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xE0, 0x00, - 0x0E, 0x00, 0x00, 0x70, 0x00, 0x03, 0x00, 0x00, 0x10, 0x00, 0x00, 0xFF, - 0x3F, 0xC3, 0xFB, 0xE0, 0x78, 0x07, 0x8E, 0x03, 0xC0, 0x18, 0x78, 0x0E, - 0x01, 0x83, 0xC0, 0x70, 0x0C, 0x1E, 0x03, 0x80, 0x40, 0xF0, 0x3C, 0x06, - 0x03, 0x81, 0xE0, 0x60, 0x1C, 0x17, 0x83, 0x00, 0xE0, 0xBC, 0x30, 0x07, - 0x09, 0xE1, 0x00, 0x38, 0x47, 0x18, 0x01, 0xE4, 0x38, 0x80, 0x0F, 0x21, - 0xCC, 0x00, 0x7A, 0x0E, 0x40, 0x01, 0xD0, 0x76, 0x00, 0x0F, 0x03, 0xA0, - 0x00, 0x78, 0x1F, 0x00, 0x03, 0x80, 0xF0, 0x00, 0x1C, 0x07, 0x00, 0x00, - 0xC0, 0x38, 0x00, 0x06, 0x00, 0x80, 0x00, 0x20, 0x04, 0x00, 0x00, 0x0F, - 0xF8, 0x7F, 0x03, 0xE0, 0x3E, 0x01, 0xC0, 0x18, 0x01, 0xE0, 0x30, 0x01, - 0xE0, 0x60, 0x00, 0xE0, 0xC0, 0x00, 0xF1, 0xC0, 0x00, 0x71, 0x80, 0x00, - 0x7B, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x3C, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xCE, 0x00, 0x01, 0x8F, 0x00, 0x01, - 0x07, 0x00, 0x03, 0x07, 0x00, 0x06, 0x07, 0x80, 0x0C, 0x03, 0x80, 0x18, - 0x03, 0xC0, 0x78, 0x03, 0xE0, 0xFE, 0x1F, 0xF8, 0xFF, 0x87, 0xE7, 0xC0, - 0x38, 0x70, 0x06, 0x0E, 0x01, 0x81, 0xE0, 0x30, 0x1C, 0x0C, 0x03, 0x83, - 0x00, 0x78, 0xC0, 0x07, 0x30, 0x00, 0xE4, 0x00, 0x1D, 0x80, 0x03, 0xE0, - 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, - 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x7C, 0x00, - 0x3F, 0xF0, 0x00, 0x07, 0xFF, 0xFC, 0x3F, 0xFF, 0xE0, 0xE0, 0x0F, 0x82, - 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x40, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, - 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x80, 0x00, 0x1C, 0x00, 0x00, 0xF0, 0x00, 0x07, - 0x80, 0x00, 0x3C, 0x00, 0xC1, 0xE0, 0x02, 0x0F, 0x00, 0x18, 0x38, 0x01, - 0xE1, 0xFF, 0xFF, 0x0F, 0xFF, 0xFC, 0x00, 0x01, 0xF8, 0x0C, 0x00, 0xC0, - 0x06, 0x00, 0x30, 0x01, 0x80, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x03, - 0x00, 0x18, 0x00, 0xC0, 0x06, 0x00, 0x60, 0x03, 0x00, 0x18, 0x01, 0xC0, - 0x0C, 0x00, 0x60, 0x03, 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x06, - 0x00, 0x30, 0x01, 0xF8, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, 0x30, - 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, 0x60, 0x07, - 0x00, 0x30, 0x03, 0x80, 0x18, 0x01, 0xC0, 0x0C, 0x00, 0xC0, 0x0E, 0x00, - 0x60, 0x07, 0x00, 0x30, 0x03, 0xF0, 0x06, 0x00, 0x60, 0x06, 0x00, 0x60, - 0x0E, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x18, 0x03, 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x60, 0x06, 0x00, - 0x60, 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x03, 0x80, - 0x07, 0x00, 0x1F, 0x00, 0x36, 0x00, 0xCE, 0x01, 0x8C, 0x06, 0x1C, 0x0C, - 0x18, 0x38, 0x38, 0x60, 0x31, 0xC0, 0x73, 0x00, 0x6E, 0x00, 0xE0, 0xFF, - 0xFF, 0xFF, 0xFF, 0xF0, 0xE3, 0x8F, 0x0E, 0x18, 0x30, 0x01, 0xEC, 0x0E, - 0x58, 0x30, 0x70, 0xE0, 0xC3, 0x81, 0x86, 0x07, 0x1C, 0x0C, 0x38, 0x18, - 0xE0, 0x71, 0xC0, 0xE3, 0x83, 0x87, 0x0B, 0x2F, 0x36, 0xCF, 0xCF, 0x1F, - 0x1C, 0x00, 0x03, 0x00, 0x1F, 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, - 0x0E, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x0C, 0x00, 0x1C, 0x7C, 0x1C, 0xFE, - 0x19, 0x8F, 0x1A, 0x07, 0x3C, 0x07, 0x38, 0x07, 0x38, 0x07, 0x70, 0x0E, - 0x70, 0x0E, 0x70, 0x1C, 0x60, 0x18, 0xE0, 0x30, 0xE0, 0x60, 0xE1, 0xC0, - 0x3F, 0x00, 0x01, 0xF0, 0x38, 0xC3, 0x8E, 0x78, 0x73, 0x80, 0x3C, 0x01, - 0xC0, 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x47, 0x84, 0x3F, - 0xC0, 0x7C, 0x00, 0x00, 0x01, 0x80, 0x07, 0xC0, 0x00, 0xE0, 0x00, 0x60, - 0x00, 0x30, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0C, 0x00, 0x06, 0x00, 0xF7, - 0x01, 0xC7, 0x81, 0xC3, 0x81, 0xC1, 0xC1, 0xE0, 0xE0, 0xE0, 0x60, 0xF0, - 0x30, 0x78, 0x38, 0x78, 0x18, 0x3C, 0x0C, 0x1E, 0x0C, 0x0F, 0x0E, 0x27, - 0xCB, 0x21, 0xF9, 0xE0, 0x78, 0xE0, 0x00, 0xF0, 0x1C, 0xC3, 0x86, 0x38, - 0x33, 0xC3, 0x1C, 0x31, 0xE3, 0x1F, 0xE0, 0xF0, 0x07, 0x80, 0x3C, 0x01, - 0xE0, 0x47, 0x84, 0x3F, 0xC0, 0x7C, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x33, - 0x00, 0x06, 0x30, 0x00, 0xC0, 0x00, 0x0C, 0x00, 0x01, 0xC0, 0x00, 0x18, - 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x3F, 0xF8, 0x03, 0xFF, 0x80, 0x03, - 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x06, 0x00, 0x00, - 0x60, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, - 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x18, 0x00, 0x01, 0x80, 0x00, 0x18, 0x00, - 0x03, 0x00, 0x00, 0x30, 0x00, 0xC6, 0x00, 0x0C, 0xC0, 0x00, 0x78, 0x00, - 0x00, 0x01, 0xF8, 0x07, 0x1F, 0x0E, 0x0F, 0x0C, 0x0E, 0x18, 0x0E, 0x18, - 0x0E, 0x18, 0x1E, 0x18, 0x3C, 0x0C, 0x78, 0x07, 0xE0, 0x08, 0x00, 0x18, - 0x00, 0x1E, 0x00, 0x0F, 0xE0, 0x13, 0xF0, 0x60, 0x78, 0xC0, 0x38, 0xC0, - 0x18, 0xC0, 0x18, 0xC0, 0x30, 0x60, 0x60, 0x3F, 0x80, 0x03, 0x00, 0x1F, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0E, 0x00, 0x0E, - 0x00, 0x0C, 0x00, 0x1C, 0x38, 0x1C, 0x7C, 0x1C, 0xCC, 0x19, 0x0C, 0x3A, - 0x0C, 0x3C, 0x1C, 0x3C, 0x18, 0x38, 0x18, 0x70, 0x38, 0x70, 0x38, 0x70, - 0x30, 0x60, 0x72, 0xE0, 0x76, 0xE0, 0x7C, 0xC0, 0x70, 0x03, 0x03, 0xC1, - 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x7E, 0x0F, 0x03, 0x81, 0x81, - 0xC0, 0xE0, 0x70, 0x30, 0x38, 0x1C, 0x1C, 0x4C, 0x47, 0xC3, 0xC0, 0x00, - 0x0C, 0x00, 0x3C, 0x00, 0x78, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x18, 0x03, 0xF0, 0x00, 0xE0, 0x01, 0x80, 0x03, 0x00, - 0x0E, 0x00, 0x1C, 0x00, 0x30, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x06, - 0x00, 0x0C, 0x00, 0x38, 0x00, 0x70, 0x00, 0xC0, 0x03, 0x80, 0x06, 0x00, - 0x0C, 0x06, 0x30, 0x0C, 0xC0, 0x0F, 0x00, 0x00, 0x03, 0x00, 0x3E, 0x00, - 0x1C, 0x00, 0x38, 0x00, 0x60, 0x01, 0xC0, 0x03, 0x80, 0x07, 0x00, 0x0C, - 0x00, 0x38, 0xFC, 0x70, 0x60, 0xE1, 0x81, 0x86, 0x07, 0x10, 0x0E, 0x40, - 0x1B, 0x80, 0x3F, 0x00, 0xE7, 0x01, 0xCE, 0x03, 0x0C, 0x06, 0x1C, 0x5C, - 0x1D, 0x38, 0x3E, 0x60, 0x38, 0x03, 0x1F, 0x07, 0x07, 0x06, 0x0E, 0x0E, - 0x0E, 0x0C, 0x1C, 0x1C, 0x18, 0x38, 0x38, 0x38, 0x30, 0x70, 0x70, 0x70, - 0x64, 0xE4, 0xE8, 0xF0, 0xE0, 0x00, 0x06, 0x18, 0x1E, 0x3E, 0x3C, 0x3F, - 0x0E, 0x4C, 0x47, 0x0C, 0x8C, 0x8E, 0x1D, 0x0D, 0x0E, 0x1E, 0x1A, 0x0E, - 0x1C, 0x1E, 0x0C, 0x3C, 0x1C, 0x1C, 0x38, 0x38, 0x1C, 0x38, 0x38, 0x1C, - 0x30, 0x38, 0x18, 0x70, 0x30, 0x39, 0x70, 0x70, 0x32, 0x60, 0x70, 0x3C, - 0x60, 0x60, 0x38, 0x06, 0x0E, 0x1F, 0x1F, 0x83, 0x99, 0xC1, 0x98, 0xC1, - 0xD8, 0xE0, 0xE8, 0x70, 0x78, 0x30, 0x38, 0x38, 0x3C, 0x1C, 0x1C, 0x0E, - 0x0E, 0x06, 0x0E, 0x03, 0x17, 0x01, 0xB3, 0x80, 0xF1, 0x80, 0x70, 0x01, - 0xF0, 0x0E, 0x38, 0x38, 0x30, 0xE0, 0x73, 0x80, 0xEE, 0x01, 0xDC, 0x03, - 0xF8, 0x0F, 0xE0, 0x1D, 0xC0, 0x3B, 0x80, 0xE7, 0x03, 0x8E, 0x06, 0x0E, - 0x38, 0x07, 0xC0, 0x00, 0x00, 0xE7, 0xC0, 0x7C, 0xFE, 0x01, 0xD1, 0xF0, - 0x1E, 0x0F, 0x01, 0xC0, 0xF0, 0x38, 0x0F, 0x03, 0x80, 0xF0, 0x38, 0x0E, - 0x03, 0x01, 0xE0, 0x70, 0x1C, 0x07, 0x03, 0xC0, 0x60, 0x78, 0x06, 0x0F, - 0x00, 0xE1, 0xC0, 0x0F, 0xF0, 0x00, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xC0, - 0x00, 0x1C, 0x00, 0x01, 0x80, 0x00, 0x38, 0x00, 0x0F, 0xF0, 0x00, 0x00, - 0xF7, 0x03, 0xCE, 0x0F, 0x06, 0x1E, 0x06, 0x1C, 0x04, 0x3C, 0x04, 0x78, - 0x04, 0x78, 0x0C, 0xF0, 0x08, 0xF0, 0x18, 0xF0, 0x38, 0xF0, 0xF0, 0xF9, - 0x70, 0x7E, 0x70, 0x3C, 0x70, 0x00, 0x60, 0x00, 0xE0, 0x00, 0xE0, 0x00, - 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x0F, 0xF0, 0x7C, 0x70, 0xE7, 0xC7, 0x4C, - 0x34, 0x01, 0xA0, 0x1E, 0x00, 0xF0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x1C, - 0x00, 0xC0, 0x0E, 0x00, 0x70, 0x03, 0x80, 0x00, 0x07, 0x88, 0x63, 0x86, - 0x0C, 0x30, 0x21, 0xC1, 0x0E, 0x00, 0x38, 0x00, 0xE0, 0x03, 0x80, 0x1C, - 0x10, 0x60, 0x83, 0x06, 0x18, 0x71, 0x82, 0x78, 0x00, 0x02, 0x03, 0x03, - 0x07, 0xF7, 0xF8, 0xE0, 0x60, 0x70, 0x38, 0x1C, 0x0C, 0x0E, 0x07, 0x03, - 0x01, 0x91, 0xC8, 0xF8, 0x78, 0x00, 0x1C, 0x0D, 0xF8, 0x38, 0x60, 0x70, - 0xC1, 0xC3, 0x83, 0x87, 0x07, 0x0C, 0x1E, 0x38, 0x78, 0x70, 0xB0, 0xE2, - 0x61, 0x8D, 0xC7, 0x33, 0x2C, 0xC6, 0x5F, 0x0F, 0x38, 0x1C, 0x00, 0x18, - 0x1B, 0xE0, 0x73, 0x81, 0xC6, 0x03, 0x18, 0x0C, 0x70, 0x21, 0xC1, 0x83, - 0x0C, 0x0C, 0x20, 0x31, 0x00, 0xC8, 0x03, 0x40, 0x0E, 0x00, 0x30, 0x00, - 0x80, 0x00, 0x18, 0x04, 0x1B, 0xE0, 0x30, 0x71, 0x80, 0xC1, 0xC6, 0x07, - 0x01, 0x1C, 0x2C, 0x08, 0x70, 0xB0, 0x20, 0xC4, 0xC1, 0x03, 0x21, 0x84, - 0x0D, 0x86, 0x20, 0x34, 0x19, 0x00, 0xE0, 0x68, 0x03, 0x81, 0xA0, 0x0C, - 0x07, 0x00, 0x30, 0x18, 0x00, 0x80, 0x40, 0x00, 0x03, 0x07, 0x0F, 0x8F, - 0x13, 0x93, 0x01, 0xB0, 0x01, 0xE0, 0x01, 0xC0, 0x00, 0xC0, 0x00, 0xC0, - 0x01, 0xC0, 0x03, 0xE0, 0x02, 0x60, 0x04, 0x62, 0x08, 0x64, 0xF0, 0x7C, - 0xE0, 0x30, 0x06, 0x06, 0x3F, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x81, - 0x03, 0x82, 0x01, 0x82, 0x01, 0xC4, 0x01, 0xC4, 0x01, 0xC8, 0x00, 0xC8, - 0x00, 0xD0, 0x00, 0xF0, 0x00, 0xE0, 0x00, 0xC0, 0x00, 0xC0, 0x00, 0x80, - 0x01, 0x00, 0x02, 0x00, 0x04, 0x00, 0x78, 0x00, 0x70, 0x00, 0x1F, 0xFC, - 0x7F, 0xE1, 0x01, 0x08, 0x08, 0x00, 0x40, 0x02, 0x00, 0x10, 0x00, 0x80, - 0x06, 0x00, 0x10, 0x00, 0x80, 0x04, 0x00, 0x38, 0x01, 0xF0, 0x0B, 0xE0, - 0x01, 0xC6, 0x03, 0x98, 0x03, 0x80, 0x00, 0x70, 0x0C, 0x01, 0x80, 0x38, - 0x03, 0x80, 0x30, 0x07, 0x00, 0x70, 0x07, 0x00, 0x60, 0x0E, 0x00, 0xE0, - 0x0C, 0x01, 0xC0, 0x1C, 0x07, 0x80, 0x30, 0x04, 0x00, 0x20, 0x03, 0x00, - 0x30, 0x07, 0x00, 0x70, 0x06, 0x00, 0x60, 0x0E, 0x00, 0xE0, 0x0C, 0x00, - 0xC0, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x00, 0xC0, 0x06, - 0x00, 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, - 0x00, 0xE0, 0x0E, 0x00, 0xE0, 0x0C, 0x00, 0x40, 0x04, 0x00, 0xC0, 0x1E, - 0x03, 0x80, 0x38, 0x03, 0x00, 0x70, 0x07, 0x00, 0x70, 0x06, 0x00, 0xE0, - 0x0E, 0x00, 0xC0, 0x1C, 0x01, 0x80, 0x70, 0x00, 0x1E, 0x00, 0x3F, 0xE1, - 0xF8, 0x7F, 0xC0, 0x07, 0x80 }; - -const GFXglyph FreeSerifItalic18pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 9, 0, 1 }, // 0x20 ' ' - { 0, 10, 23, 12, 1, -22 }, // 0x21 '!' - { 29, 12, 9, 12, 4, -22 }, // 0x22 '"' - { 43, 19, 23, 17, 0, -22 }, // 0x23 '#' - { 98, 15, 29, 17, 1, -25 }, // 0x24 '$' - { 153, 25, 23, 29, 3, -22 }, // 0x25 '%' - { 225, 22, 23, 27, 3, -22 }, // 0x26 '&' - { 289, 5, 9, 7, 4, -22 }, // 0x27 ''' - { 295, 9, 29, 12, 1, -22 }, // 0x28 '(' - { 328, 9, 29, 12, 1, -22 }, // 0x29 ')' - { 361, 12, 14, 18, 5, -22 }, // 0x2A '*' - { 382, 16, 18, 24, 4, -17 }, // 0x2B '+' - { 418, 5, 8, 9, -1, -2 }, // 0x2C ',' - { 423, 8, 2, 12, 2, -8 }, // 0x2D '-' - { 425, 4, 4, 9, 1, -3 }, // 0x2E '.' - { 427, 16, 23, 10, 0, -22 }, // 0x2F '/' - { 473, 17, 24, 17, 1, -23 }, // 0x30 '0' - { 524, 12, 24, 17, 2, -23 }, // 0x31 '1' - { 560, 16, 23, 17, 1, -22 }, // 0x32 '2' - { 606, 17, 24, 18, 0, -23 }, // 0x33 '3' - { 657, 17, 24, 17, 0, -23 }, // 0x34 '4' - { 708, 16, 23, 18, 0, -22 }, // 0x35 '5' - { 754, 17, 24, 18, 1, -23 }, // 0x36 '6' - { 805, 16, 23, 17, 3, -22 }, // 0x37 '7' - { 851, 16, 24, 18, 1, -23 }, // 0x38 '8' - { 899, 16, 24, 17, 1, -23 }, // 0x39 '9' - { 947, 7, 15, 9, 2, -14 }, // 0x3A ':' - { 961, 9, 20, 9, 1, -14 }, // 0x3B ';' - { 984, 18, 18, 20, 2, -17 }, // 0x3C '<' - { 1025, 18, 9, 23, 3, -12 }, // 0x3D '=' - { 1046, 18, 18, 20, 2, -17 }, // 0x3E '>' - { 1087, 12, 23, 16, 4, -22 }, // 0x3F '?' - { 1122, 24, 23, 27, 2, -22 }, // 0x40 '@' - { 1191, 21, 23, 23, 0, -22 }, // 0x41 'A' - { 1252, 21, 23, 21, 0, -22 }, // 0x42 'B' - { 1313, 21, 23, 21, 2, -22 }, // 0x43 'C' - { 1374, 25, 23, 25, 0, -22 }, // 0x44 'D' - { 1446, 22, 23, 20, 0, -22 }, // 0x45 'E' - { 1510, 22, 23, 20, 0, -22 }, // 0x46 'F' - { 1574, 23, 23, 24, 2, -22 }, // 0x47 'G' - { 1641, 27, 23, 25, 0, -22 }, // 0x48 'H' - { 1719, 14, 23, 11, 0, -22 }, // 0x49 'I' - { 1760, 17, 23, 15, 0, -22 }, // 0x4A 'J' - { 1809, 25, 23, 22, 0, -22 }, // 0x4B 'K' - { 1881, 20, 23, 20, 0, -22 }, // 0x4C 'L' - { 1939, 31, 23, 29, 0, -22 }, // 0x4D 'M' - { 2029, 26, 23, 24, 0, -22 }, // 0x4E 'N' - { 2104, 23, 23, 23, 1, -22 }, // 0x4F 'O' - { 2171, 22, 23, 20, 0, -22 }, // 0x50 'P' - { 2235, 23, 29, 23, 1, -22 }, // 0x51 'Q' - { 2319, 21, 23, 22, 0, -22 }, // 0x52 'R' - { 2380, 17, 23, 16, 0, -22 }, // 0x53 'S' - { 2429, 20, 23, 21, 3, -22 }, // 0x54 'T' - { 2487, 23, 23, 25, 4, -22 }, // 0x55 'U' - { 2554, 21, 23, 23, 5, -22 }, // 0x56 'V' - { 2615, 29, 23, 31, 5, -22 }, // 0x57 'W' - { 2699, 24, 23, 23, 0, -22 }, // 0x58 'X' - { 2768, 19, 23, 21, 4, -22 }, // 0x59 'Y' - { 2823, 22, 23, 20, 0, -22 }, // 0x5A 'Z' - { 2887, 13, 28, 14, 1, -22 }, // 0x5B '[' - { 2933, 12, 23, 17, 4, -22 }, // 0x5C '\' - { 2968, 12, 28, 14, 1, -22 }, // 0x5D ']' - { 3010, 15, 13, 15, 0, -22 }, // 0x5E '^' - { 3035, 18, 2, 17, 0, 3 }, // 0x5F '_' - { 3040, 6, 6, 9, 5, -22 }, // 0x60 '`' - { 3045, 15, 15, 17, 1, -14 }, // 0x61 'a' - { 3074, 16, 24, 17, 1, -23 }, // 0x62 'b' - { 3122, 13, 15, 14, 1, -14 }, // 0x63 'c' - { 3147, 17, 24, 18, 1, -23 }, // 0x64 'd' - { 3198, 13, 15, 14, 1, -14 }, // 0x65 'e' - { 3223, 20, 31, 15, -3, -23 }, // 0x66 'f' - { 3301, 16, 22, 15, -1, -14 }, // 0x67 'g' - { 3345, 16, 24, 17, 1, -23 }, // 0x68 'h' - { 3393, 9, 23, 9, 1, -22 }, // 0x69 'i' - { 3419, 15, 30, 10, -3, -22 }, // 0x6A 'j' - { 3476, 15, 24, 16, 1, -23 }, // 0x6B 'k' - { 3521, 8, 25, 9, 1, -23 }, // 0x6C 'l' - { 3546, 24, 15, 25, 0, -14 }, // 0x6D 'm' - { 3591, 17, 15, 17, 0, -14 }, // 0x6E 'n' - { 3623, 15, 15, 17, 1, -14 }, // 0x6F 'o' - { 3652, 20, 22, 16, -3, -14 }, // 0x70 'p' - { 3707, 16, 22, 17, 1, -14 }, // 0x71 'q' - { 3751, 13, 15, 13, 1, -14 }, // 0x72 'r' - { 3776, 13, 15, 12, 0, -14 }, // 0x73 's' - { 3801, 9, 18, 8, 1, -17 }, // 0x74 't' - { 3822, 15, 15, 17, 1, -14 }, // 0x75 'u' - { 3851, 14, 15, 16, 2, -14 }, // 0x76 'v' - { 3878, 22, 15, 24, 1, -14 }, // 0x77 'w' - { 3920, 16, 15, 15, -1, -14 }, // 0x78 'x' - { 3950, 16, 22, 16, 0, -14 }, // 0x79 'y' - { 3994, 14, 18, 14, 0, -14 }, // 0x7A 'z' - { 4026, 12, 30, 14, 2, -23 }, // 0x7B '{' - { 4071, 2, 23, 10, 4, -22 }, // 0x7C '|' - { 4077, 12, 31, 14, 0, -24 }, // 0x7D '}' - { 4124, 17, 4, 19, 1, -10 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic18pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic18pt7bBitmaps, - (GFXglyph *)FreeSerifItalic18pt7bGlyphs, - 0x20, 0x7E, 42 }; - -// Approx. 4805 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h deleted file mode 100644 index 75da1e057..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h +++ /dev/null @@ -1,737 +0,0 @@ -const uint8_t FreeSerifItalic24pt7bBitmaps[] PROGMEM = { - 0x00, 0xF0, 0x0F, 0x00, 0xF0, 0x0F, 0x01, 0xF0, 0x1E, 0x01, 0xE0, 0x1C, - 0x01, 0xC0, 0x3C, 0x03, 0x80, 0x38, 0x03, 0x80, 0x30, 0x07, 0x00, 0x60, - 0x06, 0x00, 0x60, 0x04, 0x00, 0x40, 0x0C, 0x00, 0x80, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0xF8, 0x0F, 0x80, 0xF8, 0x07, 0x00, - 0x38, 0x1D, 0xE0, 0x77, 0x83, 0xDC, 0x0E, 0x70, 0x39, 0xC1, 0xEE, 0x07, - 0x38, 0x1C, 0xC0, 0x63, 0x01, 0x8C, 0x06, 0x20, 0x10, 0x00, 0x06, 0x03, - 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, - 0xE0, 0x00, 0xE0, 0x70, 0x00, 0xE0, 0x70, 0x00, 0x70, 0x38, 0x00, 0x30, - 0x18, 0x00, 0x38, 0x1C, 0x03, 0xFF, 0xFF, 0xE1, 0xFF, 0xFF, 0xF0, 0x0E, - 0x07, 0x00, 0x06, 0x03, 0x00, 0x07, 0x03, 0x80, 0x03, 0x81, 0xC0, 0x03, - 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0xE0, 0x70, 0x1F, 0xFF, 0xFF, 0x8F, - 0xFF, 0xFF, 0x80, 0x70, 0x38, 0x00, 0x38, 0x1C, 0x00, 0x1C, 0x0C, 0x00, - 0x1C, 0x0E, 0x00, 0x0E, 0x07, 0x00, 0x0E, 0x07, 0x00, 0x07, 0x03, 0x80, - 0x03, 0x81, 0xC0, 0x03, 0x81, 0xC0, 0x01, 0xC0, 0xE0, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x00, 0xFF, 0x80, 0x1C, 0x2F, 0x01, - 0x83, 0x3C, 0x1C, 0x18, 0xE1, 0xC0, 0xC3, 0x0E, 0x06, 0x18, 0x70, 0x60, - 0x83, 0x83, 0x04, 0x1E, 0x18, 0x00, 0xF8, 0xC0, 0x03, 0xEC, 0x00, 0x0F, - 0xE0, 0x00, 0x3F, 0x00, 0x00, 0xFC, 0x00, 0x03, 0xF0, 0x00, 0x0F, 0xC0, - 0x00, 0x7F, 0x00, 0x03, 0x7C, 0x00, 0x19, 0xE0, 0x01, 0x87, 0x80, 0x0C, - 0x3C, 0x00, 0x60, 0xE2, 0x03, 0x07, 0x10, 0x30, 0x39, 0x81, 0x81, 0xCE, - 0x0C, 0x0C, 0x70, 0x60, 0xE3, 0xC6, 0x06, 0x0F, 0x30, 0x60, 0x1F, 0x9E, - 0x00, 0x3F, 0x80, 0x00, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, - 0x80, 0x00, 0x01, 0xF0, 0x00, 0xC0, 0x03, 0xFE, 0x01, 0xE0, 0x03, 0xC7, - 0x83, 0xE0, 0x03, 0xC0, 0x7F, 0x60, 0x03, 0xC0, 0x20, 0x70, 0x01, 0xC0, - 0x10, 0x30, 0x01, 0xE0, 0x08, 0x38, 0x00, 0xE0, 0x04, 0x18, 0x00, 0xF0, - 0x02, 0x1C, 0x00, 0x70, 0x02, 0x0C, 0x00, 0x38, 0x01, 0x0E, 0x00, 0x1C, - 0x01, 0x8E, 0x00, 0x0E, 0x00, 0x86, 0x00, 0x07, 0x00, 0x87, 0x03, 0xE1, - 0x80, 0xC3, 0x07, 0xFC, 0xE1, 0xC3, 0x87, 0xC6, 0x3F, 0x81, 0x87, 0x81, - 0x8F, 0x81, 0xC7, 0x80, 0x40, 0x00, 0xC3, 0xC0, 0x20, 0x00, 0xE3, 0xC0, - 0x10, 0x00, 0x61, 0xC0, 0x08, 0x00, 0x61, 0xE0, 0x04, 0x00, 0x70, 0xF0, - 0x06, 0x00, 0x30, 0x70, 0x02, 0x00, 0x38, 0x38, 0x03, 0x00, 0x18, 0x1C, - 0x01, 0x00, 0x1C, 0x0E, 0x01, 0x80, 0x0C, 0x07, 0x01, 0x80, 0x0E, 0x01, - 0xC3, 0x80, 0x06, 0x00, 0x7F, 0x80, 0x06, 0x00, 0x1F, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x71, - 0xC0, 0x00, 0x01, 0xC3, 0x80, 0x00, 0x0E, 0x0E, 0x00, 0x00, 0x38, 0x38, - 0x00, 0x01, 0xE0, 0xE0, 0x00, 0x07, 0x87, 0x00, 0x00, 0x1E, 0x18, 0x00, - 0x00, 0x78, 0xC0, 0x00, 0x01, 0xE6, 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7F, - 0xC1, 0xFE, 0x03, 0x9F, 0x03, 0xE0, 0x3C, 0x3C, 0x07, 0x01, 0xE0, 0xF8, - 0x1C, 0x0F, 0x03, 0xE0, 0xE0, 0x7C, 0x07, 0x83, 0x01, 0xE0, 0x1F, 0x1C, - 0x07, 0x80, 0x7C, 0x60, 0x3E, 0x00, 0xFB, 0x00, 0xF8, 0x03, 0xFC, 0x03, - 0xE0, 0x07, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x3F, 0x00, 0x3E, 0x00, 0x7C, - 0x00, 0xFC, 0x01, 0xF8, 0x0F, 0xF0, 0x03, 0xF0, 0xF3, 0xF0, 0x87, 0xFF, - 0x07, 0xFC, 0x07, 0xF0, 0x07, 0xC0, 0x39, 0xDE, 0xE7, 0x3B, 0x9C, 0xC6, - 0x31, 0x00, 0x00, 0x10, 0x01, 0x00, 0x18, 0x01, 0x80, 0x18, 0x01, 0x80, - 0x1C, 0x00, 0xC0, 0x0E, 0x00, 0xE0, 0x07, 0x00, 0x78, 0x03, 0x80, 0x3C, - 0x01, 0xE0, 0x0E, 0x00, 0x70, 0x07, 0x80, 0x3C, 0x01, 0xE0, 0x0E, 0x00, - 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, 0x0E, - 0x00, 0x30, 0x01, 0x80, 0x0C, 0x00, 0x60, 0x01, 0x80, 0x0C, 0x00, 0x60, - 0x01, 0x00, 0x0C, 0x00, 0x20, 0x00, 0x00, 0x80, 0x06, 0x00, 0x10, 0x00, - 0x80, 0x06, 0x00, 0x30, 0x00, 0xC0, 0x06, 0x00, 0x30, 0x01, 0x80, 0x0C, - 0x00, 0x70, 0x03, 0x80, 0x1C, 0x00, 0xE0, 0x07, 0x00, 0x38, 0x01, 0xC0, - 0x1E, 0x00, 0xF0, 0x07, 0x80, 0x3C, 0x01, 0xC0, 0x1E, 0x00, 0xF0, 0x07, - 0x80, 0x38, 0x03, 0xC0, 0x1C, 0x00, 0xE0, 0x0E, 0x00, 0x60, 0x07, 0x00, - 0x30, 0x03, 0x00, 0x30, 0x03, 0x00, 0x10, 0x01, 0x00, 0x00, 0x01, 0x00, - 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, 0xE1, 0x07, 0xE1, 0x0F, - 0xF1, 0x1F, 0x19, 0x30, 0x07, 0xC0, 0x03, 0x80, 0x0D, 0x60, 0x79, 0x3C, - 0xF1, 0x1F, 0xE1, 0x0F, 0xE1, 0x07, 0x03, 0x80, 0x03, 0x80, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, - 0xC0, 0x00, 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, - 0x00, 0x00, 0x38, 0x00, 0x00, 0x70, 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x00, - 0x00, 0x38, 0x00, 0x00, 0x70, 0x00, 0x00, 0xE0, 0x00, 0x01, 0xC0, 0x00, - 0x03, 0x80, 0x00, 0x07, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x1C, 0x7C, 0xF9, - 0xF1, 0xE1, 0xC3, 0x0C, 0x10, 0xC1, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0x00, - 0x77, 0xFF, 0xF7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, - 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, 0x00, - 0xF0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, - 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, - 0x00, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, 0x3C, 0x00, 0x01, - 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, - 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, - 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, 0x1F, 0x80, 0x03, 0x86, - 0x00, 0x30, 0x18, 0x03, 0x00, 0xC0, 0x38, 0x03, 0x03, 0x80, 0x18, 0x38, - 0x00, 0xC1, 0xC0, 0x07, 0x1C, 0x00, 0x38, 0xE0, 0x01, 0xCF, 0x00, 0x0E, - 0x70, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xE0, 0x01, 0xEE, 0x00, - 0x0F, 0xF0, 0x00, 0x77, 0x80, 0x07, 0xBC, 0x00, 0x3D, 0xC0, 0x01, 0xCE, - 0x00, 0x1E, 0x70, 0x00, 0xF3, 0x80, 0x07, 0x1C, 0x00, 0x78, 0xE0, 0x03, - 0x83, 0x00, 0x38, 0x18, 0x03, 0x80, 0xE0, 0x18, 0x03, 0x01, 0x80, 0x0C, - 0x38, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x80, 0x1F, 0xC0, 0x3F, 0xE0, - 0x01, 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, - 0x00, 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x00, - 0xF0, 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x1E, 0x00, - 0x0F, 0x00, 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x01, 0xE0, 0x01, 0xE0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x3F, 0x01, 0xFF, - 0xF0, 0x00, 0x3F, 0x00, 0x07, 0xFE, 0x00, 0x7F, 0xF8, 0x07, 0x07, 0xE0, - 0x60, 0x1F, 0x06, 0x00, 0x7C, 0x20, 0x01, 0xE0, 0x00, 0x0F, 0x00, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, - 0x00, 0xF0, 0x00, 0x07, 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x70, - 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x00, 0x03, - 0x00, 0x00, 0x30, 0x00, 0x03, 0x00, 0x00, 0x30, 0x01, 0x03, 0x00, 0x08, - 0x30, 0x00, 0xC3, 0xFF, 0xFC, 0x3F, 0xFF, 0xE3, 0xFF, 0xFE, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0xFF, 0xC0, 0x06, 0x0F, 0x80, 0x30, 0x1E, 0x01, 0x80, - 0x3C, 0x00, 0x00, 0xF0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x78, - 0x00, 0x01, 0xE0, 0x00, 0x0E, 0x00, 0x00, 0xF0, 0x00, 0x0E, 0x00, 0x01, - 0xF8, 0x00, 0x3F, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x07, 0xC0, 0x00, 0x0F, - 0x80, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x07, 0x80, - 0x00, 0x1E, 0x00, 0x00, 0x70, 0x00, 0x01, 0xC0, 0x00, 0x07, 0x00, 0x00, - 0x38, 0x00, 0x00, 0xC0, 0x70, 0x06, 0x03, 0xF8, 0x70, 0x07, 0xFF, 0x00, - 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x70, 0x00, 0x03, 0xC0, - 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xE0, 0x00, 0x37, 0x80, 0x00, - 0xDC, 0x00, 0x06, 0x70, 0x00, 0x33, 0xC0, 0x01, 0x8F, 0x00, 0x0C, 0x38, - 0x00, 0x60, 0xE0, 0x03, 0x07, 0x80, 0x18, 0x1E, 0x00, 0xC0, 0x70, 0x06, - 0x03, 0xC0, 0x30, 0x0F, 0x01, 0x80, 0x38, 0x0C, 0x00, 0xE0, 0x70, 0x07, - 0x81, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFE, 0x00, 0x0F, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x80, 0x00, 0x1E, 0x00, 0x00, - 0x70, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x00, 0x00, 0x3F, 0xFC, 0x00, 0xFF, - 0xF0, 0x07, 0xFF, 0x80, 0x10, 0x00, 0x00, 0x40, 0x00, 0x02, 0x00, 0x00, - 0x08, 0x00, 0x00, 0x70, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xF0, 0x00, 0x3F, - 0xF0, 0x00, 0x1F, 0xE0, 0x00, 0x1F, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3C, - 0x00, 0x00, 0x78, 0x00, 0x01, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0E, 0x00, - 0x00, 0x38, 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0C, 0x00, 0x00, - 0x70, 0x00, 0x01, 0xC0, 0x00, 0x06, 0x00, 0x00, 0x30, 0x00, 0x01, 0x80, - 0x70, 0x0E, 0x03, 0xF0, 0xE0, 0x07, 0xFF, 0x00, 0x0F, 0xE0, 0x00, 0x00, - 0x00, 0x0E, 0x00, 0x01, 0xF0, 0x00, 0x1F, 0x00, 0x00, 0xF8, 0x00, 0x03, - 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xC0, - 0x00, 0x0F, 0x80, 0x00, 0x3E, 0x00, 0x00, 0xF9, 0xF8, 0x01, 0xFF, 0xFC, - 0x07, 0xE0, 0x7C, 0x0F, 0x80, 0x7C, 0x3E, 0x00, 0x78, 0x78, 0x00, 0x78, - 0xF0, 0x00, 0xF3, 0xC0, 0x01, 0xE7, 0x80, 0x03, 0xCF, 0x00, 0x07, 0x9C, - 0x00, 0x0F, 0x38, 0x00, 0x3E, 0x70, 0x00, 0x78, 0xE0, 0x00, 0xF1, 0xC0, - 0x03, 0xC1, 0x80, 0x07, 0x83, 0x00, 0x1E, 0x03, 0x00, 0x38, 0x06, 0x01, - 0xE0, 0x03, 0x07, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0xFF, 0xF9, 0xFF, 0xFF, - 0xCF, 0xFF, 0xFC, 0xE0, 0x00, 0xCC, 0x00, 0x0E, 0x40, 0x00, 0x60, 0x00, - 0x07, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x38, 0x00, 0x01, 0x80, - 0x00, 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0xE0, 0x00, 0x07, - 0x00, 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x38, 0x00, 0x03, 0x80, 0x00, - 0x1C, 0x00, 0x01, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x0E, 0x00, - 0x00, 0x70, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0x80, 0x00, 0x38, - 0x00, 0x01, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x03, 0x83, - 0x80, 0x1C, 0x03, 0x00, 0xE0, 0x0E, 0x07, 0x00, 0x1C, 0x1C, 0x00, 0x70, - 0x70, 0x01, 0xC1, 0xC0, 0x07, 0x07, 0x80, 0x1C, 0x1E, 0x00, 0xE0, 0x3C, - 0x07, 0x80, 0xFC, 0x38, 0x01, 0xFB, 0xC0, 0x03, 0xF8, 0x00, 0x0F, 0xE0, - 0x00, 0x7F, 0xC0, 0x07, 0x1F, 0x80, 0x78, 0x3F, 0x03, 0x80, 0x7C, 0x1E, - 0x00, 0xF8, 0x70, 0x01, 0xE3, 0x80, 0x03, 0xCE, 0x00, 0x07, 0x38, 0x00, - 0x1C, 0xE0, 0x00, 0x73, 0x80, 0x01, 0xCE, 0x00, 0x06, 0x1C, 0x00, 0x38, - 0x70, 0x01, 0xC0, 0xE0, 0x0E, 0x01, 0xE0, 0xE0, 0x01, 0xFE, 0x00, 0x00, - 0x1F, 0x80, 0x03, 0xC3, 0x00, 0x1C, 0x02, 0x00, 0xE0, 0x0C, 0x07, 0x00, - 0x18, 0x3C, 0x00, 0x60, 0xE0, 0x01, 0xC7, 0x80, 0x07, 0x1E, 0x00, 0x1C, - 0xF0, 0x00, 0x73, 0xC0, 0x01, 0xCF, 0x00, 0x07, 0x3C, 0x00, 0x3C, 0xF0, - 0x00, 0xF3, 0xC0, 0x03, 0xCF, 0x00, 0x1E, 0x1E, 0x00, 0x78, 0x7C, 0x03, - 0xE0, 0xF8, 0x3F, 0x01, 0xFF, 0xBC, 0x03, 0xF1, 0xE0, 0x00, 0x0F, 0x80, - 0x00, 0x3C, 0x00, 0x01, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x7C, 0x00, 0x03, - 0xE0, 0x00, 0x1F, 0x00, 0x00, 0xF0, 0x00, 0x0F, 0x80, 0x00, 0x78, 0x00, - 0x0F, 0x80, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x07, 0xC3, 0xE1, 0xF0, 0x70, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x3E, 0x1F, 0x0F, 0x83, 0x80, 0x01, 0xC0, 0x7C, 0x0F, 0x81, - 0xF0, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x07, 0x80, 0xF8, 0x1F, 0x01, 0xE0, - 0x1C, 0x03, 0x00, 0xC0, 0x18, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x0C, 0x00, 0x00, 0xF8, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, - 0x01, 0xFC, 0x00, 0x0F, 0xE0, 0x00, 0xFF, 0x00, 0x07, 0xF8, 0x00, 0x3F, - 0xC0, 0x01, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x1F, 0x80, - 0x00, 0x3F, 0xC0, 0x00, 0x1F, 0xE0, 0x00, 0x07, 0xF0, 0x00, 0x03, 0xF8, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x7F, 0x80, 0x00, 0x1F, - 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x07, 0x00, 0x00, 0x02, 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, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x3F, 0x80, 0x00, - 0x0F, 0xF0, 0x00, 0x03, 0xFC, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x07, 0xF0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x1F, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0xFE, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xE0, - 0x00, 0x7F, 0x80, 0x01, 0xFC, 0x00, 0x07, 0xF0, 0x00, 0x3F, 0xC0, 0x00, - 0xFF, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x03, 0xF0, 0x06, 0x1C, 0x0C, 0x0E, 0x1C, 0x06, 0x1C, 0x07, 0x1C, 0x07, - 0x1C, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x3C, - 0x00, 0x38, 0x00, 0x70, 0x00, 0xE0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x00, - 0x06, 0x00, 0x04, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xF8, 0x00, - 0xF8, 0x00, 0xF8, 0x00, 0x70, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x1F, - 0xFF, 0x80, 0x00, 0x3F, 0x01, 0xF0, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x7C, - 0x00, 0x07, 0x80, 0x7C, 0x00, 0x00, 0xE0, 0x3C, 0x00, 0x00, 0x38, 0x3C, - 0x00, 0x00, 0x0C, 0x3C, 0x00, 0x78, 0x07, 0x1E, 0x00, 0xFE, 0xE1, 0x9E, - 0x00, 0xF1, 0xF0, 0xEF, 0x00, 0xE0, 0xF0, 0x37, 0x80, 0xE0, 0x38, 0x1F, - 0x80, 0x70, 0x1C, 0x0F, 0xC0, 0x70, 0x1E, 0x07, 0xE0, 0x38, 0x0F, 0x03, - 0xF0, 0x18, 0x07, 0x01, 0xF8, 0x1C, 0x03, 0x80, 0xFC, 0x0E, 0x01, 0xC0, - 0xDE, 0x07, 0x01, 0xE0, 0x6F, 0x03, 0x80, 0xE0, 0x73, 0xC1, 0xC0, 0xF0, - 0x31, 0xE0, 0xF0, 0xF8, 0x30, 0xF0, 0x38, 0xDC, 0x30, 0x3C, 0x1F, 0xC7, - 0xF0, 0x0E, 0x07, 0x81, 0xF0, 0x07, 0x80, 0x00, 0x00, 0x01, 0xE0, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x01, 0x00, 0x03, 0xF0, - 0x0F, 0x80, 0x00, 0x7F, 0xFF, 0x00, 0x00, 0x07, 0xFC, 0x00, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, - 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x03, 0xF0, - 0x00, 0x00, 0x37, 0x80, 0x00, 0x03, 0x3C, 0x00, 0x00, 0x19, 0xE0, 0x00, - 0x01, 0x8F, 0x80, 0x00, 0x08, 0x7C, 0x00, 0x00, 0xC3, 0xE0, 0x00, 0x0C, - 0x0F, 0x00, 0x00, 0x60, 0x78, 0x00, 0x06, 0x03, 0xC0, 0x00, 0x20, 0x1F, - 0x00, 0x03, 0x00, 0xF8, 0x00, 0x3F, 0xFF, 0xC0, 0x01, 0xFF, 0xFE, 0x00, - 0x18, 0x00, 0xF0, 0x00, 0xC0, 0x07, 0x80, 0x0C, 0x00, 0x3E, 0x00, 0xE0, - 0x01, 0xF0, 0x06, 0x00, 0x0F, 0x80, 0x70, 0x00, 0x3C, 0x03, 0x00, 0x01, - 0xE0, 0x38, 0x00, 0x0F, 0x83, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x07, 0xF3, - 0xFC, 0x01, 0xFF, 0xE0, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x3E, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, - 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, - 0x3F, 0x00, 0x1F, 0xFF, 0x80, 0x01, 0xFF, 0xFC, 0x00, 0x1F, 0x07, 0xE0, - 0x01, 0xE0, 0x1F, 0x00, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x07, 0xC0, 0x3C, - 0x00, 0x7C, 0x03, 0xC0, 0x07, 0xC0, 0x7C, 0x00, 0x7C, 0x07, 0xC0, 0x07, - 0xC0, 0x78, 0x00, 0x7C, 0x0F, 0x80, 0x0F, 0x80, 0xF8, 0x00, 0xF8, 0x0F, - 0x00, 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1F, 0x81, 0xFC, 0x03, 0xFF, 0xFF, - 0x80, 0xFF, 0xFF, 0xC0, 0x00, 0x00, 0x01, 0xFE, 0x04, 0x00, 0x3F, 0xFF, - 0xE0, 0x03, 0xF0, 0x1F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0xF0, 0x00, 0x78, - 0x0F, 0x80, 0x00, 0xE0, 0x3C, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x04, 0x0F, - 0x80, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x00, 0x3E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x07, 0xC0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x01, 0xF0, 0x00, 0x02, 0x07, 0xC0, 0x00, 0x18, 0x0F, 0x80, - 0x00, 0xC0, 0x3E, 0x00, 0x06, 0x00, 0x7C, 0x00, 0x70, 0x00, 0xFC, 0x07, - 0x00, 0x00, 0xFF, 0xF8, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x03, 0xFF, 0xFF, - 0x00, 0x00, 0x3F, 0xFF, 0xE0, 0x00, 0x0F, 0xC0, 0xFC, 0x00, 0x07, 0xC0, - 0x1F, 0x00, 0x03, 0xE0, 0x07, 0xC0, 0x01, 0xE0, 0x01, 0xF0, 0x01, 0xF0, - 0x00, 0x7C, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x7C, 0x00, 0x0F, 0x00, 0x3C, - 0x00, 0x07, 0xC0, 0x3E, 0x00, 0x03, 0xE0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, - 0x00, 0x00, 0xF8, 0x0F, 0x80, 0x00, 0x7C, 0x07, 0xC0, 0x00, 0x3E, 0x03, - 0xE0, 0x00, 0x1F, 0x01, 0xE0, 0x00, 0x1F, 0x81, 0xF0, 0x00, 0x0F, 0x80, - 0xF8, 0x00, 0x07, 0xC0, 0x78, 0x00, 0x03, 0xE0, 0x3C, 0x00, 0x03, 0xE0, - 0x3E, 0x00, 0x01, 0xF0, 0x1F, 0x00, 0x01, 0xF0, 0x0F, 0x00, 0x01, 0xF0, - 0x0F, 0x80, 0x01, 0xF8, 0x07, 0xC0, 0x01, 0xF0, 0x03, 0xE0, 0x01, 0xF0, - 0x01, 0xE0, 0x03, 0xF0, 0x01, 0xF8, 0x0F, 0xE0, 0x01, 0xFF, 0xFF, 0xC0, - 0x03, 0xFF, 0xFE, 0x00, 0x00, 0x03, 0xFF, 0xFF, 0xF8, 0x03, 0xFF, 0xFF, - 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, 0x30, 0x03, 0xE0, 0x01, 0x00, - 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, 0x0F, 0x80, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x03, 0xC0, 0x10, 0x00, 0x3E, 0x01, 0x80, 0x01, 0xF0, 0x08, - 0x00, 0x0F, 0x01, 0xC0, 0x00, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF0, 0x00, - 0x3E, 0x07, 0x00, 0x01, 0xE0, 0x18, 0x00, 0x1F, 0x00, 0xC0, 0x00, 0xF8, - 0x04, 0x00, 0x07, 0x80, 0x20, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x08, 0x0F, 0x80, 0x00, 0xC0, - 0x7C, 0x00, 0x0E, 0x03, 0xC0, 0x00, 0xE0, 0x1E, 0x00, 0x0F, 0x01, 0xF8, - 0x03, 0xF8, 0x1F, 0xFF, 0xFF, 0x83, 0xFF, 0xFF, 0xFC, 0x00, 0x03, 0xFF, - 0xFF, 0xF8, 0x03, 0xFF, 0xFF, 0xC0, 0x0F, 0x80, 0x1E, 0x00, 0x7C, 0x00, - 0x30, 0x03, 0xE0, 0x01, 0x00, 0x1E, 0x00, 0x08, 0x01, 0xF0, 0x00, 0x40, - 0x0F, 0x80, 0x02, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x3E, - 0x00, 0x80, 0x01, 0xF0, 0x0C, 0x00, 0x0F, 0x00, 0xC0, 0x00, 0xF8, 0x0E, - 0x00, 0x07, 0xFF, 0xF0, 0x00, 0x3F, 0xFF, 0x00, 0x01, 0xE0, 0x18, 0x00, - 0x1F, 0x00, 0xC0, 0x00, 0xF8, 0x06, 0x00, 0x07, 0xC0, 0x20, 0x00, 0x3C, - 0x01, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xFF, - 0xC0, 0x00, 0x00, 0x00, 0x01, 0xFE, 0x02, 0x00, 0x1F, 0xFF, 0x8C, 0x00, - 0xFC, 0x07, 0xF8, 0x03, 0xE0, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0xC0, 0x3C, - 0x00, 0x03, 0x80, 0xF0, 0x00, 0x07, 0x03, 0xC0, 0x00, 0x0E, 0x0F, 0x80, - 0x00, 0x08, 0x3E, 0x00, 0x00, 0x10, 0x7C, 0x00, 0x00, 0x01, 0xF0, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x3F, - 0xFF, 0xE0, 0x00, 0x0F, 0xE7, 0xC0, 0x00, 0x0F, 0x0F, 0x80, 0x00, 0x1E, - 0x1F, 0x00, 0x00, 0x7C, 0x3E, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x01, 0xE0, - 0x78, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x0F, 0x01, 0xF0, 0x00, 0x1E, 0x01, - 0xF0, 0x00, 0x3C, 0x01, 0xE0, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xE0, 0x01, - 0xF8, 0x0F, 0x80, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x7F, 0xC0, 0x00, 0x03, - 0xFF, 0xE0, 0x7F, 0xF0, 0x07, 0xF8, 0x01, 0xFC, 0x00, 0x3E, 0x00, 0x0F, - 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, - 0x78, 0x00, 0x1E, 0x00, 0x07, 0x80, 0x01, 0xE0, 0x00, 0xF8, 0x00, 0x3E, - 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x03, 0xC0, 0x01, 0xFF, 0xFF, 0xFC, 0x00, 0x1F, 0xFF, 0xFF, 0x80, 0x01, - 0xE0, 0x00, 0x78, 0x00, 0x3E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF8, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x00, 0x7C, 0x00, - 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, - 0x80, 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xF8, 0x00, - 0xFE, 0x00, 0xFF, 0xE0, 0x7F, 0xFC, 0x00, 0x01, 0xFF, 0xC0, 0x1F, 0xE0, - 0x03, 0xE0, 0x00, 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x07, 0xC0, 0x01, - 0xF0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, - 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xE0, 0x00, 0xF8, 0x00, - 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1E, - 0x00, 0x0F, 0x80, 0x03, 0xE0, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x1F, 0x00, - 0x0F, 0xE0, 0x0F, 0xFE, 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x07, 0xF0, 0x00, - 0x07, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1E, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x03, 0xC0, 0x00, 0x0F, 0x80, 0x00, 0x1F, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x78, 0x00, 0x01, 0xF0, 0x00, 0x03, 0xE0, - 0x00, 0x07, 0x80, 0x00, 0x1F, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x78, 0x00, - 0x00, 0xF0, 0x00, 0x03, 0xE0, 0x00, 0x07, 0xC0, 0x00, 0x0F, 0x00, 0x00, - 0x1E, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xF0, 0x01, 0xC1, 0xE0, 0x07, 0xC7, - 0x80, 0x0F, 0x8F, 0x00, 0x1F, 0x3C, 0x00, 0x1F, 0xF0, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xFF, 0xE1, 0xFF, 0x80, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, 0x80, - 0x0F, 0x00, 0x07, 0xC0, 0x0F, 0x00, 0x03, 0xC0, 0x0F, 0x00, 0x01, 0xE0, - 0x0E, 0x00, 0x01, 0xF0, 0x0E, 0x00, 0x00, 0xF8, 0x0E, 0x00, 0x00, 0x78, - 0x1C, 0x00, 0x00, 0x3C, 0x1C, 0x00, 0x00, 0x3E, 0x3C, 0x00, 0x00, 0x1F, - 0x38, 0x00, 0x00, 0x0F, 0x38, 0x00, 0x00, 0x07, 0xF8, 0x00, 0x00, 0x07, - 0xFE, 0x00, 0x00, 0x03, 0xDF, 0x00, 0x00, 0x01, 0xE7, 0xC0, 0x00, 0x01, - 0xF3, 0xE0, 0x00, 0x00, 0xF8, 0xF8, 0x00, 0x00, 0x78, 0x3C, 0x00, 0x00, - 0x3C, 0x1F, 0x00, 0x00, 0x3E, 0x07, 0xC0, 0x00, 0x1F, 0x03, 0xE0, 0x00, - 0x0F, 0x00, 0xF8, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x07, 0xC0, 0x1F, 0x00, - 0x03, 0xC0, 0x07, 0x80, 0x01, 0xE0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8, - 0x01, 0xFC, 0x01, 0xFE, 0x03, 0xFF, 0xC3, 0xFF, 0xE0, 0x03, 0xFF, 0xE0, - 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, - 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, - 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, - 0x0F, 0x80, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x80, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x01, - 0xF0, 0x00, 0x08, 0x3C, 0x00, 0x03, 0x0F, 0x80, 0x00, 0x41, 0xF0, 0x00, - 0x18, 0x3C, 0x00, 0x07, 0x07, 0x80, 0x01, 0xC1, 0xF8, 0x01, 0xF8, 0x7F, - 0xFF, 0xFF, 0x3F, 0xFF, 0xFF, 0xC0, 0x01, 0xFF, 0x00, 0x00, 0x3F, 0xC0, - 0x0F, 0xC0, 0x00, 0x1F, 0xC0, 0x01, 0xF0, 0x00, 0x0F, 0xE0, 0x00, 0xFC, - 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x00, 0x01, 0xFC, 0x00, 0x0F, 0xC0, 0x00, - 0xFF, 0x00, 0x02, 0xF0, 0x00, 0x37, 0x80, 0x01, 0xBC, 0x00, 0x19, 0xE0, - 0x00, 0x6F, 0x80, 0x0E, 0xF8, 0x00, 0x1B, 0xE0, 0x03, 0x3E, 0x00, 0x04, - 0x78, 0x01, 0x8F, 0x00, 0x03, 0x1E, 0x00, 0xE7, 0xC0, 0x00, 0xC7, 0x80, - 0x31, 0xF0, 0x00, 0x21, 0xE0, 0x18, 0x78, 0x00, 0x18, 0x78, 0x0E, 0x1E, - 0x00, 0x06, 0x1E, 0x03, 0x0F, 0x80, 0x01, 0x87, 0x81, 0x83, 0xE0, 0x00, - 0x41, 0xF0, 0xE0, 0xF0, 0x00, 0x30, 0x7C, 0x30, 0x3C, 0x00, 0x0C, 0x0F, - 0x18, 0x1F, 0x00, 0x03, 0x03, 0xCE, 0x07, 0xC0, 0x01, 0x80, 0xF3, 0x01, - 0xE0, 0x00, 0x60, 0x3D, 0x80, 0xF8, 0x00, 0x18, 0x0F, 0xE0, 0x3E, 0x00, - 0x0C, 0x03, 0xF0, 0x0F, 0x00, 0x03, 0x00, 0xF8, 0x03, 0xC0, 0x00, 0xC0, - 0x3E, 0x01, 0xF0, 0x00, 0x70, 0x0F, 0x00, 0x7C, 0x00, 0x1C, 0x01, 0x80, - 0x3F, 0x00, 0x0F, 0x80, 0x60, 0x1F, 0xC0, 0x0F, 0xF8, 0x10, 0x1F, 0xFE, - 0x00, 0x03, 0xFC, 0x00, 0x3F, 0xE0, 0x1F, 0xC0, 0x01, 0xF8, 0x00, 0xF8, - 0x00, 0x1C, 0x00, 0x1F, 0x00, 0x03, 0x80, 0x03, 0xF0, 0x00, 0x60, 0x00, - 0x7E, 0x00, 0x0C, 0x00, 0x0B, 0xE0, 0x03, 0x80, 0x03, 0x7C, 0x00, 0x60, - 0x00, 0x67, 0x80, 0x0C, 0x00, 0x0C, 0xF8, 0x03, 0x80, 0x03, 0x0F, 0x00, - 0x70, 0x00, 0x61, 0xF0, 0x0C, 0x00, 0x0C, 0x3E, 0x01, 0x80, 0x01, 0x83, - 0xC0, 0x70, 0x00, 0x60, 0x7C, 0x0C, 0x00, 0x0C, 0x07, 0x81, 0x80, 0x01, - 0x80, 0xF8, 0x30, 0x00, 0x60, 0x0F, 0x0E, 0x00, 0x0C, 0x01, 0xE1, 0x80, - 0x01, 0x80, 0x3E, 0x30, 0x00, 0x30, 0x03, 0xCE, 0x00, 0x0C, 0x00, 0x7D, - 0x80, 0x01, 0x80, 0x07, 0xB0, 0x00, 0x30, 0x00, 0xF6, 0x00, 0x0E, 0x00, - 0x1F, 0xC0, 0x01, 0x80, 0x01, 0xF0, 0x00, 0x30, 0x00, 0x3E, 0x00, 0x0E, - 0x00, 0x03, 0xC0, 0x01, 0xC0, 0x00, 0x70, 0x00, 0x7C, 0x00, 0x06, 0x00, - 0x3F, 0xE0, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xFE, - 0x00, 0x00, 0x1F, 0xFE, 0x00, 0x01, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, - 0x00, 0x78, 0x00, 0xF0, 0x07, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x07, 0x81, - 0xF0, 0x00, 0x1E, 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF0, - 0x00, 0x07, 0xC7, 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, - 0x01, 0xF7, 0xE0, 0x00, 0x0F, 0xDF, 0x00, 0x00, 0x3F, 0x7C, 0x00, 0x00, - 0xFB, 0xF0, 0x00, 0x07, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, - 0xF8, 0x00, 0x03, 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, - 0x00, 0x01, 0xF0, 0xF8, 0x00, 0x0F, 0x81, 0xE0, 0x00, 0x3E, 0x07, 0x80, - 0x01, 0xF0, 0x1F, 0x00, 0x0F, 0x80, 0x3C, 0x00, 0x7C, 0x00, 0x78, 0x03, - 0xC0, 0x00, 0xF8, 0x3E, 0x00, 0x01, 0xFF, 0xE0, 0x00, 0x01, 0xFC, 0x00, - 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x0F, 0x81, 0xF8, - 0x00, 0x7C, 0x03, 0xE0, 0x03, 0xE0, 0x1F, 0x00, 0x1E, 0x00, 0x7C, 0x01, - 0xF0, 0x03, 0xE0, 0x0F, 0x80, 0x1F, 0x00, 0x78, 0x00, 0xF8, 0x03, 0xC0, - 0x07, 0xC0, 0x3E, 0x00, 0x3C, 0x01, 0xF0, 0x03, 0xE0, 0x0F, 0x00, 0x3E, - 0x00, 0xF8, 0x03, 0xF0, 0x07, 0xC0, 0x7E, 0x00, 0x3F, 0xFF, 0xE0, 0x01, - 0xEF, 0xF8, 0x00, 0x1F, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x07, 0x80, - 0x00, 0x00, 0x3C, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x00, 0xF0, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x1F, 0xC0, - 0x00, 0x03, 0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1F, - 0xFE, 0x00, 0x00, 0xF0, 0x7C, 0x00, 0x0F, 0x00, 0x78, 0x00, 0x78, 0x00, - 0xF0, 0x03, 0xC0, 0x03, 0xE0, 0x1E, 0x00, 0x07, 0x80, 0xF0, 0x00, 0x1E, - 0x07, 0xC0, 0x00, 0x7C, 0x3E, 0x00, 0x01, 0xF1, 0xF8, 0x00, 0x07, 0xC7, - 0xC0, 0x00, 0x1F, 0x3F, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, 0xF7, 0xE0, - 0x00, 0x0F, 0xDF, 0x80, 0x00, 0x3F, 0x7C, 0x00, 0x00, 0xFB, 0xF0, 0x00, - 0x03, 0xEF, 0xC0, 0x00, 0x1F, 0xBE, 0x00, 0x00, 0x7C, 0xF8, 0x00, 0x01, - 0xF3, 0xE0, 0x00, 0x0F, 0x8F, 0x80, 0x00, 0x3E, 0x3E, 0x00, 0x01, 0xF0, - 0xF8, 0x00, 0x07, 0xC3, 0xE0, 0x00, 0x3E, 0x07, 0x80, 0x01, 0xF0, 0x1F, - 0x00, 0x07, 0x80, 0x3C, 0x00, 0x3C, 0x00, 0xF8, 0x01, 0xE0, 0x01, 0xE0, - 0x1E, 0x00, 0x01, 0xF3, 0xE0, 0x00, 0x01, 0xFE, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x04, 0x0F, 0xF0, 0x00, - 0x60, 0x7F, 0xFC, 0x07, 0x03, 0xFF, 0xFF, 0xF8, 0x38, 0x1F, 0xFF, 0x80, - 0x00, 0x07, 0xF8, 0x00, 0x03, 0xFF, 0xFE, 0x00, 0x07, 0xFF, 0xF8, 0x00, - 0x3E, 0x0F, 0xC0, 0x03, 0xE0, 0x3E, 0x00, 0x3E, 0x01, 0xF0, 0x03, 0xC0, - 0x1F, 0x00, 0x7C, 0x01, 0xF0, 0x07, 0xC0, 0x1F, 0x00, 0x78, 0x01, 0xF0, - 0x07, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0x80, 0x7C, 0x00, 0xF0, - 0x1F, 0x80, 0x1F, 0xFF, 0xE0, 0x01, 0xFF, 0xF0, 0x00, 0x1E, 0x1E, 0x00, - 0x01, 0xE1, 0xE0, 0x00, 0x3E, 0x1F, 0x00, 0x03, 0xE0, 0xF0, 0x00, 0x3C, - 0x0F, 0x00, 0x03, 0xC0, 0xF8, 0x00, 0x7C, 0x07, 0x80, 0x07, 0xC0, 0x7C, - 0x00, 0x78, 0x03, 0xC0, 0x0F, 0x80, 0x3C, 0x00, 0xF8, 0x03, 0xE0, 0x0F, - 0x00, 0x1E, 0x00, 0xF0, 0x01, 0xE0, 0x1F, 0x00, 0x1F, 0x03, 0xF8, 0x00, - 0xF8, 0xFF, 0xE0, 0x0F, 0xE0, 0x00, 0x3F, 0x06, 0x01, 0xFF, 0xDC, 0x07, - 0xC1, 0xF0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0xF0, 0x03, 0x81, 0xE0, - 0x03, 0x03, 0xC0, 0x04, 0x07, 0x80, 0x08, 0x0F, 0x80, 0x00, 0x1F, 0x00, - 0x00, 0x1F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x3E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7C, 0x08, 0x00, 0x78, 0x10, - 0x00, 0xF0, 0x20, 0x01, 0xE0, 0xC0, 0x03, 0xC1, 0x80, 0x07, 0x83, 0x80, - 0x1E, 0x07, 0x00, 0x3C, 0x0F, 0x00, 0xF0, 0x1F, 0x87, 0xC0, 0x23, 0xFF, - 0x00, 0x81, 0xF8, 0x00, 0x3F, 0xFF, 0xFF, 0xE7, 0xFF, 0xFF, 0xFD, 0xF0, - 0x3E, 0x07, 0xB8, 0x07, 0xC0, 0x76, 0x00, 0xF8, 0x04, 0x80, 0x3E, 0x00, - 0xB0, 0x07, 0xC0, 0x14, 0x00, 0xF8, 0x02, 0x00, 0x1E, 0x00, 0x00, 0x07, - 0xC0, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, - 0x00, 0xF8, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0xF8, - 0x00, 0x00, 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x1F, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, - 0x00, 0x03, 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x03, - 0xE0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x3F, 0xFF, 0x00, - 0x00, 0x7F, 0xFE, 0x03, 0xFE, 0x1F, 0xE0, 0x01, 0xF8, 0x1F, 0x80, 0x01, - 0xC0, 0x3E, 0x00, 0x03, 0x80, 0x7C, 0x00, 0x07, 0x00, 0xF8, 0x00, 0x0C, - 0x03, 0xE0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x70, 0x0F, 0x80, 0x00, 0xC0, - 0x1F, 0x00, 0x01, 0x80, 0x7C, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x0E, 0x01, - 0xF0, 0x00, 0x18, 0x07, 0xC0, 0x00, 0x30, 0x0F, 0x80, 0x00, 0x60, 0x1F, - 0x00, 0x01, 0x80, 0x3E, 0x00, 0x03, 0x00, 0xF8, 0x00, 0x06, 0x01, 0xF0, - 0x00, 0x18, 0x03, 0xE0, 0x00, 0x30, 0x07, 0xC0, 0x00, 0x60, 0x1F, 0x00, - 0x00, 0xC0, 0x3E, 0x00, 0x03, 0x00, 0x7C, 0x00, 0x06, 0x00, 0xF8, 0x00, - 0x18, 0x01, 0xF0, 0x00, 0x30, 0x03, 0xE0, 0x00, 0xC0, 0x03, 0xE0, 0x03, - 0x80, 0x03, 0xE0, 0x0E, 0x00, 0x03, 0xF0, 0x78, 0x00, 0x03, 0xFF, 0xC0, - 0x00, 0x01, 0xFE, 0x00, 0x00, 0xFF, 0xE0, 0x0F, 0xF9, 0xFC, 0x00, 0x1F, - 0x07, 0xC0, 0x00, 0x78, 0x3E, 0x00, 0x03, 0x81, 0xF0, 0x00, 0x18, 0x0F, - 0x80, 0x01, 0xC0, 0x7C, 0x00, 0x0C, 0x01, 0xE0, 0x00, 0xC0, 0x0F, 0x80, - 0x06, 0x00, 0x7C, 0x00, 0x60, 0x03, 0xE0, 0x07, 0x00, 0x1F, 0x00, 0x30, - 0x00, 0xF8, 0x03, 0x00, 0x03, 0xC0, 0x18, 0x00, 0x1E, 0x01, 0x80, 0x00, - 0xF8, 0x1C, 0x00, 0x07, 0xC0, 0xC0, 0x00, 0x3E, 0x0C, 0x00, 0x01, 0xF0, - 0x60, 0x00, 0x07, 0x86, 0x00, 0x00, 0x3C, 0x30, 0x00, 0x01, 0xE3, 0x00, - 0x00, 0x0F, 0xB0, 0x00, 0x00, 0x7D, 0x80, 0x00, 0x03, 0xF8, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x00, 0xFF, 0xE3, 0xFF, 0x81, 0xFE, 0x7F, 0x01, 0xFC, 0x00, 0xF8, 0x7C, - 0x01, 0xF0, 0x00, 0xE0, 0xF8, 0x03, 0xE0, 0x01, 0x81, 0xF0, 0x03, 0xC0, - 0x07, 0x03, 0xE0, 0x07, 0x80, 0x0C, 0x03, 0xC0, 0x0F, 0x00, 0x18, 0x07, - 0x80, 0x1E, 0x00, 0x60, 0x0F, 0x00, 0x7E, 0x00, 0xC0, 0x1F, 0x00, 0xFC, - 0x03, 0x00, 0x3E, 0x03, 0xF8, 0x06, 0x00, 0x7C, 0x05, 0xF0, 0x18, 0x00, - 0xF8, 0x1B, 0xE0, 0x30, 0x01, 0xF0, 0x33, 0xC0, 0xC0, 0x01, 0xE0, 0xC7, - 0x83, 0x80, 0x03, 0xC1, 0x8F, 0x06, 0x00, 0x07, 0x86, 0x1E, 0x1C, 0x00, - 0x0F, 0x0C, 0x3C, 0x30, 0x00, 0x1F, 0x30, 0x7C, 0xE0, 0x00, 0x3E, 0x60, - 0xF9, 0x80, 0x00, 0x7D, 0x81, 0xF7, 0x00, 0x00, 0xFB, 0x03, 0xEC, 0x00, - 0x01, 0xFC, 0x03, 0xF8, 0x00, 0x01, 0xF8, 0x07, 0xE0, 0x00, 0x03, 0xE0, - 0x0F, 0x80, 0x00, 0x07, 0xC0, 0x1F, 0x00, 0x00, 0x0F, 0x00, 0x3C, 0x00, - 0x00, 0x1E, 0x00, 0x78, 0x00, 0x00, 0x38, 0x00, 0xE0, 0x00, 0x00, 0x70, - 0x01, 0xC0, 0x00, 0x00, 0xC0, 0x03, 0x00, 0x00, 0x00, 0x80, 0x06, 0x00, - 0x00, 0x07, 0xFF, 0x83, 0xFF, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7C, 0x00, - 0x78, 0x00, 0x7C, 0x00, 0x70, 0x00, 0x3C, 0x00, 0xE0, 0x00, 0x3E, 0x01, - 0xC0, 0x00, 0x3E, 0x01, 0x80, 0x00, 0x1F, 0x03, 0x00, 0x00, 0x1F, 0x07, - 0x00, 0x00, 0x0F, 0x0E, 0x00, 0x00, 0x0F, 0x9C, 0x00, 0x00, 0x0F, 0xB8, - 0x00, 0x00, 0x07, 0xF0, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x03, 0xC0, - 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x07, 0xF0, - 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0x1C, 0xF0, 0x00, 0x00, 0x38, 0xF8, - 0x00, 0x00, 0x30, 0xF8, 0x00, 0x00, 0x60, 0x7C, 0x00, 0x00, 0xC0, 0x7C, - 0x00, 0x01, 0xC0, 0x3C, 0x00, 0x03, 0x80, 0x3E, 0x00, 0x07, 0x00, 0x3E, - 0x00, 0x0E, 0x00, 0x1F, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x7F, 0x00, 0x3F, - 0xC0, 0xFF, 0xC1, 0xFF, 0xF0, 0x7F, 0xF0, 0x7F, 0xC7, 0xF0, 0x03, 0xE0, - 0xF8, 0x00, 0x70, 0x3E, 0x00, 0x38, 0x07, 0x80, 0x0C, 0x01, 0xE0, 0x07, - 0x00, 0x7C, 0x03, 0x80, 0x1F, 0x00, 0xC0, 0x03, 0xC0, 0x60, 0x00, 0xF0, - 0x30, 0x00, 0x3E, 0x1C, 0x00, 0x07, 0x8E, 0x00, 0x01, 0xE3, 0x00, 0x00, - 0x7D, 0x80, 0x00, 0x1F, 0xC0, 0x00, 0x03, 0xF0, 0x00, 0x00, 0xF8, 0x00, - 0x00, 0x3C, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x01, 0xF0, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x03, - 0xC0, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x0F, 0xC0, 0x00, 0x07, 0xF0, 0x00, 0x0F, 0xFF, 0xC0, 0x00, 0x03, 0xFF, - 0xFF, 0xF8, 0x1F, 0xFF, 0xFF, 0x81, 0xF0, 0x00, 0xFC, 0x0E, 0x00, 0x0F, - 0xC0, 0x60, 0x00, 0xFC, 0x06, 0x00, 0x0F, 0xC0, 0x20, 0x00, 0x7C, 0x00, - 0x00, 0x07, 0xE0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x07, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x03, 0xE0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, - 0x00, 0x00, 0x3F, 0x00, 0x00, 0x03, 0xF0, 0x00, 0x00, 0x1F, 0x00, 0x00, - 0x01, 0xF8, 0x00, 0x00, 0x1F, 0x80, 0x00, 0x01, 0xF8, 0x00, 0x00, 0x1F, - 0x80, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x0F, 0xC0, 0x00, 0x00, 0xFC, 0x00, - 0x08, 0x0F, 0xC0, 0x00, 0x80, 0xFC, 0x00, 0x0C, 0x07, 0xC0, 0x00, 0x60, - 0x7E, 0x00, 0x07, 0x07, 0xE0, 0x01, 0xF0, 0x7F, 0xFF, 0xFF, 0x83, 0xFF, - 0xFF, 0xFC, 0x00, 0x00, 0x3F, 0x80, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, - 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xE0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, - 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x38, - 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, - 0xFC, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, - 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x03, 0x80, - 0x01, 0xC0, 0x00, 0xF0, 0x00, 0x38, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, - 0x80, 0x01, 0xE0, 0x00, 0x70, 0x00, 0x3C, 0x00, 0x0E, 0x00, 0x07, 0x00, - 0x03, 0xC0, 0x00, 0xE0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, - 0x80, 0x00, 0xFF, 0x80, 0x07, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0xF0, - 0x00, 0x70, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0E, 0x00, 0x07, - 0x00, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xE0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x03, 0x80, - 0x03, 0x80, 0x01, 0xC0, 0x00, 0xE0, 0x00, 0x70, 0x00, 0x78, 0x00, 0x38, - 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x80, 0x01, - 0xC0, 0x00, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x38, 0x03, 0xFC, 0x00, - 0x00, 0xF0, 0x00, 0x0F, 0x00, 0x01, 0xF8, 0x00, 0x1F, 0x80, 0x03, 0xBC, - 0x00, 0x39, 0xC0, 0x07, 0x1E, 0x00, 0x70, 0xE0, 0x0E, 0x0F, 0x00, 0xE0, - 0x70, 0x1E, 0x07, 0x81, 0xC0, 0x38, 0x3C, 0x03, 0xC3, 0x80, 0x1C, 0x78, - 0x01, 0xE7, 0x00, 0x0E, 0xF0, 0x00, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0x60, 0xF0, 0xF8, 0x78, 0x3C, 0x1E, 0x0E, 0x07, 0x00, 0x1E, 0x70, - 0x03, 0x0B, 0x80, 0x70, 0x3C, 0x07, 0x01, 0xE0, 0x70, 0x0E, 0x07, 0x00, - 0x70, 0x78, 0x03, 0x83, 0x80, 0x38, 0x3C, 0x01, 0xC1, 0xC0, 0x0E, 0x1E, - 0x00, 0xF0, 0xF0, 0x07, 0x0F, 0x00, 0x78, 0x78, 0x03, 0xC3, 0xC0, 0x3E, - 0x1E, 0x01, 0x70, 0xF0, 0x17, 0x0F, 0x81, 0x38, 0xBE, 0x11, 0xC8, 0xFF, - 0x0F, 0x83, 0xF0, 0x70, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x03, 0x80, 0x00, 0x1C, 0x00, 0x01, 0xE0, 0x00, 0x0F, 0x0F, - 0x80, 0x71, 0xFE, 0x03, 0x98, 0xF8, 0x3D, 0x03, 0xE1, 0xE8, 0x0F, 0x0E, - 0x80, 0x78, 0x78, 0x03, 0xC7, 0xC0, 0x1E, 0x3C, 0x00, 0xF1, 0xE0, 0x0F, - 0x1E, 0x00, 0x78, 0xF0, 0x03, 0xC7, 0x80, 0x3C, 0x38, 0x01, 0xE3, 0xC0, - 0x1E, 0x1E, 0x00, 0xE0, 0xE0, 0x0E, 0x07, 0x00, 0xF0, 0x78, 0x07, 0x03, - 0xC0, 0xE0, 0x0F, 0x0E, 0x00, 0x1F, 0x80, 0x00, 0x00, 0x3F, 0x00, 0x38, - 0x60, 0x38, 0x1C, 0x1C, 0x0F, 0x0E, 0x03, 0x87, 0x80, 0x03, 0xC0, 0x00, - 0xE0, 0x00, 0x78, 0x00, 0x1E, 0x00, 0x07, 0x00, 0x03, 0xC0, 0x00, 0xF0, - 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, 0x00, 0xF0, 0x02, 0x3E, 0x01, - 0x87, 0x80, 0xC1, 0xF0, 0x60, 0x3F, 0xF0, 0x03, 0xF0, 0x00, 0x00, 0x00, - 0x0E, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1E, 0x00, 0x00, - 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x3C, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x38, 0x00, 0x00, 0x78, 0x00, 0x1E, 0x78, 0x00, 0x71, - 0x70, 0x00, 0xC1, 0x70, 0x03, 0x80, 0xF0, 0x07, 0x80, 0xE0, 0x07, 0x01, - 0xE0, 0x0E, 0x01, 0xE0, 0x1E, 0x01, 0xE0, 0x3C, 0x01, 0xC0, 0x3C, 0x01, - 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0xC0, 0x78, 0x03, 0x80, 0xF0, 0x07, - 0x80, 0xF0, 0x07, 0x80, 0xF0, 0x0F, 0x80, 0xF0, 0x0F, 0x00, 0xF0, 0x17, - 0x08, 0xF0, 0x27, 0x10, 0x78, 0x47, 0x20, 0x7F, 0x87, 0xC0, 0x1E, 0x07, - 0x00, 0x00, 0x1F, 0x00, 0x1C, 0xF0, 0x1C, 0x1C, 0x0E, 0x07, 0x07, 0x01, - 0xC3, 0xC0, 0xF1, 0xE0, 0x38, 0x70, 0x1C, 0x3C, 0x0E, 0x1F, 0x0F, 0x07, - 0x8F, 0x01, 0xFE, 0x00, 0xF0, 0x00, 0x3C, 0x00, 0x0F, 0x00, 0x03, 0xC0, - 0x00, 0xF0, 0x01, 0x3C, 0x00, 0xC7, 0x80, 0x61, 0xF0, 0x60, 0x3F, 0xF0, - 0x03, 0xE0, 0x00, 0x00, 0x00, 0x07, 0xC0, 0x00, 0x03, 0x1C, 0x00, 0x00, - 0xC3, 0x80, 0x00, 0x38, 0x70, 0x00, 0x06, 0x00, 0x00, 0x01, 0xC0, 0x00, - 0x00, 0x30, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x00, 0x78, - 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, 0x00, 0x07, 0xFF, 0xC0, 0x00, - 0xFF, 0xF8, 0x00, 0x01, 0xE0, 0x00, 0x00, 0x38, 0x00, 0x00, 0x07, 0x00, - 0x00, 0x01, 0xE0, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, - 0xE0, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0xF0, 0x00, - 0x00, 0x1C, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x1E, - 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, - 0x03, 0xC0, 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0xC0, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x01, 0x80, 0x00, 0x38, - 0x60, 0x00, 0x07, 0x0C, 0x00, 0x00, 0xE3, 0x00, 0x00, 0x0F, 0x80, 0x00, - 0x00, 0x00, 0x3F, 0x00, 0x07, 0x0E, 0x00, 0x70, 0x3E, 0x07, 0x01, 0xF0, - 0x70, 0x0E, 0x07, 0x80, 0x70, 0x3C, 0x03, 0x81, 0xC0, 0x1C, 0x0E, 0x01, - 0xE0, 0x70, 0x0E, 0x03, 0x80, 0xF0, 0x0E, 0x0F, 0x00, 0x30, 0xE0, 0x00, - 0xFE, 0x00, 0x0C, 0x00, 0x00, 0xC0, 0x00, 0x0E, 0x00, 0x00, 0x7E, 0x00, - 0x03, 0xFE, 0x00, 0x0F, 0xFC, 0x00, 0x8F, 0xF0, 0x18, 0x0F, 0xC1, 0x80, - 0x1F, 0x18, 0x00, 0x78, 0xC0, 0x01, 0xC6, 0x00, 0x0E, 0x30, 0x00, 0x61, - 0xC0, 0x07, 0x06, 0x00, 0x70, 0x1C, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0x00, - 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, - 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, - 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x03, 0x80, 0x78, 0x7E, 0x03, 0x86, 0x70, - 0x3C, 0x43, 0x81, 0xE4, 0x1C, 0x0E, 0x40, 0xE0, 0x74, 0x0E, 0x07, 0xA0, - 0x70, 0x3E, 0x03, 0x81, 0xE0, 0x1C, 0x0F, 0x00, 0xE0, 0xF0, 0x0E, 0x07, - 0x80, 0x70, 0x38, 0x03, 0x81, 0xC0, 0x1C, 0x1E, 0x00, 0xC2, 0xF0, 0x0E, - 0x27, 0x00, 0x73, 0x38, 0x03, 0x93, 0xC0, 0x1F, 0x1E, 0x00, 0xE0, 0x03, - 0x81, 0xF0, 0x7C, 0x1F, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x71, 0xFC, 0x1F, 0x07, 0x81, 0xE0, 0x78, 0x1C, 0x07, 0x03, 0xC0, 0xF0, - 0x38, 0x0E, 0x07, 0x81, 0xE0, 0x70, 0x1C, 0x0F, 0x03, 0x84, 0xE2, 0x39, - 0x0F, 0x81, 0xC0, 0x00, 0x01, 0xC0, 0x00, 0x7C, 0x00, 0x0F, 0x80, 0x01, - 0xF0, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x3F, 0xC0, 0x00, 0xF0, 0x00, 0x1E, - 0x00, 0x03, 0xC0, 0x00, 0x78, 0x00, 0x0E, 0x00, 0x03, 0xC0, 0x00, 0x78, - 0x00, 0x0F, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x0F, 0x00, 0x01, 0xE0, - 0x00, 0x38, 0x00, 0x07, 0x00, 0x01, 0xE0, 0x00, 0x38, 0x00, 0x07, 0x00, - 0x00, 0xE0, 0x00, 0x3C, 0x00, 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x00, - 0x07, 0x00, 0x00, 0xE0, 0x00, 0x1C, 0x01, 0xC7, 0x00, 0x38, 0xC0, 0x07, - 0x30, 0x00, 0x7C, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x7F, 0x00, 0x00, 0x78, - 0x00, 0x03, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0xE0, 0x00, 0x07, 0x00, 0x00, - 0x78, 0x00, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, - 0x00, 0x70, 0xFF, 0x83, 0x80, 0xF0, 0x3C, 0x06, 0x01, 0xE0, 0x60, 0x0E, - 0x06, 0x00, 0x70, 0xE0, 0x07, 0x8C, 0x00, 0x3C, 0xC0, 0x01, 0xCC, 0x00, - 0x0F, 0xF0, 0x00, 0xFF, 0x80, 0x07, 0x9E, 0x00, 0x38, 0xF0, 0x01, 0xC3, - 0x80, 0x1E, 0x1E, 0x00, 0xF0, 0x70, 0x07, 0x03, 0xC2, 0x78, 0x0E, 0x13, - 0xC0, 0x79, 0x1E, 0x01, 0xF0, 0x00, 0x07, 0x00, 0x00, 0xE1, 0xFC, 0x0F, - 0x80, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1C, 0x07, 0x80, 0xF0, 0x1E, 0x03, - 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x70, 0x1E, 0x03, 0xC0, 0x78, 0x0E, 0x03, - 0xC0, 0x78, 0x0E, 0x01, 0xC0, 0x78, 0x0F, 0x01, 0xC0, 0x38, 0x4F, 0x11, - 0xE4, 0x39, 0x07, 0xC0, 0x70, 0x00, 0x07, 0x81, 0xC0, 0x78, 0xFE, 0x0F, - 0xC1, 0xF8, 0x3C, 0x33, 0x84, 0x70, 0x78, 0x87, 0x10, 0xE0, 0xF2, 0x0E, - 0x41, 0xC1, 0xC8, 0x39, 0x07, 0x87, 0xA0, 0x74, 0x0F, 0x0F, 0x40, 0xE8, - 0x1E, 0x1F, 0x01, 0xE0, 0x38, 0x3C, 0x07, 0xC0, 0xF0, 0xF8, 0x0F, 0x01, - 0xE1, 0xE0, 0x1E, 0x03, 0xC3, 0xC0, 0x38, 0x07, 0x07, 0x00, 0xF0, 0x1E, - 0x1E, 0x01, 0xE0, 0x3C, 0x3C, 0x03, 0x80, 0x79, 0x70, 0x07, 0x00, 0xE2, - 0xE0, 0x1E, 0x03, 0x8B, 0xC0, 0x3C, 0x07, 0x27, 0x80, 0x70, 0x0F, 0x8E, - 0x00, 0xE0, 0x1E, 0x00, 0x07, 0x81, 0xE3, 0xFC, 0x3F, 0x83, 0xC2, 0x3C, - 0x1E, 0x21, 0xE0, 0xF2, 0x0F, 0x07, 0x20, 0x70, 0x39, 0x07, 0x83, 0xD0, - 0x3C, 0x1F, 0x01, 0xE0, 0xE8, 0x0E, 0x0F, 0x80, 0xF0, 0x78, 0x07, 0x83, - 0xC0, 0x38, 0x1C, 0x01, 0xC1, 0xE0, 0x1E, 0x0F, 0x00, 0xF1, 0x70, 0x07, - 0x0B, 0x80, 0x38, 0xBC, 0x01, 0xC9, 0xE0, 0x0F, 0x8E, 0x00, 0x38, 0x00, - 0x00, 0x1F, 0x80, 0x07, 0x8F, 0x00, 0x70, 0x3C, 0x07, 0x00, 0xE0, 0x70, - 0x07, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE7, 0x80, 0x0F, 0x3C, 0x00, 0x7B, - 0xC0, 0x03, 0xDE, 0x00, 0x3D, 0xF0, 0x01, 0xEF, 0x80, 0x0F, 0x78, 0x00, - 0xF3, 0xC0, 0x07, 0x9E, 0x00, 0x78, 0xF0, 0x03, 0x87, 0x80, 0x38, 0x1C, - 0x03, 0x80, 0xF0, 0x38, 0x03, 0xC3, 0x00, 0x07, 0xE0, 0x00, 0x00, 0x3C, - 0x3F, 0x00, 0x7F, 0x8F, 0xF0, 0x01, 0xF7, 0x3F, 0x00, 0x1D, 0x83, 0xF0, - 0x07, 0xA0, 0x3E, 0x00, 0xF8, 0x07, 0xC0, 0x1E, 0x00, 0xF8, 0x03, 0xC0, - 0x1F, 0x00, 0xF0, 0x03, 0xE0, 0x1E, 0x00, 0x7C, 0x03, 0xC0, 0x1F, 0x00, - 0x70, 0x03, 0xE0, 0x1E, 0x00, 0x78, 0x03, 0xC0, 0x1F, 0x00, 0x70, 0x03, - 0xC0, 0x0E, 0x00, 0xF8, 0x03, 0xC0, 0x1E, 0x00, 0x78, 0x07, 0x80, 0x0F, - 0x01, 0xE0, 0x01, 0xE0, 0x70, 0x00, 0x7C, 0x3C, 0x00, 0x0F, 0x7C, 0x00, - 0x01, 0xC0, 0x00, 0x00, 0x78, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, - 0x00, 0x00, 0x38, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x01, 0xE0, 0x00, 0x00, - 0x7E, 0x00, 0x00, 0x3F, 0xF0, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x03, 0x8D, - 0xC0, 0x38, 0x2E, 0x07, 0x80, 0xF0, 0x78, 0x07, 0x03, 0x80, 0x38, 0x38, - 0x03, 0xC3, 0xC0, 0x1E, 0x3C, 0x00, 0xE1, 0xE0, 0x07, 0x1E, 0x00, 0x78, - 0xF0, 0x03, 0x87, 0x80, 0x3C, 0x78, 0x01, 0xE3, 0xC0, 0x1F, 0x1E, 0x01, - 0x70, 0xF0, 0x17, 0x87, 0x80, 0xBC, 0x3C, 0x09, 0xC0, 0xF1, 0x8E, 0x07, - 0xF8, 0xF0, 0x1F, 0x07, 0x80, 0x00, 0x38, 0x00, 0x03, 0xC0, 0x00, 0x1E, - 0x00, 0x00, 0xE0, 0x00, 0x0F, 0x00, 0x00, 0x78, 0x00, 0x03, 0xC0, 0x00, - 0x3E, 0x00, 0x0F, 0xFE, 0x00, 0x07, 0x87, 0x3F, 0x87, 0xC3, 0xC7, 0xE1, - 0xE6, 0xF0, 0xF6, 0x00, 0x72, 0x00, 0x3A, 0x00, 0x1D, 0x00, 0x1F, 0x00, - 0x0E, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x03, 0xC0, 0x01, 0xE0, 0x00, 0xF0, - 0x00, 0xF0, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x1E, 0x00, 0x0F, - 0x00, 0x00, 0x01, 0xF8, 0x81, 0x87, 0xC1, 0x80, 0xE1, 0xC0, 0x60, 0xE0, - 0x10, 0x70, 0x08, 0x3C, 0x04, 0x1F, 0x00, 0x07, 0xC0, 0x03, 0xE0, 0x00, - 0xF8, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x03, 0xC1, 0x01, 0xE0, 0x80, 0x70, - 0x40, 0x38, 0x30, 0x1C, 0x38, 0x0C, 0x1C, 0x0E, 0x0F, 0x0E, 0x04, 0x7C, - 0x00, 0x00, 0xC0, 0x18, 0x03, 0x80, 0x78, 0x1F, 0x03, 0xFF, 0x7F, 0xF0, - 0xF0, 0x0E, 0x00, 0xE0, 0x1E, 0x01, 0xE0, 0x1C, 0x01, 0xC0, 0x3C, 0x03, - 0xC0, 0x38, 0x03, 0x80, 0x78, 0x07, 0x80, 0x70, 0x8F, 0x10, 0xF1, 0x0F, - 0x20, 0xFC, 0x07, 0x80, 0x00, 0x00, 0x00, 0xF0, 0x0E, 0x7F, 0x00, 0xE0, - 0xF0, 0x1E, 0x0E, 0x01, 0xE1, 0xE0, 0x3C, 0x1E, 0x03, 0xC1, 0xE0, 0x3C, - 0x1C, 0x07, 0xC3, 0xC0, 0x78, 0x3C, 0x0F, 0x83, 0xC0, 0xB8, 0x38, 0x1F, - 0x87, 0x83, 0x70, 0x78, 0x27, 0x07, 0x86, 0x70, 0x70, 0xC7, 0x1F, 0x08, - 0xE1, 0xE1, 0x0E, 0x2E, 0x60, 0xE4, 0xFC, 0x0F, 0x87, 0x00, 0x70, 0x1C, - 0x03, 0xBF, 0x00, 0xF1, 0xE0, 0x3C, 0x78, 0x07, 0x1E, 0x00, 0xC3, 0x80, - 0x30, 0xE0, 0x08, 0x38, 0x06, 0x0E, 0x01, 0x03, 0x80, 0xC0, 0xF0, 0x20, - 0x3C, 0x10, 0x07, 0x04, 0x01, 0xC2, 0x00, 0x71, 0x00, 0x1C, 0xC0, 0x07, - 0x60, 0x01, 0xF0, 0x00, 0x78, 0x00, 0x1C, 0x00, 0x06, 0x00, 0x01, 0x00, - 0x00, 0x0C, 0x00, 0x40, 0x3B, 0xF8, 0x01, 0x00, 0xF1, 0xE0, 0x0C, 0x03, - 0xC3, 0x80, 0x78, 0x07, 0x0E, 0x01, 0xE0, 0x0C, 0x38, 0x0F, 0x80, 0x20, - 0xE0, 0x6E, 0x00, 0x83, 0x81, 0x38, 0x04, 0x0F, 0x0C, 0xE0, 0x10, 0x1C, - 0x23, 0x80, 0x80, 0x71, 0x8E, 0x06, 0x01, 0xCC, 0x38, 0x10, 0x07, 0x20, - 0xE0, 0x80, 0x1D, 0x83, 0x86, 0x00, 0x7C, 0x07, 0x30, 0x01, 0xF0, 0x1C, - 0x80, 0x07, 0x80, 0x74, 0x00, 0x1E, 0x01, 0xF0, 0x00, 0x70, 0x07, 0x80, - 0x01, 0xC0, 0x1C, 0x00, 0x06, 0x00, 0x60, 0x00, 0x10, 0x01, 0x00, 0x00, - 0x00, 0xE0, 0x38, 0x1F, 0x81, 0xF0, 0x8F, 0x09, 0x80, 0x3C, 0x40, 0x00, - 0x72, 0x00, 0x01, 0xD0, 0x00, 0x07, 0xC0, 0x00, 0x1E, 0x00, 0x00, 0x38, - 0x00, 0x00, 0xE0, 0x00, 0x03, 0x80, 0x00, 0x0F, 0x00, 0x00, 0x7C, 0x00, - 0x01, 0x70, 0x00, 0x09, 0xC0, 0x00, 0x67, 0x00, 0x01, 0x1E, 0x10, 0x08, - 0x38, 0x40, 0x40, 0xE2, 0x39, 0x03, 0xD0, 0xF8, 0x0F, 0x83, 0xC0, 0x1C, - 0x00, 0x07, 0x80, 0x33, 0xFC, 0x03, 0xC1, 0xE0, 0x1E, 0x07, 0x80, 0x70, - 0x3C, 0x01, 0x80, 0xE0, 0x0C, 0x07, 0x80, 0x40, 0x3C, 0x02, 0x00, 0xE0, - 0x20, 0x07, 0x81, 0x00, 0x3C, 0x18, 0x01, 0xE0, 0x80, 0x07, 0x0C, 0x00, - 0x38, 0x40, 0x01, 0xE4, 0x00, 0x0F, 0x60, 0x00, 0x3A, 0x00, 0x01, 0xF0, - 0x00, 0x0F, 0x00, 0x00, 0x70, 0x00, 0x03, 0x80, 0x00, 0x18, 0x00, 0x00, - 0x80, 0x00, 0x0C, 0x00, 0x00, 0x40, 0x00, 0x04, 0x00, 0x00, 0x40, 0x00, - 0x04, 0x00, 0x0E, 0x40, 0x00, 0x7C, 0x00, 0x03, 0xC0, 0x00, 0x00, 0x0F, - 0xFF, 0x87, 0xFF, 0x82, 0x00, 0x83, 0x00, 0xC1, 0x00, 0xC0, 0x00, 0xC0, - 0x00, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x20, - 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x18, 0x00, 0x1E, - 0x00, 0x1F, 0xC0, 0x1F, 0xF0, 0xE8, 0xFC, 0x70, 0x1E, 0x38, 0x03, 0x88, - 0x00, 0x78, 0x00, 0x0F, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x0F, - 0x00, 0x07, 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, - 0x70, 0x00, 0x78, 0x00, 0x3C, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, - 0x07, 0x80, 0x07, 0x80, 0x03, 0xC0, 0x07, 0xC0, 0x07, 0xC0, 0x00, 0x80, - 0x00, 0x60, 0x00, 0x38, 0x00, 0x1C, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x07, - 0x80, 0x03, 0x80, 0x01, 0xC0, 0x01, 0xE0, 0x00, 0xF0, 0x00, 0x70, 0x00, - 0x38, 0x00, 0x3C, 0x00, 0x1E, 0x00, 0x0E, 0x00, 0x07, 0x00, 0x01, 0x80, - 0x00, 0x70, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xFF, 0xFF, 0xFF, 0xE0, 0x00, 0x18, 0x00, 0x0E, 0x00, 0x06, 0x00, 0x07, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0E, - 0x00, 0x0E, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x1C, 0x00, 0x1C, 0x00, 0x3C, - 0x00, 0x3C, 0x00, 0x38, 0x00, 0x38, 0x00, 0x18, 0x00, 0x08, 0x00, 0x1C, - 0x00, 0x7E, 0x00, 0x78, 0x00, 0xF0, 0x00, 0xE0, 0x01, 0xE0, 0x01, 0xE0, - 0x01, 0xC0, 0x01, 0xC0, 0x03, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80, - 0x07, 0x80, 0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, - 0xF8, 0x00, 0x1F, 0x80, 0x00, 0xFF, 0x80, 0xC7, 0xFF, 0x87, 0xBC, 0x3F, - 0xFE, 0x60, 0x3F, 0xF0, 0x00, 0x1F, 0x00 }; - -const GFXglyph FreeSerifItalic24pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 12, 0, 1 }, // 0x20 ' ' - { 0, 12, 32, 16, 2, -30 }, // 0x21 '!' - { 48, 14, 12, 16, 6, -31 }, // 0x22 '"' - { 69, 25, 31, 23, 0, -30 }, // 0x23 '#' - { 166, 21, 38, 24, 2, -33 }, // 0x24 '$' - { 266, 33, 32, 39, 4, -30 }, // 0x25 '%' - { 398, 30, 33, 37, 4, -31 }, // 0x26 '&' - { 522, 5, 12, 9, 6, -31 }, // 0x27 ''' - { 530, 13, 39, 16, 2, -30 }, // 0x28 '(' - { 594, 13, 39, 16, 0, -30 }, // 0x29 ')' - { 658, 16, 20, 23, 7, -31 }, // 0x2A '*' - { 698, 23, 23, 32, 4, -22 }, // 0x2B '+' - { 765, 7, 11, 12, -1, -4 }, // 0x2C ',' - { 775, 11, 3, 16, 2, -11 }, // 0x2D '-' - { 780, 5, 5, 12, 1, -3 }, // 0x2E '.' - { 784, 21, 33, 14, 0, -31 }, // 0x2F '/' - { 871, 21, 31, 23, 2, -30 }, // 0x30 '0' - { 953, 17, 32, 23, 2, -31 }, // 0x31 '1' - { 1021, 21, 31, 24, 0, -30 }, // 0x32 '2' - { 1103, 22, 32, 23, 0, -31 }, // 0x33 '3' - { 1191, 22, 32, 23, 0, -31 }, // 0x34 '4' - { 1279, 22, 32, 24, 0, -31 }, // 0x35 '5' - { 1367, 23, 32, 23, 1, -31 }, // 0x36 '6' - { 1459, 21, 32, 23, 4, -31 }, // 0x37 '7' - { 1543, 22, 32, 23, 1, -31 }, // 0x38 '8' - { 1631, 22, 33, 23, 1, -31 }, // 0x39 '9' - { 1722, 9, 22, 12, 2, -20 }, // 0x3A ':' - { 1747, 11, 27, 12, 1, -20 }, // 0x3B ';' - { 1785, 23, 25, 27, 3, -24 }, // 0x3C '<' - { 1857, 24, 12, 31, 4, -17 }, // 0x3D '=' - { 1893, 24, 25, 27, 3, -24 }, // 0x3E '>' - { 1968, 16, 33, 21, 6, -31 }, // 0x3F '?' - { 2034, 33, 33, 37, 3, -31 }, // 0x40 '@' - { 2171, 29, 31, 31, 0, -30 }, // 0x41 'A' - { 2284, 28, 31, 28, 0, -30 }, // 0x42 'B' - { 2393, 30, 33, 29, 2, -31 }, // 0x43 'C' - { 2517, 33, 31, 33, 0, -30 }, // 0x44 'D' - { 2645, 29, 31, 27, 0, -30 }, // 0x45 'E' - { 2758, 29, 31, 27, 0, -30 }, // 0x46 'F' - { 2871, 31, 33, 32, 2, -31 }, // 0x47 'G' - { 2999, 36, 31, 33, 0, -30 }, // 0x48 'H' - { 3139, 18, 31, 15, 0, -30 }, // 0x49 'I' - { 3209, 23, 32, 20, 0, -30 }, // 0x4A 'J' - { 3301, 33, 31, 30, 0, -30 }, // 0x4B 'K' - { 3429, 27, 31, 27, 0, -30 }, // 0x4C 'L' - { 3534, 42, 31, 39, 0, -30 }, // 0x4D 'M' - { 3697, 35, 32, 32, 0, -30 }, // 0x4E 'N' - { 3837, 30, 33, 31, 2, -31 }, // 0x4F 'O' - { 3961, 29, 31, 27, 0, -30 }, // 0x50 'P' - { 4074, 30, 41, 31, 2, -31 }, // 0x51 'Q' - { 4228, 28, 31, 29, 0, -30 }, // 0x52 'R' - { 4337, 23, 33, 21, 0, -31 }, // 0x53 'S' - { 4432, 27, 31, 28, 4, -30 }, // 0x54 'T' - { 4537, 31, 32, 33, 5, -30 }, // 0x55 'U' - { 4661, 29, 32, 31, 6, -30 }, // 0x56 'V' - { 4777, 39, 32, 42, 6, -30 }, // 0x57 'W' - { 4933, 32, 31, 31, 0, -30 }, // 0x58 'X' - { 5057, 26, 31, 28, 5, -30 }, // 0x59 'Y' - { 5158, 29, 31, 26, 0, -30 }, // 0x5A 'Z' - { 5271, 17, 39, 18, 1, -31 }, // 0x5B '[' - { 5354, 17, 33, 23, 5, -31 }, // 0x5C '\' - { 5425, 17, 39, 18, 1, -31 }, // 0x5D ']' - { 5508, 20, 17, 20, 0, -31 }, // 0x5E '^' - { 5551, 24, 2, 23, 0, 5 }, // 0x5F '_' - { 5557, 8, 8, 12, 6, -31 }, // 0x60 '`' - { 5565, 21, 21, 23, 1, -20 }, // 0x61 'a' - { 5621, 21, 33, 22, 1, -31 }, // 0x62 'b' - { 5708, 18, 22, 19, 1, -20 }, // 0x63 'c' - { 5758, 24, 33, 23, 1, -31 }, // 0x64 'd' - { 5857, 18, 22, 19, 1, -20 }, // 0x65 'e' - { 5907, 27, 42, 20, -4, -31 }, // 0x66 'f' - { 6049, 21, 31, 21, -1, -20 }, // 0x67 'g' - { 6131, 21, 32, 23, 1, -31 }, // 0x68 'h' - { 6215, 10, 32, 12, 2, -30 }, // 0x69 'i' - { 6255, 19, 41, 13, -3, -30 }, // 0x6A 'j' - { 6353, 21, 33, 21, 1, -31 }, // 0x6B 'k' - { 6440, 11, 33, 12, 2, -31 }, // 0x6C 'l' - { 6486, 31, 21, 34, 1, -20 }, // 0x6D 'm' - { 6568, 21, 21, 23, 1, -20 }, // 0x6E 'n' - { 6624, 21, 22, 22, 1, -20 }, // 0x6F 'o' - { 6682, 27, 31, 22, -4, -20 }, // 0x70 'p' - { 6787, 21, 31, 23, 1, -20 }, // 0x71 'q' - { 6869, 17, 21, 17, 1, -20 }, // 0x72 'r' - { 6914, 17, 22, 16, 0, -20 }, // 0x73 's' - { 6961, 12, 26, 11, 1, -24 }, // 0x74 't' - { 7000, 20, 22, 23, 1, -20 }, // 0x75 'u' - { 7055, 18, 22, 21, 3, -20 }, // 0x76 'v' - { 7105, 30, 22, 32, 2, -20 }, // 0x77 'w' - { 7188, 22, 22, 20, -1, -20 }, // 0x78 'x' - { 7249, 21, 31, 22, 1, -20 }, // 0x79 'y' - { 7331, 17, 24, 18, 0, -19 }, // 0x7A 'z' - { 7382, 17, 40, 19, 2, -31 }, // 0x7B '{' - { 7467, 3, 33, 13, 5, -31 }, // 0x7C '|' - { 7480, 16, 41, 19, 0, -32 }, // 0x7D '}' - { 7562, 22, 6, 25, 2, -14 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic24pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic24pt7bBitmaps, - (GFXglyph *)FreeSerifItalic24pt7bGlyphs, - 0x20, 0x7E, 56 }; - -// Approx. 8251 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h deleted file mode 100644 index 34e6b8df2..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h +++ /dev/null @@ -1,202 +0,0 @@ -const uint8_t FreeSerifItalic9pt7bBitmaps[] PROGMEM = { - 0x11, 0x12, 0x22, 0x24, 0x40, 0x0C, 0xDE, 0xE5, 0x40, 0x04, 0x82, 0x20, - 0x98, 0x24, 0x7F, 0xC4, 0x82, 0x23, 0xFC, 0x24, 0x11, 0x04, 0x83, 0x20, - 0x1C, 0x1B, 0x99, 0x4D, 0x26, 0x81, 0xC0, 0x70, 0x1C, 0x13, 0x49, 0xA4, - 0xDA, 0xC7, 0xC1, 0x00, 0x80, 0x1C, 0x61, 0xCF, 0x0E, 0x28, 0x30, 0xA0, - 0xC5, 0x03, 0x34, 0xE7, 0xAE, 0x40, 0xB1, 0x05, 0x84, 0x26, 0x20, 0x99, - 0x84, 0x3C, 0x03, 0x80, 0x6C, 0x06, 0xC0, 0x78, 0x06, 0x01, 0xEF, 0x66, - 0x24, 0x24, 0xC3, 0x8C, 0x10, 0xE3, 0x87, 0xCE, 0xFA, 0x08, 0x21, 0x08, - 0x61, 0x8C, 0x30, 0xC3, 0x0C, 0x30, 0x41, 0x02, 0x00, 0x10, 0x40, 0x82, - 0x0C, 0x30, 0xC3, 0x0C, 0x61, 0x84, 0x21, 0x08, 0x00, 0x30, 0xCA, 0x5E, - 0x6A, 0x93, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 0xF8, 0x40, 0x20, 0x10, - 0x08, 0x00, 0x56, 0xF0, 0xF0, 0x03, 0x02, 0x06, 0x04, 0x08, 0x08, 0x10, - 0x30, 0x20, 0x60, 0x40, 0xC0, 0x0E, 0x0C, 0x8C, 0x6C, 0x36, 0x1F, 0x0F, - 0x07, 0x87, 0xC3, 0x61, 0xB1, 0x88, 0x83, 0x80, 0x04, 0x70, 0xC3, 0x08, - 0x21, 0x86, 0x10, 0x43, 0x08, 0xF8, 0x1C, 0x67, 0x83, 0x03, 0x02, 0x06, - 0x0C, 0x08, 0x10, 0x20, 0x42, 0xFC, 0x0F, 0x08, 0xC0, 0x60, 0xC1, 0xE0, - 0x38, 0x0C, 0x06, 0x03, 0x01, 0x01, 0x1F, 0x00, 0x01, 0x01, 0x81, 0x41, - 0x61, 0x21, 0x11, 0x18, 0x88, 0xFF, 0x02, 0x03, 0x01, 0x00, 0x0F, 0x84, - 0x04, 0x03, 0x80, 0x60, 0x18, 0x0C, 0x06, 0x03, 0x03, 0x03, 0x1E, 0x00, - 0x01, 0x83, 0x87, 0x07, 0x03, 0x03, 0x73, 0xCD, 0x86, 0xC3, 0x61, 0xB1, - 0x88, 0xC3, 0xC0, 0x7F, 0x40, 0x80, 0x80, 0x40, 0x40, 0x60, 0x20, 0x20, - 0x10, 0x10, 0x18, 0x08, 0x00, 0x1E, 0x19, 0xCC, 0x66, 0x33, 0xB0, 0xE0, - 0x50, 0xCC, 0xC3, 0x61, 0xB0, 0xCC, 0xC3, 0xC0, 0x0E, 0x19, 0x8C, 0x6C, - 0x36, 0x1B, 0x0D, 0x86, 0xE6, 0x3F, 0x03, 0x03, 0x06, 0x0C, 0x00, 0x33, - 0x00, 0x00, 0xCC, 0x33, 0x00, 0x00, 0x44, 0x48, 0x01, 0x83, 0x86, 0x1C, - 0x0C, 0x03, 0x80, 0x30, 0x07, 0x00, 0x80, 0xFF, 0x80, 0x00, 0x00, 0x0F, - 0xF8, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x18, 0x38, 0x70, 0xC0, 0x80, 0x00, - 0x3C, 0x8C, 0x18, 0x30, 0xC3, 0x0C, 0x20, 0x40, 0x80, 0x06, 0x00, 0x0F, - 0xC0, 0xC3, 0x0C, 0x04, 0xC7, 0xBC, 0x64, 0xE2, 0x27, 0x31, 0x39, 0x91, - 0xCC, 0x93, 0x3B, 0x0E, 0x00, 0x1F, 0x80, 0x01, 0x00, 0x60, 0x14, 0x04, - 0xC0, 0x98, 0x23, 0x07, 0xE1, 0x04, 0x20, 0x88, 0x1B, 0x8F, 0x80, 0x3F, - 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3E, 0x04, 0x61, 0x86, 0x30, 0xC4, - 0x19, 0x86, 0x7F, 0x80, 0x07, 0x91, 0x86, 0x30, 0x26, 0x02, 0x60, 0x0C, - 0x00, 0xC0, 0x0C, 0x00, 0xC0, 0x0C, 0x00, 0x61, 0x83, 0xE0, 0x3F, 0xC0, - 0x63, 0x82, 0x0C, 0x30, 0x31, 0x81, 0x8C, 0x0C, 0x40, 0x66, 0x07, 0x30, - 0x31, 0x03, 0x18, 0x71, 0xFE, 0x00, 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, - 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, 0x30, 0x02, 0x04, 0x60, 0x8F, 0xF8, - 0x3F, 0xF0, 0xC2, 0x08, 0x21, 0x80, 0x19, 0x81, 0xF8, 0x11, 0x03, 0x10, - 0x30, 0x02, 0x00, 0x60, 0x0F, 0x80, 0x07, 0x91, 0x87, 0x30, 0x26, 0x02, - 0x60, 0x0C, 0x00, 0xC1, 0xFC, 0x0C, 0xC0, 0xCC, 0x0C, 0x60, 0x83, 0xF0, - 0x3E, 0x3C, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x18, 0x30, 0x7F, 0x81, 0x06, - 0x0C, 0x18, 0x30, 0x60, 0x81, 0x06, 0x0C, 0x3C, 0x78, 0x1E, 0x18, 0x20, - 0xC1, 0x83, 0x04, 0x18, 0x30, 0x41, 0x87, 0x80, 0x0F, 0x81, 0x80, 0x80, - 0xC0, 0x60, 0x20, 0x30, 0x18, 0x0C, 0x04, 0x36, 0x1E, 0x00, 0x3E, 0x78, - 0x61, 0x82, 0x10, 0x31, 0x01, 0xB0, 0x0E, 0x00, 0x58, 0x06, 0x60, 0x33, - 0x01, 0x0C, 0x18, 0x61, 0xE7, 0xC0, 0x3E, 0x01, 0x80, 0x20, 0x0C, 0x01, - 0x80, 0x30, 0x04, 0x01, 0x80, 0x30, 0x04, 0x0D, 0x83, 0x7F, 0xE0, 0x1C, - 0x07, 0x0C, 0x0E, 0x0C, 0x14, 0x14, 0x1C, 0x14, 0x2C, 0x16, 0x4C, 0x26, - 0x48, 0x26, 0x98, 0x27, 0x18, 0x27, 0x10, 0x42, 0x30, 0xF4, 0x7C, 0x38, - 0x78, 0x60, 0x83, 0x04, 0x2C, 0x41, 0x22, 0x09, 0x10, 0x4D, 0x84, 0x28, - 0x21, 0x41, 0x06, 0x10, 0x21, 0xE1, 0x00, 0x07, 0x83, 0x18, 0xC1, 0xB0, - 0x36, 0x07, 0xC0, 0xF0, 0x3E, 0x06, 0xC0, 0xD8, 0x31, 0x8C, 0x1E, 0x00, - 0x3F, 0xC1, 0x9C, 0x21, 0x8C, 0x31, 0x86, 0x31, 0x87, 0xE1, 0x80, 0x30, - 0x04, 0x01, 0x80, 0x78, 0x00, 0x07, 0x83, 0x18, 0xC1, 0x98, 0x36, 0x07, - 0xC0, 0xF0, 0x1E, 0x06, 0xC0, 0xD8, 0x31, 0x04, 0x13, 0x01, 0x80, 0x70, - 0xB7, 0xE0, 0x3F, 0xC1, 0x8C, 0x21, 0x8C, 0x31, 0x8C, 0x3F, 0x04, 0xC1, - 0x98, 0x31, 0x84, 0x31, 0x86, 0x78, 0x70, 0x1E, 0x4C, 0x63, 0x08, 0xC0, - 0x38, 0x07, 0x00, 0x60, 0x0C, 0x43, 0x10, 0xC6, 0x62, 0x70, 0x7F, 0xE9, - 0x8E, 0x31, 0x04, 0x01, 0x80, 0x30, 0x06, 0x00, 0x80, 0x30, 0x06, 0x00, - 0x80, 0x7E, 0x00, 0x7C, 0xF3, 0x02, 0x30, 0x46, 0x04, 0x60, 0x46, 0x04, - 0x40, 0x8C, 0x08, 0xC0, 0x8C, 0x10, 0xE3, 0x03, 0xC0, 0xF8, 0xEC, 0x0C, - 0x81, 0x18, 0x43, 0x08, 0x62, 0x0C, 0x81, 0x90, 0x14, 0x03, 0x00, 0x60, - 0x08, 0x00, 0xFB, 0xCE, 0x43, 0x0C, 0x86, 0x11, 0x8C, 0x43, 0x38, 0x86, - 0xB2, 0x0D, 0x24, 0x1C, 0x50, 0x38, 0xA0, 0x21, 0x80, 0x42, 0x01, 0x04, - 0x00, 0x3E, 0x71, 0x82, 0x0C, 0x40, 0xC8, 0x07, 0x00, 0x60, 0x06, 0x00, - 0xB0, 0x13, 0x02, 0x18, 0x61, 0x8F, 0x3E, 0xF9, 0xC8, 0x23, 0x10, 0xC8, - 0x34, 0x05, 0x01, 0x80, 0x40, 0x30, 0x0C, 0x03, 0x03, 0xE0, 0x3F, 0xE4, - 0x19, 0x03, 0x00, 0xC0, 0x30, 0x0C, 0x03, 0x00, 0x40, 0x18, 0x06, 0x05, - 0x81, 0x7F, 0xE0, 0x0E, 0x10, 0x20, 0x81, 0x02, 0x04, 0x10, 0x20, 0x40, - 0x82, 0x04, 0x08, 0x1C, 0x00, 0x81, 0x04, 0x18, 0x20, 0xC1, 0x04, 0x08, - 0x20, 0x41, 0x38, 0x20, 0x82, 0x08, 0x41, 0x04, 0x10, 0xC2, 0x08, 0x20, - 0x8C, 0x00, 0x18, 0x18, 0x2C, 0x24, 0x46, 0x42, 0x83, 0xFF, 0x80, 0xD8, - 0x80, 0x1F, 0x98, 0x98, 0x4C, 0x2C, 0x36, 0x33, 0x3A, 0xEE, 0x38, 0x08, - 0x04, 0x02, 0x03, 0x71, 0xCC, 0xC6, 0xC3, 0x63, 0x21, 0x93, 0x8F, 0x00, - 0x1F, 0x33, 0x60, 0xC0, 0xC0, 0xC0, 0xC4, 0x78, 0x01, 0x80, 0x40, 0x60, - 0x20, 0xF1, 0x89, 0x8C, 0xC4, 0xC2, 0x63, 0x33, 0xAE, 0xE0, 0x0E, 0x65, - 0x8B, 0x2F, 0x98, 0x31, 0x3C, 0x01, 0xE0, 0x40, 0x08, 0x02, 0x00, 0x40, - 0x3E, 0x03, 0x00, 0x40, 0x08, 0x01, 0x00, 0x60, 0x0C, 0x01, 0x00, 0x20, - 0x04, 0x01, 0x00, 0xC0, 0x00, 0x1E, 0x19, 0xD8, 0xCC, 0xE1, 0xC3, 0x01, - 0xE0, 0xBC, 0x82, 0x41, 0x31, 0x0F, 0x00, 0x38, 0x08, 0x04, 0x02, 0x03, - 0x39, 0x6C, 0xC6, 0x46, 0x63, 0x21, 0x11, 0xB8, 0xE0, 0x30, 0x00, 0xE2, - 0x44, 0xC8, 0xCE, 0x06, 0x00, 0x00, 0x00, 0xC0, 0x83, 0x04, 0x08, 0x10, - 0x60, 0x81, 0x02, 0x04, 0x70, 0x38, 0x10, 0x10, 0x10, 0x37, 0x22, 0x24, - 0x38, 0x78, 0x48, 0x4D, 0xC6, 0x73, 0x32, 0x26, 0x64, 0x4C, 0xDE, 0x77, - 0x39, 0x5E, 0xCC, 0xCC, 0xCE, 0x66, 0x62, 0x22, 0x11, 0x11, 0xB9, 0x8E, - 0x77, 0x3B, 0x33, 0x62, 0x62, 0x42, 0x4D, 0xCE, 0x0F, 0x18, 0xD8, 0x7C, - 0x3C, 0x3E, 0x1B, 0x18, 0xF0, 0x3B, 0x87, 0x31, 0x8C, 0x43, 0x31, 0x88, - 0x62, 0x30, 0xF0, 0x60, 0x10, 0x04, 0x03, 0x80, 0x0F, 0x18, 0x98, 0x4C, - 0x2C, 0x26, 0x33, 0x38, 0xEC, 0x04, 0x02, 0x03, 0x03, 0xC0, 0x76, 0x50, - 0xC1, 0x06, 0x08, 0x10, 0x60, 0x1A, 0x6C, 0xC8, 0xC0, 0xD1, 0xB3, 0x5C, - 0x23, 0xC8, 0xC4, 0x21, 0x18, 0xE0, 0xC3, 0x42, 0x42, 0xC6, 0x86, 0x8C, - 0x9D, 0xEE, 0x62, 0xC4, 0x89, 0xA3, 0x47, 0x0C, 0x10, 0xE2, 0x2C, 0x44, - 0xD8, 0x9D, 0x23, 0xA4, 0x65, 0x0C, 0xC1, 0x10, 0x19, 0x95, 0x43, 0x01, - 0x80, 0xC0, 0xA0, 0x91, 0x8E, 0x70, 0x88, 0x46, 0x23, 0x20, 0x90, 0x50, - 0x28, 0x18, 0x08, 0x08, 0x08, 0x18, 0x00, 0x3F, 0x42, 0x04, 0x08, 0x10, - 0x20, 0x40, 0x72, 0x0E, 0x08, 0x61, 0x04, 0x30, 0x86, 0x08, 0x61, 0x04, - 0x30, 0xC3, 0x8F, 0x00, 0xFF, 0xF0, 0x1E, 0x0C, 0x10, 0x20, 0xC1, 0x82, - 0x04, 0x1C, 0x30, 0x40, 0x83, 0x04, 0x08, 0x20, 0x60, 0x99, 0x8E }; - -const GFXglyph FreeSerifItalic9pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 5, 0, 1 }, // 0x20 ' ' - { 0, 4, 12, 6, 1, -11 }, // 0x21 '!' - { 6, 5, 4, 6, 3, -11 }, // 0x22 '"' - { 9, 10, 12, 9, 0, -11 }, // 0x23 '#' - { 24, 9, 15, 9, 1, -12 }, // 0x24 '$' - { 41, 14, 12, 15, 1, -11 }, // 0x25 '%' - { 62, 12, 12, 14, 1, -11 }, // 0x26 '&' - { 80, 2, 4, 4, 3, -11 }, // 0x27 ''' - { 81, 6, 15, 6, 1, -11 }, // 0x28 '(' - { 93, 6, 15, 6, 0, -11 }, // 0x29 ')' - { 105, 6, 8, 9, 3, -11 }, // 0x2A '*' - { 111, 9, 9, 12, 1, -8 }, // 0x2B '+' - { 122, 2, 4, 5, 0, -1 }, // 0x2C ',' - { 123, 4, 1, 6, 1, -3 }, // 0x2D '-' - { 124, 2, 2, 5, 0, -1 }, // 0x2E '.' - { 125, 8, 12, 5, 0, -11 }, // 0x2F '/' - { 137, 9, 13, 9, 1, -12 }, // 0x30 '0' - { 152, 6, 13, 9, 1, -12 }, // 0x31 '1' - { 162, 8, 12, 9, 1, -11 }, // 0x32 '2' - { 174, 9, 12, 9, 0, -11 }, // 0x33 '3' - { 188, 9, 12, 9, 0, -11 }, // 0x34 '4' - { 202, 9, 12, 9, 0, -11 }, // 0x35 '5' - { 216, 9, 13, 9, 1, -12 }, // 0x36 '6' - { 231, 9, 12, 9, 1, -11 }, // 0x37 '7' - { 245, 9, 13, 9, 1, -12 }, // 0x38 '8' - { 260, 9, 13, 9, 0, -12 }, // 0x39 '9' - { 275, 4, 8, 4, 1, -7 }, // 0x3A ':' - { 279, 4, 10, 4, 1, -7 }, // 0x3B ';' - { 284, 9, 9, 10, 1, -8 }, // 0x3C '<' - { 295, 9, 5, 12, 2, -6 }, // 0x3D '=' - { 301, 9, 9, 10, 1, -8 }, // 0x3E '>' - { 312, 7, 12, 8, 2, -11 }, // 0x3F '?' - { 323, 13, 12, 14, 1, -11 }, // 0x40 '@' - { 343, 11, 11, 12, 0, -10 }, // 0x41 'A' - { 359, 11, 12, 11, 0, -11 }, // 0x42 'B' - { 376, 12, 12, 11, 1, -11 }, // 0x43 'C' - { 394, 13, 12, 13, 0, -11 }, // 0x44 'D' - { 414, 12, 12, 10, 0, -11 }, // 0x45 'E' - { 432, 12, 12, 10, 0, -11 }, // 0x46 'F' - { 450, 12, 12, 12, 1, -11 }, // 0x47 'G' - { 468, 14, 12, 13, 0, -11 }, // 0x48 'H' - { 489, 7, 12, 6, 0, -11 }, // 0x49 'I' - { 500, 9, 12, 8, 0, -11 }, // 0x4A 'J' - { 514, 13, 12, 12, 0, -11 }, // 0x4B 'K' - { 534, 11, 12, 10, 0, -11 }, // 0x4C 'L' - { 551, 16, 12, 15, 0, -11 }, // 0x4D 'M' - { 575, 13, 12, 12, 0, -11 }, // 0x4E 'N' - { 595, 11, 12, 12, 1, -11 }, // 0x4F 'O' - { 612, 11, 12, 10, 0, -11 }, // 0x50 'P' - { 629, 11, 15, 12, 1, -11 }, // 0x51 'Q' - { 650, 11, 12, 11, 0, -11 }, // 0x52 'R' - { 667, 10, 12, 8, 0, -11 }, // 0x53 'S' - { 682, 11, 12, 11, 2, -11 }, // 0x54 'T' - { 699, 12, 12, 13, 2, -11 }, // 0x55 'U' - { 717, 11, 12, 12, 2, -11 }, // 0x56 'V' - { 734, 15, 12, 16, 2, -11 }, // 0x57 'W' - { 757, 12, 12, 12, 0, -11 }, // 0x58 'X' - { 775, 10, 12, 11, 2, -11 }, // 0x59 'Y' - { 790, 11, 12, 10, 0, -11 }, // 0x5A 'Z' - { 807, 7, 15, 7, 0, -11 }, // 0x5B '[' - { 821, 6, 12, 9, 2, -11 }, // 0x5C '\' - { 830, 6, 15, 7, 1, -11 }, // 0x5D ']' - { 842, 8, 7, 8, 0, -11 }, // 0x5E '^' - { 849, 9, 1, 9, 0, 2 }, // 0x5F '_' - { 851, 3, 3, 5, 2, -11 }, // 0x60 '`' - { 853, 9, 8, 9, 0, -7 }, // 0x61 'a' - { 862, 9, 12, 9, 0, -11 }, // 0x62 'b' - { 876, 8, 8, 7, 0, -7 }, // 0x63 'c' - { 884, 9, 12, 9, 0, -11 }, // 0x64 'd' - { 898, 7, 8, 7, 0, -7 }, // 0x65 'e' - { 905, 11, 17, 8, -1, -12 }, // 0x66 'f' - { 929, 9, 12, 8, 0, -7 }, // 0x67 'g' - { 943, 9, 12, 9, 0, -11 }, // 0x68 'h' - { 957, 4, 12, 4, 1, -11 }, // 0x69 'i' - { 963, 7, 16, 5, -1, -11 }, // 0x6A 'j' - { 977, 8, 12, 8, 0, -11 }, // 0x6B 'k' - { 989, 4, 12, 5, 1, -11 }, // 0x6C 'l' - { 995, 13, 8, 13, 0, -7 }, // 0x6D 'm' - { 1008, 8, 8, 9, 0, -7 }, // 0x6E 'n' - { 1016, 9, 8, 9, 0, -7 }, // 0x6F 'o' - { 1025, 10, 12, 8, -1, -7 }, // 0x70 'p' - { 1040, 9, 12, 9, 0, -7 }, // 0x71 'q' - { 1054, 7, 8, 7, 0, -7 }, // 0x72 'r' - { 1061, 7, 8, 6, 0, -7 }, // 0x73 's' - { 1068, 5, 9, 4, 0, -8 }, // 0x74 't' - { 1074, 8, 8, 9, 1, -7 }, // 0x75 'u' - { 1082, 7, 8, 8, 1, -7 }, // 0x76 'v' - { 1089, 11, 8, 12, 1, -7 }, // 0x77 'w' - { 1100, 9, 8, 8, -1, -7 }, // 0x78 'x' - { 1109, 9, 12, 9, 0, -7 }, // 0x79 'y' - { 1123, 8, 9, 7, 0, -7 }, // 0x7A 'z' - { 1132, 6, 15, 7, 1, -11 }, // 0x7B '{' - { 1144, 1, 12, 5, 2, -11 }, // 0x7C '|' - { 1146, 7, 16, 7, 0, -12 }, // 0x7D '}' - { 1160, 8, 3, 10, 1, -5 } }; // 0x7E '~' - -const GFXfont FreeSerifItalic9pt7b PROGMEM = { - (uint8_t *)FreeSerifItalic9pt7bBitmaps, - (GFXglyph *)FreeSerifItalic9pt7bGlyphs, - 0x20, 0x7E, 22 }; - -// Approx. 1835 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h deleted file mode 100644 index ac41f31cd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h +++ /dev/null @@ -1,131 +0,0 @@ -// Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, -// stylized font with all characters within a 6 pixel height. - -const uint8_t Org_01Bitmaps[] PROGMEM = { - 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, - 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, - 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, - 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, - 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, - 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, - 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, - 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, - 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, - 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, - 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, - 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, - 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, - 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, - 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, - 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, - 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, - 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, - 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, - 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, - 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, - 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, - 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0 }; - -const GFXglyph Org_01Glyphs[] PROGMEM = { - { 0, 0, 0, 6, 0, 1 }, // 0x20 ' ' - { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' - { 1, 3, 1, 4, 0, -4 }, // 0x22 '"' - { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' - { 6, 5, 5, 6, 0, -4 }, // 0x24 '$' - { 10, 5, 5, 6, 0, -4 }, // 0x25 '%' - { 14, 5, 5, 6, 0, -4 }, // 0x26 '&' - { 18, 1, 1, 2, 0, -4 }, // 0x27 ''' - { 19, 2, 5, 3, 0, -4 }, // 0x28 '(' - { 21, 2, 5, 3, 0, -4 }, // 0x29 ')' - { 23, 3, 3, 4, 0, -3 }, // 0x2A '*' - { 25, 3, 3, 4, 0, -3 }, // 0x2B '+' - { 27, 1, 2, 2, 0, 0 }, // 0x2C ',' - { 28, 4, 1, 5, 0, -2 }, // 0x2D '-' - { 29, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 30, 5, 5, 6, 0, -4 }, // 0x2F '/' - { 34, 5, 5, 6, 0, -4 }, // 0x30 '0' - { 38, 1, 5, 2, 0, -4 }, // 0x31 '1' - { 39, 5, 5, 6, 0, -4 }, // 0x32 '2' - { 43, 5, 5, 6, 0, -4 }, // 0x33 '3' - { 47, 5, 5, 6, 0, -4 }, // 0x34 '4' - { 51, 5, 5, 6, 0, -4 }, // 0x35 '5' - { 55, 5, 5, 6, 0, -4 }, // 0x36 '6' - { 59, 5, 5, 6, 0, -4 }, // 0x37 '7' - { 63, 5, 5, 6, 0, -4 }, // 0x38 '8' - { 67, 5, 5, 6, 0, -4 }, // 0x39 '9' - { 71, 1, 4, 2, 0, -3 }, // 0x3A ':' - { 72, 1, 4, 2, 0, -3 }, // 0x3B ';' - { 73, 3, 5, 4, 0, -4 }, // 0x3C '<' - { 75, 4, 3, 5, 0, -3 }, // 0x3D '=' - { 77, 3, 5, 4, 0, -4 }, // 0x3E '>' - { 79, 5, 5, 6, 0, -4 }, // 0x3F '?' - { 83, 5, 5, 6, 0, -4 }, // 0x40 '@' - { 87, 5, 5, 6, 0, -4 }, // 0x41 'A' - { 91, 5, 5, 6, 0, -4 }, // 0x42 'B' - { 95, 5, 5, 6, 0, -4 }, // 0x43 'C' - { 99, 5, 5, 6, 0, -4 }, // 0x44 'D' - { 103, 5, 5, 6, 0, -4 }, // 0x45 'E' - { 107, 5, 5, 6, 0, -4 }, // 0x46 'F' - { 111, 5, 5, 6, 0, -4 }, // 0x47 'G' - { 115, 5, 5, 6, 0, -4 }, // 0x48 'H' - { 119, 5, 5, 6, 0, -4 }, // 0x49 'I' - { 123, 5, 5, 6, 0, -4 }, // 0x4A 'J' - { 127, 5, 5, 6, 0, -4 }, // 0x4B 'K' - { 131, 5, 5, 6, 0, -4 }, // 0x4C 'L' - { 135, 5, 5, 6, 0, -4 }, // 0x4D 'M' - { 139, 5, 5, 6, 0, -4 }, // 0x4E 'N' - { 143, 5, 5, 6, 0, -4 }, // 0x4F 'O' - { 147, 5, 5, 6, 0, -4 }, // 0x50 'P' - { 151, 5, 5, 6, 0, -4 }, // 0x51 'Q' - { 155, 5, 5, 6, 0, -4 }, // 0x52 'R' - { 159, 5, 5, 6, 0, -4 }, // 0x53 'S' - { 163, 5, 5, 6, 0, -4 }, // 0x54 'T' - { 167, 5, 5, 6, 0, -4 }, // 0x55 'U' - { 171, 5, 5, 6, 0, -4 }, // 0x56 'V' - { 175, 5, 5, 6, 0, -4 }, // 0x57 'W' - { 179, 5, 5, 6, 0, -4 }, // 0x58 'X' - { 183, 5, 5, 6, 0, -4 }, // 0x59 'Y' - { 187, 5, 5, 6, 0, -4 }, // 0x5A 'Z' - { 191, 2, 5, 3, 0, -4 }, // 0x5B '[' - { 193, 5, 5, 6, 0, -4 }, // 0x5C '\' - { 197, 2, 5, 3, 0, -4 }, // 0x5D ']' - { 199, 3, 2, 4, 0, -4 }, // 0x5E '^' - { 200, 5, 1, 6, 0, 1 }, // 0x5F '_' - { 201, 1, 1, 2, 0, -4 }, // 0x60 '`' - { 202, 4, 4, 5, 0, -3 }, // 0x61 'a' - { 204, 4, 5, 5, 0, -4 }, // 0x62 'b' - { 207, 4, 4, 5, 0, -3 }, // 0x63 'c' - { 209, 4, 5, 5, 0, -4 }, // 0x64 'd' - { 212, 4, 4, 5, 0, -3 }, // 0x65 'e' - { 214, 3, 5, 4, 0, -4 }, // 0x66 'f' - { 216, 4, 5, 5, 0, -3 }, // 0x67 'g' - { 219, 4, 5, 5, 0, -4 }, // 0x68 'h' - { 222, 1, 4, 2, 0, -3 }, // 0x69 'i' - { 223, 2, 5, 3, 0, -3 }, // 0x6A 'j' - { 225, 4, 5, 5, 0, -4 }, // 0x6B 'k' - { 228, 1, 5, 2, 0, -4 }, // 0x6C 'l' - { 229, 5, 4, 6, 0, -3 }, // 0x6D 'm' - { 232, 4, 4, 5, 0, -3 }, // 0x6E 'n' - { 234, 4, 4, 5, 0, -3 }, // 0x6F 'o' - { 236, 4, 5, 5, 0, -3 }, // 0x70 'p' - { 239, 4, 5, 5, 0, -3 }, // 0x71 'q' - { 242, 4, 4, 5, 0, -3 }, // 0x72 'r' - { 244, 4, 4, 5, 0, -3 }, // 0x73 's' - { 246, 5, 5, 6, 0, -4 }, // 0x74 't' - { 250, 4, 4, 5, 0, -3 }, // 0x75 'u' - { 252, 4, 4, 5, 0, -3 }, // 0x76 'v' - { 254, 5, 4, 6, 0, -3 }, // 0x77 'w' - { 257, 4, 4, 5, 0, -3 }, // 0x78 'x' - { 259, 4, 5, 5, 0, -3 }, // 0x79 'y' - { 262, 4, 4, 5, 0, -3 }, // 0x7A 'z' - { 264, 3, 5, 4, 0, -4 }, // 0x7B '{' - { 266, 1, 5, 2, 0, -4 }, // 0x7C '|' - { 267, 3, 5, 4, 0, -4 }, // 0x7D '}' - { 269, 5, 3, 6, 0, -3 } }; // 0x7E '~' - -const GFXfont Org_01 PROGMEM = { - (uint8_t *)Org_01Bitmaps, - (GFXglyph *)Org_01Glyphs, - 0x20, 0x7E, 7 }; - -// Approx. 943 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h deleted file mode 100644 index 0ed654374..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h +++ /dev/null @@ -1,123 +0,0 @@ -// Picopixel by Sebastian Weber. A tiny font -// with all characters within a 6 pixel height. - -const uint8_t PicopixelBitmaps[] PROGMEM = { - 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, - 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, - 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, - 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, - 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, - 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, - 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, - 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, - 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, - 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, - 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, - 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, - 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, - 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, - 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A }; - -const GFXglyph PicopixelGlyphs[] PROGMEM = { - { 0, 0, 0, 2, 0, 1 }, // 0x20 ' ' - { 0, 1, 5, 2, 0, -4 }, // 0x21 '!' - { 1, 3, 2, 4, 0, -4 }, // 0x22 '"' - { 2, 5, 5, 6, 0, -4 }, // 0x23 '#' - { 6, 3, 6, 4, 0, -4 }, // 0x24 '$' - { 9, 3, 5, 4, 0, -4 }, // 0x25 '%' - { 11, 4, 5, 5, 0, -4 }, // 0x26 '&' - { 14, 1, 2, 2, 0, -4 }, // 0x27 ''' - { 15, 2, 5, 3, 0, -4 }, // 0x28 '(' - { 17, 2, 5, 3, 0, -4 }, // 0x29 ')' - { 19, 3, 3, 4, 0, -3 }, // 0x2A '*' - { 21, 3, 3, 4, 0, -3 }, // 0x2B '+' - { 23, 2, 2, 3, 0, 0 }, // 0x2C ',' - { 24, 3, 1, 4, 0, -2 }, // 0x2D '-' - { 25, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 26, 3, 5, 4, 0, -4 }, // 0x2F '/' - { 28, 3, 5, 4, 0, -4 }, // 0x30 '0' - { 30, 2, 5, 3, 0, -4 }, // 0x31 '1' - { 32, 3, 5, 4, 0, -4 }, // 0x32 '2' - { 34, 3, 5, 4, 0, -4 }, // 0x33 '3' - { 36, 3, 5, 4, 0, -4 }, // 0x34 '4' - { 38, 3, 5, 4, 0, -4 }, // 0x35 '5' - { 40, 3, 5, 4, 0, -4 }, // 0x36 '6' - { 42, 3, 5, 4, 0, -4 }, // 0x37 '7' - { 44, 3, 5, 4, 0, -4 }, // 0x38 '8' - { 46, 3, 5, 4, 0, -4 }, // 0x39 '9' - { 48, 1, 3, 2, 0, -3 }, // 0x3A ':' - { 49, 2, 4, 3, 0, -3 }, // 0x3B ';' - { 50, 2, 3, 3, 0, -3 }, // 0x3C '<' - { 51, 3, 3, 4, 0, -3 }, // 0x3D '=' - { 53, 2, 3, 3, 0, -3 }, // 0x3E '>' - { 54, 3, 5, 4, 0, -4 }, // 0x3F '?' - { 56, 3, 5, 4, 0, -4 }, // 0x40 '@' - { 58, 3, 5, 4, 0, -4 }, // 0x41 'A' - { 60, 3, 5, 4, 0, -4 }, // 0x42 'B' - { 62, 3, 5, 4, 0, -4 }, // 0x43 'C' - { 64, 3, 5, 4, 0, -4 }, // 0x44 'D' - { 66, 3, 5, 4, 0, -4 }, // 0x45 'E' - { 68, 3, 5, 4, 0, -4 }, // 0x46 'F' - { 70, 3, 5, 4, 0, -4 }, // 0x47 'G' - { 72, 3, 5, 4, 0, -4 }, // 0x48 'H' - { 74, 1, 5, 2, 0, -4 }, // 0x49 'I' - { 75, 3, 5, 4, 0, -4 }, // 0x4A 'J' - { 77, 3, 5, 4, 0, -4 }, // 0x4B 'K' - { 79, 3, 5, 4, 0, -4 }, // 0x4C 'L' - { 81, 5, 5, 6, 0, -4 }, // 0x4D 'M' - { 85, 4, 5, 5, 0, -4 }, // 0x4E 'N' - { 88, 3, 5, 4, 0, -4 }, // 0x4F 'O' - { 90, 3, 5, 4, 0, -4 }, // 0x50 'P' - { 92, 3, 6, 4, 0, -4 }, // 0x51 'Q' - { 95, 3, 5, 4, 0, -4 }, // 0x52 'R' - { 97, 3, 5, 4, 0, -4 }, // 0x53 'S' - { 99, 3, 5, 4, 0, -4 }, // 0x54 'T' - { 101, 3, 5, 4, 0, -4 }, // 0x55 'U' - { 103, 3, 5, 4, 0, -4 }, // 0x56 'V' - { 105, 5, 5, 6, 0, -4 }, // 0x57 'W' - { 109, 3, 5, 4, 0, -4 }, // 0x58 'X' - { 111, 3, 5, 4, 0, -4 }, // 0x59 'Y' - { 113, 3, 5, 4, 0, -4 }, // 0x5A 'Z' - { 115, 2, 5, 3, 0, -4 }, // 0x5B '[' - { 117, 3, 5, 4, 0, -4 }, // 0x5C '\' - { 119, 2, 5, 3, 0, -4 }, // 0x5D ']' - { 121, 3, 2, 4, 0, -4 }, // 0x5E '^' - { 122, 4, 1, 4, 0, 1 }, // 0x5F '_' - { 123, 2, 2, 3, 0, -4 }, // 0x60 '`' - { 124, 3, 4, 4, 0, -3 }, // 0x61 'a' - { 126, 3, 5, 4, 0, -4 }, // 0x62 'b' - { 128, 3, 3, 4, 0, -2 }, // 0x63 'c' - { 130, 3, 5, 4, 0, -4 }, // 0x64 'd' - { 132, 3, 4, 4, 0, -3 }, // 0x65 'e' - { 134, 2, 5, 3, 0, -4 }, // 0x66 'f' - { 136, 3, 5, 4, 0, -3 }, // 0x67 'g' - { 138, 3, 5, 4, 0, -4 }, // 0x68 'h' - { 140, 1, 5, 2, 0, -4 }, // 0x69 'i' - { 141, 2, 6, 3, 0, -4 }, // 0x6A 'j' - { 143, 3, 5, 4, 0, -4 }, // 0x6B 'k' - { 145, 2, 5, 3, 0, -4 }, // 0x6C 'l' - { 147, 5, 3, 6, 0, -2 }, // 0x6D 'm' - { 149, 3, 3, 4, 0, -2 }, // 0x6E 'n' - { 151, 3, 3, 4, 0, -2 }, // 0x6F 'o' - { 153, 3, 4, 4, 0, -2 }, // 0x70 'p' - { 155, 3, 4, 4, 0, -2 }, // 0x71 'q' - { 157, 2, 3, 3, 0, -2 }, // 0x72 'r' - { 158, 3, 4, 4, 0, -3 }, // 0x73 's' - { 160, 2, 5, 3, 0, -4 }, // 0x74 't' - { 162, 3, 3, 4, 0, -2 }, // 0x75 'u' - { 164, 3, 3, 4, 0, -2 }, // 0x76 'v' - { 166, 5, 3, 6, 0, -2 }, // 0x77 'w' - { 168, 3, 3, 4, 0, -2 }, // 0x78 'x' - { 170, 3, 4, 4, 0, -2 }, // 0x79 'y' - { 172, 3, 4, 4, 0, -3 }, // 0x7A 'z' - { 174, 3, 5, 4, 0, -4 }, // 0x7B '{' - { 176, 1, 6, 2, 0, -4 }, // 0x7C '|' - { 177, 3, 5, 4, 0, -4 }, // 0x7D '}' - { 179, 4, 2, 5, 0, -3 } }; // 0x7E '~' - -const GFXfont Picopixel PROGMEM = { - (uint8_t *)PicopixelBitmaps, - (GFXglyph *)PicopixelGlyphs, - 0x20, 0x7E, 7 }; - -// Approx. 852 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b b/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b deleted file mode 100644 index d77676c21..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b +++ /dev/null @@ -1,130 +0,0 @@ -/** -** The FontStruction “Tiny3x3a” -** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is -** licensed under a Creative Commons Attribution Non-commercial Share Alike license -** (http://creativecommons.org/licenses/by-nc-sa/3.0/). -** “Tiny3x3a” was originally cloned (copied) from the FontStruction -** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant -** Grant, which is licensed under a Creative Commons Attribution Non-commercial -** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). -* -* Converted by eadmaster with fontconvert -**/ - -const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { - 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, - 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, - 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, - 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, - 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, - 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, - 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, - 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, - 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, - 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, - 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, - 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78 }; - -const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { - { 0, 0, 0, 4, 0, 1 }, // 0x20 ' ' - { 0, 1, 2, 3, 1, -2 }, // 0x21 '!' - { 1, 3, 2, 4, 0, -2 }, // 0x22 '"' - { 2, 3, 3, 4, 0, -2 }, // 0x23 '#' - { 4, 3, 3, 4, 0, -2 }, // 0x24 '$' - { 6, 3, 3, 4, 0, -2 }, // 0x25 '%' - { 8, 3, 3, 4, 0, -2 }, // 0x26 '&' - { 10, 1, 1, 3, 1, -2 }, // 0x27 ''' - { 11, 2, 3, 3, 0, -2 }, // 0x28 '(' - { 12, 2, 3, 4, 1, -2 }, // 0x29 ')' - { 13, 2, 2, 4, 1, -2 }, // 0x2A '*' - { 14, 3, 3, 4, 0, -2 }, // 0x2B '+' - { 16, 1, 2, 2, 0, 0 }, // 0x2C ',' - { 17, 3, 1, 4, 0, -1 }, // 0x2D '-' - { 18, 1, 1, 2, 0, 0 }, // 0x2E '.' - { 19, 3, 3, 4, 0, -2 }, // 0x2F '/' - { 21, 3, 3, 4, 0, -2 }, // 0x30 '0' - { 23, 2, 3, 3, 0, -2 }, // 0x31 '1' - { 24, 3, 3, 4, 0, -2 }, // 0x32 '2' - { 26, 3, 3, 4, 0, -2 }, // 0x33 '3' - { 28, 3, 3, 4, 0, -2 }, // 0x34 '4' - { 30, 3, 3, 4, 0, -2 }, // 0x35 '5' - { 32, 3, 3, 4, 0, -2 }, // 0x36 '6' - { 34, 3, 3, 4, 0, -2 }, // 0x37 '7' - { 36, 3, 3, 4, 0, -2 }, // 0x38 '8' - { 38, 3, 3, 4, 0, -2 }, // 0x39 '9' - { 40, 1, 3, 3, 1, -2 }, // 0x3A ':' - { 41, 2, 3, 3, 0, -1 }, // 0x3B ';' - { 42, 2, 3, 3, 0, -2 }, // 0x3C '<' - { 43, 3, 3, 4, 0, -2 }, // 0x3D '=' - { 45, 2, 3, 4, 1, -2 }, // 0x3E '>' - { 46, 2, 3, 4, 1, -2 }, // 0x3F '?' - { 47, 3, 3, 4, 0, -2 }, // 0x40 '@' - { 49, 3, 3, 4, 0, -2 }, // 0x41 'A' - { 51, 3, 3, 4, 0, -2 }, // 0x42 'B' - { 53, 3, 3, 4, 0, -2 }, // 0x43 'C' - { 55, 3, 3, 4, 0, -2 }, // 0x44 'D' - { 57, 3, 3, 4, 0, -2 }, // 0x45 'E' - { 59, 3, 3, 4, 0, -2 }, // 0x46 'F' - { 61, 3, 3, 4, 0, -2 }, // 0x47 'G' - { 63, 3, 3, 4, 0, -2 }, // 0x48 'H' - { 65, 1, 3, 3, 1, -2 }, // 0x49 'I' - { 66, 3, 3, 4, 0, -2 }, // 0x4A 'J' - { 68, 3, 3, 4, 0, -2 }, // 0x4B 'K' - { 70, 3, 3, 4, 0, -2 }, // 0x4C 'L' - { 72, 3, 3, 4, 0, -2 }, // 0x4D 'M' - { 74, 3, 3, 4, 0, -2 }, // 0x4E 'N' - { 76, 3, 3, 4, 0, -2 }, // 0x4F 'O' - { 78, 3, 3, 4, 0, -2 }, // 0x50 'P' - { 80, 3, 3, 4, 0, -2 }, // 0x51 'Q' - { 82, 3, 3, 4, 0, -2 }, // 0x52 'R' - { 84, 3, 3, 4, 0, -2 }, // 0x53 'S' - { 86, 3, 3, 4, 0, -2 }, // 0x54 'T' - { 88, 3, 3, 4, 0, -2 }, // 0x55 'U' - { 90, 3, 3, 4, 0, -2 }, // 0x56 'V' - { 92, 3, 3, 4, 0, -2 }, // 0x57 'W' - { 94, 3, 3, 4, 0, -2 }, // 0x58 'X' - { 96, 3, 3, 4, 0, -2 }, // 0x59 'Y' - { 98, 3, 3, 4, 0, -2 }, // 0x5A 'Z' - { 100, 2, 3, 3, 0, -2 }, // 0x5B '[' - { 101, 3, 3, 4, 0, -2 }, // 0x5C '\' - { 103, 2, 3, 4, 1, -2 }, // 0x5D ']' - { 104, 3, 2, 4, 0, -2 }, // 0x5E '^' - { 105, 3, 1, 4, 0, 0 }, // 0x5F '_' - { 106, 2, 2, 3, 0, -2 }, // 0x60 '`' - { 107, 2, 2, 3, 0, -1 }, // 0x61 'a' - { 108, 2, 3, 3, 0, -2 }, // 0x62 'b' - { 109, 2, 2, 3, 0, -1 }, // 0x63 'c' - { 110, 2, 3, 3, 0, -2 }, // 0x64 'd' - { 111, 2, 2, 3, 0, -1 }, // 0x65 'e' - { 112, 2, 3, 3, 0, -2 }, // 0x66 'f' - { 113, 2, 3, 3, 0, -1 }, // 0x67 'g' - { 114, 2, 3, 3, 0, -2 }, // 0x68 'h' - { 115, 1, 2, 2, 0, -1 }, // 0x69 'i' - { 116, 2, 3, 3, 0, -1 }, // 0x6A 'j' - { 117, 3, 3, 4, 0, -2 }, // 0x6B 'k' - { 119, 2, 3, 3, 0, -2 }, // 0x6C 'l' - { 120, 3, 2, 4, 0, -1 }, // 0x6D 'm' - { 121, 3, 2, 4, 0, -1 }, // 0x6E 'n' - { 122, 2, 2, 3, 0, -1 }, // 0x6F 'o' - { 123, 2, 3, 3, 0, -1 }, // 0x70 'p' - { 124, 2, 3, 3, 0, -1 }, // 0x71 'q' - { 125, 2, 2, 3, 0, -1 }, // 0x72 'r' - { 126, 2, 2, 3, 0, -1 }, // 0x73 's' - { 127, 3, 3, 4, 0, -2 }, // 0x74 't' - { 129, 3, 2, 4, 0, -1 }, // 0x75 'u' - { 130, 3, 2, 4, 0, -1 }, // 0x76 'v' - { 131, 3, 2, 4, 0, -1 }, // 0x77 'w' - { 132, 2, 2, 3, 0, -1 }, // 0x78 'x' - { 133, 3, 3, 4, 0, -1 }, // 0x79 'y' - { 135, 2, 2, 3, 0, -1 }, // 0x7A 'z' - { 136, 3, 3, 4, 0, -2 }, // 0x7B '{' - { 138, 1, 4, 3, 1, -2 }, // 0x7C '|' - { 139, 3, 3, 4, 0, -2 }, // 0x7D '}' - { 141, 3, 2, 4, 0, -2 } }; // 0x7E '~' - -const GFXfont Tiny3x3a2pt7b PROGMEM = { - (uint8_t *)Tiny3x3a2pt7bBitmaps, - (GFXglyph *)Tiny3x3a2pt7bGlyphs, - 0x20, 0x7E, 4 }; - -// Approx. 814 bytes diff --git a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h b/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h deleted file mode 100644 index dad420dcd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h +++ /dev/null @@ -1,474 +0,0 @@ -/** -** The original 3x5 font is licensed under the 3-clause BSD license: -** -** Copyright 1999 Brian J. Swetland -** Copyright 1999 Vassilii Khachaturov -** Portions (of vt100.c/vt100.h) copyright Dan Marks -** -** 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. -** 3. The name of the authors may not be used to endorse or promote products -** derived from this software without specific prior written permission. -** -** THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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. -** -** Modifications to Tom Thumb for improved readability are from Robey Pointer, -** see: -** http://robey.lag.net/2010/01/23/tiny-monospace-font.html -** -** The original author does not have any objection to relicensing of Robey -** Pointer's modifications (in this file) in a more permissive license. See -** the discussion at the above blog, and also here: -** http://opengameart.org/forumtopic/how-to-submit-art-using-the-3-clause-bsd-license -** -** Feb 21, 2016: Conversion from Linux BDF --> Adafruit GFX font, -** with the help of this Python script: -** https://gist.github.com/skelliam/322d421f028545f16f6d -** William Skellenger (williamj@skellenger.net) -** Twitter: @skelliam -** -*/ - -#define TOMTHUMB_USE_EXTENDED 0 - -const uint8_t TomThumbBitmaps[] PROGMEM = { - 0x00, /* 0x20 space */ - 0x80, 0x80, 0x80, 0x00, 0x80, /* 0x21 exclam */ - 0xA0, 0xA0, /* 0x22 quotedbl */ - 0xA0, 0xE0, 0xA0, 0xE0, 0xA0, /* 0x23 numbersign */ - 0x60, 0xC0, 0x60, 0xC0, 0x40, /* 0x24 dollar */ - 0x80, 0x20, 0x40, 0x80, 0x20, /* 0x25 percent */ - 0xC0, 0xC0, 0xE0, 0xA0, 0x60, /* 0x26 ampersand */ - 0x80, 0x80, /* 0x27 quotesingle */ - 0x40, 0x80, 0x80, 0x80, 0x40, /* 0x28 parenleft */ - 0x80, 0x40, 0x40, 0x40, 0x80, /* 0x29 parenright */ - 0xA0, 0x40, 0xA0, /* 0x2A asterisk */ - 0x40, 0xE0, 0x40, /* 0x2B plus */ - 0x40, 0x80, /* 0x2C comma */ - 0xE0, /* 0x2D hyphen */ - 0x80, /* 0x2E period */ - 0x20, 0x20, 0x40, 0x80, 0x80, /* 0x2F slash */ - 0x60, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x30 zero */ - 0x40, 0xC0, 0x40, 0x40, 0x40, /* 0x31 one */ - 0xC0, 0x20, 0x40, 0x80, 0xE0, /* 0x32 two */ - 0xC0, 0x20, 0x40, 0x20, 0xC0, /* 0x33 three */ - 0xA0, 0xA0, 0xE0, 0x20, 0x20, /* 0x34 four */ - 0xE0, 0x80, 0xC0, 0x20, 0xC0, /* 0x35 five */ - 0x60, 0x80, 0xE0, 0xA0, 0xE0, /* 0x36 six */ - 0xE0, 0x20, 0x40, 0x80, 0x80, /* 0x37 seven */ - 0xE0, 0xA0, 0xE0, 0xA0, 0xE0, /* 0x38 eight */ - 0xE0, 0xA0, 0xE0, 0x20, 0xC0, /* 0x39 nine */ - 0x80, 0x00, 0x80, /* 0x3A colon */ - 0x40, 0x00, 0x40, 0x80, /* 0x3B semicolon */ - 0x20, 0x40, 0x80, 0x40, 0x20, /* 0x3C less */ - 0xE0, 0x00, 0xE0, /* 0x3D equal */ - 0x80, 0x40, 0x20, 0x40, 0x80, /* 0x3E greater */ - 0xE0, 0x20, 0x40, 0x00, 0x40, /* 0x3F question */ - 0x40, 0xA0, 0xE0, 0x80, 0x60, /* 0x40 at */ - 0x40, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x41 A */ - 0xC0, 0xA0, 0xC0, 0xA0, 0xC0, /* 0x42 B */ - 0x60, 0x80, 0x80, 0x80, 0x60, /* 0x43 C */ - 0xC0, 0xA0, 0xA0, 0xA0, 0xC0, /* 0x44 D */ - 0xE0, 0x80, 0xE0, 0x80, 0xE0, /* 0x45 E */ - 0xE0, 0x80, 0xE0, 0x80, 0x80, /* 0x46 F */ - 0x60, 0x80, 0xE0, 0xA0, 0x60, /* 0x47 G */ - 0xA0, 0xA0, 0xE0, 0xA0, 0xA0, /* 0x48 H */ - 0xE0, 0x40, 0x40, 0x40, 0xE0, /* 0x49 I */ - 0x20, 0x20, 0x20, 0xA0, 0x40, /* 0x4A J */ - 0xA0, 0xA0, 0xC0, 0xA0, 0xA0, /* 0x4B K */ - 0x80, 0x80, 0x80, 0x80, 0xE0, /* 0x4C L */ - 0xA0, 0xE0, 0xE0, 0xA0, 0xA0, /* 0x4D M */ - 0xA0, 0xE0, 0xE0, 0xE0, 0xA0, /* 0x4E N */ - 0x40, 0xA0, 0xA0, 0xA0, 0x40, /* 0x4F O */ - 0xC0, 0xA0, 0xC0, 0x80, 0x80, /* 0x50 P */ - 0x40, 0xA0, 0xA0, 0xE0, 0x60, /* 0x51 Q */ - 0xC0, 0xA0, 0xE0, 0xC0, 0xA0, /* 0x52 R */ - 0x60, 0x80, 0x40, 0x20, 0xC0, /* 0x53 S */ - 0xE0, 0x40, 0x40, 0x40, 0x40, /* 0x54 T */ - 0xA0, 0xA0, 0xA0, 0xA0, 0x60, /* 0x55 U */ - 0xA0, 0xA0, 0xA0, 0x40, 0x40, /* 0x56 V */ - 0xA0, 0xA0, 0xE0, 0xE0, 0xA0, /* 0x57 W */ - 0xA0, 0xA0, 0x40, 0xA0, 0xA0, /* 0x58 X */ - 0xA0, 0xA0, 0x40, 0x40, 0x40, /* 0x59 Y */ - 0xE0, 0x20, 0x40, 0x80, 0xE0, /* 0x5A Z */ - 0xE0, 0x80, 0x80, 0x80, 0xE0, /* 0x5B bracketleft */ - 0x80, 0x40, 0x20, /* 0x5C backslash */ - 0xE0, 0x20, 0x20, 0x20, 0xE0, /* 0x5D bracketright */ - 0x40, 0xA0, /* 0x5E asciicircum */ - 0xE0, /* 0x5F underscore */ - 0x80, 0x40, /* 0x60 grave */ - 0xC0, 0x60, 0xA0, 0xE0, /* 0x61 a */ - 0x80, 0xC0, 0xA0, 0xA0, 0xC0, /* 0x62 b */ - 0x60, 0x80, 0x80, 0x60, /* 0x63 c */ - 0x20, 0x60, 0xA0, 0xA0, 0x60, /* 0x64 d */ - 0x60, 0xA0, 0xC0, 0x60, /* 0x65 e */ - 0x20, 0x40, 0xE0, 0x40, 0x40, /* 0x66 f */ - 0x60, 0xA0, 0xE0, 0x20, 0x40, /* 0x67 g */ - 0x80, 0xC0, 0xA0, 0xA0, 0xA0, /* 0x68 h */ - 0x80, 0x00, 0x80, 0x80, 0x80, /* 0x69 i */ - 0x20, 0x00, 0x20, 0x20, 0xA0, 0x40, /* 0x6A j */ - 0x80, 0xA0, 0xC0, 0xC0, 0xA0, /* 0x6B k */ - 0xC0, 0x40, 0x40, 0x40, 0xE0, /* 0x6C l */ - 0xE0, 0xE0, 0xE0, 0xA0, /* 0x6D m */ - 0xC0, 0xA0, 0xA0, 0xA0, /* 0x6E n */ - 0x40, 0xA0, 0xA0, 0x40, /* 0x6F o */ - 0xC0, 0xA0, 0xA0, 0xC0, 0x80, /* 0x70 p */ - 0x60, 0xA0, 0xA0, 0x60, 0x20, /* 0x71 q */ - 0x60, 0x80, 0x80, 0x80, /* 0x72 r */ - 0x60, 0xC0, 0x60, 0xC0, /* 0x73 s */ - 0x40, 0xE0, 0x40, 0x40, 0x60, /* 0x74 t */ - 0xA0, 0xA0, 0xA0, 0x60, /* 0x75 u */ - 0xA0, 0xA0, 0xE0, 0x40, /* 0x76 v */ - 0xA0, 0xE0, 0xE0, 0xE0, /* 0x77 w */ - 0xA0, 0x40, 0x40, 0xA0, /* 0x78 x */ - 0xA0, 0xA0, 0x60, 0x20, 0x40, /* 0x79 y */ - 0xE0, 0x60, 0xC0, 0xE0, /* 0x7A z */ - 0x60, 0x40, 0x80, 0x40, 0x60, /* 0x7B braceleft */ - 0x80, 0x80, 0x00, 0x80, 0x80, /* 0x7C bar */ - 0xC0, 0x40, 0x20, 0x40, 0xC0, /* 0x7D braceright */ - 0x60, 0xC0, /* 0x7E asciitilde */ -#if (TOMTHUMB_USE_EXTENDED) - 0x80, 0x00, 0x80, 0x80, 0x80, /* 0xA1 exclamdown */ - 0x40, 0xE0, 0x80, 0xE0, 0x40, /* 0xA2 cent */ - 0x60, 0x40, 0xE0, 0x40, 0xE0, /* 0xA3 sterling */ - 0xA0, 0x40, 0xE0, 0x40, 0xA0, /* 0xA4 currency */ - 0xA0, 0xA0, 0x40, 0xE0, 0x40, /* 0xA5 yen */ - 0x80, 0x80, 0x00, 0x80, 0x80, /* 0xA6 brokenbar */ - 0x60, 0x40, 0xA0, 0x40, 0xC0, /* 0xA7 section */ - 0xA0, /* 0xA8 dieresis */ - 0x60, 0x80, 0x60, /* 0xA9 copyright */ - 0x60, 0xA0, 0xE0, 0x00, 0xE0, /* 0xAA ordfeminine */ - 0x40, 0x80, 0x40, /* 0xAB guillemotleft */ - 0xE0, 0x20, /* 0xAC logicalnot */ - 0xC0, /* 0xAD softhyphen */ - 0xC0, 0xC0, 0xA0, /* 0xAE registered */ - 0xE0, /* 0xAF macron */ - 0x40, 0xA0, 0x40, /* 0xB0 degree */ - 0x40, 0xE0, 0x40, 0x00, 0xE0, /* 0xB1 plusminus */ - 0xC0, 0x40, 0x60, /* 0xB2 twosuperior */ - 0xE0, 0x60, 0xE0, /* 0xB3 threesuperior */ - 0x40, 0x80, /* 0xB4 acute */ - 0xA0, 0xA0, 0xA0, 0xC0, 0x80, /* 0xB5 mu */ - 0x60, 0xA0, 0x60, 0x60, 0x60, /* 0xB6 paragraph */ - 0xE0, 0xE0, 0xE0, /* 0xB7 periodcentered */ - 0x40, 0x20, 0xC0, /* 0xB8 cedilla */ - 0x80, 0x80, 0x80, /* 0xB9 onesuperior */ - 0x40, 0xA0, 0x40, 0x00, 0xE0, /* 0xBA ordmasculine */ - 0x80, 0x40, 0x80, /* 0xBB guillemotright */ - 0x80, 0x80, 0x00, 0x60, 0x20, /* 0xBC onequarter */ - 0x80, 0x80, 0x00, 0xC0, 0x60, /* 0xBD onehalf */ - 0xC0, 0xC0, 0x00, 0x60, 0x20, /* 0xBE threequarters */ - 0x40, 0x00, 0x40, 0x80, 0xE0, /* 0xBF questiondown */ - 0x40, 0x20, 0x40, 0xE0, 0xA0, /* 0xC0 Agrave */ - 0x40, 0x80, 0x40, 0xE0, 0xA0, /* 0xC1 Aacute */ - 0xE0, 0x00, 0x40, 0xE0, 0xA0, /* 0xC2 Acircumflex */ - 0x60, 0xC0, 0x40, 0xE0, 0xA0, /* 0xC3 Atilde */ - 0xA0, 0x40, 0xA0, 0xE0, 0xA0, /* 0xC4 Adieresis */ - 0xC0, 0xC0, 0xA0, 0xE0, 0xA0, /* 0xC5 Aring */ - 0x60, 0xC0, 0xE0, 0xC0, 0xE0, /* 0xC6 AE */ - 0x60, 0x80, 0x80, 0x60, 0x20, 0x40, /* 0xC7 Ccedilla */ - 0x40, 0x20, 0xE0, 0xC0, 0xE0, /* 0xC8 Egrave */ - 0x40, 0x80, 0xE0, 0xC0, 0xE0, /* 0xC9 Eacute */ - 0xE0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCA Ecircumflex */ - 0xA0, 0x00, 0xE0, 0xC0, 0xE0, /* 0xCB Edieresis */ - 0x40, 0x20, 0xE0, 0x40, 0xE0, /* 0xCC Igrave */ - 0x40, 0x80, 0xE0, 0x40, 0xE0, /* 0xCD Iacute */ - 0xE0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCE Icircumflex */ - 0xA0, 0x00, 0xE0, 0x40, 0xE0, /* 0xCF Idieresis */ - 0xC0, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD0 Eth */ - 0xC0, 0x60, 0xA0, 0xE0, 0xA0, /* 0xD1 Ntilde */ - 0x40, 0x20, 0xE0, 0xA0, 0xE0, /* 0xD2 Ograve */ - 0x40, 0x80, 0xE0, 0xA0, 0xE0, /* 0xD3 Oacute */ - 0xE0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD4 Ocircumflex */ - 0xC0, 0x60, 0xE0, 0xA0, 0xE0, /* 0xD5 Otilde */ - 0xA0, 0x00, 0xE0, 0xA0, 0xE0, /* 0xD6 Odieresis */ - 0xA0, 0x40, 0xA0, /* 0xD7 multiply */ - 0x60, 0xA0, 0xE0, 0xA0, 0xC0, /* 0xD8 Oslash */ - 0x80, 0x40, 0xA0, 0xA0, 0xE0, /* 0xD9 Ugrave */ - 0x20, 0x40, 0xA0, 0xA0, 0xE0, /* 0xDA Uacute */ - 0xE0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDB Ucircumflex */ - 0xA0, 0x00, 0xA0, 0xA0, 0xE0, /* 0xDC Udieresis */ - 0x20, 0x40, 0xA0, 0xE0, 0x40, /* 0xDD Yacute */ - 0x80, 0xE0, 0xA0, 0xE0, 0x80, /* 0xDE Thorn */ - 0x60, 0xA0, 0xC0, 0xA0, 0xC0, 0x80, /* 0xDF germandbls */ - 0x40, 0x20, 0x60, 0xA0, 0xE0, /* 0xE0 agrave */ - 0x40, 0x80, 0x60, 0xA0, 0xE0, /* 0xE1 aacute */ - 0xE0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE2 acircumflex */ - 0x60, 0xC0, 0x60, 0xA0, 0xE0, /* 0xE3 atilde */ - 0xA0, 0x00, 0x60, 0xA0, 0xE0, /* 0xE4 adieresis */ - 0x60, 0x60, 0x60, 0xA0, 0xE0, /* 0xE5 aring */ - 0x60, 0xE0, 0xE0, 0xC0, /* 0xE6 ae */ - 0x60, 0x80, 0x60, 0x20, 0x40, /* 0xE7 ccedilla */ - 0x40, 0x20, 0x60, 0xE0, 0x60, /* 0xE8 egrave */ - 0x40, 0x80, 0x60, 0xE0, 0x60, /* 0xE9 eacute */ - 0xE0, 0x00, 0x60, 0xE0, 0x60, /* 0xEA ecircumflex */ - 0xA0, 0x00, 0x60, 0xE0, 0x60, /* 0xEB edieresis */ - 0x80, 0x40, 0x80, 0x80, 0x80, /* 0xEC igrave */ - 0x40, 0x80, 0x40, 0x40, 0x40, /* 0xED iacute */ - 0xE0, 0x00, 0x40, 0x40, 0x40, /* 0xEE icircumflex */ - 0xA0, 0x00, 0x40, 0x40, 0x40, /* 0xEF idieresis */ - 0x60, 0xC0, 0x60, 0xA0, 0x60, /* 0xF0 eth */ - 0xC0, 0x60, 0xC0, 0xA0, 0xA0, /* 0xF1 ntilde */ - 0x40, 0x20, 0x40, 0xA0, 0x40, /* 0xF2 ograve */ - 0x40, 0x80, 0x40, 0xA0, 0x40, /* 0xF3 oacute */ - 0xE0, 0x00, 0x40, 0xA0, 0x40, /* 0xF4 ocircumflex */ - 0xC0, 0x60, 0x40, 0xA0, 0x40, /* 0xF5 otilde */ - 0xA0, 0x00, 0x40, 0xA0, 0x40, /* 0xF6 odieresis */ - 0x40, 0x00, 0xE0, 0x00, 0x40, /* 0xF7 divide */ - 0x60, 0xE0, 0xA0, 0xC0, /* 0xF8 oslash */ - 0x80, 0x40, 0xA0, 0xA0, 0x60, /* 0xF9 ugrave */ - 0x20, 0x40, 0xA0, 0xA0, 0x60, /* 0xFA uacute */ - 0xE0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFB ucircumflex */ - 0xA0, 0x00, 0xA0, 0xA0, 0x60, /* 0xFC udieresis */ - 0x20, 0x40, 0xA0, 0x60, 0x20, 0x40, /* 0xFD yacute */ - 0x80, 0xC0, 0xA0, 0xC0, 0x80, /* 0xFE thorn */ - 0xA0, 0x00, 0xA0, 0x60, 0x20, 0x40, /* 0xFF ydieresis */ - 0x00, /* 0x11D gcircumflex */ - 0x60, 0xC0, 0xE0, 0xC0, 0x60, /* 0x152 OE */ - 0x60, 0xE0, 0xC0, 0xE0, /* 0x153 oe */ - 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x160 Scaron */ - 0xA0, 0x60, 0xC0, 0x60, 0xC0, /* 0x161 scaron */ - 0xA0, 0x00, 0xA0, 0x40, 0x40, /* 0x178 Ydieresis */ - 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17D Zcaron */ - 0xA0, 0xE0, 0x60, 0xC0, 0xE0, /* 0x17E zcaron */ - 0x00, /* 0xEA4 uni0EA4 */ - 0x00, /* 0x13A0 uni13A0 */ - 0x80, /* 0x2022 bullet */ - 0xA0, /* 0x2026 ellipsis */ - 0x60, 0xE0, 0xE0, 0xC0, 0x60, /* 0x20AC Euro */ - 0xE0, 0xA0, 0xA0, 0xA0, 0xE0, /* 0xFFFD uniFFFD */ -#endif /* (TOMTHUMB_USE_EXTENDED) */ - }; - - -/* {offset, width, height, advance cursor, x offset, y offset} */ -const GFXglyph TomThumbGlyphs[] PROGMEM = { - { 0, 8, 1, 2, 0, -5 }, /* 0x20 space */ - { 1, 8, 5, 2, 0, -5 }, /* 0x21 exclam */ - { 6, 8, 2, 4, 0, -5 }, /* 0x22 quotedbl */ - { 8, 8, 5, 4, 0, -5 }, /* 0x23 numbersign */ - { 13, 8, 5, 4, 0, -5 }, /* 0x24 dollar */ - { 18, 8, 5, 4, 0, -5 }, /* 0x25 percent */ - { 23, 8, 5, 4, 0, -5 }, /* 0x26 ampersand */ - { 28, 8, 2, 2, 0, -5 }, /* 0x27 quotesingle */ - { 30, 8, 5, 3, 0, -5 }, /* 0x28 parenleft */ - { 35, 8, 5, 3, 0, -5 }, /* 0x29 parenright */ - { 40, 8, 3, 4, 0, -5 }, /* 0x2A asterisk */ - { 43, 8, 3, 4, 0, -4 }, /* 0x2B plus */ - { 46, 8, 2, 3, 0, -2 }, /* 0x2C comma */ - { 48, 8, 1, 4, 0, -3 }, /* 0x2D hyphen */ - { 49, 8, 1, 2, 0, -1 }, /* 0x2E period */ - { 50, 8, 5, 4, 0, -5 }, /* 0x2F slash */ - { 55, 8, 5, 4, 0, -5 }, /* 0x30 zero */ - { 60, 8, 5, 3, 0, -5 }, /* 0x31 one */ - { 65, 8, 5, 4, 0, -5 }, /* 0x32 two */ - { 70, 8, 5, 4, 0, -5 }, /* 0x33 three */ - { 75, 8, 5, 4, 0, -5 }, /* 0x34 four */ - { 80, 8, 5, 4, 0, -5 }, /* 0x35 five */ - { 85, 8, 5, 4, 0, -5 }, /* 0x36 six */ - { 90, 8, 5, 4, 0, -5 }, /* 0x37 seven */ - { 95, 8, 5, 4, 0, -5 }, /* 0x38 eight */ - { 100, 8, 5, 4, 0, -5 }, /* 0x39 nine */ - { 105, 8, 3, 2, 0, -4 }, /* 0x3A colon */ - { 108, 8, 4, 3, 0, -4 }, /* 0x3B semicolon */ - { 112, 8, 5, 4, 0, -5 }, /* 0x3C less */ - { 117, 8, 3, 4, 0, -4 }, /* 0x3D equal */ - { 120, 8, 5, 4, 0, -5 }, /* 0x3E greater */ - { 125, 8, 5, 4, 0, -5 }, /* 0x3F question */ - { 130, 8, 5, 4, 0, -5 }, /* 0x40 at */ - { 135, 8, 5, 4, 0, -5 }, /* 0x41 A */ - { 140, 8, 5, 4, 0, -5 }, /* 0x42 B */ - { 145, 8, 5, 4, 0, -5 }, /* 0x43 C */ - { 150, 8, 5, 4, 0, -5 }, /* 0x44 D */ - { 155, 8, 5, 4, 0, -5 }, /* 0x45 E */ - { 160, 8, 5, 4, 0, -5 }, /* 0x46 F */ - { 165, 8, 5, 4, 0, -5 }, /* 0x47 G */ - { 170, 8, 5, 4, 0, -5 }, /* 0x48 H */ - { 175, 8, 5, 4, 0, -5 }, /* 0x49 I */ - { 180, 8, 5, 4, 0, -5 }, /* 0x4A J */ - { 185, 8, 5, 4, 0, -5 }, /* 0x4B K */ - { 190, 8, 5, 4, 0, -5 }, /* 0x4C L */ - { 195, 8, 5, 4, 0, -5 }, /* 0x4D M */ - { 200, 8, 5, 4, 0, -5 }, /* 0x4E N */ - { 205, 8, 5, 4, 0, -5 }, /* 0x4F O */ - { 210, 8, 5, 4, 0, -5 }, /* 0x50 P */ - { 215, 8, 5, 4, 0, -5 }, /* 0x51 Q */ - { 220, 8, 5, 4, 0, -5 }, /* 0x52 R */ - { 225, 8, 5, 4, 0, -5 }, /* 0x53 S */ - { 230, 8, 5, 4, 0, -5 }, /* 0x54 T */ - { 235, 8, 5, 4, 0, -5 }, /* 0x55 U */ - { 240, 8, 5, 4, 0, -5 }, /* 0x56 V */ - { 245, 8, 5, 4, 0, -5 }, /* 0x57 W */ - { 250, 8, 5, 4, 0, -5 }, /* 0x58 X */ - { 255, 8, 5, 4, 0, -5 }, /* 0x59 Y */ - { 260, 8, 5, 4, 0, -5 }, /* 0x5A Z */ - { 265, 8, 5, 4, 0, -5 }, /* 0x5B bracketleft */ - { 270, 8, 3, 4, 0, -4 }, /* 0x5C backslash */ - { 273, 8, 5, 4, 0, -5 }, /* 0x5D bracketright */ - { 278, 8, 2, 4, 0, -5 }, /* 0x5E asciicircum */ - { 280, 8, 1, 4, 0, -1 }, /* 0x5F underscore */ - { 281, 8, 2, 3, 0, -5 }, /* 0x60 grave */ - { 283, 8, 4, 4, 0, -4 }, /* 0x61 a */ - { 287, 8, 5, 4, 0, -5 }, /* 0x62 b */ - { 292, 8, 4, 4, 0, -4 }, /* 0x63 c */ - { 296, 8, 5, 4, 0, -5 }, /* 0x64 d */ - { 301, 8, 4, 4, 0, -4 }, /* 0x65 e */ - { 305, 8, 5, 4, 0, -5 }, /* 0x66 f */ - { 310, 8, 5, 4, 0, -4 }, /* 0x67 g */ - { 315, 8, 5, 4, 0, -5 }, /* 0x68 h */ - { 320, 8, 5, 2, 0, -5 }, /* 0x69 i */ - { 325, 8, 6, 4, 0, -5 }, /* 0x6A j */ - { 331, 8, 5, 4, 0, -5 }, /* 0x6B k */ - { 336, 8, 5, 4, 0, -5 }, /* 0x6C l */ - { 341, 8, 4, 4, 0, -4 }, /* 0x6D m */ - { 345, 8, 4, 4, 0, -4 }, /* 0x6E n */ - { 349, 8, 4, 4, 0, -4 }, /* 0x6F o */ - { 353, 8, 5, 4, 0, -4 }, /* 0x70 p */ - { 358, 8, 5, 4, 0, -4 }, /* 0x71 q */ - { 363, 8, 4, 4, 0, -4 }, /* 0x72 r */ - { 367, 8, 4, 4, 0, -4 }, /* 0x73 s */ - { 371, 8, 5, 4, 0, -5 }, /* 0x74 t */ - { 376, 8, 4, 4, 0, -4 }, /* 0x75 u */ - { 380, 8, 4, 4, 0, -4 }, /* 0x76 v */ - { 384, 8, 4, 4, 0, -4 }, /* 0x77 w */ - { 388, 8, 4, 4, 0, -4 }, /* 0x78 x */ - { 392, 8, 5, 4, 0, -4 }, /* 0x79 y */ - { 397, 8, 4, 4, 0, -4 }, /* 0x7A z */ - { 401, 8, 5, 4, 0, -5 }, /* 0x7B braceleft */ - { 406, 8, 5, 2, 0, -5 }, /* 0x7C bar */ - { 411, 8, 5, 4, 0, -5 }, /* 0x7D braceright */ - { 416, 8, 2, 4, 0, -5 }, /* 0x7E asciitilde */ -#if (TOMTHUMB_USE_EXTENDED) - { 418, 8, 5, 2, 0, -5 }, /* 0xA1 exclamdown */ - { 423, 8, 5, 4, 0, -5 }, /* 0xA2 cent */ - { 428, 8, 5, 4, 0, -5 }, /* 0xA3 sterling */ - { 433, 8, 5, 4, 0, -5 }, /* 0xA4 currency */ - { 438, 8, 5, 4, 0, -5 }, /* 0xA5 yen */ - { 443, 8, 5, 2, 0, -5 }, /* 0xA6 brokenbar */ - { 448, 8, 5, 4, 0, -5 }, /* 0xA7 section */ - { 453, 8, 1, 4, 0, -5 }, /* 0xA8 dieresis */ - { 454, 8, 3, 4, 0, -5 }, /* 0xA9 copyright */ - { 457, 8, 5, 4, 0, -5 }, /* 0xAA ordfeminine */ - { 462, 8, 3, 3, 0, -5 }, /* 0xAB guillemotleft */ - { 465, 8, 2, 4, 0, -4 }, /* 0xAC logicalnot */ - { 467, 8, 1, 3, 0, -3 }, /* 0xAD softhyphen */ - { 468, 8, 3, 4, 0, -5 }, /* 0xAE registered */ - { 471, 8, 1, 4, 0, -5 }, /* 0xAF macron */ - { 472, 8, 3, 4, 0, -5 }, /* 0xB0 degree */ - { 475, 8, 5, 4, 0, -5 }, /* 0xB1 plusminus */ - { 480, 8, 3, 4, 0, -5 }, /* 0xB2 twosuperior */ - { 483, 8, 3, 4, 0, -5 }, /* 0xB3 threesuperior */ - { 486, 8, 2, 3, 0, -5 }, /* 0xB4 acute */ - { 488, 8, 5, 4, 0, -5 }, /* 0xB5 mu */ - { 493, 8, 5, 4, 0, -5 }, /* 0xB6 paragraph */ - { 498, 8, 3, 4, 0, -4 }, /* 0xB7 periodcentered */ - { 501, 8, 3, 4, 0, -3 }, /* 0xB8 cedilla */ - { 504, 8, 3, 2, 0, -5 }, /* 0xB9 onesuperior */ - { 507, 8, 5, 4, 0, -5 }, /* 0xBA ordmasculine */ - { 512, 8, 3, 3, 0, -5 }, /* 0xBB guillemotright */ - { 515, 8, 5, 4, 0, -5 }, /* 0xBC onequarter */ - { 520, 8, 5, 4, 0, -5 }, /* 0xBD onehalf */ - { 525, 8, 5, 4, 0, -5 }, /* 0xBE threequarters */ - { 530, 8, 5, 4, 0, -5 }, /* 0xBF questiondown */ - { 535, 8, 5, 4, 0, -5 }, /* 0xC0 Agrave */ - { 540, 8, 5, 4, 0, -5 }, /* 0xC1 Aacute */ - { 545, 8, 5, 4, 0, -5 }, /* 0xC2 Acircumflex */ - { 550, 8, 5, 4, 0, -5 }, /* 0xC3 Atilde */ - { 555, 8, 5, 4, 0, -5 }, /* 0xC4 Adieresis */ - { 560, 8, 5, 4, 0, -5 }, /* 0xC5 Aring */ - { 565, 8, 5, 4, 0, -5 }, /* 0xC6 AE */ - { 570, 8, 6, 4, 0, -5 }, /* 0xC7 Ccedilla */ - { 576, 8, 5, 4, 0, -5 }, /* 0xC8 Egrave */ - { 581, 8, 5, 4, 0, -5 }, /* 0xC9 Eacute */ - { 586, 8, 5, 4, 0, -5 }, /* 0xCA Ecircumflex */ - { 591, 8, 5, 4, 0, -5 }, /* 0xCB Edieresis */ - { 596, 8, 5, 4, 0, -5 }, /* 0xCC Igrave */ - { 601, 8, 5, 4, 0, -5 }, /* 0xCD Iacute */ - { 606, 8, 5, 4, 0, -5 }, /* 0xCE Icircumflex */ - { 611, 8, 5, 4, 0, -5 }, /* 0xCF Idieresis */ - { 616, 8, 5, 4, 0, -5 }, /* 0xD0 Eth */ - { 621, 8, 5, 4, 0, -5 }, /* 0xD1 Ntilde */ - { 626, 8, 5, 4, 0, -5 }, /* 0xD2 Ograve */ - { 631, 8, 5, 4, 0, -5 }, /* 0xD3 Oacute */ - { 636, 8, 5, 4, 0, -5 }, /* 0xD4 Ocircumflex */ - { 641, 8, 5, 4, 0, -5 }, /* 0xD5 Otilde */ - { 646, 8, 5, 4, 0, -5 }, /* 0xD6 Odieresis */ - { 651, 8, 3, 4, 0, -4 }, /* 0xD7 multiply */ - { 654, 8, 5, 4, 0, -5 }, /* 0xD8 Oslash */ - { 659, 8, 5, 4, 0, -5 }, /* 0xD9 Ugrave */ - { 664, 8, 5, 4, 0, -5 }, /* 0xDA Uacute */ - { 669, 8, 5, 4, 0, -5 }, /* 0xDB Ucircumflex */ - { 674, 8, 5, 4, 0, -5 }, /* 0xDC Udieresis */ - { 679, 8, 5, 4, 0, -5 }, /* 0xDD Yacute */ - { 684, 8, 5, 4, 0, -5 }, /* 0xDE Thorn */ - { 689, 8, 6, 4, 0, -5 }, /* 0xDF germandbls */ - { 695, 8, 5, 4, 0, -5 }, /* 0xE0 agrave */ - { 700, 8, 5, 4, 0, -5 }, /* 0xE1 aacute */ - { 705, 8, 5, 4, 0, -5 }, /* 0xE2 acircumflex */ - { 710, 8, 5, 4, 0, -5 }, /* 0xE3 atilde */ - { 715, 8, 5, 4, 0, -5 }, /* 0xE4 adieresis */ - { 720, 8, 5, 4, 0, -5 }, /* 0xE5 aring */ - { 725, 8, 4, 4, 0, -4 }, /* 0xE6 ae */ - { 729, 8, 5, 4, 0, -4 }, /* 0xE7 ccedilla */ - { 734, 8, 5, 4, 0, -5 }, /* 0xE8 egrave */ - { 739, 8, 5, 4, 0, -5 }, /* 0xE9 eacute */ - { 744, 8, 5, 4, 0, -5 }, /* 0xEA ecircumflex */ - { 749, 8, 5, 4, 0, -5 }, /* 0xEB edieresis */ - { 754, 8, 5, 3, 0, -5 }, /* 0xEC igrave */ - { 759, 8, 5, 3, 0, -5 }, /* 0xED iacute */ - { 764, 8, 5, 4, 0, -5 }, /* 0xEE icircumflex */ - { 769, 8, 5, 4, 0, -5 }, /* 0xEF idieresis */ - { 774, 8, 5, 4, 0, -5 }, /* 0xF0 eth */ - { 779, 8, 5, 4, 0, -5 }, /* 0xF1 ntilde */ - { 784, 8, 5, 4, 0, -5 }, /* 0xF2 ograve */ - { 789, 8, 5, 4, 0, -5 }, /* 0xF3 oacute */ - { 794, 8, 5, 4, 0, -5 }, /* 0xF4 ocircumflex */ - { 799, 8, 5, 4, 0, -5 }, /* 0xF5 otilde */ - { 804, 8, 5, 4, 0, -5 }, /* 0xF6 odieresis */ - { 809, 8, 5, 4, 0, -5 }, /* 0xF7 divide */ - { 814, 8, 4, 4, 0, -4 }, /* 0xF8 oslash */ - { 818, 8, 5, 4, 0, -5 }, /* 0xF9 ugrave */ - { 823, 8, 5, 4, 0, -5 }, /* 0xFA uacute */ - { 828, 8, 5, 4, 0, -5 }, /* 0xFB ucircumflex */ - { 833, 8, 5, 4, 0, -5 }, /* 0xFC udieresis */ - { 838, 8, 6, 4, 0, -5 }, /* 0xFD yacute */ - { 844, 8, 5, 4, 0, -4 }, /* 0xFE thorn */ - { 849, 8, 6, 4, 0, -5 }, /* 0xFF ydieresis */ - { 855, 8, 1, 2, 0, -1 }, /* 0x11D gcircumflex */ - { 856, 8, 5, 4, 0, -5 }, /* 0x152 OE */ - { 861, 8, 4, 4, 0, -4 }, /* 0x153 oe */ - { 865, 8, 5, 4, 0, -5 }, /* 0x160 Scaron */ - { 870, 8, 5, 4, 0, -5 }, /* 0x161 scaron */ - { 875, 8, 5, 4, 0, -5 }, /* 0x178 Ydieresis */ - { 880, 8, 5, 4, 0, -5 }, /* 0x17D Zcaron */ - { 885, 8, 5, 4, 0, -5 }, /* 0x17E zcaron */ - { 890, 8, 1, 2, 0, -1 }, /* 0xEA4 uni0EA4 */ - { 891, 8, 1, 2, 0, -1 }, /* 0x13A0 uni13A0 */ - { 892, 8, 1, 2, 0, -3 }, /* 0x2022 bullet */ - { 893, 8, 1, 4, 0, -1 }, /* 0x2026 ellipsis */ - { 894, 8, 5, 4, 0, -5 }, /* 0x20AC Euro */ - { 899, 8, 5, 4, 0, -5 }, /* 0xFFFD uniFFFD */ -#endif /* (TOMTHUMB_USE_EXTENDED) */ -}; - -const GFXfont TomThumb PROGMEM = { - (uint8_t *)TomThumbBitmaps, - (GFXglyph *)TomThumbGlyphs, - 0x20, 0x7E, 6 }; diff --git a/lib/Adafruit_GFX-1.2.2.07/README.md b/lib/Adafruit_GFX-1.2.2.07/README.md deleted file mode 100644 index 21f2bc8eb..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/README.md +++ /dev/null @@ -1,31 +0,0 @@ -# Adafruit GFX Library - -This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be 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 and open-source hardware by purchasing products from Adafruit! - -Written by Limor Fried/Ladyada for Adafruit Industries. -BSD license, check license.txt for more information. -All text above must be included in any redistribution. - -Recent Arduino IDE releases include the Library Manager for easy installation. Otherwise, to download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h. Place the Adafruit_GFX library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. - -# Useful Resources - -- Image2Code: This is a handy Java GUI utility to convert a BMP file into the array code necessary to display the image with the drawBitmap function. Check out the code at ehubin's GitHub repository: https://github.com/ehubin/Adafruit-GFX-Library/tree/master/Img2Code - -- drawXBitmap function: You can use the GIMP photo editor to save a .xbm file and use the array saved in the file to draw a bitmap with the drawXBitmap function. See the pull request here for more details: https://github.com/adafruit/Adafruit-GFX-Library/pull/31 - -- 'Fonts' folder contains bitmap fonts for use with recent (1.1 and later) Adafruit_GFX. To use a font in your Arduino sketch, #include the corresponding .h file and pass address of GFXfont struct to setFont(). Pass NULL to revert to 'classic' fixed-space bitmap font. - -- 'fontconvert' folder contains a command-line tool for converting TTF fonts to Adafruit_GFX .h format. - ---- - -### Roadmap - -The PRIME DIRECTIVE is to maintain backward compatibility with existing Arduino sketches -- many are hosted elsewhere and don't track changes here, some are in print and can never be changed! This "little" library has grown organically over time and sometimes we paint ourselves into a design corner and just have to live with it or add ungainly workarounds. - -Highly unlikely to merge any changes for additional or incompatible font formats (see Prime Directive above). There are already two formats and the code is quite bloaty there as it is (this also creates liabilities for tools and documentation). If you *must* have a more sophisticated font format, consider creating a fork with the features required for your project. For similar reasons, also unlikely to add any more bitmap formats, it's getting messy. - -Please don't reformat code for the sake of reformatting code. The resulting large "visual diff" makes it impossible to untangle actual bug fixes from merely rearranged lines. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile b/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile deleted file mode 100644 index 47f5a0e15..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -all: fontconvert - -CC = gcc -CFLAGS = -Wall -I/usr/local/include/freetype2 -I/usr/include/freetype2 -I/usr/include -LIBS = -lfreetype - -fontconvert: fontconvert.c - $(CC) $(CFLAGS) $< $(LIBS) -o $@ - strip $@ - -clean: - rm -f fontconvert diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c deleted file mode 100644 index bfd21103c..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c +++ /dev/null @@ -1,284 +0,0 @@ -/* -TrueType to Adafruit_GFX font converter. Derived from Peter Jakobs' -Adafruit_ftGFX fork & makefont tool, and Paul Kourany's Adafruit_mfGFX. - -NOT AN ARDUINO SKETCH. This is a command-line tool for preprocessing -fonts to be used with the Adafruit_GFX Arduino library. - -For UNIX-like systems. Outputs to stdout; redirect to header file, e.g.: - ./fontconvert ~/Library/Fonts/FreeSans.ttf 18 > FreeSans18pt7b.h - -REQUIRES FREETYPE LIBRARY. www.freetype.org - -Currently this only extracts the printable 7-bit ASCII chars of a font. -Will eventually extend with some int'l chars a la ftGFX, not there yet. -Keep 7-bit fonts around as an option in that case, more compact. - -See notes at end for glyph nomenclature & other tidbits. -*/ - -#include -#include -#include -#include -#include FT_GLYPH_H -#include "../gfxfont.h" // Adafruit_GFX font structures - -#define DPI 141 // Approximate res. of Adafruit 2.8" TFT - -// Accumulate bits for output, with periodic hexadecimal byte write -void enbit(uint8_t value) { - static uint8_t row = 0, sum = 0, bit = 0x80, firstCall = 1; - if(value) sum |= bit; // Set bit if needed - if(!(bit >>= 1)) { // Advance to next bit, end of byte reached? - if(!firstCall) { // Format output table nicely - if(++row >= 12) { // Last entry on line? - printf(",\n "); // Newline format output - row = 0; // Reset row counter - } else { // Not end of line - printf(", "); // Simple comma delim - } - } - printf("0x%02X", sum); // Write byte value - sum = 0; // Clear for next byte - bit = 0x80; // Reset bit counter - firstCall = 0; // Formatting flag - } -} - -int main(int argc, char *argv[]) { - int i, j, err, size, first=' ', last='~', - bitmapOffset = 0, x, y, byte; - char *fontName, c, *ptr; - FT_Library library; - FT_Face face; - FT_Glyph glyph; - FT_Bitmap *bitmap; - FT_BitmapGlyphRec *g; - GFXglyph *table; - uint8_t bit; - - // Parse command line. Valid syntaxes are: - // fontconvert [filename] [size] - // fontconvert [filename] [size] [last char] - // fontconvert [filename] [size] [first char] [last char] - // Unless overridden, default first and last chars are - // ' ' (space) and '~', respectively - - if(argc < 3) { - fprintf(stderr, "Usage: %s fontfile size [first] [last]\n", - argv[0]); - return 1; - } - - size = atoi(argv[2]); - - if(argc == 4) { - last = atoi(argv[3]); - } else if(argc == 5) { - first = atoi(argv[3]); - last = atoi(argv[4]); - } - - if(last < first) { - i = first; - first = last; - last = i; - } - - ptr = strrchr(argv[1], '/'); // Find last slash in filename - if(ptr) ptr++; // First character of filename (path stripped) - else ptr = argv[1]; // No path; font in local dir. - - // Allocate space for font name and glyph table - if((!(fontName = malloc(strlen(ptr) + 20))) || - (!(table = (GFXglyph *)malloc((last - first + 1) * - sizeof(GFXglyph))))) { - fprintf(stderr, "Malloc error\n"); - return 1; - } - - // Derive font table names from filename. Period (filename - // extension) is truncated and replaced with the font size & bits. - strcpy(fontName, ptr); - ptr = strrchr(fontName, '.'); // Find last period (file ext) - if(!ptr) ptr = &fontName[strlen(fontName)]; // If none, append - // Insert font size and 7/8 bit. fontName was alloc'd w/extra - // space to allow this, we're not sprintfing into Forbidden Zone. - sprintf(ptr, "%dpt%db", size, (last > 127) ? 8 : 7); - // Space and punctuation chars in name replaced w/ underscores. - for(i=0; (c=fontName[i]); i++) { - if(isspace(c) || ispunct(c)) fontName[i] = '_'; - } - - // Init FreeType lib, load font - if((err = FT_Init_FreeType(&library))) { - fprintf(stderr, "FreeType init error: %d", err); - return err; - } - if((err = FT_New_Face(library, argv[1], 0, &face))) { - fprintf(stderr, "Font load error: %d", err); - FT_Done_FreeType(library); - return err; - } - - // << 6 because '26dot6' fixed-point format - FT_Set_Char_Size(face, size << 6, 0, DPI, 0); - - // Currently all symbols from 'first' to 'last' are processed. - // Fonts may contain WAY more glyphs than that, but this code - // will need to handle encoding stuff to deal with extracting - // the right symbols, and that's not done yet. - // fprintf(stderr, "%ld glyphs\n", face->num_glyphs); - - printf("const uint8_t %sBitmaps[] PROGMEM = {\n ", fontName); - - // Process glyphs and output huge bitmap data array - for(i=first, j=0; i<=last; i++, j++) { - // MONO renderer provides clean image with perfect crop - // (no wasted pixels) via bitmap struct. - if((err = FT_Load_Char(face, i, FT_LOAD_TARGET_MONO))) { - fprintf(stderr, "Error %d loading char '%c'\n", - err, i); - continue; - } - - if((err = FT_Render_Glyph(face->glyph, - FT_RENDER_MODE_MONO))) { - fprintf(stderr, "Error %d rendering char '%c'\n", - err, i); - continue; - } - - if((err = FT_Get_Glyph(face->glyph, &glyph))) { - fprintf(stderr, "Error %d getting glyph '%c'\n", - err, i); - continue; - } - - bitmap = &face->glyph->bitmap; - g = (FT_BitmapGlyphRec *)glyph; - - // Minimal font and per-glyph information is stored to - // reduce flash space requirements. Glyph bitmaps are - // fully bit-packed; no per-scanline pad, though end of - // each character may be padded to next byte boundary - // when needed. 16-bit offset means 64K max for bitmaps, - // code currently doesn't check for overflow. (Doesn't - // check that size & offsets are within bounds either for - // that matter...please convert fonts responsibly.) - table[j].bitmapOffset = bitmapOffset; - table[j].width = bitmap->width; - table[j].height = bitmap->rows; - table[j].xAdvance = face->glyph->advance.x >> 6; - table[j].xOffset = g->left; - table[j].yOffset = 1 - g->top; - - for(y=0; y < bitmap->rows; y++) { - for(x=0;x < bitmap->width; x++) { - byte = x / 8; - bit = 0x80 >> (x & 7); - enbit(bitmap->buffer[ - y * bitmap->pitch + byte] & bit); - } - } - - // Pad end of char bitmap to next byte boundary if needed - int n = (bitmap->width * bitmap->rows) & 7; - if(n) { // Pixel count not an even multiple of 8? - n = 8 - n; // # bits to next multiple - while(n--) enbit(0); - } - bitmapOffset += (bitmap->width * bitmap->rows + 7) / 8; - - FT_Done_Glyph(glyph); - } - - printf(" };\n\n"); // End bitmap array - - // Output glyph attributes table (one per character) - printf("const GFXglyph %sGlyphs[] PROGMEM = {\n", fontName); - for(i=first, j=0; i<=last; i++, j++) { - printf(" { %5d, %3d, %3d, %3d, %4d, %4d }", - table[j].bitmapOffset, - table[j].width, - table[j].height, - table[j].xAdvance, - table[j].xOffset, - table[j].yOffset); - if(i < last) { - printf(", // 0x%02X", i); - if((i >= ' ') && (i <= '~')) { - printf(" '%c'", i); - } - putchar('\n'); - } - } - printf(" }; // 0x%02X", last); - if((last >= ' ') && (last <= '~')) printf(" '%c'", last); - printf("\n\n"); - - // Output font structure - printf("const GFXfont %s PROGMEM = {\n", fontName); - printf(" (uint8_t *)%sBitmaps,\n", fontName); - printf(" (GFXglyph *)%sGlyphs,\n", fontName); - if (face->size->metrics.height == 0) { - // No face height info, assume fixed width and get from a glyph. - printf(" 0x%02X, 0x%02X, %d };\n\n", - first, last, table[0].height); - } else { - printf(" 0x%02X, 0x%02X, %ld };\n\n", - first, last, face->size->metrics.height >> 6); - } - printf("// Approx. %d bytes\n", - bitmapOffset + (last - first + 1) * 7 + 7); - // Size estimate is based on AVR struct and pointer sizes; - // actual size may vary. - - FT_Done_FreeType(library); - - return 0; -} - -/* ------------------------------------------------------------------------- - -Character metrics are slightly different from classic GFX & ftGFX. -In classic GFX: cursor position is the upper-left pixel of each 5x7 -character; lower extent of most glyphs (except those w/descenders) -is +6 pixels in Y direction. -W/new GFX fonts: cursor position is on baseline, where baseline is -'inclusive' (containing the bottom-most row of pixels in most symbols, -except those with descenders; ftGFX is one pixel lower). - -Cursor Y will be moved automatically when switching between classic -and new fonts. If you switch fonts, any print() calls will continue -along the same baseline. - - ...........#####.. -- yOffset - ..........######.. - ..........######.. - .........#######.. - ........#########. - * = Cursor pos. ........#########. - .......##########. - ......#####..####. - ......#####..####. - *.#.. .....#####...####. - .#.#. ....############## - #...# ...############### - #...# ...############### - ##### ..#####......##### - #...# .#####.......##### -====== #...# ====== #*###.........#### ======= Baseline - || xOffset - -glyph->xOffset and yOffset are pixel offsets, in GFX coordinate space -(+Y is down), from the cursor position to the top-left pixel of the -glyph bitmap. i.e. yOffset is typically negative, xOffset is typically -zero but a few glyphs will have other values (even negative xOffsets -sometimes, totally normal). glyph->xAdvance is the distance to move -the cursor on the X axis after drawing the corresponding symbol. - -There's also some changes with regard to 'background' color and new GFX -fonts (classic fonts unchanged). See Adafruit_GFX.cpp for explanation. -*/ diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md b/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md deleted file mode 100644 index 361078b60..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md +++ /dev/null @@ -1,88 +0,0 @@ -### A short guide to use fontconvert.c to create your own fonts using MinGW. - -#### STEP 1: INSTALL MinGW - -Install MinGW (Minimalist GNU for Windows) from [MinGW.org](http://www.mingw.org/). -Please read carefully the instructions found on [Getting started page](http://www.mingw.org/wiki/Getting_Started). -I suggest installing with the "Graphical User Interface Installer". -To complete your initial installation you should further install some "packages". -For our purpose you should only install the "Basic Setup" packages. -To do that: - -1. Open the MinGW Installation Manager -2. From the left panel click "Basic Setup". -3. On the right panel choose "mingw32-base", "mingw-gcc-g++", "mingw-gcc-objc" and "msys-base" -and click "Mark for installation" -4. From the Menu click "Installation" and then "Apply changes". In the pop-up window select "Apply". - - -#### STEP 2: INSTALL Freetype Library - -To read about the freetype project visit [freetype.org](https://www.freetype.org/). -To Download the latest version of freetype go to [download page](http://download.savannah.gnu.org/releases/freetype/) -and choose "freetype-2.7.tar.gz" file (or a newer version if available). -To avoid long cd commands later in the command prompt, I suggest you unzip the file in the C:\ directory. -(I also renamed the folder to "ft27") -Before you build the library it's good to read these articles: -* [Using MSYS with MinGW](http://www.mingw.org/wiki/MSYS) -* [Installation and Use of Supplementary Libraries with MinGW](http://www.mingw.org/wiki/LibraryPathHOWTO) -* [Include Path](http://www.mingw.org/wiki/IncludePathHOWTO) - -Inside the unzipped folder there is another folder named "docs". Open it and read the INSTALL.UNIX (using notepad). -Pay attention to paragraph 3 (Build and Install the Library). So, let's begin the installation. -To give the appropriate commands we will use the MSYS command prompt (not cmd.exe of windows) which is UNIX like. -Follow the path C:\MinGW\msys\1.0 and double click "msys.bat". The command prompt environment appears. -Enter "ft27" directory using the cd commands: -``` -cd /c -cd ft27 -``` - -and then type one by one the commands: -``` -./configure --prefix=/mingw -make -make install -``` -Once you're finished, go inside "C:\MinGW\include" and there should be a new folder named "freetype2". -That, hopefully, means that you have installed the library correctly !! - -#### STEP 3: Build fontconvert.c - -Before proceeding I suggest you make a copy of Adafruit_GFX_library folder in C:\ directory. -Then, inside "fontconvert" folder open the "makefile" with an editor ( I used notepad++). -Change the commands so in the end the program looks like : -``` -all: fontconvert - -CC = gcc -CFLAGS = -Wall -I c:/mingw/include/freetype2 -LIBS = -lfreetype - -fontconvert: fontconvert.c - $(CC) $(CFLAGS) $< $(LIBS) -o $@ - -clean: - rm -f fontconvert -``` -Go back in the command prompt and with a cd command enter the fontconvert directory. -``` -cd /c/adafruit_gfx_library\fontconvert -``` -Give the command: -``` -make -``` -This command will, eventually, create a "fontconvert.exe" file inside fontconvert directory. - -#### STEP 4: Create your own font header files - -Now that you have an executable file, you can use it to create your own fonts to work with Adafruit GFX lib. -So, if we suppose that you already have a .ttf file with your favorite fonts, jump to the command prompt and type: -``` -./fontconvert yourfonts.ttf 9 > yourfonts9pt7b.h -``` -You can read more details at: [learn.adafruit](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). - -Taraaaaaammm !! you've just created your new font header file. Put it inside the "Fonts" folder, grab a cup of coffee -and start playing with your Arduino (or whatever else ....)+ display module project. diff --git a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh b/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh deleted file mode 100644 index 35f07ea52..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -# Ugly little Bash script, generates a set of .h files for GFX using -# GNU FreeFont sources. There are three fonts: 'Mono' (Courier-like), -# 'Sans' (Helvetica-like) and 'Serif' (Times-like); four styles: regular, -# bold, oblique or italic, and bold+oblique or bold+italic; and four -# sizes: 9, 12, 18 and 24 point. No real error checking or anything, -# this just powers through all the combinations, calling the fontconvert -# utility and redirecting the output to a .h file for each combo. - -# Adafruit_GFX repository does not include the source outline fonts -# (huge zipfile, different license) but they're easily acquired: -# http://savannah.gnu.org/projects/freefont/ - -convert=./fontconvert -inpath=~/Desktop/freefont/ -outpath=../Fonts/ -fonts=(FreeMono FreeSans FreeSerif) -styles=("" Bold Italic BoldItalic Oblique BoldOblique) -sizes=(9 12 18 24) - -for f in ${fonts[*]} -do - for index in ${!styles[*]} - do - st=${styles[$index]} - for si in ${sizes[*]} - do - infile=$inpath$f$st".ttf" - if [ -f $infile ] # Does source combination exist? - then - outfile=$outpath$f$st$si"pt7b.h" -# printf "%s %s %s > %s\n" $convert $infile $si $outfile - $convert $infile $si > $outfile - fi - done - done -done diff --git a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h b/lib/Adafruit_GFX-1.2.2.07/gfxfont.h deleted file mode 100644 index 07381eddd..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/gfxfont.h +++ /dev/null @@ -1,24 +0,0 @@ -// Font structures for newer Adafruit_GFX (1.1 and later). -// Example fonts are included in 'Fonts' directory. -// To use a font in your Arduino sketch, #include the corresponding .h -// file and pass address of GFXfont struct to setFont(). Pass NULL to -// revert to 'classic' fixed-space bitmap font. - -#ifndef _GFXFONT_H_ -#define _GFXFONT_H_ - -typedef struct { // Data stored PER GLYPH - uint16_t bitmapOffset; // Pointer into GFXfont->bitmap - uint8_t width, height; // Bitmap dimensions in pixels - uint8_t xAdvance; // Distance to advance cursor (x axis) - int8_t xOffset, yOffset; // Dist from cursor pos to UL corner -} GFXglyph; - -typedef struct { // Data stored for FONT AS A WHOLE: - uint8_t *bitmap; // Glyph bitmaps, concatenated - GFXglyph *glyph; // Glyph array - uint8_t first, last; // ASCII extents - uint8_t yAdvance; // Newline distance (y axis) -} GFXfont; - -#endif // _GFXFONT_H_ diff --git a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c b/lib/Adafruit_GFX-1.2.2.07/glcdfont.c deleted file mode 100644 index 6f88bd23a..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/glcdfont.c +++ /dev/null @@ -1,276 +0,0 @@ -// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. -// See gfxfont.h for newer custom bitmap font info. - -#ifndef FONT5X7_H -#define FONT5X7_H - -#ifdef __AVR__ - #include - #include -#elif defined(ESP8266) - #include -#else - #define PROGMEM -#endif - -// Standard ASCII 5x7 font - -static const unsigned char font[] PROGMEM = { - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, - 0x00, 0x18, 0x3C, 0x18, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, - 0x00, 0x18, 0x24, 0x18, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, - 0x30, 0x48, 0x3A, 0x06, 0x0E, - 0x26, 0x29, 0x79, 0x29, 0x26, - 0x40, 0x7F, 0x05, 0x05, 0x07, - 0x40, 0x7F, 0x05, 0x25, 0x3F, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, - 0x14, 0x22, 0x7F, 0x22, 0x14, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, - 0x06, 0x09, 0x7F, 0x01, 0x7F, - 0x00, 0x66, 0x89, 0x95, 0x6A, - 0x60, 0x60, 0x60, 0x60, 0x60, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, - 0x08, 0x04, 0x7E, 0x04, 0x08, - 0x10, 0x20, 0x7E, 0x20, 0x10, - 0x08, 0x08, 0x2A, 0x1C, 0x08, - 0x08, 0x1C, 0x2A, 0x08, 0x08, - 0x1E, 0x10, 0x10, 0x10, 0x10, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, - 0x30, 0x38, 0x3E, 0x38, 0x30, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, - 0x00, 0x00, 0x00, 0x00, 0x00, - 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, 0x56, 0x20, 0x50, - 0x00, 0x08, 0x07, 0x03, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, - 0x08, 0x08, 0x3E, 0x08, 0x08, - 0x00, 0x80, 0x70, 0x30, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, - 0x00, 0x00, 0x60, 0x60, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, - 0x3E, 0x51, 0x49, 0x45, 0x3E, - 0x00, 0x42, 0x7F, 0x40, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, - 0x21, 0x41, 0x49, 0x4D, 0x33, - 0x18, 0x14, 0x12, 0x7F, 0x10, - 0x27, 0x45, 0x45, 0x45, 0x39, - 0x3C, 0x4A, 0x49, 0x49, 0x31, - 0x41, 0x21, 0x11, 0x09, 0x07, - 0x36, 0x49, 0x49, 0x49, 0x36, - 0x46, 0x49, 0x49, 0x29, 0x1E, - 0x00, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x00, 0x41, 0x22, 0x14, 0x08, - 0x02, 0x01, 0x59, 0x09, 0x06, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, - 0x7C, 0x12, 0x11, 0x12, 0x7C, - 0x7F, 0x49, 0x49, 0x49, 0x36, - 0x3E, 0x41, 0x41, 0x41, 0x22, - 0x7F, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x49, 0x49, 0x49, 0x41, - 0x7F, 0x09, 0x09, 0x09, 0x01, - 0x3E, 0x41, 0x41, 0x51, 0x73, - 0x7F, 0x08, 0x08, 0x08, 0x7F, - 0x00, 0x41, 0x7F, 0x41, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, - 0x7F, 0x08, 0x14, 0x22, 0x41, - 0x7F, 0x40, 0x40, 0x40, 0x40, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, - 0x7F, 0x04, 0x08, 0x10, 0x7F, - 0x3E, 0x41, 0x41, 0x41, 0x3E, - 0x7F, 0x09, 0x09, 0x09, 0x06, - 0x3E, 0x41, 0x51, 0x21, 0x5E, - 0x7F, 0x09, 0x19, 0x29, 0x46, - 0x26, 0x49, 0x49, 0x49, 0x32, - 0x03, 0x01, 0x7F, 0x01, 0x03, - 0x3F, 0x40, 0x40, 0x40, 0x3F, - 0x1F, 0x20, 0x40, 0x20, 0x1F, - 0x3F, 0x40, 0x38, 0x40, 0x3F, - 0x63, 0x14, 0x08, 0x14, 0x63, - 0x03, 0x04, 0x78, 0x04, 0x03, - 0x61, 0x59, 0x49, 0x4D, 0x43, - 0x00, 0x7F, 0x41, 0x41, 0x41, - 0x02, 0x04, 0x08, 0x10, 0x20, - 0x00, 0x41, 0x41, 0x41, 0x7F, - 0x04, 0x02, 0x01, 0x02, 0x04, - 0x40, 0x40, 0x40, 0x40, 0x40, - 0x00, 0x03, 0x07, 0x08, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, - 0x7F, 0x28, 0x44, 0x44, 0x38, - 0x38, 0x44, 0x44, 0x44, 0x28, - 0x38, 0x44, 0x44, 0x28, 0x7F, - 0x38, 0x54, 0x54, 0x54, 0x18, - 0x00, 0x08, 0x7E, 0x09, 0x02, - 0x18, 0xA4, 0xA4, 0x9C, 0x78, - 0x7F, 0x08, 0x04, 0x04, 0x78, - 0x00, 0x44, 0x7D, 0x40, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, - 0x7C, 0x08, 0x04, 0x04, 0x78, - 0x38, 0x44, 0x44, 0x44, 0x38, - 0xFC, 0x18, 0x24, 0x24, 0x18, - 0x18, 0x24, 0x24, 0x18, 0xFC, - 0x7C, 0x08, 0x04, 0x04, 0x08, - 0x48, 0x54, 0x54, 0x54, 0x24, - 0x04, 0x04, 0x3F, 0x44, 0x24, - 0x3C, 0x40, 0x40, 0x20, 0x7C, - 0x1C, 0x20, 0x40, 0x20, 0x1C, - 0x3C, 0x40, 0x30, 0x40, 0x3C, - 0x44, 0x28, 0x10, 0x28, 0x44, - 0x4C, 0x90, 0x90, 0x90, 0x7C, - 0x44, 0x64, 0x54, 0x4C, 0x44, - 0x00, 0x08, 0x36, 0x41, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, - 0x3C, 0x26, 0x23, 0x26, 0x3C, - 0x1E, 0xA1, 0xA1, 0x61, 0x12, - 0x3A, 0x40, 0x40, 0x20, 0x7A, - 0x38, 0x54, 0x54, 0x55, 0x59, - 0x21, 0x55, 0x55, 0x79, 0x41, - 0x22, 0x54, 0x54, 0x78, 0x42, // a-umlaut - 0x21, 0x55, 0x54, 0x78, 0x40, - 0x20, 0x54, 0x55, 0x79, 0x40, - 0x0C, 0x1E, 0x52, 0x72, 0x12, - 0x39, 0x55, 0x55, 0x55, 0x59, - 0x39, 0x54, 0x54, 0x54, 0x59, - 0x39, 0x55, 0x54, 0x54, 0x58, - 0x00, 0x00, 0x45, 0x7C, 0x41, - 0x00, 0x02, 0x45, 0x7D, 0x42, - 0x00, 0x01, 0x45, 0x7C, 0x40, - 0x7D, 0x12, 0x11, 0x12, 0x7D, // A-umlaut - 0xF0, 0x28, 0x25, 0x28, 0xF0, - 0x7C, 0x54, 0x55, 0x45, 0x00, - 0x20, 0x54, 0x54, 0x7C, 0x54, - 0x7C, 0x0A, 0x09, 0x7F, 0x49, - 0x32, 0x49, 0x49, 0x49, 0x32, - 0x3A, 0x44, 0x44, 0x44, 0x3A, // o-umlaut - 0x32, 0x4A, 0x48, 0x48, 0x30, - 0x3A, 0x41, 0x41, 0x21, 0x7A, - 0x3A, 0x42, 0x40, 0x20, 0x78, - 0x00, 0x9D, 0xA0, 0xA0, 0x7D, - 0x3D, 0x42, 0x42, 0x42, 0x3D, // O-umlaut - 0x3D, 0x40, 0x40, 0x40, 0x3D, - 0x3C, 0x24, 0xFF, 0x24, 0x24, - 0x48, 0x7E, 0x49, 0x43, 0x66, - 0x2B, 0x2F, 0xFC, 0x2F, 0x2B, - 0xFF, 0x09, 0x29, 0xF6, 0x20, - 0xC0, 0x88, 0x7E, 0x09, 0x03, - 0x20, 0x54, 0x54, 0x79, 0x41, - 0x00, 0x00, 0x44, 0x7D, 0x41, - 0x30, 0x48, 0x48, 0x4A, 0x32, - 0x38, 0x40, 0x40, 0x22, 0x7A, - 0x00, 0x7A, 0x0A, 0x0A, 0x72, - 0x7D, 0x0D, 0x19, 0x31, 0x7D, - 0x26, 0x29, 0x29, 0x2F, 0x28, - 0x26, 0x29, 0x29, 0x29, 0x26, - 0x30, 0x48, 0x4D, 0x40, 0x20, - 0x38, 0x08, 0x08, 0x08, 0x08, - 0x08, 0x08, 0x08, 0x08, 0x38, - 0x2F, 0x10, 0xC8, 0xAC, 0xBA, - 0x2F, 0x10, 0x28, 0x34, 0xFA, - 0x00, 0x00, 0x7B, 0x00, 0x00, - 0x08, 0x14, 0x2A, 0x14, 0x22, - 0x22, 0x14, 0x2A, 0x14, 0x08, - 0x55, 0x00, 0x55, 0x00, 0x55, // #176 (25% block) missing in old code - 0xAA, 0x55, 0xAA, 0x55, 0xAA, // 50% block - 0xFF, 0x55, 0xFF, 0x55, 0xFF, // 75% block - 0x00, 0x00, 0x00, 0xFF, 0x00, - 0x10, 0x10, 0x10, 0xFF, 0x00, - 0x14, 0x14, 0x14, 0xFF, 0x00, - 0x10, 0x10, 0xFF, 0x00, 0xFF, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x14, 0x14, 0x14, 0xFC, 0x00, - 0x14, 0x14, 0xF7, 0x00, 0xFF, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x14, 0x14, 0xF4, 0x04, 0xFC, - 0x14, 0x14, 0x17, 0x10, 0x1F, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0x1F, 0x00, - 0x10, 0x10, 0x10, 0xF0, 0x00, - 0x00, 0x00, 0x00, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0x1F, 0x10, - 0x10, 0x10, 0x10, 0xF0, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x10, - 0x10, 0x10, 0x10, 0x10, 0x10, - 0x10, 0x10, 0x10, 0xFF, 0x10, - 0x00, 0x00, 0x00, 0xFF, 0x14, - 0x00, 0x00, 0xFF, 0x00, 0xFF, - 0x00, 0x00, 0x1F, 0x10, 0x17, - 0x00, 0x00, 0xFC, 0x04, 0xF4, - 0x14, 0x14, 0x17, 0x10, 0x17, - 0x14, 0x14, 0xF4, 0x04, 0xF4, - 0x00, 0x00, 0xFF, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x14, 0x14, - 0x14, 0x14, 0xF7, 0x00, 0xF7, - 0x14, 0x14, 0x14, 0x17, 0x14, - 0x10, 0x10, 0x1F, 0x10, 0x1F, - 0x14, 0x14, 0x14, 0xF4, 0x14, - 0x10, 0x10, 0xF0, 0x10, 0xF0, - 0x00, 0x00, 0x1F, 0x10, 0x1F, - 0x00, 0x00, 0x00, 0x1F, 0x14, - 0x00, 0x00, 0x00, 0xFC, 0x14, - 0x00, 0x00, 0xF0, 0x10, 0xF0, - 0x10, 0x10, 0xFF, 0x10, 0xFF, - 0x14, 0x14, 0x14, 0xFF, 0x14, - 0x10, 0x10, 0x10, 0x1F, 0x00, - 0x00, 0x00, 0x00, 0xF0, 0x10, - 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, - 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, - 0xFF, 0xFF, 0xFF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xFF, 0xFF, - 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, - 0x38, 0x44, 0x44, 0x38, 0x44, - 0xFC, 0x4A, 0x4A, 0x4A, 0x34, // sharp-s or beta - 0x7E, 0x02, 0x02, 0x06, 0x06, - 0x02, 0x7E, 0x02, 0x7E, 0x02, - 0x63, 0x55, 0x49, 0x41, 0x63, - 0x38, 0x44, 0x44, 0x3C, 0x04, - 0x40, 0x7E, 0x20, 0x1E, 0x20, - 0x06, 0x02, 0x7E, 0x02, 0x02, - 0x99, 0xA5, 0xE7, 0xA5, 0x99, - 0x1C, 0x2A, 0x49, 0x2A, 0x1C, - 0x4C, 0x72, 0x01, 0x72, 0x4C, - 0x30, 0x4A, 0x4D, 0x4D, 0x30, - 0x30, 0x48, 0x78, 0x48, 0x30, - 0xBC, 0x62, 0x5A, 0x46, 0x3D, - 0x3E, 0x49, 0x49, 0x49, 0x00, - 0x7E, 0x01, 0x01, 0x01, 0x7E, - 0x2A, 0x2A, 0x2A, 0x2A, 0x2A, - 0x44, 0x44, 0x5F, 0x44, 0x44, - 0x40, 0x51, 0x4A, 0x44, 0x40, - 0x40, 0x44, 0x4A, 0x51, 0x40, - 0x00, 0x00, 0xFF, 0x01, 0x03, - 0xE0, 0x80, 0xFF, 0x00, 0x00, - 0x08, 0x08, 0x6B, 0x6B, 0x08, - 0x36, 0x12, 0x36, 0x24, 0x36, - 0x06, 0x0F, 0x09, 0x0F, 0x06, - 0x00, 0x00, 0x18, 0x18, 0x00, - 0x00, 0x00, 0x10, 0x10, 0x00, - 0x30, 0x40, 0xFF, 0x01, 0x01, - 0x00, 0x1F, 0x01, 0x01, 0x1E, - 0x00, 0x19, 0x1D, 0x17, 0x12, - 0x00, 0x3C, 0x3C, 0x3C, 0x3C, - 0x00, 0x00, 0x00, 0x00, 0x00 // #255 NBSP -}; -#endif // FONT5X7_H diff --git a/lib/Adafruit_GFX-1.2.2.07/library.properties b/lib/Adafruit_GFX-1.2.2.07/library.properties deleted file mode 100644 index c6b0c4751..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Adafruit GFX Library -version=1.2.2 -author=Adafruit -maintainer=Adafruit -sentence=Adafruit GFX graphics core library, this is the 'core' class that all our other graphics libraries derive from. -paragraph=Install this library in addition to the display library for your hardware. -category=Display -url=https://github.com/adafruit/Adafruit-GFX-Library -architectures=* diff --git a/lib/Adafruit_GFX-1.2.2.07/license.txt b/lib/Adafruit_GFX-1.2.2.07/license.txt deleted file mode 100644 index 7492e93a1..000000000 --- a/lib/Adafruit_GFX-1.2.2.07/license.txt +++ /dev/null @@ -1,24 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2012 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. diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp deleted file mode 100644 index fd7039173..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp +++ /dev/null @@ -1,672 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/ - ----> http://www.adafruit.com/products/ - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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 - -#include "Adafruit_LEDBackpack.h" -#include "Adafruit_GFX.h" - -#ifndef _BV - #define _BV(bit) (1<<(bit)) -#endif - -#ifndef _swap_int16_t -#define _swap_int16_t(a, b) { int16_t t = a; a = b; b = t; } -#endif - -static const uint8_t numbertable[] = { - 0x3F, /* 0 */ - 0x06, /* 1 */ - 0x5B, /* 2 */ - 0x4F, /* 3 */ - 0x66, /* 4 */ - 0x6D, /* 5 */ - 0x7D, /* 6 */ - 0x07, /* 7 */ - 0x7F, /* 8 */ - 0x6F, /* 9 */ - 0x77, /* a */ - 0x7C, /* b */ - 0x39, /* C */ - 0x5E, /* d */ - 0x79, /* E */ - 0x71, /* F */ -}; - -static const uint16_t alphafonttable[] PROGMEM = { - -0b0000000000000001, -0b0000000000000010, -0b0000000000000100, -0b0000000000001000, -0b0000000000010000, -0b0000000000100000, -0b0000000001000000, -0b0000000010000000, -0b0000000100000000, -0b0000001000000000, -0b0000010000000000, -0b0000100000000000, -0b0001000000000000, -0b0010000000000000, -0b0100000000000000, -0b1000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0000000000000000, -0b0001001011001001, -0b0001010111000000, -0b0001001011111001, -0b0000000011100011, -0b0000010100110000, -0b0001001011001000, -0b0011101000000000, -0b0001011100000000, -0b0000000000000000, // -0b0000000000000110, // ! -0b0000001000100000, // " -0b0001001011001110, // # -0b0001001011101101, // $ -0b0000110000100100, // % -0b0010001101011101, // & -0b0000010000000000, // ' -0b0010010000000000, // ( -0b0000100100000000, // ) -0b0011111111000000, // * -0b0001001011000000, // + -0b0000100000000000, // , -0b0000000011000000, // - -0b0000000000000000, // . -0b0000110000000000, // / -0b0000110000111111, // 0 -0b0000000000000110, // 1 -0b0000000011011011, // 2 -0b0000000010001111, // 3 -0b0000000011100110, // 4 -0b0010000001101001, // 5 -0b0000000011111101, // 6 -0b0000000000000111, // 7 -0b0000000011111111, // 8 -0b0000000011101111, // 9 -0b0001001000000000, // : -0b0000101000000000, // ; -0b0010010000000000, // < -0b0000000011001000, // = -0b0000100100000000, // > -0b0001000010000011, // ? -0b0000001010111011, // @ -0b0000000011110111, // A -0b0001001010001111, // B -0b0000000000111001, // C -0b0001001000001111, // D -0b0000000011111001, // E -0b0000000001110001, // F -0b0000000010111101, // G -0b0000000011110110, // H -0b0001001000000000, // I -0b0000000000011110, // J -0b0010010001110000, // K -0b0000000000111000, // L -0b0000010100110110, // M -0b0010000100110110, // N -0b0000000000111111, // O -0b0000000011110011, // P -0b0010000000111111, // Q -0b0010000011110011, // R -0b0000000011101101, // S -0b0001001000000001, // T -0b0000000000111110, // U -0b0000110000110000, // V -0b0010100000110110, // W -0b0010110100000000, // X -0b0001010100000000, // Y -0b0000110000001001, // Z -0b0000000000111001, // [ -0b0010000100000000, // -0b0000000000001111, // ] -0b0000110000000011, // ^ -0b0000000000001000, // _ -0b0000000100000000, // ` -0b0001000001011000, // a -0b0010000001111000, // b -0b0000000011011000, // c -0b0000100010001110, // d -0b0000100001011000, // e -0b0000000001110001, // f -0b0000010010001110, // g -0b0001000001110000, // h -0b0001000000000000, // i -0b0000000000001110, // j -0b0011011000000000, // k -0b0000000000110000, // l -0b0001000011010100, // m -0b0001000001010000, // n -0b0000000011011100, // o -0b0000000101110000, // p -0b0000010010000110, // q -0b0000000001010000, // r -0b0010000010001000, // s -0b0000000001111000, // t -0b0000000000011100, // u -0b0010000000000100, // v -0b0010100000010100, // w -0b0010100011000000, // x -0b0010000000001100, // y -0b0000100001001000, // z -0b0000100101001001, // { -0b0001001000000000, // | -0b0010010010001001, // } -0b0000010100100000, // ~ -0b0011111111111111, - -}; -void Adafruit_LEDBackpack::setBrightness(uint8_t b) { - if (b > 15) b = 15; - Wire.beginTransmission(i2c_addr); - Wire.write(HT16K33_CMD_BRIGHTNESS | b); - Wire.endTransmission(); -} - -void Adafruit_LEDBackpack::blinkRate(uint8_t b) { - Wire.beginTransmission(i2c_addr); - if (b > 3) b = 0; // turn off if not sure - - Wire.write(HT16K33_BLINK_CMD | HT16K33_BLINK_DISPLAYON | (b << 1)); - Wire.endTransmission(); -} - -Adafruit_LEDBackpack::Adafruit_LEDBackpack(void) { -} - -void Adafruit_LEDBackpack::begin(uint8_t _addr = 0x70) { - i2c_addr = _addr; - - Wire.begin(); - - Wire.beginTransmission(i2c_addr); - Wire.write(0x21); // turn on oscillator - Wire.endTransmission(); - blinkRate(HT16K33_BLINK_OFF); - - setBrightness(15); // max brightness -} - -void Adafruit_LEDBackpack::writeDisplay(void) { - Wire.beginTransmission(i2c_addr); - Wire.write((uint8_t)0x00); // start at address $00 - - for (uint8_t i=0; i<8; i++) { - Wire.write(displaybuffer[i] & 0xFF); - Wire.write(displaybuffer[i] >> 8); - } - Wire.endTransmission(); -} - -void Adafruit_LEDBackpack::clear(void) { - for (uint8_t i=0; i<8; i++) { - displaybuffer[i] = 0; - } -} - -/******************************* QUAD ALPHANUM OBJECT */ - -Adafruit_AlphaNum4::Adafruit_AlphaNum4(void) { - -} - -void Adafruit_AlphaNum4::writeDigitRaw(uint8_t n, uint16_t bitmask) { - displaybuffer[n] = bitmask; -} - -void Adafruit_AlphaNum4::writeDigitAscii(uint8_t n, uint8_t a, boolean d) { - uint16_t font = pgm_read_word(alphafonttable+a); - - displaybuffer[n] = font; - - /* - Serial.print(a, DEC); - Serial.print(" / '"); Serial.write(a); - Serial.print("' = 0x"); Serial.println(font, HEX); - */ - - if (d) displaybuffer[n] |= (1<<14); -} - -/******************************* 24 BARGRAPH OBJECT */ - -Adafruit_24bargraph::Adafruit_24bargraph(void) { - -} - -void Adafruit_24bargraph::setBar(uint8_t bar, uint8_t color) { - uint16_t a, c; - - if (bar < 12) - c = bar / 4; - else - c = (bar - 12) / 4; - - a = bar % 4; - if (bar >= 12) - a += 4; - - //Serial.print("Ano = "); Serial.print(a); Serial.print(" Cath = "); Serial.println(c); - if (color == LED_RED) { - // Turn on red LED. - displaybuffer[c] |= _BV(a); - // Turn off green LED. - displaybuffer[c] &= ~_BV(a+8); - } else if (color == LED_YELLOW) { - // Turn on red and green LED. - displaybuffer[c] |= _BV(a) | _BV(a+8); - } else if (color == LED_OFF) { - // Turn off red and green LED. - displaybuffer[c] &= ~_BV(a) & ~_BV(a+8); - } else if (color == LED_GREEN) { - // Turn on green LED. - displaybuffer[c] |= _BV(a+8); - // Turn off red LED. - displaybuffer[c] &= ~_BV(a); - } -} - - -/******************************* 16x8 MATRIX OBJECT */ - -Adafruit_8x16matrix::Adafruit_8x16matrix(void) : Adafruit_GFX(8, 16) { -} - -void Adafruit_8x16matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 2: - _swap_int16_t(x, y); - x = 16 - x - 1; - break; - case 3: - x = 16 - x - 1; - y = 8 - y - 1; - break; - case 0: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - /* - Serial.print("("); Serial.print(x); - Serial.print(","); Serial.print(y); - Serial.println(")"); - */ - - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 16)) return; - - if (color) { - displaybuffer[y] |= 1 << x; - } else { - displaybuffer[y] &= ~(1 << x); - } -} - -/******************************* 16x8 MINI MATRIX OBJECT */ - -Adafruit_8x16minimatrix::Adafruit_8x16minimatrix(void) : Adafruit_GFX(8, 16) { -} - -void Adafruit_8x16minimatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - - if ((y < 0) || (x < 0)) return; - if ((getRotation() % 2 == 0) && ((y >= 16) || (x >= 8))) return; - if ((getRotation() % 2 == 1) && ((x >= 16) || (y >= 8))) return; - - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 2: - if (y >= 8) { - x += 8; - y -= 8; - } - _swap_int16_t(x, y); - break; - case 3: - x = 16 - x - 1; - if (x >= 8) { - x -= 8; - y += 8; - } - break; - case 0: - y = 16 - y - 1; - x = 8 - x - 1; - if (y >= 8) { - x += 8; - y -= 8; - } - _swap_int16_t(x, y); - break; - case 1: - y = 8 - y - 1; - if (x >= 8) { - x -= 8; - y += 8; - } - break; - } - - if (color) { - displaybuffer[x] |= 1 << y; - } else { - displaybuffer[x] &= ~(1 << y); - } -} - -/******************************* 8x8 MATRIX OBJECT */ - -Adafruit_8x8matrix::Adafruit_8x8matrix(void) : Adafruit_GFX(8, 8) { -} - -void Adafruit_8x8matrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 8)) return; - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 1: - _swap_int16_t(x, y); - x = 8 - x - 1; - break; - case 2: - x = 8 - x - 1; - y = 8 - y - 1; - break; - case 3: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - - // wrap around the x - x += 7; - x %= 8; - - - if (color) { - displaybuffer[y] |= 1 << x; - } else { - displaybuffer[y] &= ~(1 << x); - } -} - -/******************************* 8x8 BICOLOR MATRIX OBJECT */ - -Adafruit_BicolorMatrix::Adafruit_BicolorMatrix(void) : Adafruit_GFX(8, 8) { -} - -void Adafruit_BicolorMatrix::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((y < 0) || (y >= 8)) return; - if ((x < 0) || (x >= 8)) return; - - switch (getRotation()) { - case 1: - _swap_int16_t(x, y); - x = 8 - x - 1; - break; - case 2: - x = 8 - x - 1; - y = 8 - y - 1; - break; - case 3: - _swap_int16_t(x, y); - y = 8 - y - 1; - break; - } - - if (color == LED_GREEN) { - // Turn on green LED. - displaybuffer[y] |= 1 << x; - // Turn off red LED. - displaybuffer[y] &= ~(1 << (x+8)); - } else if (color == LED_RED) { - // Turn on red LED. - displaybuffer[y] |= 1 << (x+8); - // Turn off green LED. - displaybuffer[y] &= ~(1 << x); - } else if (color == LED_YELLOW) { - // Turn on green and red LED. - displaybuffer[y] |= (1 << (x+8)) | (1 << x); - } else if (color == LED_OFF) { - // Turn off green and red LED. - displaybuffer[y] &= ~(1 << x) & ~(1 << (x+8)); - } -} - -/******************************* 7 SEGMENT OBJECT */ - -Adafruit_7segment::Adafruit_7segment(void) { - position = 0; -} - -void Adafruit_7segment::print(unsigned long n, int base) -{ - if (base == 0) write(n); - else printNumber(n, base); -} - -void Adafruit_7segment::print(char c, int base) -{ - print((long) c, base); -} - -void Adafruit_7segment::print(unsigned char b, int base) -{ - print((unsigned long) b, base); -} - -void Adafruit_7segment::print(int n, int base) -{ - print((long) n, base); -} - -void Adafruit_7segment::print(unsigned int n, int base) -{ - print((unsigned long) n, base); -} - -void Adafruit_7segment::println(void) { - position = 0; -} - -void Adafruit_7segment::println(char c, int base) -{ - print(c, base); - println(); -} - -void Adafruit_7segment::println(unsigned char b, int base) -{ - print(b, base); - println(); -} - -void Adafruit_7segment::println(int n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(unsigned int n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(long n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(unsigned long n, int base) -{ - print(n, base); - println(); -} - -void Adafruit_7segment::println(double n, int digits) -{ - print(n, digits); - println(); -} - -void Adafruit_7segment::print(double n, int digits) -{ - printFloat(n, digits); -} - - -size_t Adafruit_7segment::write(uint8_t c) { - - uint8_t r = 0; - - if (c == '\n') position = 0; - if (c == '\r') position = 0; - - if ((c >= '0') && (c <= '9')) { - writeDigitNum(position, c-'0'); - r = 1; - } - - position++; - if (position == 2) position++; - - return r; -} - -void Adafruit_7segment::writeDigitRaw(uint8_t d, uint8_t bitmask) { - if (d > 4) return; - displaybuffer[d] = bitmask; -} - -void Adafruit_7segment::drawColon(boolean state) { - if (state) - displaybuffer[2] = 0x2; - else - displaybuffer[2] = 0; -} - -void Adafruit_7segment::writeColon(void) { - Wire.beginTransmission(i2c_addr); - Wire.write((uint8_t)0x04); // start at address $02 - - Wire.write(displaybuffer[2] & 0xFF); - Wire.write(displaybuffer[2] >> 8); - - Wire.endTransmission(); -} - -void Adafruit_7segment::writeDigitNum(uint8_t d, uint8_t num, boolean dot) { - if (d > 4) return; - - writeDigitRaw(d, numbertable[num] | (dot << 7)); -} - -void Adafruit_7segment::print(long n, int base) -{ - printNumber(n, base); -} - -void Adafruit_7segment::printNumber(long n, uint8_t base) -{ - printFloat(n, 0, base); -} - -void Adafruit_7segment::printFloat(double n, uint8_t fracDigits, uint8_t base) -{ - uint8_t numericDigits = 4; // available digits on display - boolean isNegative = false; // true if the number is negative - - // is the number negative? - if(n < 0) { - isNegative = true; // need to draw sign later - --numericDigits; // the sign will take up one digit - n *= -1; // pretend the number is positive - } - - // calculate the factor required to shift all fractional digits - // into the integer part of the number - double toIntFactor = 1.0; - for(int i = 0; i < fracDigits; ++i) toIntFactor *= base; - - // create integer containing digits to display by applying - // shifting factor and rounding adjustment - uint32_t displayNumber = n * toIntFactor + 0.5; - - // calculate upper bound on displayNumber given - // available digits on display - uint32_t tooBig = 1; - for(int i = 0; i < numericDigits; ++i) tooBig *= base; - - // if displayNumber is too large, try fewer fractional digits - while(displayNumber >= tooBig) { - --fracDigits; - toIntFactor /= base; - displayNumber = n * toIntFactor + 0.5; - } - - // did toIntFactor shift the decimal off the display? - if (toIntFactor < 1) { - printError(); - } else { - // otherwise, display the number - int8_t displayPos = 4; - - if (displayNumber) //if displayNumber is not 0 - { - for(uint8_t i = 0; displayNumber || i <= fracDigits; ++i) { - boolean displayDecimal = (fracDigits != 0 && i == fracDigits); - writeDigitNum(displayPos--, displayNumber % base, displayDecimal); - if(displayPos == 2) writeDigitRaw(displayPos--, 0x00); - displayNumber /= base; - } - } - else { - writeDigitNum(displayPos--, 0, false); - } - - // display negative sign if negative - if(isNegative) writeDigitRaw(displayPos--, 0x40); - - // clear remaining display positions - while(displayPos >= 0) writeDigitRaw(displayPos--, 0x00); - } -} - -void Adafruit_7segment::printError(void) { - for(uint8_t i = 0; i < SEVENSEG_DIGITS; ++i) { - writeDigitRaw(i, (i == 2 ? 0x00 : 0x40)); - } -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h b/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h deleted file mode 100644 index 7b468f305..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h +++ /dev/null @@ -1,171 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/ - ----> http://www.adafruit.com/products/ - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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 Adafruit_LEDBackpack_h -#define Adafruit_LEDBackpack_h - -#if (ARDUINO >= 100) - #include "Arduino.h" -#else - #include "WProgram.h" -#endif - - - #include - -#include "Adafruit_GFX.h" - -#define LED_ON 1 -#define LED_OFF 0 - -#define LED_RED 1 -#define LED_YELLOW 2 -#define LED_GREEN 3 - - - -#define HT16K33_BLINK_CMD 0x80 -#define HT16K33_BLINK_DISPLAYON 0x01 -#define HT16K33_BLINK_OFF 0 -#define HT16K33_BLINK_2HZ 1 -#define HT16K33_BLINK_1HZ 2 -#define HT16K33_BLINK_HALFHZ 3 - -#define HT16K33_CMD_BRIGHTNESS 0xE0 - -#define SEVENSEG_DIGITS 5 - - -// this is the raw HT16K33 controller -class Adafruit_LEDBackpack { - public: - Adafruit_LEDBackpack(void); - void begin(uint8_t _addr); - void setBrightness(uint8_t b); - void blinkRate(uint8_t b); - void writeDisplay(void); - void clear(void); - - uint16_t displaybuffer[8]; - - void init(uint8_t a); - protected: - uint8_t i2c_addr; -}; - -class Adafruit_AlphaNum4 : public Adafruit_LEDBackpack { - public: - Adafruit_AlphaNum4(void); - - void writeDigitRaw(uint8_t n, uint16_t bitmask); - void writeDigitAscii(uint8_t n, uint8_t ascii, boolean dot = false); - - private: - - -}; - -class Adafruit_24bargraph : public Adafruit_LEDBackpack { - public: - Adafruit_24bargraph(void); - - void setBar(uint8_t bar, uint8_t color); - - private: -}; - - -class Adafruit_8x16matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x16matrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_8x16minimatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x16minimatrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_8x8matrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_8x8matrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - -class Adafruit_BicolorMatrix : public Adafruit_LEDBackpack, public Adafruit_GFX { - public: - Adafruit_BicolorMatrix(void); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - private: -}; - - -#define DEC 10 -#define HEX 16 -#define OCT 8 -#define BIN 2 -#define BYTE 0 - -class Adafruit_7segment : public Adafruit_LEDBackpack { - public: - Adafruit_7segment(void); - size_t write(uint8_t c); - - void print(char, int = BYTE); - void print(unsigned char, int = BYTE); - void print(int, int = DEC); - void print(unsigned int, int = DEC); - void print(long, int = DEC); - void print(unsigned long, int = DEC); - void print(double, int = 2); - void println(char, int = BYTE); - void println(unsigned char, int = BYTE); - void println(int, int = DEC); - void println(unsigned int, int = DEC); - void println(long, int = DEC); - void println(unsigned long, int = DEC); - void println(double, int = 2); - void println(void); - - void writeDigitRaw(uint8_t x, uint8_t bitmask); - void writeDigitNum(uint8_t x, uint8_t num, boolean dot = false); - void drawColon(boolean state); - void printNumber(long, uint8_t = 2); - void printFloat(double, uint8_t = 2, uint8_t = DEC); - void printError(void); - - void writeColon(void); - - private: - uint8_t position; -}; -#endif // Adafruit_LEDBackpack_h - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.md b/lib/Adafruit_LED_Backpack-1.1.6/README.md deleted file mode 100644 index 3834b6e1f..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# Adafruit-LED-Backpack-Library - - -## Compatibility - -MCU | Tested Works | Doesn't Work | Not Tested | Notes ------------------ | :----------: | :----------: | :---------: | ----- -Atmega328 @ 16MHz | X | | | -Atmega328 @ 12MHz | X | | | -Atmega32u4 @ 16MHz | X | | | -Atmega32u4 @ 8MHz | X | | | -ESP8266 | X | | | -Atmega2560 @ 16MHz | X | | | -ATSAM3X8E | X | | | Use SDA/SCL on pins 20 & 21 -ATSAM21D | X | | | -ATtiny85 @ 16MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed -ATtiny85 @ 8MHz | X | | | Use 0 for SDA, 2 for SCL, examples may need Serial references removed - - * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini - * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V - * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 - * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro - * ESP8266 : Adafruit Huzzah - * ATmega2560 @ 16MHz : Arduino Mega - * ATSAM3X8E : Arduino Due - * ATSAM21D : Arduino Zero, M0 Pro - * ATtiny85 @ 16MHz : Adafruit Trinket 5V - * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V - - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/README.txt b/lib/Adafruit_LED_Backpack-1.1.6/README.txt deleted file mode 100644 index 268d96a8c..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/README.txt +++ /dev/null @@ -1,26 +0,0 @@ -This is a library for the Adafruit LED Backpacks -This library works with the Adafruit Mini 8x8 and 7-Segment LED Backpacks - ----> http://www.adafruit.com/products/881 - ----> http://www.adafruit.com/products/880 - ----> http://www.adafruit.com/products/879 - ----> http://www.adafruit.com/products/878 - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - -These displays use I2C to communicate, 2 pins are required to -interface. There are multiple selectable I2C addresses. For backpacks -with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks -with 3 Address Select pins: 0x70 thru 0x77 - - -Written by Limor Fried/Ladyada for Adafruit Industries. -MIT license, all text above must be included in any redistribution - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_LEDBackpack. Check that the Adafruit_LEDBackpack folder contains Adafruit_LEDBackpack.cpp and Adafruit_LEDBackpack. - -Place the Adafruit_LEDBackpack library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE - -**** Also requires the Adafruit_GFX library for Arduino. **** -Download it from here: - https://github.com/adafruit/Adafruit-GFX-Library \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino deleted file mode 100644 index faf8247dd..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino +++ /dev/null @@ -1,55 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -#ifndef _BV - #define _BV(bit) (1<<(bit)) -#endif - - -Adafruit_LEDBackpack matrix = Adafruit_LEDBackpack(); - -uint8_t counter = 0; - -void setup() { - Serial.begin(9600); - Serial.println("HT16K33 test"); - - matrix.begin(0x70); // pass in the address -} - -void loop() { - // paint one LED per row. The HT16K33 internal memory looks like - // a 8x16 bit matrix (8 rows, 16 columns) - for (uint8_t i=0; i<8; i++) { - // draw a diagonal row of pixels - matrix.displaybuffer[i] = _BV((counter+i) % 16) | _BV((counter+i+8) % 16) ; - } - // write the changes we just made to the display - matrix.writeDisplay(); - delay(100); - - counter++; - if (counter >= 16) counter = 0; -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino deleted file mode 100644 index d9ed552e3..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED 24 Bargraph Backpack - ----> http://www.adafruit.com/products/721 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_24bargraph bar = Adafruit_24bargraph(); - -void setup() { - Serial.begin(9600); - Serial.println("HT16K33 Bi-Color Bargraph test"); - - bar.begin(0x70); // pass in the address - - for (uint8_t b=0; b<24; b++ ){ - if ((b % 3) == 0) bar.setBar(b, LED_RED); - if ((b % 3) == 1) bar.setBar(b, LED_YELLOW); - if ((b % 3) == 2) bar.setBar(b, LED_GREEN); - } - bar.writeDisplay(); - delay(2000); -} - - -void loop() { - for (uint8_t b=0; b<24; b++) { - bar.setBar(b, LED_RED); - bar.writeDisplay(); - delay(50); - bar.setBar(b, LED_OFF); - bar.writeDisplay(); - } - for (uint8_t b=0; b<24; b++) { - bar.setBar(b, LED_GREEN); - bar.writeDisplay(); - delay(50); - bar.setBar(b, LED_OFF); - bar.writeDisplay(); - } - - for (uint8_t b=0; b<24; b++) { - bar.setBar(23-b, LED_YELLOW); - bar.writeDisplay(); - delay(50); - bar.setBar(23-b, LED_OFF); - bar.writeDisplay(); - } -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde deleted file mode 100644 index 01088032a..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde +++ /dev/null @@ -1,122 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix(); - -void setup() { - Serial.begin(9600); - Serial.println("8x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_GREEN); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_YELLOW); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_RED); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_GREEN); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,7, LED_YELLOW); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,8, LED_RED); - matrix.fillRect(2,2, 4,4, LED_GREEN); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,3, 3, LED_YELLOW); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextSize(1); - matrix.setTextColor(LED_GREEN); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(3); - matrix.setTextColor(LED_RED); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino deleted file mode 100644 index 5ffb542c2..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino +++ /dev/null @@ -1,178 +0,0 @@ -// Clock example using a seven segment display & DS1307 real-time clock. -// -// Must have the Adafruit RTClib library installed too! See: -// https://github.com/adafruit/RTClib -// -// Designed specifically to work with the Adafruit LED 7-Segment backpacks -// and DS1307 real-time clock breakout: -// ----> http://www.adafruit.com/products/881 -// ----> http://www.adafruit.com/products/880 -// ----> http://www.adafruit.com/products/879 -// ----> http://www.adafruit.com/products/878 -// ----> https://www.adafruit.com/products/264 -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by Tony DiCola for Adafruit Industries. -// Released under a MIT license: https://opensource.org/licenses/MIT - -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - - -// Set to false to display time in 12 hour format, or true to use 24 hour: -#define TIME_24_HOUR false - -// I2C address of the display. Stick with the default address of 0x70 -// unless you've changed the address jumpers on the back of the display. -#define DISPLAY_ADDRESS 0x70 - - -// Create display and DS1307 objects. These are global variables that -// can be accessed from both the setup and loop function below. -Adafruit_7segment clockDisplay = Adafruit_7segment(); -RTC_DS1307 rtc = RTC_DS1307(); - -// Keep track of the hours, minutes, seconds displayed by the clock. -// Start off at 0:00:00 as a signal that the time should be read from -// the DS1307 to initialize it. -int hours = 0; -int minutes = 0; -int seconds = 0; - -// Remember if the colon was drawn on the display so it can be blinked -// on and off every second. -bool blinkColon = false; - - -void setup() { - // Setup function runs once at startup to initialize the display - // and DS1307 clock. - - // Setup Serial port to print debug output. - Serial.begin(115200); - Serial.println("Clock starting!"); - - // Setup the display. - clockDisplay.begin(DISPLAY_ADDRESS); - - // Setup the DS1307 real-time clock. - rtc.begin(); - - // Set the DS1307 clock if it hasn't been set before. - bool setClockTime = !rtc.isrunning(); - // Alternatively you can force the clock to be set again by - // uncommenting this line: - //setClockTime = true; - if (setClockTime) { - Serial.println("Setting DS1307 time!"); - // This line sets the DS1307 time to the exact date and time the - // sketch was compiled: - rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); - // Alternatively you can set the RTC with an explicit date & time, - // for example to set January 21, 2014 at 3am you would uncomment: - //rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); - } -} - -void loop() { - // Loop function runs over and over again to implement the clock logic. - - // Check if it's the top of the hour and get a new time reading - // from the DS1307. This helps keep the clock accurate by fixing - // any drift. - if (minutes == 0) { - // Get the time from the DS1307. - DateTime now = rtc.now(); - // Print out the time for debug purposes: - Serial.print("Read date & time from DS1307: "); - Serial.print(now.year(), DEC); - Serial.print('/'); - Serial.print(now.month(), DEC); - Serial.print('/'); - Serial.print(now.day(), DEC); - Serial.print(' '); - Serial.print(now.hour(), DEC); - Serial.print(':'); - Serial.print(now.minute(), DEC); - Serial.print(':'); - Serial.print(now.second(), DEC); - Serial.println(); - // Now set the hours and minutes. - hours = now.hour(); - minutes = now.minute(); - } - - // Show the time on the display by turning it into a numeric - // value, like 3:30 turns into 330, by multiplying the hour by - // 100 and then adding the minutes. - int displayValue = hours*100 + minutes; - - // Do 24 hour to 12 hour format conversion when required. - if (!TIME_24_HOUR) { - // Handle when hours are past 12 by subtracting 12 hours (1200 value). - if (hours > 12) { - displayValue -= 1200; - } - // Handle hour 0 (midnight) being shown as 12. - else if (hours == 0) { - displayValue += 1200; - } - } - - // Now print the time value to the display. - clockDisplay.print(displayValue, DEC); - - // Add zero padding when in 24 hour mode and it's midnight. - // In this case the print function above won't have leading 0's - // which can look confusing. Go in and explicitly add these zeros. - if (TIME_24_HOUR && hours == 0) { - // Pad hour 0. - clockDisplay.writeDigitNum(1, 0); - // Also pad when the 10's minute is 0 and should be padded. - if (minutes < 10) { - clockDisplay.writeDigitNum(2, 0); - } - } - - // Blink the colon by flipping its value every loop iteration - // (which happens every second). - blinkColon = !blinkColon; - clockDisplay.drawColon(blinkColon); - - // Now push out to the display the new values that were set above. - clockDisplay.writeDisplay(); - - // Pause for a second for time to elapse. This value is in milliseconds - // so 1000 milliseconds = 1 second. - delay(1000); - - // Now increase the seconds by one. - seconds += 1; - // If the seconds go above 59 then the minutes should increase and - // the seconds should wrap back to 0. - if (seconds > 59) { - seconds = 0; - minutes += 1; - // Again if the minutes go above 59 then the hour should increase and - // the minutes should wrap back to 0. - if (minutes > 59) { - minutes = 0; - hours += 1; - // Note that when the minutes are 0 (i.e. it's the top of a new hour) - // then the start of the loop will read the actual time from the DS1307 - // again. Just to be safe though we'll also increment the hour and wrap - // back to 0 if it goes above 23 (i.e. past midnight). - if (hours > 23) { - hours = 0; - } - } - } - - // Loop code is finished, it will jump back to the start of the loop - // function again! -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino deleted file mode 100644 index a6054969c..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino +++ /dev/null @@ -1,159 +0,0 @@ -// Clock example using a seven segment display & GPS for time. -// -// Must have the Adafruit GPS library installed too! See: -// https://github.com/adafruit/Adafruit-GPS-Library -// -// Designed specifically to work with the Adafruit LED 7-Segment backpacks -// and ultimate GPS breakout/shield: -// ----> http://www.adafruit.com/products/881 -// ----> http://www.adafruit.com/products/880 -// ----> http://www.adafruit.com/products/879 -// ----> http://www.adafruit.com/products/878 -// ----> http://www.adafruit.com/products/746 -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by Tony DiCola for Adafruit Industries. -// Released under a MIT license: https://opensource.org/licenses/MIT - -#include -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - - -// Set to false to display time in 12 hour format, or true to use 24 hour: -#define TIME_24_HOUR false - -// Offset the hours from UTC (universal time) to your local time by changing -// this value. The GPS time will be in UTC so lookup the offset for your -// local time from a site like: -// https://en.wikipedia.org/wiki/List_of_UTC_time_offsets -// This value, -7, will set the time to UTC-7 or Pacific Standard Time during -// daylight savings time. -#define HOUR_OFFSET -7 - -// I2C address of the display. Stick with the default address of 0x70 -// unless you've changed the address jumpers on the back of the display. -#define DISPLAY_ADDRESS 0x70 - - -// Create display and GPS objects. These are global variables that -// can be accessed from both the setup and loop function below. -Adafruit_7segment clockDisplay = Adafruit_7segment(); -SoftwareSerial gpsSerial(8, 7); // GPS breakout/shield will use a - // software serial connection with - // TX = pin 8 and RX = pin 7. -Adafruit_GPS gps(&gpsSerial); - - -void setup() { - // Setup function runs once at startup to initialize the display and GPS. - - // Setup Serial port to print debug output. - Serial.begin(115200); - Serial.println("Clock starting!"); - - // Setup the display. - clockDisplay.begin(DISPLAY_ADDRESS); - - // Setup the GPS using a 9600 baud connection (the default for most - // GPS modules). - gps.begin(9600); - - // Configure GPS to onlu output minimum data (location, time, fix). - gps.sendCommand(PMTK_SET_NMEA_OUTPUT_RMCONLY); - - // Use a 1 hz, once a second, update rate. - gps.sendCommand(PMTK_SET_NMEA_UPDATE_1HZ); - - // Enable the interrupt to parse GPS data. - enableGPSInterrupt(); -} - -void loop() { - // Loop function runs over and over again to implement the clock logic. - - // Check if GPS has new data and parse it. - if (gps.newNMEAreceived()) { - gps.parse(gps.lastNMEA()); - } - - // Grab the current hours, minutes, seconds from the GPS. - // This will only be set once the GPS has a fix! Make sure to add - // a coin cell battery so the GPS will save the time between power-up/down. - int hours = gps.hour + HOUR_OFFSET; // Add hour offset to convert from UTC - // to local time. - // Handle when UTC + offset wraps around to a negative or > 23 value. - if (hours < 0) { - hours = 24+hours; - } - if (hours > 23) { - hours = 24-hours; - } - int minutes = gps.minute; - int seconds = gps.seconds; - - // Show the time on the display by turning it into a numeric - // value, like 3:30 turns into 330, by multiplying the hour by - // 100 and then adding the minutes. - int displayValue = hours*100 + minutes; - - // Do 24 hour to 12 hour format conversion when required. - if (!TIME_24_HOUR) { - // Handle when hours are past 12 by subtracting 12 hours (1200 value). - if (hours > 12) { - displayValue -= 1200; - } - // Handle hour 0 (midnight) being shown as 12. - else if (hours == 0) { - displayValue += 1200; - } - } - - // Now print the time value to the display. - clockDisplay.print(displayValue, DEC); - - // Add zero padding when in 24 hour mode and it's midnight. - // In this case the print function above won't have leading 0's - // which can look confusing. Go in and explicitly add these zeros. - if (TIME_24_HOUR && hours == 0) { - // Pad hour 0. - clockDisplay.writeDigitNum(1, 0); - // Also pad when the 10's minute is 0 and should be padded. - if (minutes < 10) { - clockDisplay.writeDigitNum(2, 0); - } - } - - // Blink the colon by turning it on every even second and off - // every odd second. The modulus operator is very handy here to - // check if a value is even (modulus 2 equals 0) or odd (modulus 2 - // equals 1). - clockDisplay.drawColon(seconds % 2 == 0); - - // Now push out to the display the new values that were set above. - clockDisplay.writeDisplay(); - - // Loop code is finished, it will jump back to the start of the loop - // function again! Don't add any delays because the parsing needs to - // happen all the time! -} - -SIGNAL(TIMER0_COMPA_vect) { - // Use a timer interrupt once a millisecond to check for new GPS data. - // This piggybacks on Arduino's internal clock timer for the millis() - // function. - gps.read(); -} - -void enableGPSInterrupt() { - // Function to enable the timer interrupt that will parse GPS data. - // Timer0 is already used for millis() - we'll just interrupt somewhere - // in the middle and call the "Compare A" function above - OCR0A = 0xAF; - TIMSK0 |= _BV(OCIE0A); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino deleted file mode 100644 index b724e1d19..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino +++ /dev/null @@ -1,133 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit 16x8 LED Matrix backpacks - ----> http://www.adafruit.com/products/2035 - ----> http://www.adafruit.com/products/2036 - ----> http://www.adafruit.com/products/2037 - ----> http://www.adafruit.com/products/2038 - ----> http://www.adafruit.com/products/2039 - ----> http://www.adafruit.com/products/2040 - ----> http://www.adafruit.com/products/2041 - ----> http://www.adafruit.com/products/2042 - ----> http://www.adafruit.com/products/2043 - ----> http://www.adafruit.com/products/2044 - ----> http://www.adafruit.com/products/2052 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x16matrix matrix = Adafruit_8x16matrix(); - -void setup() { - Serial.begin(9600); - Serial.println("16x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,15, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,16, LED_ON); - matrix.fillRect(2,2, 4,12, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,8, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(2); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-64; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - matrix.setRotation(1); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino deleted file mode 100644 index 650da459e..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino +++ /dev/null @@ -1,120 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED Matrix backpacks - ----> http://www.adafruit.com/products/872 - ----> http://www.adafruit.com/products/871 - ----> http://www.adafruit.com/products/870 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x8matrix matrix = Adafruit_8x8matrix(); - -void setup() { - Serial.begin(9600); - Serial.println("8x8 LED Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); // clear display - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,7, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,8, LED_ON); - matrix.fillRect(2,2, 4,4, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,3, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(3); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino deleted file mode 100644 index b8d29e549..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino +++ /dev/null @@ -1,123 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks & FeatherWings - - Designed specifically to work with the Adafruit 16x8 LED Matrix FeatherWing - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_8x16minimatrix matrix = Adafruit_8x16minimatrix(); - -void setup() { - //while (!Serial); - Serial.begin(9600); - Serial.println("16x8 LED Mini Matrix Test"); - - matrix.begin(0x70); // pass in the address -} - -static const uint8_t PROGMEM - smile_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10100101, - B10011001, - B01000010, - B00111100 }, - neutral_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10111101, - B10000001, - B01000010, - B00111100 }, - frown_bmp[] = - { B00111100, - B01000010, - B10100101, - B10000001, - B10011001, - B10100101, - B01000010, - B00111100 }; - -void loop() { - - matrix.clear(); - matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 8, neutral_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - matrix.clear(); - matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); - matrix.writeDisplay(); - delay(500); - - - matrix.drawPixel(0, 0, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawLine(0,0, 7,15, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawRect(0,0, 8,16, LED_ON); - matrix.fillRect(2,2, 4,12, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.clear(); - matrix.drawCircle(3,8, 3, LED_ON); - matrix.writeDisplay(); // write the changes we just made to the display - delay(500); - - matrix.setTextSize(2); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - for (int8_t x=0; x>=-64; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("Hello"); - matrix.writeDisplay(); - delay(100); - } - - matrix.setTextSize(1); - matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely - matrix.setTextColor(LED_ON); - matrix.setRotation(1); - for (int8_t x=7; x>=-36; x--) { - matrix.clear(); - matrix.setCursor(x,0); - matrix.print("World"); - matrix.writeDisplay(); - delay(100); - } - matrix.setRotation(0); -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino deleted file mode 100644 index 70cb050e4..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino +++ /dev/null @@ -1,73 +0,0 @@ -// Demo the quad alphanumeric display LED backpack kit -// scrolls through every character, then scrolls Serial -// input onto the display - -#include -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); - -void setup() { - Serial.begin(9600); - - alpha4.begin(0x70); // pass in the address - - alpha4.writeDigitRaw(3, 0x0); - alpha4.writeDigitRaw(0, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(0, 0x0); - alpha4.writeDigitRaw(1, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(1, 0x0); - alpha4.writeDigitRaw(2, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(2, 0x0); - alpha4.writeDigitRaw(3, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - - alpha4.clear(); - alpha4.writeDisplay(); - - // display every character, - for (uint8_t i='!'; i<='z'; i++) { - alpha4.writeDigitAscii(0, i); - alpha4.writeDigitAscii(1, i+1); - alpha4.writeDigitAscii(2, i+2); - alpha4.writeDigitAscii(3, i+3); - alpha4.writeDisplay(); - - delay(300); - } - Serial.println("Start typing to display!"); -} - - -char displaybuffer[4] = {' ', ' ', ' ', ' '}; - -void loop() { - while (! Serial.available()) return; - - char c = Serial.read(); - if (! isprint(c)) return; // only printable! - - // scroll down display - displaybuffer[0] = displaybuffer[1]; - displaybuffer[1] = displaybuffer[2]; - displaybuffer[2] = displaybuffer[3]; - displaybuffer[3] = c; - - // set every digit to the buffer - alpha4.writeDigitAscii(0, displaybuffer[0]); - alpha4.writeDigitAscii(1, displaybuffer[1]); - alpha4.writeDigitAscii(2, displaybuffer[2]); - alpha4.writeDigitAscii(3, displaybuffer[3]); - - // write it out! - alpha4.writeDisplay(); - delay(200); -} \ No newline at end of file diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino deleted file mode 100644 index 827ea85e5..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino +++ /dev/null @@ -1,72 +0,0 @@ -// Demo the quad alphanumeric display LED backpack kit -// Displays a short message and then scrolls through every character - -// For use with Gemma or Trinket (Attiny85) - -#include -#include - - -// Connect + pins to 3-5V -// Connect GND to ground -// Connect Data to #0 -// Connect Clock to #2 - -#include -#include "Adafruit_LEDBackpack.h" - -char *message = "Hello world! "; - -Adafruit_AlphaNum4 alpha4 = Adafruit_AlphaNum4(); - -void setup() { - // This is the auto-speed doubler line, keep it in, it will - // automatically double the speed when 16Mhz is selected! - if (F_CPU == 16000000) clock_prescale_set(clock_div_1); - - alpha4.begin(0x70); // pass in the address - - alpha4.writeDigitRaw(3, 0x0); - alpha4.writeDigitRaw(0, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(0, 0x0); - alpha4.writeDigitRaw(1, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(1, 0x0); - alpha4.writeDigitRaw(2, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - alpha4.writeDigitRaw(2, 0x0); - alpha4.writeDigitRaw(3, 0xFFFF); - alpha4.writeDisplay(); - delay(200); - - alpha4.clear(); - alpha4.writeDisplay(); - - // send a message! - for (uint8_t i=0; i -#include -#include -#include "Adafruit_LEDBackpack.h" - -// Because the two eye matrices share the same address, only four -// matrix objects are needed for the five displays: -#define MATRIX_EYES 0 -#define MATRIX_MOUTH_LEFT 1 -#define MATRIX_MOUTH_MIDDLE 2 -#define MATRIX_MOUTH_RIGHT 3 -Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects - Adafruit_8x8matrix(), Adafruit_8x8matrix(), - Adafruit_8x8matrix(), Adafruit_8x8matrix() }; - -// Rather than assigning matrix addresses sequentially in a loop, each -// has a spot in this array. This makes it easier if you inadvertently -// install one or more matrices in the wrong physical position -- -// re-order the addresses in this table and you can still refer to -// matrices by index above, no other code or wiring needs to change. -static const uint8_t matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; - -static const uint8_t PROGMEM // Bitmaps are stored in program memory - blinkImg[][8] = { // Eye animation frames - { B00111100, // Fully open eye - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B00000000, - B00111100, - B11111111, - B11111111, - B11111111, - B00111100, - B00000000 }, - { B00000000, - B00000000, - B00000000, - B00111100, - B11111111, - B01111110, - B00011000, - B00000000 }, - { B00000000, // Fully closed eye - B00000000, - B00000000, - B00000000, - B10000001, - B01111110, - B00000000, - B00000000 } }, - mouthImg[][24] = { // Mouth animation frames - { B00000000, B00000000, B00000000, // Mouth position A - B00000000, B00000000, B00000000, - B01111111, B11111111, B11111110, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position B - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00000111, B00000000, B11100000, - B00000000, B11111111, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position C - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00001000, B00000000, B00010000, - B00000110, B00000000, B01100000, - B00000001, B11000011, B10000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position D - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00100000, B00000000, B00000100, - B00010000, B00000000, B00001000, - B00001100, B00000000, B00110000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position E - B00000000, B00111100, B00000000, - B00011111, B11000011, B11111000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00111100, B00000000, // Mouth position F - B00000000, B11000011, B00000000, - B00001111, B00000000, B11110000, - B00000001, B00000000, B10000000, - B00000000, B11000011, B00000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 } }; - -uint8_t - blinkIndex[] = { 1, 2, 3, 4, 3, 2, 1 }, // Blink bitmap sequence - blinkCountdown = 100, // Countdown to next blink (in frames) - gazeCountdown = 75, // Countdown to next eye movement - gazeFrames = 50, // Duration of eye movement (smaller = faster) - mouthPos = 0, // Current image number for mouth - mouthCountdown = 10; // Countdown to next mouth change -int8_t - eyeX = 3, eyeY = 3, // Current eye position - newX = 3, newY = 3, // Next eye position - dX = 0, dY = 0; // Distance from prior to new position - -void setup() { - - // Seed random number generator from an unused analog input: - randomSeed(analogRead(A0)); - - // Initialize each matrix object: - for(uint8_t i=0; i<4; i++) { - matrix[i].begin(matrixAddr[i]); - // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: - // matrix[i].setRotation(3); - } -} - -void loop() { - - // Draw eyeball in current state of blinkyness (no pupil). Note that - // only one eye needs to be drawn. Because the two eye matrices share - // the same address, the same data will be received by both. - matrix[MATRIX_EYES].clear(); - // When counting down to the next blink, show the eye in the fully- - // open state. On the last few counts (during the blink), look up - // the corresponding bitmap index. - matrix[MATRIX_EYES].drawBitmap(0, 0, - blinkImg[ - (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? - blinkIndex[blinkCountdown] : // Yes, look up bitmap # - 0 // No, show bitmap 0 - ], 8, 8, LED_ON); - // Decrement blink counter. At end, set random time for next blink. - if(--blinkCountdown == 0) blinkCountdown = random(5, 180); - - // Add a pupil (2x2 black square) atop the blinky eyeball bitmap. - // Periodically, the pupil moves to a new position... - if(--gazeCountdown <= gazeFrames) { - // Eyes are in motion - draw pupil at interim position - matrix[MATRIX_EYES].fillRect( - newX - (dX * gazeCountdown / gazeFrames), - newY - (dY * gazeCountdown / gazeFrames), - 2, 2, LED_OFF); - if(gazeCountdown == 0) { // Last frame? - eyeX = newX; eyeY = newY; // Yes. What's new is old, then... - do { // Pick random positions until one is within the eye circle - newX = random(7); newY = random(7); - dX = newX - 3; dY = newY - 3; - } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras - dX = newX - eyeX; // Horizontal distance to move - dY = newY - eyeY; // Vertical distance to move - gazeFrames = random(3, 15); // Duration of eye movement - gazeCountdown = random(gazeFrames, 120); // Count to end of next movement - } - } else { - // Not in motion yet -- draw pupil at current static position - matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); - } - - // Draw mouth, switch to new random image periodically - drawMouth(mouthImg[mouthPos]); - if(--mouthCountdown == 0) { - mouthPos = random(6); // Random image - // If the 'neutral' position was chosen, there's a 1-in-5 chance we'll - // select a longer hold time. This gives the appearance of periodic - // pauses in speech (e.g. between sentences, etc.). - mouthCountdown = ((mouthPos == 0) && (random(5) == 0)) ? - random(10, 40) : // Longer random duration - random(2, 8); // Shorter random duration - } - - // Refresh all of the matrices in one quick pass - for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); - - delay(20); // ~50 FPS -} - -// Draw mouth image across three adjacent displays -void drawMouth(const uint8_t *img) { - for(uint8_t i=0; i<3; i++) { - matrix[MATRIX_MOUTH_LEFT + i].clear(); - matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); - } -} - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino b/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino deleted file mode 100644 index 0a4f70c74..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino +++ /dev/null @@ -1,81 +0,0 @@ -/*************************************************** - This is a library for our I2C LED Backpacks - - Designed specifically to work with the Adafruit LED 7-Segment backpacks - ----> http://www.adafruit.com/products/881 - ----> http://www.adafruit.com/products/880 - ----> http://www.adafruit.com/products/879 - ----> http://www.adafruit.com/products/878 - - These displays use I2C to communicate, 2 pins are required to - interface. There are multiple selectable I2C addresses. For backpacks - with 2 Address Select pins: 0x70, 0x71, 0x72 or 0x73. For backpacks - with 3 Address Select pins: 0x70 thru 0x77 - - 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. - BSD license, all text above must be included in any redistribution - ****************************************************/ - -#include // Enable this line if using Arduino Uno, Mega, etc. -#include -#include "Adafruit_LEDBackpack.h" - -Adafruit_7segment matrix = Adafruit_7segment(); - -void setup() { -#ifndef __AVR_ATtiny85__ - Serial.begin(9600); - Serial.println("7 Segment Backpack Test"); -#endif - matrix.begin(0x70); -} - -void loop() { - // try to print a number thats too long - matrix.print(10000, DEC); - matrix.writeDisplay(); - delay(500); - - // print a hex number - matrix.print(0xBEEF, HEX); - matrix.writeDisplay(); - delay(500); - - // print a floating point - matrix.print(12.34); - matrix.writeDisplay(); - delay(500); - - // print with print/println - for (uint16_t counter = 0; counter < 9999; counter++) { - matrix.println(counter); - matrix.writeDisplay(); - delay(10); - } - - // method #2 - draw each digit - uint16_t blinkcounter = 0; - boolean drawDots = false; - for (uint16_t counter = 0; counter < 9999; counter ++) { - matrix.writeDigitNum(0, (counter / 1000), drawDots); - matrix.writeDigitNum(1, (counter / 100) % 10, drawDots); - matrix.drawColon(drawDots); - matrix.writeDigitNum(3, (counter / 10) % 10, drawDots); - matrix.writeDigitNum(4, counter % 10, drawDots); - - blinkcounter+=50; - if (blinkcounter < 500) { - drawDots = false; - } else if (blinkcounter < 1000) { - drawDots = true; - } else { - blinkcounter = 0; - } - matrix.writeDisplay(); - delay(10); - } -} diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde deleted file mode 100644 index b3c521bcc..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde +++ /dev/null @@ -1,336 +0,0 @@ -// 'wavface' example sketch for Adafruit I2C 8x8 LED backpacks -// and Wave Shield: -// -// www.adafruit.com/products/870 www.adafruit.com/products/1049 -// www.adafruit.com/products/871 www.adafruit.com/products/1050 -// www.adafruit.com/products/872 www.adafruit.com/products/1051 -// www.adafruit.com/products/959 www.adafruit.com/products/1052 -// www.adafruit.com/products/94 -// -// Requires Adafruit_LEDBackpack, Adafruit_GFX libraries and WaveHC -// libraries. -// -// This sketch shows animation roughly synchronized to prerecorded -// speech. It's fairly complex and may be overwhelming to novice -// programmers, who may want to start with the 'matrix8x8' example -// and then 'roboface' before working through this code. Also, much -// of the comments relating to the face animation have been stripped -// here for brevity...refer to the 'roboface' sketch if you have any -// questions how that part works. -// -// Additional hardware required: sounds are triggered using three -// normally-open momentary buttons connected to Digital pins 6, 7, 8 -// and GND. (e.g. www.adafruit.com/products/1009 ) -// -// Adafruit invests time and resources providing this open source code, -// please support Adafruit and open-source hardware by purchasing -// products from Adafruit! -// -// Written by P. Burgess for Adafruit Industries, parts adapted from -// 'PiSpeakHC' sketch included with WaveHC library. -// BSD license, all text above must be included in any redistribution. - -#include -#include -#include -#include -#include -#include "Adafruit_LEDBackpack.h" - -// These WAV files should be in the root level of the SD card: -static const char PROGMEM - wav0[] = "beware_i.wav", - wav1[] = "ihunger.wav", - wav2[] = "run_cowd.wav"; -static const char * const wavname[] PROGMEM = { wav0, wav1, wav2 }; -// PROGMEM makes frequent appearances throughout this code, reason being that -// the SD card library requires gobs of precious RAM (leaving very little to -// our own sketch). PROGMEM lets us put fixed data into program flash memory, -// which is considerably more spacious. String tables are paritcularly nasty. -// See www.arduino.cc/en/Reference/PROGMEM for more info. - -SdReader card; // This object holds the information for the card -FatVolume vol; // This holds the information for the partition on the card -FatReader root; // This holds the information for the volumes root directory -FatReader file; // This object represent the WAV file for a phrase -WaveHC wave; // A single wave object -- only one sound is played at a time - -// Because the two eye matrices share the same address, only four -// matrix objects are needed for the five displays: -#define MATRIX_EYES 0 -#define MATRIX_MOUTH_LEFT 1 -#define MATRIX_MOUTH_MIDDLE 2 -#define MATRIX_MOUTH_RIGHT 3 -Adafruit_8x8matrix matrix[4] = { // Array of Adafruit_8x8matrix objects - Adafruit_8x8matrix(), Adafruit_8x8matrix(), - Adafruit_8x8matrix(), Adafruit_8x8matrix() }; - -// Rather than assigning matrix addresses sequentially in a loop, each -// has a spot in this array. This makes it easier if you inadvertently -// install one or more matrices in the wrong physical position -- -// re-order the addresses in this table and you can still refer to -// matrices by index above, no other code or wiring needs to change. -static const uint8_t PROGMEM matrixAddr[] = { 0x70, 0x71, 0x72, 0x73 }; - -static const uint8_t PROGMEM // Bitmaps are stored in program memory - blinkImg[][8] = { // Eye animation frames - { B00111100, // Fully open eye - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B01111110, - B11111111, - B11111111, - B11111111, - B11111111, - B01111110, - B00111100 }, - { B00000000, - B00000000, - B00111100, - B11111111, - B11111111, - B11111111, - B00111100, - B00000000 }, - { B00000000, - B00000000, - B00000000, - B00111100, - B11111111, - B01111110, - B00011000, - B00000000 }, - { B00000000, // Fully closed eye - B00000000, - B00000000, - B00000000, - B10000001, - B01111110, - B00000000, - B00000000 } }, - mouthImg[][24] = { // Mouth animation frames - { B00000000, B00000000, B00000000, // Mouth position A - B00000000, B00000000, B00000000, - B01111111, B11111111, B11111110, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position B - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00000111, B00000000, B11100000, - B00000000, B11111111, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position C - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00001000, B00000000, B00010000, - B00000110, B00000000, B01100000, - B00000001, B11000011, B10000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position D - B00000000, B00000000, B00000000, - B00111111, B11111111, B11111100, - B00100000, B00000000, B00000100, - B00010000, B00000000, B00001000, - B00001100, B00000000, B00110000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000 }, - { B00000000, B00000000, B00000000, // Mouth position E - B00000000, B00111100, B00000000, - B00011111, B11000011, B11111000, - B00000011, B10000001, B11000000, - B00000000, B01111110, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 }, - { B00000000, B00111100, B00000000, // Mouth position F - B00000000, B11000011, B00000000, - B00001111, B00000000, B11110000, - B00000001, B00000000, B10000000, - B00000000, B11000011, B00000000, - B00000000, B00111100, B00000000, - B00000000, B00000000, B00000000, - B00000000, B00000000, B00000000 } }; - -// Animation sequences corresponding to each WAV. First number in -// each pair is a mouth bitmap index. Second number is the hold -// time (in frames). 255 marks end of list. -// There is no 'magic' here, the software is NOT deriving mouth -// position from the sound...the tables were determined by hand, -// just as animators do it. Further explanation here: -// http://www.idleworm.com/how/anm/03t/talk1.shtml - -static const uint8_t PROGMEM - seq1[] = { 0, 2, 2, 5, 5, 3, 3, 7, // "Beware, I live!" - 4, 5, 3, 4, 2, 5, 4, 3, - 3, 4, 1, 5, 3, 5, 255 }, - seq2[] = { 0, 1, 3, 5, 1, 5, 4, 2, // "I hunger!" - 3, 2, 1, 2, 4, 4, 1, 3, - 4, 2, 255 }, - seq3[] = { 0, 1, 1, 2, 3, 6, 2, 5, // "Run, coward!" - 0, 1, 4, 4, 5, 2, 1, 5, - 3, 6, 1, 4, 255 }; -static const uint8_t * const anim[] = { seq1, seq2, seq3 }; - -const uint8_t - blinkIndex[] PROGMEM = { 1, 2, 3, 4, 3, 2, 1 }; // Blink bitmap sequence -uint8_t - blinkCountdown = 100, // Countdown to next blink (in frames) - gazeCountdown = 75, // Countdown to next eye movement - gazeFrames = 50, // Duration of eye movement (smaller = faster) - mouthPos = 0, // Current image number for mouth - mouthCountdown = 10, // Countdown to next mouth change - newPos = 255, // New mouth position for current frame - *seq, // Animation sequence currently being played back - idx, // Current array index within animation sequence - prevBtn = 99, // Button # pressed on last loop() iteration - btnCount = 0; // Number of iterations same button has been held -int8_t - eyeX = 3, eyeY = 3, // Current eye position - newX = 3, newY = 3, // Next eye position - dX = 0, dY = 0; // Distance from prior to new position - -void setup() { - - Serial.begin(9600); - - Serial.println(F("WAV face")); - - if(!card.init()) Serial.println(F("Card init. failed!")); - if(!vol.init(card)) Serial.println(F("No partition!")); - if(!root.openRoot(vol)) Serial.println(F("Couldn't open dir")); - Serial.println(F("Files found:")); - root.ls(); - - // Seed random number generator from an unused analog input: - randomSeed(analogRead(A0)); - - // Initialize each matrix object: - for(uint8_t i=0; i<4; i++) { - matrix[i].begin(pgm_read_byte(&matrixAddr[i])); - // If using 'small' (1.2") displays vs. 'mini' (0.8"), enable this: - // matrix[i].setRotation(3); - } - - // Enable pull-up resistors on three button inputs. - // Other end of each button then connects to GND. - for(uint8_t i=6; i<=8; i++) { - pinMode(i, INPUT); - digitalWrite(i, HIGH); // Enable pullup - } -} - -void loop() { - - uint8_t i; - - // Draw eyeball in current state of blinkyness (no pupil). - matrix[MATRIX_EYES].clear(); - matrix[MATRIX_EYES].drawBitmap(0, 0, - blinkImg[ - (blinkCountdown < sizeof(blinkIndex)) ? // Currently blinking? - pgm_read_byte(&blinkIndex[blinkCountdown]) : // Yes, look up bitmap # - 0 // No, show bitmap 0 - ], 8, 8, LED_ON); - // Decrement blink counter. At end, set random time for next blink. - if(--blinkCountdown == 0) blinkCountdown = random(5, 180); - - if(--gazeCountdown <= gazeFrames) { - // Eyes are in motion - draw pupil at interim position - matrix[MATRIX_EYES].fillRect( - newX - (dX * gazeCountdown / gazeFrames), - newY - (dY * gazeCountdown / gazeFrames), - 2, 2, LED_OFF); - if(gazeCountdown == 0) { // Last frame? - eyeX = newX; eyeY = newY; // Yes. What's new is old, then... - do { // Pick random positions until one is within the eye circle - newX = random(7); newY = random(7); - dX = newX - 3; dY = newY - 3; - } while((dX * dX + dY * dY) >= 10); // Thank you Pythagoras - dX = newX - eyeX; // Horizontal distance to move - dY = newY - eyeY; // Vertical distance to move - gazeFrames = random(3, 15); // Duration of eye movement - gazeCountdown = random(gazeFrames, 120); // Count to end of next movement - } - } else { - // Not in motion yet -- draw pupil at current static position - matrix[MATRIX_EYES].fillRect(eyeX, eyeY, 2, 2, LED_OFF); - } - - // Scan buttons 6, 7, 8 looking for first button pressed... - for(i=0; (i<3) && (digitalRead(i+6) == HIGH); i++); - - if(i < 3) { // Anything pressed? Yes! - if(i == prevBtn) { // Same as last time we checked? Good! - if(++btnCount == 3) { // 3 passes to 'debounce' button input - playfile((char *)pgm_read_word(&wavname[i])); // Start WAV - // Look up animation sequence # corresponding to this WAV... - seq = (uint8_t *)pgm_read_word(&anim[i]); - idx = 0; // Begin at first byte of data - newPos = pgm_read_byte(&seq[idx++]); // Initial mouth pos - mouthCountdown = pgm_read_byte(&seq[idx++]); // Hold time for pos - } - } else btnCount = 0; // Different button than before - start count over - prevBtn = i; - } else prevBtn = 99; // No buttons pressed - - if(newPos != 255) { // Is the mouth in motion? - if(--mouthCountdown == 0) { // Count down frames to next position - newPos = pgm_read_byte(&seq[idx++]); // New mouth position - if(newPos == 255) { // End of list? - mouthPos = 0; // Yes, set mouth to neutral position - } else { - mouthPos = newPos; // Set mouth to new position - mouthCountdown = pgm_read_byte(&seq[idx++]); // Read hold time - } - } - } else mouthPos = 0; // Mouth not in motion -- set to neutral position - - drawMouth(mouthImg[mouthPos]); - - // Refresh all matrices in one quick pass - for(uint8_t i=0; i<4; i++) matrix[i].writeDisplay(); - - delay(20); -} - -// Draw mouth image across three adjacent displays -void drawMouth(const uint8_t *img) { - for(uint8_t i=0; i<3; i++) { - matrix[MATRIX_MOUTH_LEFT + i].clear(); - matrix[MATRIX_MOUTH_LEFT + i].drawBitmap(i * -8, 0, img, 24, 8, LED_ON); - } -} - -// Open and start playing a WAV file -void playfile(const char *name) { - char filename[13]; // 8.3+NUL - - if(wave.isplaying) wave.stop(); // Stop any currently-playing WAV - - strcpy_P(filename, name); // Copy name out of PROGMEM into RAM - - if(!file.open(root, filename)) { - Serial.print(F("Couldn't open file ")); - Serial.println(filename); - return; - } - if(!wave.create(file)) { - Serial.println(F("Not a valid WAV")); - return; - } - wave.play(); -} - diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav deleted file mode 100644 index f27bd6f3bd914634ace3182349ce404c713cfdb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20802 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

MPVIBi>ZPEZ6y{NWPHD)}|8P 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 diff --git a/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav b/lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav deleted file mode 100644 index babb864ecf9412bb83e60897d43a1afb59a19db9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16096 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 AIRF3v diff --git a/lib/Adafruit_LED_Backpack-1.1.6/library.properties b/lib/Adafruit_LED_Backpack-1.1.6/library.properties deleted file mode 100644 index e04636907..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Adafruit LED Backpack Library -version=1.1.6 -author=Adafruit -maintainer=Adafruit -sentence=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks -paragraph=Adafruit LED Backpack Library for our 8x8 matrix and 7-segment LED backpacks -category=Display -url=https://github.com/adafruit/Adafruit-LED-Backpack-Library -architectures=* diff --git a/lib/Adafruit_LED_Backpack-1.1.6/license.txt b/lib/Adafruit_LED_Backpack-1.1.6/license.txt deleted file mode 100644 index fee1e9c31..000000000 --- a/lib/Adafruit_LED_Backpack-1.1.6/license.txt +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2012 Adafruit Industries - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index f0e26146f..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,46 +0,0 @@ -Thank you for opening an issue on an Adafruit Arduino library repository. To -improve the speed of resolution please review the following guidelines and -common troubleshooting steps below before creating the issue: - -- **Do not use GitHub issues for troubleshooting projects and issues.** Instead use - the forums at http://forums.adafruit.com to ask questions and troubleshoot why - something isn't working as expected. In many cases the problem is a common issue - that you will more quickly receive help from the forum community. GitHub issues - are meant for known defects in the code. If you don't know if there is a defect - in the code then start with troubleshooting on the forum first. - -- **If following a tutorial or guide be sure you didn't miss a step.** Carefully - check all of the steps and commands to run have been followed. Consult the - forum if you're unsure or have questions about steps in a guide/tutorial. - -- **For Arduino projects check these very common issues to ensure they don't apply**: - - - For uploading sketches or communicating with the board make sure you're using - a **USB data cable** and **not** a **USB charge-only cable**. It is sometimes - very hard to tell the difference between a data and charge cable! Try using the - cable with other devices or swapping to another cable to confirm it is not - the problem. - - - **Be sure you are supplying adequate power to the board.** Check the specs of - your board and plug in an external power supply. In many cases just - plugging a board into your computer is not enough to power it and other - peripherals. - - - **Double check all soldering joints and connections.** Flakey connections - cause many mysterious problems. See the [guide to excellent soldering](https://learn.adafruit.com/adafruit-guide-excellent-soldering/tools) for examples of good solder joints. - - - **Ensure you are using an official Arduino or Adafruit board.** We can't - guarantee a clone board will have the same functionality and work as expected - with this code and don't support them. - -If you're sure this issue is a defect in the code and checked the steps above -please fill in the following fields to provide enough troubleshooting information. -You may delete the guideline and text above to just leave the following details: - -- Arduino board: **INSERT ARDUINO BOARD NAME/TYPE HERE** - -- Arduino IDE version (found in Arduino -> About Arduino menu): **INSERT ARDUINO - VERSION HERE** - -- List the steps to reproduce the problem below (if possible attach a sketch or - copy the sketch code in too): **LIST REPRO STEPS BELOW** diff --git a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md b/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 7b641eb86..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,26 +0,0 @@ -Thank you for creating a pull request to contribute to Adafruit's GitHub code! -Before you open the request please review the following guidelines and tips to -help it be more easily integrated: - -- **Describe the scope of your change--i.e. what the change does and what parts - of the code were modified.** This will help us understand any risks of integrating - the code. - -- **Describe any known limitations with your change.** For example if the change - doesn't apply to a supported platform of the library please mention it. - -- **Please run any tests or examples that can exercise your modified code.** We - strive to not break users of the code and running tests/examples helps with this - process. - -Thank you again for contributing! We will try to test and integrate the change -as soon as we can, but be aware we have many GitHub repositories to manage and -can't immediately respond to every request. There is no need to bump or check in -on a pull request (it will clutter the discussion of the request). - -Also don't be worried if the request is closed or not integrated--sometimes the -priorities of Adafruit's GitHub code (education, ease of use) might not match the -priorities of the pull request. Don't fret, the open source community thrives on -forks and GitHub makes it easy to keep your changes in a forked repo. - -After reviewing the guidelines above you can delete this text from the pull request. diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp deleted file mode 100644 index 570a33584..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp +++ /dev/null @@ -1,729 +0,0 @@ -/********************************************************************* -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen below must be included in any redistribution -*********************************************************************/ - -#ifdef __AVR__ - #include -#elif defined(ESP8266) || defined(ESP32) - #include -#else - #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) -#endif - -#if !defined(__ARM_ARCH) && !defined(ENERGIA) && !defined(ESP8266) && !defined(ESP32) && !defined(__arc__) - #include -#endif - -#include - -#include -#include -#include "Adafruit_GFX.h" -#include "Adafruit_SSD1306.h" - -// the memory buffer for the LCD - -static uint8_t buffer[SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH / 8] = { -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x80, 0x80, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xF8, 0xE0, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, -0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0xFF, -#if (SSD1306_LCDHEIGHT * SSD1306_LCDWIDTH > 96*16) -0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, -0x80, 0xFF, 0xFF, 0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x8C, 0x8E, 0x84, 0x00, 0x00, 0x80, 0xF8, -0xF8, 0xF8, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xE0, 0xE0, 0xC0, 0x80, -0x00, 0xE0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xC7, 0x01, 0x01, -0x01, 0x01, 0x83, 0xFF, 0xFF, 0x00, 0x00, 0x7C, 0xFE, 0xC7, 0x01, 0x01, 0x01, 0x01, 0x83, 0xFF, -0xFF, 0xFF, 0x00, 0x38, 0xFE, 0xC7, 0x83, 0x01, 0x01, 0x01, 0x83, 0xC7, 0xFF, 0xFF, 0x00, 0x00, -0x01, 0xFF, 0xFF, 0x01, 0x01, 0x00, 0xFF, 0xFF, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x7F, 0xFF, -0x80, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x01, 0xFF, -0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x03, 0x0F, 0x3F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xC7, 0xC7, 0x8F, -0x8F, 0x9F, 0xBF, 0xFF, 0xFF, 0xC3, 0xC0, 0xF0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xFC, 0xFC, -0xFC, 0xFC, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xF0, 0xF0, 0xE0, 0xC0, 0x00, 0x01, 0x03, 0x03, 0x03, -0x03, 0x03, 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, -0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x00, 0x00, -0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, -0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x03, -0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -#if (SSD1306_LCDHEIGHT == 64) -0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x1F, 0x0F, -0x87, 0xC7, 0xF7, 0xFF, 0xFF, 0x1F, 0x1F, 0x3D, 0xFC, 0xF8, 0xF8, 0xF8, 0xF8, 0x7C, 0x7D, 0xFF, -0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x0F, 0x07, 0x00, 0x30, 0x30, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0xC0, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x3F, 0x1F, -0x0F, 0x07, 0x1F, 0x7F, 0xFF, 0xFF, 0xF8, 0xF8, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xF8, 0xE0, -0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, -0x00, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x0E, 0xFC, 0xF8, 0x00, 0x00, 0xF0, 0xF8, 0x1C, 0x0E, -0x06, 0x06, 0x06, 0x0C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0x00, 0x00, 0xFC, -0xFE, 0xFC, 0x00, 0x18, 0x3C, 0x7E, 0x66, 0xE6, 0xCE, 0x84, 0x00, 0x00, 0x06, 0xFF, 0xFF, 0x06, -0x06, 0xFC, 0xFE, 0xFC, 0x0C, 0x06, 0x06, 0x06, 0x00, 0x00, 0xFE, 0xFE, 0x00, 0x00, 0xC0, 0xF8, -0xFC, 0x4E, 0x46, 0x46, 0x46, 0x4E, 0x7C, 0x78, 0x40, 0x18, 0x3C, 0x76, 0xE6, 0xCE, 0xCC, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x0F, 0x03, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, -0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x03, 0x07, 0x0E, 0x0C, -0x18, 0x18, 0x0C, 0x06, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x01, 0x0F, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, -0x07, 0x01, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 0x0F, 0x07, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, -0x00, 0x0F, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x0F, 0x00, 0x00, 0x00, 0x07, -0x07, 0x0C, 0x0C, 0x18, 0x1C, 0x0C, 0x06, 0x06, 0x00, 0x04, 0x0E, 0x0C, 0x18, 0x0C, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif -#endif -}; - -#define ssd1306_swap(a, b) { int16_t t = a; a = b; b = t; } - -// the most basic function, set a single pixel -void Adafruit_SSD1306::drawPixel(int16_t x, int16_t y, uint16_t color) { - if ((x < 0) || (x >= width()) || (y < 0) || (y >= height())) - return; - - // check rotation, move pixel around if necessary - switch (getRotation()) { - case 1: - ssd1306_swap(x, y); - x = WIDTH - x - 1; - break; - case 2: - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - break; - case 3: - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - break; - } - - // x is which column - switch (color) - { - case WHITE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] |= (1 << (y&7)); break; - case BLACK: buffer[x+ (y/8)*SSD1306_LCDWIDTH] &= ~(1 << (y&7)); break; - case INVERSE: buffer[x+ (y/8)*SSD1306_LCDWIDTH] ^= (1 << (y&7)); break; - } - -} - -Adafruit_SSD1306::Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - cs = CS; - rst = RST; - dc = DC; - sclk = SCLK; - sid = SID; - hwSPI = false; -} - -// constructor for hardware SPI - we indicate DataCommand, ChipSelect, Reset -Adafruit_SSD1306::Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS) : Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - dc = DC; - rst = RST; - cs = CS; - hwSPI = true; -} - -// initializer for I2C - we only indicate the reset pin! -Adafruit_SSD1306::Adafruit_SSD1306(int8_t reset) : -Adafruit_GFX(SSD1306_LCDWIDTH, SSD1306_LCDHEIGHT) { - sclk = dc = cs = sid = -1; - rst = reset; -} - - -void Adafruit_SSD1306::begin(uint8_t vccstate, uint8_t i2caddr, bool reset) { - _vccstate = vccstate; - _i2caddr = i2caddr; - - // set pin directions - if (sid != -1){ - pinMode(dc, OUTPUT); - pinMode(cs, OUTPUT); -#ifdef HAVE_PORTREG - csport = portOutputRegister(digitalPinToPort(cs)); - cspinmask = digitalPinToBitMask(cs); - dcport = portOutputRegister(digitalPinToPort(dc)); - dcpinmask = digitalPinToBitMask(dc); -#endif - if (!hwSPI){ - // set pins for software-SPI - pinMode(sid, OUTPUT); - pinMode(sclk, OUTPUT); -#ifdef HAVE_PORTREG - clkport = portOutputRegister(digitalPinToPort(sclk)); - clkpinmask = digitalPinToBitMask(sclk); - mosiport = portOutputRegister(digitalPinToPort(sid)); - mosipinmask = digitalPinToBitMask(sid); -#endif - } - if (hwSPI){ - SPI.begin(); -#ifdef SPI_HAS_TRANSACTION - SPI.beginTransaction(SPISettings(8000000, MSBFIRST, SPI_MODE0)); -#else - SPI.setClockDivider (4); -#endif - } - } - else - { - // I2C Init - Wire.begin(); -#ifdef __SAM3X8E__ - // Force 400 KHz I2C, rawr! (Uses pins 20, 21 for SDA, SCL) - TWI1->TWI_CWGR = 0; - TWI1->TWI_CWGR = ((VARIANT_MCK / (2 * 400000)) - 4) * 0x101; -#endif - } - if ((reset) && (rst >= 0)) { - // Setup reset pin direction (used by both SPI and I2C) - pinMode(rst, OUTPUT); - digitalWrite(rst, HIGH); - // VDD (3.3V) goes high at start, lets just chill for a ms - delay(1); - // bring reset low - digitalWrite(rst, LOW); - // wait 10ms - delay(10); - // bring out of reset - digitalWrite(rst, HIGH); - // turn on VCC (9V?) - } - - // Init sequence - ssd1306_command(SSD1306_DISPLAYOFF); // 0xAE - ssd1306_command(SSD1306_SETDISPLAYCLOCKDIV); // 0xD5 - ssd1306_command(0x80); // the suggested ratio 0x80 - - ssd1306_command(SSD1306_SETMULTIPLEX); // 0xA8 - ssd1306_command(SSD1306_LCDHEIGHT - 1); - - ssd1306_command(SSD1306_SETDISPLAYOFFSET); // 0xD3 - ssd1306_command(0x0); // no offset - ssd1306_command(SSD1306_SETSTARTLINE | 0x0); // line #0 - ssd1306_command(SSD1306_CHARGEPUMP); // 0x8D - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x10); } - else - { ssd1306_command(0x14); } - ssd1306_command(SSD1306_MEMORYMODE); // 0x20 - ssd1306_command(0x00); // 0x0 act like ks0108 - ssd1306_command(SSD1306_SEGREMAP | 0x1); - ssd1306_command(SSD1306_COMSCANDEC); - - #if defined SSD1306_128_32 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x02); - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - ssd1306_command(0x8F); - -#elif defined SSD1306_128_64 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x12); - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x9F); } - else - { ssd1306_command(0xCF); } - -#elif defined SSD1306_96_16 - ssd1306_command(SSD1306_SETCOMPINS); // 0xDA - ssd1306_command(0x2); //ada x12 - ssd1306_command(SSD1306_SETCONTRAST); // 0x81 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x10); } - else - { ssd1306_command(0xAF); } - -#endif - - ssd1306_command(SSD1306_SETPRECHARGE); // 0xd9 - if (vccstate == SSD1306_EXTERNALVCC) - { ssd1306_command(0x22); } - else - { ssd1306_command(0xF1); } - ssd1306_command(SSD1306_SETVCOMDETECT); // 0xDB - ssd1306_command(0x40); - ssd1306_command(SSD1306_DISPLAYALLON_RESUME); // 0xA4 - ssd1306_command(SSD1306_NORMALDISPLAY); // 0xA6 - - ssd1306_command(SSD1306_DEACTIVATE_SCROLL); - - ssd1306_command(SSD1306_DISPLAYON);//--turn on oled panel -} - - -void Adafruit_SSD1306::invertDisplay(uint8_t i) { - if (i) { - ssd1306_command(SSD1306_INVERTDISPLAY); - } else { - ssd1306_command(SSD1306_NORMALDISPLAY); - } -} - -void Adafruit_SSD1306::ssd1306_command(uint8_t c) { - if (sid != -1) - { - // SPI -#ifdef HAVE_PORTREG - *csport |= cspinmask; - *dcport &= ~dcpinmask; - *csport &= ~cspinmask; -#else - digitalWrite(cs, HIGH); - digitalWrite(dc, LOW); - digitalWrite(cs, LOW); -#endif - fastSPIwrite(c); -#ifdef HAVE_PORTREG - *csport |= cspinmask; -#else - digitalWrite(cs, HIGH); -#endif - } - else - { - // I2C - uint8_t control = 0x00; // Co = 0, D/C = 0 - Wire.beginTransmission(_i2caddr); - Wire.write(control); - Wire.write(c); - Wire.endTransmission(); - } -} - -// startscrollright -// Activate a right handed scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrollright(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_RIGHT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X00); - ssd1306_command(0XFF); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrollleft -// Activate a right handed scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrollleft(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_LEFT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X00); - ssd1306_command(0XFF); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrolldiagright -// Activate a diagonal scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrolldiagright(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); - ssd1306_command(0X00); - ssd1306_command(SSD1306_LCDHEIGHT); - ssd1306_command(SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X01); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -// startscrolldiagleft -// Activate a diagonal scroll for rows start through stop -// Hint, the display is 16 rows tall. To scroll the whole display, run: -// display.scrollright(0x00, 0x0F) -void Adafruit_SSD1306::startscrolldiagleft(uint8_t start, uint8_t stop){ - ssd1306_command(SSD1306_SET_VERTICAL_SCROLL_AREA); - ssd1306_command(0X00); - ssd1306_command(SSD1306_LCDHEIGHT); - ssd1306_command(SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL); - ssd1306_command(0X00); - ssd1306_command(start); - ssd1306_command(0X00); - ssd1306_command(stop); - ssd1306_command(0X01); - ssd1306_command(SSD1306_ACTIVATE_SCROLL); -} - -void Adafruit_SSD1306::stopscroll(void){ - ssd1306_command(SSD1306_DEACTIVATE_SCROLL); -} - -// Dim the display -// dim = true: display is dimmed -// dim = false: display is normal -void Adafruit_SSD1306::dim(boolean dim) { - uint8_t contrast; - - if (dim) { - contrast = 0; // Dimmed display - } else { - if (_vccstate == SSD1306_EXTERNALVCC) { - contrast = 0x9F; - } else { - contrast = 0xCF; - } - } - // the range of contrast to too small to be really useful - // it is useful to dim the display - ssd1306_command(SSD1306_SETCONTRAST); - ssd1306_command(contrast); -} - -void Adafruit_SSD1306::display(void) { - ssd1306_command(SSD1306_COLUMNADDR); - ssd1306_command(0); // Column start address (0 = reset) - ssd1306_command(SSD1306_LCDWIDTH-1); // Column end address (127 = reset) - - ssd1306_command(SSD1306_PAGEADDR); - ssd1306_command(0); // Page start address (0 = reset) - #if SSD1306_LCDHEIGHT == 64 - ssd1306_command(7); // Page end address - #endif - #if SSD1306_LCDHEIGHT == 32 - ssd1306_command(3); // Page end address - #endif - #if SSD1306_LCDHEIGHT == 16 - ssd1306_command(1); // Page end address - #endif - - if (sid != -1) - { - // SPI -#ifdef HAVE_PORTREG - *csport |= cspinmask; - *dcport |= dcpinmask; - *csport &= ~cspinmask; -#else - digitalWrite(cs, HIGH); - digitalWrite(dc, HIGH); - digitalWrite(cs, LOW); -#endif - - for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { - fastSPIwrite(buffer[i]); - } -#ifdef HAVE_PORTREG - *csport |= cspinmask; -#else - digitalWrite(cs, HIGH); -#endif - } - else - { - // save I2C bitrate -#ifdef TWBR - uint8_t twbrbackup = TWBR; - TWBR = 12; // upgrade to 400KHz! -#endif - - //Serial.println(TWBR, DEC); - //Serial.println(TWSR & 0x3, DEC); - - // I2C - for (uint16_t i=0; i<(SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8); i++) { - // send a bunch of data in one xmission - Wire.beginTransmission(_i2caddr); - WIRE_WRITE(0x40); - for (uint8_t x=0; x<16; x++) { - WIRE_WRITE(buffer[i]); - i++; - } - i--; - Wire.endTransmission(); - } -#ifdef TWBR - TWBR = twbrbackup; -#endif - } -} - -// clear everything -void Adafruit_SSD1306::clearDisplay(void) { - memset(buffer, 0, (SSD1306_LCDWIDTH*SSD1306_LCDHEIGHT/8)); -} - - -inline void Adafruit_SSD1306::fastSPIwrite(uint8_t d) { - - if(hwSPI) { - (void)SPI.transfer(d); - } else { - for(uint8_t bit = 0x80; bit; bit >>= 1) { -#ifdef HAVE_PORTREG - *clkport &= ~clkpinmask; - if(d & bit) *mosiport |= mosipinmask; - else *mosiport &= ~mosipinmask; - *clkport |= clkpinmask; -#else - digitalWrite(sclk, LOW); - if(d & bit) digitalWrite(sid, HIGH); - else digitalWrite(sid, LOW); - digitalWrite(sclk, HIGH); -#endif - } - } -} - -void Adafruit_SSD1306::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) { - boolean bSwap = false; - switch(rotation) { - case 0: - // 0 degree rotation, do nothing - break; - case 1: - // 90 degree rotation, swap x & y for rotation, then invert x - bSwap = true; - ssd1306_swap(x, y); - x = WIDTH - x - 1; - break; - case 2: - // 180 degree rotation, invert x and y - then shift y around for height. - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - x -= (w-1); - break; - case 3: - // 270 degree rotation, swap x & y for rotation, then invert y and adjust y for w (not to become h) - bSwap = true; - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - y -= (w-1); - break; - } - - if(bSwap) { - drawFastVLineInternal(x, y, w, color); - } else { - drawFastHLineInternal(x, y, w, color); - } -} - -void Adafruit_SSD1306::drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) { - // Do bounds/limit checks - if(y < 0 || y >= HEIGHT) { return; } - - // make sure we don't try to draw below 0 - if(x < 0) { - w += x; - x = 0; - } - - // make sure we don't go off the edge of the display - if( (x + w) > WIDTH) { - w = (WIDTH - x); - } - - // if our width is now negative, punt - if(w <= 0) { return; } - - // set up the pointer for movement through the buffer - register uint8_t *pBuf = buffer; - // adjust the buffer pointer for the current row - pBuf += ((y/8) * SSD1306_LCDWIDTH); - // and offset x columns in - pBuf += x; - - register uint8_t mask = 1 << (y&7); - - switch (color) - { - case WHITE: while(w--) { *pBuf++ |= mask; }; break; - case BLACK: mask = ~mask; while(w--) { *pBuf++ &= mask; }; break; - case INVERSE: while(w--) { *pBuf++ ^= mask; }; break; - } -} - -void Adafruit_SSD1306::drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color) { - bool bSwap = false; - switch(rotation) { - case 0: - break; - case 1: - // 90 degree rotation, swap x & y for rotation, then invert x and adjust x for h (now to become w) - bSwap = true; - ssd1306_swap(x, y); - x = WIDTH - x - 1; - x -= (h-1); - break; - case 2: - // 180 degree rotation, invert x and y - then shift y around for height. - x = WIDTH - x - 1; - y = HEIGHT - y - 1; - y -= (h-1); - break; - case 3: - // 270 degree rotation, swap x & y for rotation, then invert y - bSwap = true; - ssd1306_swap(x, y); - y = HEIGHT - y - 1; - break; - } - - if(bSwap) { - drawFastHLineInternal(x, y, h, color); - } else { - drawFastVLineInternal(x, y, h, color); - } -} - - -void Adafruit_SSD1306::drawFastVLineInternal(int16_t x, int16_t __y, int16_t __h, uint16_t color) { - - // do nothing if we're off the left or right side of the screen - if(x < 0 || x >= WIDTH) { return; } - - // make sure we don't try to draw below 0 - if(__y < 0) { - // __y is negative, this will subtract enough from __h to account for __y being 0 - __h += __y; - __y = 0; - - } - - // make sure we don't go past the height of the display - if( (__y + __h) > HEIGHT) { - __h = (HEIGHT - __y); - } - - // if our height is now negative, punt - if(__h <= 0) { - return; - } - - // this display doesn't need ints for coordinates, use local byte registers for faster juggling - register uint8_t y = __y; - register uint8_t h = __h; - - - // set up the pointer for fast movement through the buffer - register uint8_t *pBuf = buffer; - // adjust the buffer pointer for the current row - pBuf += ((y/8) * SSD1306_LCDWIDTH); - // and offset x columns in - pBuf += x; - - // do the first partial byte, if necessary - this requires some masking - register uint8_t mod = (y&7); - if(mod) { - // mask off the high n bits we want to set - mod = 8-mod; - - // note - lookup table results in a nearly 10% performance improvement in fill* functions - // register uint8_t mask = ~(0xFF >> (mod)); - static uint8_t premask[8] = {0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC, 0xFE }; - register uint8_t mask = premask[mod]; - - // adjust the mask if we're not going to reach the end of this byte - if( h < mod) { - mask &= (0XFF >> (mod-h)); - } - - switch (color) - { - case WHITE: *pBuf |= mask; break; - case BLACK: *pBuf &= ~mask; break; - case INVERSE: *pBuf ^= mask; break; - } - - // fast exit if we're done here! - if(h= 8) { - if (color == INVERSE) { // separate copy of the code so we don't impact performance of the black/white write version with an extra comparison per loop - do { - *pBuf=~(*pBuf); - - // adjust the buffer forward 8 rows worth of data - pBuf += SSD1306_LCDWIDTH; - - // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) - h -= 8; - } while(h >= 8); - } - else { - // store a local value to work with - register uint8_t val = (color == WHITE) ? 255 : 0; - - do { - // write our value in - *pBuf = val; - - // adjust the buffer forward 8 rows worth of data - pBuf += SSD1306_LCDWIDTH; - - // adjust h & y (there's got to be a faster way for me to do this, but this should still help a fair bit for now) - h -= 8; - } while(h >= 8); - } - } - - // now do the final partial byte, if necessary - if(h) { - mod = h & 7; - // this time we want to mask the low bits of the byte, vs the high bits we did above - // register uint8_t mask = (1 << mod) - 1; - // note - lookup table results in a nearly 10% performance improvement in fill* functions - static uint8_t postmask[8] = {0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F }; - register uint8_t mask = postmask[mod]; - switch (color) - { - case WHITE: *pBuf |= mask; break; - case BLACK: *pBuf &= ~mask; break; - case INVERSE: *pBuf ^= mask; break; - } - } -} diff --git a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h b/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h deleted file mode 100644 index 1d43dfddf..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h +++ /dev/null @@ -1,186 +0,0 @@ -/********************************************************************* -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ -#ifndef _Adafruit_SSD1306_H_ -#define _Adafruit_SSD1306_H_ - -#if ARDUINO >= 100 - #include "Arduino.h" - #define WIRE_WRITE Wire.write -#else - #include "WProgram.h" - #define WIRE_WRITE Wire.send -#endif - -#if defined(__SAM3X8E__) - typedef volatile RwReg PortReg; - typedef uint32_t PortMask; - #define HAVE_PORTREG -#elif defined(ARDUINO_ARCH_SAMD) -// not supported -#elif defined(ESP8266) || defined(ESP32) || defined(ARDUINO_STM32_FEATHER) || defined(__arc__) - typedef volatile uint32_t PortReg; - typedef uint32_t PortMask; -#elif defined(__AVR__) - typedef volatile uint8_t PortReg; - typedef uint8_t PortMask; - #define HAVE_PORTREG -#else - // chances are its 32 bit so assume that - typedef volatile uint32_t PortReg; - typedef uint32_t PortMask; -#endif - -#include -#include - -#define BLACK 0 -#define WHITE 1 -#define INVERSE 2 - -#define SSD1306_I2C_ADDRESS 0x3C // 011110+SA0+RW - 0x3C or 0x3D -// Address for 128x32 is 0x3C -// Address for 128x64 is 0x3D (default) or 0x3C (if SA0 is grounded) - -/*========================================================================= - SSD1306 Displays - ----------------------------------------------------------------------- - The driver is used in multiple displays (128x64, 128x32, etc.). - Select the appropriate display below to create an appropriately - sized framebuffer, etc. - - SSD1306_128_64 128x64 pixel display - - SSD1306_128_32 128x32 pixel display - - SSD1306_96_16 - - -----------------------------------------------------------------------*/ - #define SSD1306_128_64 -// #define SSD1306_128_32 -// #define SSD1306_96_16 -/*=========================================================================*/ - -#if defined SSD1306_128_64 && defined SSD1306_128_32 - #error "Only one SSD1306 display can be specified at once in SSD1306.h" -#endif -#if !defined SSD1306_128_64 && !defined SSD1306_128_32 && !defined SSD1306_96_16 - #error "At least one SSD1306 display must be specified in SSD1306.h" -#endif - -#if defined SSD1306_128_64 - #define SSD1306_LCDWIDTH 128 - #define SSD1306_LCDHEIGHT 64 -#endif -#if defined SSD1306_128_32 - #define SSD1306_LCDWIDTH 128 - #define SSD1306_LCDHEIGHT 32 -#endif -#if defined SSD1306_96_16 - #define SSD1306_LCDWIDTH 96 - #define SSD1306_LCDHEIGHT 16 -#endif - -#define SSD1306_SETCONTRAST 0x81 -#define SSD1306_DISPLAYALLON_RESUME 0xA4 -#define SSD1306_DISPLAYALLON 0xA5 -#define SSD1306_NORMALDISPLAY 0xA6 -#define SSD1306_INVERTDISPLAY 0xA7 -#define SSD1306_DISPLAYOFF 0xAE -#define SSD1306_DISPLAYON 0xAF - -#define SSD1306_SETDISPLAYOFFSET 0xD3 -#define SSD1306_SETCOMPINS 0xDA - -#define SSD1306_SETVCOMDETECT 0xDB - -#define SSD1306_SETDISPLAYCLOCKDIV 0xD5 -#define SSD1306_SETPRECHARGE 0xD9 - -#define SSD1306_SETMULTIPLEX 0xA8 - -#define SSD1306_SETLOWCOLUMN 0x00 -#define SSD1306_SETHIGHCOLUMN 0x10 - -#define SSD1306_SETSTARTLINE 0x40 - -#define SSD1306_MEMORYMODE 0x20 -#define SSD1306_COLUMNADDR 0x21 -#define SSD1306_PAGEADDR 0x22 - -#define SSD1306_COMSCANINC 0xC0 -#define SSD1306_COMSCANDEC 0xC8 - -#define SSD1306_SEGREMAP 0xA0 - -#define SSD1306_CHARGEPUMP 0x8D - -#define SSD1306_EXTERNALVCC 0x1 -#define SSD1306_SWITCHCAPVCC 0x2 - -// Scrolling #defines -#define SSD1306_ACTIVATE_SCROLL 0x2F -#define SSD1306_DEACTIVATE_SCROLL 0x2E -#define SSD1306_SET_VERTICAL_SCROLL_AREA 0xA3 -#define SSD1306_RIGHT_HORIZONTAL_SCROLL 0x26 -#define SSD1306_LEFT_HORIZONTAL_SCROLL 0x27 -#define SSD1306_VERTICAL_AND_RIGHT_HORIZONTAL_SCROLL 0x29 -#define SSD1306_VERTICAL_AND_LEFT_HORIZONTAL_SCROLL 0x2A - -class Adafruit_SSD1306 : public Adafruit_GFX { - public: - Adafruit_SSD1306(int8_t SID, int8_t SCLK, int8_t DC, int8_t RST, int8_t CS); - Adafruit_SSD1306(int8_t DC, int8_t RST, int8_t CS); - Adafruit_SSD1306(int8_t RST = -1); - - void begin(uint8_t switchvcc = SSD1306_SWITCHCAPVCC, uint8_t i2caddr = SSD1306_I2C_ADDRESS, bool reset=true); - void ssd1306_command(uint8_t c); - - void clearDisplay(void); - void invertDisplay(uint8_t i); - void display(); - - void startscrollright(uint8_t start, uint8_t stop); - void startscrollleft(uint8_t start, uint8_t stop); - - void startscrolldiagright(uint8_t start, uint8_t stop); - void startscrolldiagleft(uint8_t start, uint8_t stop); - void stopscroll(void); - - void dim(boolean dim); - - void drawPixel(int16_t x, int16_t y, uint16_t color); - - virtual void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - virtual void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - - private: - int8_t _i2caddr, _vccstate, sid, sclk, dc, rst, cs; - void fastSPIwrite(uint8_t c); - - boolean hwSPI; -#ifdef HAVE_PORTREG - PortReg *mosiport, *clkport, *csport, *dcport; - PortMask mosipinmask, clkpinmask, cspinmask, dcpinmask; -#endif - - inline void drawFastVLineInternal(int16_t x, int16_t y, int16_t h, uint16_t color) __attribute__((always_inline)); - inline void drawFastHLineInternal(int16_t x, int16_t y, int16_t w, uint16_t color) __attribute__((always_inline)); - -}; - -#endif /* _Adafruit_SSD1306_H_ */ diff --git a/lib/Adafruit_SSD1306-1.1.2/README.md b/lib/Adafruit_SSD1306-1.1.2/README.md deleted file mode 100644 index d76bb285c..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# Adafruit_SSD1306 - - -## Compatibility - -MCU | Tested Works | Doesn't Work | Not Tested | Notes ------------------- | :----------: | :----------: | :---------: | ----- -Atmega328 @ 16MHz | X | | | -Atmega328 @ 12MHz | X | | | -Atmega32u4 @ 16MHz | X | | | -Atmega32u4 @ 8MHz | X | | | -ESP8266 | X | | | change OLED_RESET to different pin if using default I2C pins D4/D5. -Atmega2560 @ 16MHz | X | | | -ATSAM3X8E | X | | | -ATSAM21D | X | | | -ATtiny85 @ 16MHz | | X | | -ATtiny85 @ 8MHz | | X | | -Intel Curie @ 32MHz | | | X | -STM32F2 | | | X | - - * ATmega328 @ 16MHz : Arduino UNO, Adafruit Pro Trinket 5V, Adafruit Metro 328, Adafruit Metro Mini - * ATmega328 @ 12MHz : Adafruit Pro Trinket 3V - * ATmega32u4 @ 16MHz : Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.0 - * ATmega32u4 @ 8MHz : Adafruit Flora, Bluefruit Micro - * ESP8266 : Adafruit Huzzah - * ATmega2560 @ 16MHz : Arduino Mega - * ATSAM3X8E : Arduino Due - * ATSAM21D : Arduino Zero, M0 Pro - * ATtiny85 @ 16MHz : Adafruit Trinket 5V - * ATtiny85 @ 8MHz : Adafruit Gemma, Arduino Gemma, Adafruit Trinket 3V - - diff --git a/lib/Adafruit_SSD1306-1.1.2/README.txt b/lib/Adafruit_SSD1306-1.1.2/README.txt deleted file mode 100644 index 420cc153c..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/README.txt +++ /dev/null @@ -1,24 +0,0 @@ -This is a library for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -These displays use SPI to communicate, 4 or 5 pins are required to -interface - -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. -Scrolling code contributed by Michael Gregg -BSD license, check license.txt for more information -All text above must be included in any redistribution - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_SSD1306. Check that the Adafruit_SSD1306 folder contains Adafruit_SSD1306.cpp and Adafruit_SSD1306.h - -Place the Adafruit_SSD1306 library folder your /libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE. - -You will also have to download the Adafruit GFX Graphics core which does all the circles, text, rectangles, etc. You can get it from -https://github.com/adafruit/Adafruit-GFX-Library -and download/install that library as well \ No newline at end of file diff --git a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino b/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino deleted file mode 100644 index b3b8bfa9a..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino +++ /dev/null @@ -1,375 +0,0 @@ -/********************************************************************* -This is an example for our Monochrome OLEDs based on SSD1306 drivers - - Pick one up today in the adafruit shop! - ------> http://www.adafruit.com/category/63_98 - -This example is for a 128x32 size display using I2C to communicate -3 pins are required to interface (2 I2C and one reset) - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -#define OLED_RESET 4 -Adafruit_SSD1306 display(OLED_RESET); - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 32) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3C (for the 128x32) - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - delay(1); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); - delay(1); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - delay(1); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - delay(1); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x32 size display using SPI to communicate -4 or 5 pins are required to interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -// If using software SPI (the default case): -#define OLED_MOSI 9 -#define OLED_CLK 10 -#define OLED_DC 11 -#define OLED_CS 12 -#define OLED_RESET 13 -Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); - -/* Uncomment this block to use hardware SPI -#define OLED_DC 6 -#define OLED_CS 7 -#define OLED_RESET 8 -Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); -*/ - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 32) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC); - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x64 size display using I2C to communicate -3 pins are required to interface (2 I2C and one reset) - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -#define OLED_RESET 4 -Adafruit_SSD1306 display(OLED_RESET); - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 64) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC, 0x3D); // initialize with the I2C addr 0x3D (for the 128x64) - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - delay(1); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); - delay(1); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - delay(1); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - delay(1); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - delay(1); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i http://www.adafruit.com/category/63_98 - -This example is for a 128x64 size display using SPI to communicate -4 or 5 pins are required to interface - -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. -BSD license, check license.txt for more information -All text above, and the splash screen must be included in any redistribution -*********************************************************************/ - -#include -#include -#include -#include - -// If using software SPI (the default case): -#define OLED_MOSI 9 -#define OLED_CLK 10 -#define OLED_DC 11 -#define OLED_CS 12 -#define OLED_RESET 13 -Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); - -/* Uncomment this block to use hardware SPI -#define OLED_DC 6 -#define OLED_CS 7 -#define OLED_RESET 8 -Adafruit_SSD1306 display(OLED_DC, OLED_RESET, OLED_CS); -*/ - -#define NUMFLAKES 10 -#define XPOS 0 -#define YPOS 1 -#define DELTAY 2 - -#define LOGO16_GLCD_HEIGHT 16 -#define LOGO16_GLCD_WIDTH 16 -static const unsigned char PROGMEM logo16_glcd_bmp[] = -{ B00000000, B11000000, - B00000001, B11000000, - B00000001, B11000000, - B00000011, B11100000, - B11110011, B11100000, - B11111110, B11111000, - B01111110, B11111111, - B00110011, B10011111, - B00011111, B11111100, - B00001101, B01110000, - B00011011, B10100000, - B00111111, B11100000, - B00111111, B11110000, - B01111100, B11110000, - B01110000, B01110000, - B00000000, B00110000 }; - -#if (SSD1306_LCDHEIGHT != 64) -#error("Height incorrect, please fix Adafruit_SSD1306.h!"); -#endif - -void setup() { - Serial.begin(9600); - - // by default, we'll generate the high voltage from the 3.3v line internally! (neat!) - display.begin(SSD1306_SWITCHCAPVCC); - // init done - - // Show image buffer on the display hardware. - // Since the buffer is intialized with an Adafruit splashscreen - // internally, this will display the splashscreen. - display.display(); - delay(2000); - - // Clear the buffer. - display.clearDisplay(); - - // draw a single pixel - display.drawPixel(10, 10, WHITE); - // Show the display buffer on the hardware. - // NOTE: You _must_ call display after making any drawing commands - // to make them visible on the display hardware! - display.display(); - delay(2000); - display.clearDisplay(); - - // draw many lines - testdrawline(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw rectangles - testdrawrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw multiple rectangles - testfillrect(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw mulitple circles - testdrawcircle(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw a white circle, 10 pixel radius - display.fillCircle(display.width()/2, display.height()/2, 10, WHITE); - display.display(); - delay(2000); - display.clearDisplay(); - - testdrawroundrect(); - delay(2000); - display.clearDisplay(); - - testfillroundrect(); - delay(2000); - display.clearDisplay(); - - testdrawtriangle(); - delay(2000); - display.clearDisplay(); - - testfilltriangle(); - delay(2000); - display.clearDisplay(); - - // draw the first ~12 characters in the font - testdrawchar(); - display.display(); - delay(2000); - display.clearDisplay(); - - // draw scrolling text - testscrolltext(); - delay(2000); - display.clearDisplay(); - - // text display tests - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - display.println("Hello, world!"); - display.setTextColor(BLACK, WHITE); // 'inverted' text - display.println(3.141592); - display.setTextSize(2); - display.setTextColor(WHITE); - display.print("0x"); display.println(0xDEADBEEF, HEX); - display.display(); - delay(2000); - display.clearDisplay(); - - // miniature bitmap display - display.drawBitmap(30, 16, logo16_glcd_bmp, 16, 16, 1); - display.display(); - - // invert the display - display.invertDisplay(true); - delay(1000); - display.invertDisplay(false); - delay(1000); - display.clearDisplay(); - - // draw a bitmap icon and 'animate' movement - testdrawbitmap(logo16_glcd_bmp, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH); -} - - -void loop() { - -} - - -void testdrawbitmap(const uint8_t *bitmap, uint8_t w, uint8_t h) { - uint8_t icons[NUMFLAKES][3]; - - // initialize - for (uint8_t f=0; f< NUMFLAKES; f++) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - - Serial.print("x: "); - Serial.print(icons[f][XPOS], DEC); - Serial.print(" y: "); - Serial.print(icons[f][YPOS], DEC); - Serial.print(" dy: "); - Serial.println(icons[f][DELTAY], DEC); - } - - while (1) { - // draw each icon - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, WHITE); - } - display.display(); - delay(200); - - // then erase it + move it - for (uint8_t f=0; f< NUMFLAKES; f++) { - display.drawBitmap(icons[f][XPOS], icons[f][YPOS], bitmap, w, h, BLACK); - // move it - icons[f][YPOS] += icons[f][DELTAY]; - // if its gone, reinit - if (icons[f][YPOS] > display.height()) { - icons[f][XPOS] = random(display.width()); - icons[f][YPOS] = 0; - icons[f][DELTAY] = random(5) + 1; - } - } - } -} - - -void testdrawchar(void) { - display.setTextSize(1); - display.setTextColor(WHITE); - display.setCursor(0,0); - - for (uint8_t i=0; i < 168; i++) { - if (i == '\n') continue; - display.write(i); - if ((i > 0) && (i % 21 == 0)) - display.println(); - } - display.display(); -} - -void testdrawcircle(void) { - for (int16_t i=0; i0; i-=5) { - display.fillTriangle(display.width()/2, display.height()/2-i, - display.width()/2-i, display.height()/2+i, - display.width()/2+i, display.height()/2+i, WHITE); - if (color == WHITE) color = BLACK; - else color = WHITE; - display.display(); - } -} - -void testdrawroundrect(void) { - for (int16_t i=0; i=0; i-=4) { - display.drawLine(0, display.height()-1, display.width()-1, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=display.width()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, i, 0, WHITE); - display.display(); - } - for (int16_t i=display.height()-1; i>=0; i-=4) { - display.drawLine(display.width()-1, display.height()-1, 0, i, WHITE); - display.display(); - } - delay(250); - - display.clearDisplay(); - for (int16_t i=0; i -sentence=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! -paragraph=SSD1306 oled driver library for 'monochrome' 128x64 and 128x32 OLEDs! -category=Display -url=https://github.com/adafruit/Adafruit_SSD1306 -architectures=* diff --git a/lib/Adafruit_SSD1306-1.1.2/license.txt b/lib/Adafruit_SSD1306-1.1.2/license.txt deleted file mode 100644 index f6a0f22b8..000000000 --- a/lib/Adafruit_SSD1306-1.1.2/license.txt +++ /dev/null @@ -1,26 +0,0 @@ -Software License Agreement (BSD License) - -Copyright (c) 2012, 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: -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. -3. Neither the name of the copyright holders nor the -names of its contributors may be used to endorse or promote products -derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''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 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. diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp deleted file mode 100644 index 08a41f78a..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp +++ /dev/null @@ -1,315 +0,0 @@ -// Based on the work by DFRobot - -#include "LiquidCrystal_I2C.h" -#include -#if defined(ARDUINO) && ARDUINO >= 100 - -#include "Arduino.h" - -#define printIIC(args) Wire.write(args) -inline size_t LiquidCrystal_I2C::write(uint8_t value) { - send(value, Rs); - return 1; -} - -#else -#include "WProgram.h" - -#define printIIC(args) Wire.send(args) -inline void LiquidCrystal_I2C::write(uint8_t value) { - send(value, Rs); -} - -#endif -#include "Wire.h" - - - -// When the display powers up, it is configured as follows: -// -// 1. Display clear -// 2. Function set: -// DL = 1; 8-bit interface data -// N = 0; 1-line display -// F = 0; 5x8 dot character font -// 3. Display on/off control: -// D = 0; Display off -// C = 0; Cursor off -// B = 0; Blinking off -// 4. Entry mode set: -// I/D = 1; Increment by 1 -// S = 0; No shift -// -// Note, however, that resetting the Arduino doesn't reset the LCD, so we -// can't assume that its in that state when a sketch starts (and the -// LiquidCrystal constructor is called). - -LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows) -{ - _Addr = lcd_Addr; - _cols = lcd_cols; - _rows = lcd_rows; - _backlightval = LCD_NOBACKLIGHT; -} - -void LiquidCrystal_I2C::init(){ - init_priv(); -} - -void LiquidCrystal_I2C::init_priv() -{ - Wire.begin(); - _displayfunction = LCD_4BITMODE | LCD_1LINE | LCD_5x8DOTS; - begin(_cols, _rows); -} - -void LiquidCrystal_I2C::begin(uint8_t cols, uint8_t lines, uint8_t dotsize) { - if (lines > 1) { - _displayfunction |= LCD_2LINE; - } - _numlines = lines; - - // for some 1 line displays you can select a 10 pixel high font - if ((dotsize != 0) && (lines == 1)) { - _displayfunction |= LCD_5x10DOTS; - } - - // SEE PAGE 45/46 FOR INITIALIZATION SPECIFICATION! - // according to datasheet, we need at least 40ms after power rises above 2.7V - // before sending commands. Arduino can turn on way befer 4.5V so we'll wait 50 - delay(50); - - // Now we pull both RS and R/W low to begin commands - expanderWrite(_backlightval); // reset expanderand turn backlight off (Bit 8 =1) - delay(1000); - - //put the LCD into 4 bit mode - // this is according to the hitachi HD44780 datasheet - // figure 24, pg 46 - - // we start in 8bit mode, try to set 4 bit mode - write4bits(0x03 << 4); - delayMicroseconds(4500); // wait min 4.1ms - - // second try - write4bits(0x03 << 4); - delayMicroseconds(4500); // wait min 4.1ms - - // third go! - write4bits(0x03 << 4); - delayMicroseconds(150); - - // finally, set to 4-bit interface - write4bits(0x02 << 4); - - - // set # lines, font size, etc. - command(LCD_FUNCTIONSET | _displayfunction); - - // turn the display on with no cursor or blinking default - _displaycontrol = LCD_DISPLAYON | LCD_CURSOROFF | LCD_BLINKOFF; - display(); - - // clear it off - clear(); - - // Initialize to default text direction (for roman languages) - _displaymode = LCD_ENTRYLEFT | LCD_ENTRYSHIFTDECREMENT; - - // set the entry mode - command(LCD_ENTRYMODESET | _displaymode); - - home(); - -} - -/********** high level commands, for the user! */ -void LiquidCrystal_I2C::clear(){ - command(LCD_CLEARDISPLAY);// clear display, set cursor position to zero - delayMicroseconds(2000); // this command takes a long time! -} - -void LiquidCrystal_I2C::home(){ - command(LCD_RETURNHOME); // set cursor position to zero - delayMicroseconds(2000); // this command takes a long time! -} - -void LiquidCrystal_I2C::setCursor(uint8_t col, uint8_t row){ - int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; - if ( row > _numlines ) { - row = _numlines-1; // we count rows starting w/0 - } - command(LCD_SETDDRAMADDR | (col + row_offsets[row])); -} - -// Turn the display on/off (quickly) -void LiquidCrystal_I2C::noDisplay() { - _displaycontrol &= ~LCD_DISPLAYON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::display() { - _displaycontrol |= LCD_DISPLAYON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// Turns the underline cursor on/off -void LiquidCrystal_I2C::noCursor() { - _displaycontrol &= ~LCD_CURSORON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::cursor() { - _displaycontrol |= LCD_CURSORON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// Turn on and off the blinking cursor -void LiquidCrystal_I2C::noBlink() { - _displaycontrol &= ~LCD_BLINKON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} -void LiquidCrystal_I2C::blink() { - _displaycontrol |= LCD_BLINKON; - command(LCD_DISPLAYCONTROL | _displaycontrol); -} - -// These commands scroll the display without changing the RAM -void LiquidCrystal_I2C::scrollDisplayLeft(void) { - command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVELEFT); -} -void LiquidCrystal_I2C::scrollDisplayRight(void) { - command(LCD_CURSORSHIFT | LCD_DISPLAYMOVE | LCD_MOVERIGHT); -} - -// This is for text that flows Left to Right -void LiquidCrystal_I2C::leftToRight(void) { - _displaymode |= LCD_ENTRYLEFT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This is for text that flows Right to Left -void LiquidCrystal_I2C::rightToLeft(void) { - _displaymode &= ~LCD_ENTRYLEFT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This will 'right justify' text from the cursor -void LiquidCrystal_I2C::autoscroll(void) { - _displaymode |= LCD_ENTRYSHIFTINCREMENT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// This will 'left justify' text from the cursor -void LiquidCrystal_I2C::noAutoscroll(void) { - _displaymode &= ~LCD_ENTRYSHIFTINCREMENT; - command(LCD_ENTRYMODESET | _displaymode); -} - -// Allows us to fill the first 8 CGRAM locations -// with custom characters -void LiquidCrystal_I2C::createChar(uint8_t location, uint8_t charmap[]) { - location &= 0x7; // we only have 8 locations 0-7 - command(LCD_SETCGRAMADDR | (location << 3)); - for (int i=0; i<8; i++) { - write(charmap[i]); - } -} - -// Turn the (optional) backlight off/on -void LiquidCrystal_I2C::noBacklight(void) { - _backlightval=LCD_NOBACKLIGHT; - expanderWrite(0); -} - -void LiquidCrystal_I2C::backlight(void) { - _backlightval=LCD_BACKLIGHT; - expanderWrite(0); -} - - - -/*********** mid level commands, for sending data/cmds */ - -inline void LiquidCrystal_I2C::command(uint8_t value) { - send(value, 0); -} - - -/************ low level data pushing commands **********/ - -// write either command or data -void LiquidCrystal_I2C::send(uint8_t value, uint8_t mode) { - uint8_t highnib=value&0xf0; - uint8_t lownib=(value<<4)&0xf0; - write4bits((highnib)|mode); - write4bits((lownib)|mode); -} - -void LiquidCrystal_I2C::write4bits(uint8_t value) { - expanderWrite(value); - pulseEnable(value); -} - -void LiquidCrystal_I2C::expanderWrite(uint8_t _data){ - Wire.beginTransmission(_Addr); - printIIC((int)(_data) | _backlightval); - Wire.endTransmission(); -} - -void LiquidCrystal_I2C::pulseEnable(uint8_t _data){ - expanderWrite(_data | En); // En high - delayMicroseconds(1); // enable pulse must be >450ns - - expanderWrite(_data & ~En); // En low - delayMicroseconds(50); // commands need > 37us to settle -} - - -// Alias functions - -void LiquidCrystal_I2C::cursor_on(){ - cursor(); -} - -void LiquidCrystal_I2C::cursor_off(){ - noCursor(); -} - -void LiquidCrystal_I2C::blink_on(){ - blink(); -} - -void LiquidCrystal_I2C::blink_off(){ - noBlink(); -} - -void LiquidCrystal_I2C::load_custom_character(uint8_t char_num, uint8_t *rows){ - createChar(char_num, rows); -} - -void LiquidCrystal_I2C::setBacklight(uint8_t new_val){ - if(new_val){ - backlight(); // turn backlight on - }else{ - noBacklight(); // turn backlight off - } -} - -void LiquidCrystal_I2C::printstr(const char c[]){ - //This function is not identical to the function used for "real" I2C displays - //it's here so the user sketch doesn't have to be changed - print(c); -} - - -// unsupported API functions -void LiquidCrystal_I2C::off(){} -void LiquidCrystal_I2C::on(){} -void LiquidCrystal_I2C::setDelay (int cmdDelay,int charDelay) {} -uint8_t LiquidCrystal_I2C::status(){return 0;} -uint8_t LiquidCrystal_I2C::keypad (){return 0;} -uint8_t LiquidCrystal_I2C::init_bargraph(uint8_t graphtype){return 0;} -void LiquidCrystal_I2C::draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end){} -void LiquidCrystal_I2C::draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_row_end){} -void LiquidCrystal_I2C::setContrast(uint8_t new_val){} - - diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h deleted file mode 100644 index faf19fbea..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h +++ /dev/null @@ -1,126 +0,0 @@ -//YWROBOT -#ifndef LiquidCrystal_I2C_h -#define LiquidCrystal_I2C_h - -#include -#include "Print.h" -#include - -// commands -#define LCD_CLEARDISPLAY 0x01 -#define LCD_RETURNHOME 0x02 -#define LCD_ENTRYMODESET 0x04 -#define LCD_DISPLAYCONTROL 0x08 -#define LCD_CURSORSHIFT 0x10 -#define LCD_FUNCTIONSET 0x20 -#define LCD_SETCGRAMADDR 0x40 -#define LCD_SETDDRAMADDR 0x80 - -// flags for display entry mode -#define LCD_ENTRYRIGHT 0x00 -#define LCD_ENTRYLEFT 0x02 -#define LCD_ENTRYSHIFTINCREMENT 0x01 -#define LCD_ENTRYSHIFTDECREMENT 0x00 - -// flags for display on/off control -#define LCD_DISPLAYON 0x04 -#define LCD_DISPLAYOFF 0x00 -#define LCD_CURSORON 0x02 -#define LCD_CURSOROFF 0x00 -#define LCD_BLINKON 0x01 -#define LCD_BLINKOFF 0x00 - -// flags for display/cursor shift -#define LCD_DISPLAYMOVE 0x08 -#define LCD_CURSORMOVE 0x00 -#define LCD_MOVERIGHT 0x04 -#define LCD_MOVELEFT 0x00 - -// flags for function set -#define LCD_8BITMODE 0x10 -#define LCD_4BITMODE 0x00 -#define LCD_2LINE 0x08 -#define LCD_1LINE 0x00 -#define LCD_5x10DOTS 0x04 -#define LCD_5x8DOTS 0x00 - -// flags for backlight control -#define LCD_BACKLIGHT 0x08 -#define LCD_NOBACKLIGHT 0x00 - -#define En B00000100 // Enable bit -#define Rw B00000010 // Read/Write bit -#define Rs B00000001 // Register select bit - -class LiquidCrystal_I2C : public Print { -public: - LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows); - void begin(uint8_t cols, uint8_t rows, uint8_t charsize = LCD_5x8DOTS ); - void clear(); - void home(); - void noDisplay(); - void display(); - void noBlink(); - void blink(); - void noCursor(); - void cursor(); - void scrollDisplayLeft(); - void scrollDisplayRight(); - void printLeft(); - void printRight(); - void leftToRight(); - void rightToLeft(); - void shiftIncrement(); - void shiftDecrement(); - void noBacklight(); - void backlight(); - void autoscroll(); - void noAutoscroll(); - void createChar(uint8_t, uint8_t[]); - void setCursor(uint8_t, uint8_t); -#if defined(ARDUINO) && ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - void command(uint8_t); - void init(); - -////compatibility API function aliases -void blink_on(); // alias for blink() -void blink_off(); // alias for noBlink() -void cursor_on(); // alias for cursor() -void cursor_off(); // alias for noCursor() -void setBacklight(uint8_t new_val); // alias for backlight() and nobacklight() -void load_custom_character(uint8_t char_num, uint8_t *rows); // alias for createChar() -void printstr(const char[]); - -////Unsupported API functions (not implemented in this library) -uint8_t status(); -void setContrast(uint8_t new_val); -uint8_t keypad(); -void setDelay(int,int); -void on(); -void off(); -uint8_t init_bargraph(uint8_t graphtype); -void draw_horizontal_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); -void draw_vertical_graph(uint8_t row, uint8_t column, uint8_t len, uint8_t pixel_col_end); - - -private: - void init_priv(); - void send(uint8_t, uint8_t); - void write4bits(uint8_t); - void expanderWrite(uint8_t); - void pulseEnable(uint8_t); - uint8_t _Addr; - uint8_t _displayfunction; - uint8_t _displaycontrol; - uint8_t _displaymode; - uint8_t _numlines; - uint8_t _cols; - uint8_t _rows; - uint8_t _backlightval; -}; - -#endif diff --git a/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o b/lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o deleted file mode 100644 index bca78e0d24dfc30341ef0d5e91cf127ee829e126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41564 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 diff --git a/lib/LiquidCrystal_I2C-1.1.3/README.md b/lib/LiquidCrystal_I2C-1.1.3/README.md deleted file mode 100644 index aee58d3a2..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# LiquidCrystal_I2C -LiquidCrystal Arduino library for the DFRobot I2C LCD displays diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde deleted file mode 100644 index 492612d71..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde +++ /dev/null @@ -1,70 +0,0 @@ -//YWROBOT -//Compatible with the Arduino IDE 1.0 -//Library version:1.1 -#include -#include - -#if defined(ARDUINO) && ARDUINO >= 100 -#define printByte(args) write(args); -#else -#define printByte(args) print(args,BYTE); -#endif - -uint8_t bell[8] = {0x4,0xe,0xe,0xe,0x1f,0x0,0x4}; -uint8_t note[8] = {0x2,0x3,0x2,0xe,0x1e,0xc,0x0}; -uint8_t clock[8] = {0x0,0xe,0x15,0x17,0x11,0xe,0x0}; -uint8_t heart[8] = {0x0,0xa,0x1f,0x1f,0xe,0x4,0x0}; -uint8_t duck[8] = {0x0,0xc,0x1d,0xf,0xf,0x6,0x0}; -uint8_t check[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0}; -uint8_t cross[8] = {0x0,0x1b,0xe,0x4,0xe,0x1b,0x0}; -uint8_t retarrow[8] = { 0x1,0x1,0x5,0x9,0x1f,0x8,0x4}; - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.backlight(); - - lcd.createChar(0, bell); - lcd.createChar(1, note); - lcd.createChar(2, clock); - lcd.createChar(3, heart); - lcd.createChar(4, duck); - lcd.createChar(5, check); - lcd.createChar(6, cross); - lcd.createChar(7, retarrow); - lcd.home(); - - lcd.print("Hello world..."); - lcd.setCursor(0, 1); - lcd.print(" i "); - lcd.printByte(3); - lcd.print(" arduinos!"); - delay(5000); - displayKeyCodes(); - -} - -// display all keycodes -void displayKeyCodes(void) { - uint8_t i = 0; - while (1) { - lcd.clear(); - lcd.print("Codes 0x"); lcd.print(i, HEX); - lcd.print("-0x"); lcd.print(i+16, HEX); - lcd.setCursor(0, 1); - for (int j=0; j<16; j++) { - lcd.printByte(i+j); - } - i+=16; - - delay(4000); - } -} - -void loop() -{ - -} - diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde deleted file mode 100644 index 6dfdee8f8..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde +++ /dev/null @@ -1,28 +0,0 @@ -//YWROBOT -//Compatible with the Arduino IDE 1.0 -//Library version:1.1 -#include -#include - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.init(); - // Print a message to the LCD. - lcd.backlight(); - lcd.setCursor(3,0); - lcd.print("Hello, world!"); - lcd.setCursor(2,1); - lcd.print("Ywrobot Arduino!"); - lcd.setCursor(0,2); - lcd.print("Arduino LCM IIC 2004"); - lcd.setCursor(2,3); - lcd.print("Power By Ec-yuan!"); -} - - -void loop() -{ -} diff --git a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde b/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde deleted file mode 100644 index fdbbc64eb..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Displays text sent over the serial port (e.g. from the Serial Monitor) on - * an attached LCD. - * YWROBOT - *Compatible with the Arduino IDE 1.0 - *Library version:1.1 - */ -#include -#include - -LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display - -void setup() -{ - lcd.init(); // initialize the lcd - lcd.backlight(); - Serial.begin(9600); -} - -void loop() -{ - // when characters arrive over the serial port... - if (Serial.available()) { - // wait a bit for the entire message to arrive - delay(100); - // clear the screen - lcd.clear(); - // read all the available characters - while (Serial.available() > 0) { - // display each character to the LCD - lcd.write(Serial.read()); - } - } -} diff --git a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt b/lib/LiquidCrystal_I2C-1.1.3/keywords.txt deleted file mode 100644 index 8c450a9e9..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/keywords.txt +++ /dev/null @@ -1,46 +0,0 @@ -########################################### -# Syntax Coloring Map For LiquidCrystal_I2C -########################################### - -########################################### -# Datatypes (KEYWORD1) -########################################### - -LiquidCrystal_I2C KEYWORD1 - -########################################### -# Methods and Functions (KEYWORD2) -########################################### -init KEYWORD2 -begin KEYWORD2 -clear KEYWORD2 -home KEYWORD2 -noDisplay KEYWORD2 -display KEYWORD2 -noBlink KEYWORD2 -blink KEYWORD2 -noCursor KEYWORD2 -cursor KEYWORD2 -scrollDisplayLeft KEYWORD2 -scrollDisplayRight KEYWORD2 -leftToRight KEYWORD2 -rightToLeft KEYWORD2 -shiftIncrement KEYWORD2 -shiftDecrement KEYWORD2 -noBacklight KEYWORD2 -backlight KEYWORD2 -autoscroll KEYWORD2 -noAutoscroll KEYWORD2 -createChar KEYWORD2 -setCursor KEYWORD2 -print KEYWORD2 -blink_on KEYWORD2 -blink_off KEYWORD2 -cursor_on KEYWORD2 -cursor_off KEYWORD2 -setBacklight KEYWORD2 -load_custom_character KEYWORD2 -printstr KEYWORD2 -########################################### -# Constants (LITERAL1) -########################################### diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.json b/lib/LiquidCrystal_I2C-1.1.3/library.json deleted file mode 100644 index 5a23a3989..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "LiquidCrystal_I2C", - "keywords": "LCD, liquidcrystal, I2C", - "description": "A library for DFRobot I2C LCD displays", - "repository": - { - "type": "git", - "url": "https://github.com/marcoschwartz/LiquidCrystal_I2C.git" - }, - "frameworks": "arduino", - "platforms": - [ - "atmelavr" - ] -} \ No newline at end of file diff --git a/lib/LiquidCrystal_I2C-1.1.3/library.properties b/lib/LiquidCrystal_I2C-1.1.3/library.properties deleted file mode 100644 index ad8b02c15..000000000 --- a/lib/LiquidCrystal_I2C-1.1.3/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=LiquidCrystal_I2C -version=1.1.2 -author=Frank de Brabander -maintainer=Marco Schwartz -sentence=A library for I2C LCD displays. -paragraph= The library allows to control I2C displays with functions extremely similar to LiquidCrystal library. THIS LIBRARY MIGHT NOT BE COMPATIBLE WITH EXISTING SKETCHES. -category=Display -url=https://github.com/marcoschwartz/LiquidCrystal_I2C -architectures=* diff --git a/lib/TasmotaTFT-1.0.1/README.txt b/lib/TasmotaTFT-1.0.1/README.txt deleted file mode 100644 index 7c5905014..000000000 --- a/lib/TasmotaTFT-1.0.1/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -This is a library for the Adafruit ILI9341 display products - -This library works with the Adafruit 2.8" Touch Shield V2 (SPI) - ----> 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 - -To download. click the DOWNLOADS button in the top right corner, rename the uncompressed folder Adafruit_ILI9341. Check that the Adafruit_ILI9341 folder contains Adafruit_ILI9341.cpp and Adafruit_ILI9341. - -Place the Adafruit_ILI9341 library folder your arduinosketchfolder/libraries/ folder. You may need to create the libraries subfolder if its your first library. Restart the IDE - -Also requires the Adafruit_GFX library for Arduino. diff --git a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino b/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino deleted file mode 100644 index e523a92d5..000000000 --- a/lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino +++ /dev/null @@ -1,360 +0,0 @@ -/*************************************************** - This is our GFX example 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 "SPI.h" -#include "Adafruit_GFX.h" -#include "TasmotaTFT.h" - -#define TFT_DC 16 -#define TFT_CS 15 - -TasmotaTFT tft = TasmotaTFT(ILI9341, TFT_CS, TFT_DC); - -void setup() { - Serial.begin(115200); - Serial.println("ILI9341 Test!"); - - tft.begin(); - - // read diagnostics (optional but can help debug problems) - uint8_t x = tft.readcommand8(TFT_RDMODE); - Serial.print("Display Power Mode: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDMADCTL); - Serial.print("MADCTL Mode: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDPIXFMT); - Serial.print("Pixel Format: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDIMGFMT); - Serial.print("Image Format: 0x"); Serial.println(x, HEX); - x = tft.readcommand8(TFT_RDSELFDIAG); - Serial.print("Self Diagnostic: 0x"); Serial.println(x, HEX); - - Serial.println(F("Benchmark Time (microseconds)")); - delay(10); - Serial.print(F("Screen fill ")); - Serial.println(testFillScreen()); - delay(500); - - Serial.print(F("Text ")); - Serial.println(testText()); - delay(3000); - - Serial.print(F("Lines ")); - Serial.println(testLines(TFT_CYAN)); - delay(500); - - Serial.print(F("Horiz/Vert Lines ")); - Serial.println(testFastLines(TFT_RED, TFT_BLUE)); - delay(500); - - Serial.print(F("Rectangles (outline) ")); - Serial.println(testRects(TFT_GREEN)); - delay(500); - - Serial.print(F("Rectangles (filled) ")); - Serial.println(testFilledRects(TFT_YELLOW, TFT_MAGENTA)); - delay(500); - - Serial.print(F("Circles (filled) ")); - Serial.println(testFilledCircles(10, TFT_MAGENTA)); - - Serial.print(F("Circles (outline) ")); - Serial.println(testCircles(10, TFT_WHITE)); - delay(500); - - Serial.print(F("Triangles (outline) ")); - Serial.println(testTriangles()); - delay(500); - - Serial.print(F("Triangles (filled) ")); - Serial.println(testFilledTriangles()); - delay(500); - - Serial.print(F("Rounded rects (outline) ")); - Serial.println(testRoundRects()); - delay(500); - - Serial.print(F("Rounded rects (filled) ")); - Serial.println(testFilledRoundRects()); - delay(500); - - Serial.println(F("Done!")); - -} - - -void loop(void) { - for(uint8_t rotation=0; rotation<4; rotation++) { - tft.setRotation(rotation); - testText(); - delay(1000); - } -} - -unsigned long testFillScreen() { - unsigned long start = micros(); - tft.fillScreen(TFT_BLACK); - yield(); - tft.fillScreen(TFT_RED); - yield(); - tft.fillScreen(TFT_GREEN); - yield(); - tft.fillScreen(TFT_BLUE); - yield(); - tft.fillScreen(TFT_BLACK); - yield(); - return micros() - start; -} - -unsigned long testText() { - tft.fillScreen(TFT_BLACK); - unsigned long start = micros(); - tft.setCursor(0, 0); - tft.setTextColor(TFT_WHITE); tft.setTextSize(1); - tft.println("Hello World!"); - tft.setTextColor(TFT_YELLOW); tft.setTextSize(2); - tft.println(1234.56); - tft.setTextColor(TFT_RED); tft.setTextSize(3); - tft.println(0xDEADBEEF, HEX); - tft.println(); - tft.setTextColor(TFT_GREEN); - tft.setTextSize(5); - tft.println("Groop"); - tft.setTextSize(2); - tft.println("I implore thee,"); - tft.setTextSize(1); - tft.println("my foonting turlingdromes."); - tft.println("And hooptiously drangle me"); - tft.println("with crinkly bindlewurdles,"); - tft.println("Or I will rend thee"); - tft.println("in the gobberwarts"); - tft.println("with my blurglecruncheon,"); - tft.println("see if I don't!"); - return micros() - start; -} - -unsigned long testLines(uint16_t color) { - unsigned long start, t; - int x1, y1, x2, y2, - w = tft.width(), - h = tft.height(); - - tft.fillScreen(TFT_BLACK); - yield(); - - x1 = y1 = 0; - y2 = h - 1; - start = micros(); - for(x2=0; x20; i-=6) { - i2 = i / 2; - start = micros(); - tft.fillRect(cx-i2, cy-i2, i, i, color1); - t += micros() - start; - // Outlines are not included in timing results - tft.drawRect(cx-i2, cy-i2, i, i, color2); - yield(); - } - - return t; -} - -unsigned long testFilledCircles(uint8_t radius, uint16_t color) { - unsigned long start; - int x, y, w = tft.width(), h = tft.height(), r2 = radius * 2; - - tft.fillScreen(TFT_BLACK); - start = micros(); - for(x=radius; x10; i-=5) { - start = micros(); - tft.fillTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(0, i*10, i*10)); - t += micros() - start; - tft.drawTriangle(cx, cy - i, cx - i, cy + i, cx + i, cy + i, - tft.color565(i*10, i*10, 0)); - yield(); - } - - return t; -} - -unsigned long testRoundRects() { - unsigned long start; - int w, i, i2, - cx = tft.width() / 2 - 1, - cy = tft.height() / 2 - 1; - - tft.fillScreen(TFT_BLACK); - w = min(tft.width(), tft.height()); - start = micros(); - for(i=0; i20; i-=6) { - i2 = i / 2; - tft.fillRoundRect(cx-i2, cy-i2, i, i, i/8, tft.color565(0, i, 0)); - yield(); - } - - return micros() - start; -} \ No newline at end of file diff --git a/lib/TasmotaTFT-1.0.1/keywords.txt b/lib/TasmotaTFT-1.0.1/keywords.txt deleted file mode 100644 index 50ac35436..000000000 --- a/lib/TasmotaTFT-1.0.1/keywords.txt +++ /dev/null @@ -1,41 +0,0 @@ -####################################### -# Syntax Coloring Map for TasmotaTFT -# (esp8266) -####################################### - -####################################### -# Datatypes (KEYWORD1) -####################################### - -TasmotaTFT KEYWORD1 - -####################################### -# Methods and Functions (KEYWORD2) -####################################### - -begin KEYWORD2 -setScrollStart KEYWORD2 -setScrollMargins KEYWORD2 -setAddrWindow KEYWORD2 -pushColor KEYWORD2 -fillScreen KEYWORD2 -drawPixel KEYWORD2 -drawFastVLine KEYWORD2 -drawFastHLine KEYWORD2 -fillRect KEYWORD2 -setRotation KEYWORD2 -invertDisplay KEYWORD2 -showDisplay KEYWORD2 -color565 KEYWORD2 -readdata KEYWORD2 -readcommand8 KEYWORD2 -spiwrite KEYWORD2 -writecommand KEYWORD2 -writedata KEYWORD2 -commandList KEYWORD2 -spiread KEYWORD2 - -####################################### -# Constants (LITERAL1) -####################################### - diff --git a/lib/TasmotaTFT-1.0.1/library.json b/lib/TasmotaTFT-1.0.1/library.json deleted file mode 100644 index f5cd5216f..000000000 --- a/lib/TasmotaTFT-1.0.1/library.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "TasmotaTFT", - "version": "1.0.1", - "keywords": [ - "spi", "io", "tft", "TasmotaTFT" - ], - "description": "Library for ILI9341, ILI9481 and ILI9486 displays", - "repository": - { - "type": "git", - "url": "https://github.com/arendst/Sonoff-Tasmota/lib/TasmotaTFT" - }, - "frameworks": "arduino", - "platforms": "espressif8266" -} diff --git a/lib/TasmotaTFT-1.0.1/library.properties b/lib/TasmotaTFT-1.0.1/library.properties deleted file mode 100644 index f012244b3..000000000 --- a/lib/TasmotaTFT-1.0.1/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=TasmotaTFT -version=1.0.1 -author=Theo Arends -maintainer=Theo Arends -sentence=Library for ILI9341, ILI9481 and ILI9486 displays -paragraph= -category=Display -url= -architectures=esp8266 diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp deleted file mode 100644 index ad6ebc9be..000000000 --- a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp +++ /dev/null @@ -1,616 +0,0 @@ -/* - TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota - - Copyright (C) 2018 Adafruit and Theo Arends - - This library is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/*********************************************************************************************\ - * See original Adafruit ILI9341 license text below - * - * Based in Adafruit_ILI9341 v1.0.11 - * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD using hardware SPI only - * - * These displays use hardware SPI to communicate, 4 or 5 pins are required to interface (RST is optional) -\*********************************************************************************************/ - -#include "TasmotaTFT.h" -#include -#include "pins_arduino.h" -#include "wiring_private.h" -#include - -static inline void spi_begin(void) __attribute__((always_inline)); -static inline void spi_begin(void) { - SPI.beginTransaction(SPISettings(24000000, MSBFIRST, SPI_MODE0)); -} -static inline void spi_end(void) __attribute__((always_inline)); -static inline void spi_end(void) { - SPI.endTransaction(); -} - -struct _sSize -{ - int16_t width; - int16_t height; -}; -_sSize _size[TFT_MAX] = { - {240, 320}, // ILI9340 / ILI9341 - {320, 480}, // ILI9481 / HX8357B - {320, 480} // ILI9486 -}; - -TasmotaTFT::TasmotaTFT(int8_t m, int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(_size[m].width, _size[m].height) { - _mod = m; - _w = _size[m].width; - _h = _size[m].height; - _cs = cs; - _dc = dc; - _rst = rst; - _mosi = _sclk = 0; -} - -void TasmotaTFT::writecommand(uint8_t c) -{ - digitalWrite(_dc, LOW); - digitalWrite(_sclk, LOW); - digitalWrite(_cs, LOW); - SPI.transfer(c); - digitalWrite(_cs, HIGH); -} - -void TasmotaTFT::writedata(uint8_t c) -{ - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(c); - digitalWrite(_cs, HIGH); -} - -void TasmotaTFT::begin(void) -{ - pinMode(_dc, OUTPUT); - digitalWrite(_dc, LOW); - pinMode(_cs, OUTPUT); - digitalWrite(_cs, HIGH); - - SPI.begin(); - - // toggle RST low to reset - if (_rst > 0) { - pinMode(_rst, OUTPUT); - digitalWrite(_rst, HIGH); - delay(100); - digitalWrite(_rst, LOW); - delay(100); - digitalWrite(_rst, HIGH); - delay(200); - } - - spi_begin(); - - if (_mod == ILI9341) { // 320 x 240 - writecommand(0xEF); // Display Supplier dependant - writedata(0x03); - writedata(0x80); - writedata(0x02); - - writecommand(0xCF); // Display Supplier dependant - writedata(0x00); - writedata(0XC1); - writedata(0X30); - - writecommand(0xED); // Display Supplier dependant - writedata(0x64); - writedata(0x03); - writedata(0X12); - writedata(0X81); - - writecommand(0xE8); // Display Supplier dependant - writedata(0x85); - writedata(0x00); - writedata(0x78); - - writecommand(0xCB); // Display Supplier dependant - writedata(0x39); - writedata(0x2C); - writedata(0x00); - writedata(0x34); - writedata(0x02); - - writecommand(0xF7); // Display Supplier dependant - writedata(0x20); - - writecommand(0xEA); // Display Supplier dependant - writedata(0x00); - writedata(0x00); - - writecommand(0xC0); // Power control 1 - writedata(0x23); // VRH[5:0] - - writecommand(0xC1); // Power control 2 - writedata(0x10); // SAP[2:0];BT[3:0] - - writecommand(0xC5); // VCM control 1 - writedata(0x3e); // Contrast - writedata(0x28); - - writecommand(0xC7); // VCM control 2 - writedata(0x86); // -- - - writecommand(0x36); // Memory Access Control - writedata(0x48); - - writecommand(0x3A); // Pixel Format - writedata(0x55); - - writecommand(0xB1); // Frame Control in Normal Mode - writedata(0x00); - writedata(0x18); - - writecommand(0xB6); // Display Function Control - writedata(0x08); - writedata(0x82); - writedata(0x27); - - writecommand(0xF2); // 3Gamma Function Disable - writedata(0x00); - - writecommand(0x26); // Gamma curve selected - writedata(0x01); - - writecommand(0xE0); // Positive Gamma - writedata(0x0F); - writedata(0x31); - writedata(0x2B); - writedata(0x0C); - writedata(0x0E); - writedata(0x08); - writedata(0x4E); - writedata(0xF1); - writedata(0x37); - writedata(0x07); - writedata(0x10); - writedata(0x03); - writedata(0x0E); - writedata(0x09); - writedata(0x00); - - writecommand(0xE1); // Negative Gamma - writedata(0x00); - writedata(0x0E); - writedata(0x14); - writedata(0x03); - writedata(0x11); - writedata(0x07); - writedata(0x31); - writedata(0xC1); - writedata(0x48); - writedata(0x08); - writedata(0x0F); - writedata(0x0C); - writedata(0x31); - writedata(0x36); - writedata(0x0F); - - writecommand(0x11); // Exit Sleep - spi_end(); - delay(120); - spi_begin(); - writecommand(0x29); // Display on - } - - else if (_mod == ILI9481) { // 480 x 320 - writecommand(0x11); // Exit Sleep - - spi_end(); - delay(20); - spi_begin(); - - writecommand(0xD0); // Power Setting - writedata(0x07); - writedata(0x42); - writedata(0x18); - - writecommand(0xD1); // VCOM Control - writedata(0x00); - writedata(0x07); - writedata(0x10); - - writecommand(0xD2); // Power Setting for Normal Mode - writedata(0x01); - writedata(0x02); - - writecommand(0xC0); // Panel Driving Setting - writedata(0x10); - writedata(0x3B); - writedata(0x00); - writedata(0x02); - writedata(0x11); - - writecommand(0xC5); // Frame Rate and Inversion Control - writedata(0x08); // 0x03 - - writecommand(0xC8); // Gamma Setting - writedata(0x00); - writedata(0x32); - writedata(0x36); - writedata(0x45); - writedata(0x06); - writedata(0x16); - writedata(0x37); - writedata(0x75); - writedata(0x77); - writedata(0x54); - writedata(0x0C); - writedata(0x00); - - writecommand(0x36); // Address Mode - writedata(0x0A); - - writecommand(0x3A); // Pixel Format - writedata(0x55); - - writecommand(0x2A); // Column Address - writedata(0x00); - writedata(0x00); - writedata(0x01); - writedata(0x3F); - - writecommand(0x2B); // Page Address - writedata(0x00); - writedata(0x00); - writedata(0x01); - writedata(0xDF); // 0xE0 - - spi_end(); - delay(120); - spi_begin(); - writecommand(0x29); // Display on - } - - else if (_mod == ILI9486) { // 480 x 320 - writecommand(0x01); // Soft reset -// writedata(0x00); - - spi_end(); - delay(50); - spi_begin(); - - writecommand(0x28); // Display off -// writedata(0x00); - - writecommand(0xC0); // Power Control 1 - writedata(0x0d); - writedata(0x0d); - - writecommand(0xC1); // Power Control 2 - writedata(0x43); - writedata(0x00); - - writecommand(0xC2); // Power Control 3 - writedata(0x00); - - writecommand(0xC5); // VCOM Control - writedata(0x00); - writedata(0x48); - - writecommand(0xB6); // Display Function Control - writedata(0x00); - writedata(0x22); // 0x42 = Rotate display 180 deg. - writedata(0x3B); - - writecommand(0xE0); // PGAMCTRL (Positive Gamma Control) - writedata(0x0f); - writedata(0x24); - writedata(0x1c); - writedata(0x0a); - writedata(0x0f); - writedata(0x08); - writedata(0x43); - writedata(0x88); - writedata(0x32); - writedata(0x0f); - writedata(0x10); - writedata(0x06); - writedata(0x0f); - writedata(0x07); - writedata(0x00); - - writecommand(0xE1); // NGAMCTRL (Negative Gamma Control) - writedata(0x0F); - writedata(0x38); - writedata(0x30); - writedata(0x09); - writedata(0x0f); - writedata(0x0f); - writedata(0x4e); - writedata(0x77); - writedata(0x3c); - writedata(0x07); - writedata(0x10); - writedata(0x05); - writedata(0x23); - writedata(0x1b); - writedata(0x00); - - writecommand(0x20); // Display Inversion OFF, 0x21 = ON - - writecommand(0x36); // Memory Access Control - writedata(0x0A); - - writecommand(0x3A); // Interface Pixel Format - writedata(0x55); - - writecommand(0x11); // Exit Sleep - spi_end(); - delay(150); - spi_begin(); - writecommand(0x29); // Display on - } - - spi_end(); -} - -void TasmotaTFT::setScrollStart(uint16_t start) -{ - spi_begin(); - writecommand(0x37); - writedata(start>>8); - writedata(start); - spi_end(); -} - -void TasmotaTFT::setScrollMargins(uint16_t top, uint16_t bottom) -{ - uint16_t height = _height - (top + bottom); - - spi_begin(); - writecommand(0x33); - writedata(top>>8); - writedata(top); - writedata(height>>8); - writedata(height); - writedata(bottom>>8); - writedata(bottom); - spi_end(); -} - -void TasmotaTFT::setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) -{ - writecommand(TFT_CASET); // Column addr set - writedata(x0 >> 8); - writedata(x0 & 0xFF); // XSTART - writedata(x1 >> 8); - writedata(x1 & 0xFF); // XEND - - writecommand(TFT_PASET); // Row addr set - writedata(y0>>8); - writedata(y0); // YSTART - writedata(y1>>8); - writedata(y1); // YEND - - writecommand(TFT_RAMWR); // write to RAM -} - -void TasmotaTFT::pushColor(uint16_t color) -{ - spi_begin(); - - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(color >> 8); - SPI.transfer(color); - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawPixel(int16_t x, int16_t y, uint16_t color) -{ - if((x < 0) ||(x >= _width) || (y < 0) || (y >= _height)) return; - - spi_begin(); - - setAddrWindow(x,y,x+1,y+1); - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - SPI.transfer(color >> 8); - SPI.transfer(color); - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawFastVLine(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; - - spi_begin(); - - setAddrWindow(x, y, x, y+h-1); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - while (h--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) -{ - // Rudimentary clipping - if((x >= _width) || (y >= _height)) return; - if((x+w-1) >= _width) w = _width-x; - - spi_begin(); - - setAddrWindow(x, y, x+w-1, y); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - while (w--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -void TasmotaTFT::fillScreen(uint16_t color) -{ - fillRect(0, 0, _width, _height, color); -} - -// fill a rectangle -void TasmotaTFT::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) -{ - // rudimentary clipping (drawChar w/big text requires this) - if((x >= _width) || (y >= _height)) return; - if((x + w - 1) >= _width) w = _width - x; - if((y + h - 1) >= _height) h = _height - y; - - spi_begin(); - - setAddrWindow(x, y, x+w-1, y+h-1); - uint8_t hi = color >> 8, lo = color; - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - for(y=h; y>0; y--) { - for(x=w; x>0; x--) { - SPI.transfer(hi); - SPI.transfer(lo); - } - } - digitalWrite(_cs, HIGH); - - spi_end(); -} - -// Pass 8-bit (each) R,G,B, get back 16-bit packed color -uint16_t TasmotaTFT::color565(uint8_t r, uint8_t g, uint8_t b) -{ - return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3); -} - -#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 TasmotaTFT::setRotation(uint8_t m) -{ - rotation = m % 4; // can't be higher than 3 - switch (rotation) { - case 0: - m = (MADCTL_MX | MADCTL_BGR); - _width = _w; - _height = _h; - break; - case 1: - m = (MADCTL_MV | MADCTL_BGR); - _width = _h; - _height = _w; - break; - case 2: - m = (MADCTL_MY | MADCTL_BGR); - _width = _w; - _height = _h; - break; - case 3: - m = (MADCTL_MX | MADCTL_MY | MADCTL_MV | MADCTL_BGR); - _width = _h; - _height = _w; - break; - } - - spi_begin(); - writecommand(TFT_MADCTL); - writedata(m); - spi_end(); -} - -void TasmotaTFT::invertDisplay(boolean i) -{ - spi_begin(); - writecommand(i ? TFT_INVON : TFT_INVOFF); - spi_end(); -} - -void TasmotaTFT::showDisplay(boolean i) -{ - spi_begin(); - writecommand(i ? TFT_DISPON : TFT_DISPOFF); - spi_end(); -} - -uint8_t TasmotaTFT::readdata(void) -{ - digitalWrite(_dc, HIGH); - digitalWrite(_cs, LOW); - uint8_t r = SPI.transfer(0x00); - digitalWrite(_cs, HIGH); - - return r; -} - -uint8_t TasmotaTFT::readcommand8(uint8_t c, uint8_t index) -{ - spi_begin(); - - digitalWrite(_dc, LOW); // command - digitalWrite(_cs, LOW); - SPI.transfer(0xD9); // woo sekret command? - digitalWrite(_dc, HIGH); // data - SPI.transfer(0x10 + index); - digitalWrite(_cs, HIGH); - - digitalWrite(_dc, LOW); // command - digitalWrite(_sclk, LOW); - digitalWrite(_cs, LOW); - SPI.transfer(c); - - digitalWrite(_dc, HIGH); // data - uint8_t r = SPI.transfer(0x00); - digitalWrite(_cs, HIGH); - - spi_end(); - return r; -} - -/*************************************************** - 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 - ****************************************************/ diff --git a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h b/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h deleted file mode 100644 index 2577bb08d..000000000 --- a/lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h +++ /dev/null @@ -1,137 +0,0 @@ -/* - TasmotaTFT.cpp - Adapted implementation of Adafruit ILI9341 for Tasmota - - Copyright (C) 2018 Adafruit and Theo Arends - - This library is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifndef _TasmotaTFT_h -#define _TasmotaTFT_h -/*********************************************************************************************\ - * See original Adafruit ILI9341 license text below - * - * This is a library for the ILI9341, ILI9481 and ILI9486 TFT LCD - * - * These displays use SPI to communicate, 4 or 5 pins are required to interface (RST is optional) -\*********************************************************************************************/ - -#include "Arduino.h" -#include "Print.h" -#include - -// Supported TFT LCD drivers -#define ILI9340 0 // 320 x 240 -#define ILI9341 0 // 320 x 240 -#define ILI9481 1 // 480 x 320 -#define HX8357B 1 // 480 x 320 -#define ILI9486 2 // 480 x 320 -#define TFT_MAX 3 - -// Common driver registers -#define TFT_RDMODE 0x0A // Get Power Mode -#define TFT_RDMADCTL 0x0B // Get Address Mode -#define TFT_RDPIXFMT 0x0C // Get Pixel Format -#define TFT_RDIMGFMT 0x0D // Get Display Mode -#define TFT_RDSELFDIAG 0x0F // Get Diagnostic Result - -#define TFT_INVOFF 0x20 // Exit Invert Mode -#define TFT_INVON 0x21 // Enter Invert Mode -#define TFT_DISPOFF 0x28 // Set Display Off -#define TFT_DISPON 0x29 // Set Display on - -#define TFT_CASET 0x2A // Set Column Address -#define TFT_PASET 0x2B // Set Page Address -#define TFT_RAMWR 0x2C // Write Memory Start - -#define TFT_MADCTL 0x36 // Set Address Mode - -// Color definitions -#define TFT_BLACK 0x0000 /* 0, 0, 0 */ -#define TFT_NAVY 0x000F /* 0, 0, 128 */ -#define TFT_DARKGREEN 0x03E0 /* 0, 128, 0 */ -#define TFT_DARKCYAN 0x03EF /* 0, 128, 128 */ -#define TFT_MAROON 0x7800 /* 128, 0, 0 */ -#define TFT_PURPLE 0x780F /* 128, 0, 128 */ -#define TFT_OLIVE 0x7BE0 /* 128, 128, 0 */ -#define TFT_LIGHTGREY 0xC618 /* 192, 192, 192 */ -#define TFT_DARKGREY 0x7BEF /* 128, 128, 128 */ -#define TFT_BLUE 0x001F /* 0, 0, 255 */ -#define TFT_GREEN 0x07E0 /* 0, 255, 0 */ -#define TFT_CYAN 0x07FF /* 0, 255, 255 */ -#define TFT_RED 0xF800 /* 255, 0, 0 */ -#define TFT_MAGENTA 0xF81F /* 255, 0, 255 */ -#define TFT_YELLOW 0xFFE0 /* 255, 255, 0 */ -#define TFT_WHITE 0xFFFF /* 255, 255, 255 */ -#define TFT_ORANGE 0xFD20 /* 255, 165, 0 */ -#define TFT_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ -#define TFT_PINK 0xF81F - -class TasmotaTFT : public Adafruit_GFX { - public: - TasmotaTFT(int8_t _MODEL, int8_t _CS, int8_t _DC, int8_t _RST = -1); - void begin(void); - void setScrollStart(uint16_t start); - void setScrollMargins(uint16_t top, uint16_t bottom); - void setAddrWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); - void pushColor(uint16_t color); - void fillScreen(uint16_t color); - void drawPixel(int16_t x, int16_t y, uint16_t color); - void drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color); - void drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color); - void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color); - void setRotation(uint8_t r); - void invertDisplay(boolean i); - void showDisplay(boolean i); - uint16_t color565(uint8_t r, uint8_t g, uint8_t b); - - /* These are not for current use, 8-bit protocol only! */ - uint8_t readdata(void); - uint8_t readcommand8(uint8_t reg, uint8_t index = 0); - - void spiwrite(uint8_t); - void writecommand(uint8_t c); - void writedata(uint8_t d); - void commandList(uint8_t *addr); - uint8_t spiread(void); - - private: - uint8_t tabcolor; - uint8_t _mod; - int16_t _w; - int16_t _h; - int32_t _cs; - int32_t _dc; - int32_t _rst; - int32_t _mosi; - int32_t _miso; - int32_t _sclk; -}; - -#endif // _TasmotaTFT_h - -/*************************************************** - 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 - ****************************************************/ diff --git a/lib/process-control-master/LICENSE b/lib/process-control-master/LICENSE deleted file mode 100644 index 261eeb9e9..000000000 --- a/lib/process-control-master/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/lib/process-control-master/PID.cpp b/lib/process-control-master/PID.cpp deleted file mode 100644 index b19cfa64c..000000000 --- a/lib/process-control-master/PID.cpp +++ /dev/null @@ -1,168 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * See Timeprop.h for Usage - * - **/ - - -#include "PID.h" - -PID::PID() { - m_initialised = 0; - m_last_sample_time = 0; - m_last_pv_update_time = 0; -} - -void PID::initialise( double setpoint, double prop_band, double t_integral, double t_derivative, - double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ) { - - m_setpoint = setpoint; - m_prop_band = prop_band; - m_t_integral = t_integral; - m_t_derivative = t_derivative; - m_integral_default = integral_default; - m_max_interval = max_interval; - m_smooth_factor= smooth_factor; - m_mode_auto= mode_auto; - m_manual_op = manual_op; - - m_initialised = 1; - -} - - -/* called regularly to calculate and return new power value */ -double PID::tick( unsigned long nowSecs ) { - double power; - unsigned char integral_locked = 0; - double factor; - if (m_initialised && m_last_pv_update_time) { - // we have been initialised and have been given a pv value - // check whether too long has elapsed since pv was last updated - if (m_max_interval > 0 && nowSecs - m_last_pv_update_time > m_max_interval) { - // yes, too long has elapsed since last PV update so go to fallback power - power = m_manual_op; - } else { - // is this the first time through here? - if (m_last_sample_time) { - // not first time - unsigned long delta_t = nowSecs - m_last_sample_time; // seconds - if (delta_t <= 0 || delta_t > m_max_interval) { - // too long since last sample so leave integral as is and set deriv to zero - m_derivative = 0; - } else { - if (m_smooth_factor > 0) { - // A derivative smoothing factor has been supplied - // smoothing time constant is td/factor but with a min of delta_t to stop overflows - int ts = m_t_derivative/m_smooth_factor > delta_t ? m_t_derivative/m_smooth_factor : delta_t; - factor = 1.0/(ts/delta_t); - } else { - // no integral smoothing so factor is 1, this makes smoothed_value the previous pv - factor = 1.0; - } - double delta_v = (m_pv - m_smoothed_value) * factor; - m_smoothed_value = m_smoothed_value + delta_v; - m_derivative = m_t_derivative * delta_v/delta_t; - // lock the integral if abs(previous integral + error) > prop_band/2 - // as this means that P + I is outside the linear region so power will be 0 or full - // also lock if control is disabled - double error = m_pv - m_setpoint; - double pbo2 = m_prop_band/2.0; - double epi = error + m_integral; - if (epi < 0.0) epi = -epi; // abs value of error + m_integral - if (epi < pbo2 && m_mode_auto) { - integral_locked = 0; - m_integral = m_integral + error * delta_t/m_t_integral; - // clamp to +- 0.5 prop band widths so that it cannot push the zero power point outside the pb - if ( m_integral < -pbo2 ) { - m_integral = -pbo2; - } else if (m_integral > pbo2) { - m_integral = pbo2; - } - integral_locked = 1; - } - } - - } else { - // first time through, initialise context data - m_smoothed_value = m_pv; - // setup the integral term so that the power out would be integral_default if pv=setpoint - m_integral = (0.5 - m_integral_default)*m_prop_band; - m_derivative = 0.0; - } - - double proportional = m_pv - m_setpoint; - power = -1.0/m_prop_band * (proportional + m_integral + m_derivative) + 0.5; - if (power < 0.0) { - power = 0.0; - } else if (power > 1.0) { - power = 1.0; - } - // set power to disabled value if the loop is not enabled - if (!m_mode_auto) { - power = m_manual_op; - } - m_last_sample_time = nowSecs; - } - } else { - // not yet initialised or no pv value yet so set power to disabled value - power = m_manual_op; - } - return power; -} - -// call to pass in new process value -void PID::setPv( double pv, unsigned long nowSecs ){ - m_pv = pv; - m_last_pv_update_time = nowSecs; -} - -// methods to modify configuration data -void PID::setSp( double setpoint ) { - m_setpoint = setpoint; -} - -void PID::setPb( double prop_band ) { - m_prop_band = prop_band; -} - -void PID::setTi( double t_integral ) { - m_t_integral = t_integral; -} - -void PID::setTd( double t_derivative ) { - m_t_derivative = t_derivative; -} - -void PID::setInitialInt( double integral_default ) { - m_integral_default = integral_default; -} - -void PID::setDSmooth( double smooth_factor ) { - m_smooth_factor = smooth_factor; -} - -void PID::setAuto( unsigned char mode_auto ) { - m_mode_auto = mode_auto; -} - -void PID::setManualPower( double manual_op ) { - m_manual_op = manual_op; -} - -void PID::setMaxInterval( int max_interval ) { - m_max_interval = max_interval; -} diff --git a/lib/process-control-master/PID.h b/lib/process-control-master/PID.h deleted file mode 100644 index 782baa8ef..000000000 --- a/lib/process-control-master/PID.h +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - /** - * A PID control class - * - * Github repository https://github.com/colinl/process-control.git - * - * Given ... - * - * Usage: - * First call initialise(), see below for parameters then - * ... - * The functions require a parameter nowSecs which is a representation of the - * current time in seconds. The absolute value of this is immaterial, it is - * used for relative timing only. - * - **/ - - -#ifndef PID_h -#define PID_h - -class PID { -public: - - PID(); - - /* - Initialiser given - - current time in seconds - */ - void initialise( double setpoint, double prop_band, double t_integral, double t_derivative, - double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ); - - - /* called regularly to calculate and return new power value */ - double tick(unsigned long nowSecs); - - // call to pass in new process value - void setPv( double pv, unsigned long nowSecs ); - - // methods to modify configuration data - void setSp( double setpoint ); - void setPb( double prop_band ); - void setTi( double t_integral ); - void setTd( double t_derivative ); - void setInitialInt( double integral_default ); - void setDSmooth( double smooth_factor ); - void setAuto( unsigned char mode_auto ); - void setManualPower( double manual_op ); - void setMaxInterval( int max_interval ); - -private: - double m_pv; - double m_setpoint; - double m_prop_band; - double m_t_integral; - double m_t_derivative; - double m_integral_default; - double m_smooth_factor; - unsigned char m_mode_auto; - double m_manual_op; - int m_max_interval; - - - unsigned char m_initialised; - unsigned long m_last_pv_update_time; // the time of last pv update secs - unsigned long m_last_sample_time; // the time of the last tick() run - double m_smoothed_value; - double m_integral; - double m_derivative ; -}; - -#endif // Timeprop_h diff --git a/lib/process-control-master/README.md b/lib/process-control-master/README.md deleted file mode 100644 index 4682d2f3f..000000000 --- a/lib/process-control-master/README.md +++ /dev/null @@ -1,2 +0,0 @@ -# process-control -A C++ library of process control algorithms diff --git a/lib/process-control-master/Timeprop.cpp b/lib/process-control-master/Timeprop.cpp deleted file mode 100644 index c4d5e9eb8..000000000 --- a/lib/process-control-master/Timeprop.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * See Timeprop.h for Usage - * - **/ - - -#include "Timeprop.h" - -void Timeprop::initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, - unsigned long nowSecs) { - m_cycleTime = cycleTime; - m_deadTime = deadTime; - m_invert = invert; - m_fallbackPower = fallbackPower; - m_maxUpdateInterval = maxUpdateInterval; - - m_dtoc = (float)deadTime/cycleTime; - m_opState = 0; - setPower(m_fallbackPower, nowSecs); -} - -/* set current power required 0:1, given power and current time in seconds */ -void Timeprop::setPower( float power, unsigned long nowSecs ) { - if (power < 0.0) { - power = 0.0; - } else if (power >= 1.0) { - power = 1.0; - } - m_power = power; - m_lastPowerUpdateTime = nowSecs; -}; - -/* called regularly to provide new output value */ -/* returns new o/p state 0, 1 */ -int Timeprop::tick( unsigned long nowSecs) { - int newState; - float wave; - float direction; - float effectivePower; - - // check whether too long has elapsed since power was last updated - if (m_maxUpdateInterval > 0 && nowSecs - m_lastPowerUpdateTime > m_maxUpdateInterval) { - // yes, go to fallback power - setPower(m_fallbackPower, nowSecs); - } - - wave = (nowSecs % m_cycleTime)/(float)m_cycleTime; - // determine direction of travel and convert to triangular wave - if (wave < 0.5) { - direction = 1; // on the way up - wave = wave*2; - } else { - direction = -1; // on the way down - wave = (1 - wave)*2; - } - // if a dead_time has been supplied for this o/p then adjust power accordingly - if (m_deadTime > 0 && m_power > 0.0 && m_power < 1.0) { - effectivePower = (1.0-2.0*m_dtoc)*m_power + m_dtoc; - } else { - effectivePower = m_power; - } - // cope with end cases in case values outside 0..1 - if (effectivePower <= 0.0) { - newState = 0; // no heat - } else if (effectivePower >= 1.0) { - newState = 1; // full heat - } else { - // only allow power to come on on the way down and off on the way up, to reduce short pulses - if (effectivePower >= wave && direction == -1) { - newState = 1; - } else if (effectivePower <= wave && direction == 1) { - newState = 0; - } else { - // otherwise leave it as it is - newState = m_opState; - } - } - m_opState = newState; - return m_invert ? (1-m_opState) : m_opState; -} diff --git a/lib/process-control-master/Timeprop.h b/lib/process-control-master/Timeprop.h deleted file mode 100644 index c6df45be0..000000000 --- a/lib/process-control-master/Timeprop.h +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2018 Colin Law - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - **/ - - /** - * A class to generate a time proportioned digital output from a linear input - * - * Github repository https://github.com/colinl/process-control.git - * - * Given a required power value in the range 0.0 to 1.0 this class generates - * a time proportioned 0/1 output (representing OFF/ON) which averages to the - * required power value. The cycle time is configurable. If, for example, this - * is set to 10 minutes and the power input is 0.2 then the output will be on - * for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * Usage: - * First call initialise(), see below for parameters then call setPower() to - * specify the current power required. - * Then regularly call tick() to determine the output state required. - * setPower may be called as often as required to change the power required. - * The functions require a parameter nowSecs which is a representation of the - * current time in seconds. The absolute value of this is immaterial, it is - * used for relative timing only. - * - **/ - - -#ifndef Timeprop_h -#define Timeprop_h - -class Timeprop { -public: - /* - Initialiser given - cycleTime seconds - actuator deadTime seconds - whether to invert the output - fallback power value if updates are not received within time below - max number of seconds to allow between power updates before falling back to default power (0 to disable) - current time in seconds - */ - void initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, - unsigned long nowSecs); - - /* set current power required 0:1, given power and current time in seconds */ - void setPower( float power, unsigned long nowSecs ); - - /* called regularly to provide new output value */ - /* returns new o/p state 0, 1 */ - int tick(unsigned long nowSecs); - -private: - int m_cycleTime; // cycle time seconds, float to force float calcs - int m_deadTime; // actuator action time seconds - unsigned char m_invert; // whether to invert the output - float m_dtoc; // deadTime/m_cycleTime - int m_opState; // current output state (before invert) - float m_power; // required power 0:1 - float m_fallbackPower; // falls back to this if updates not received with max allowed timezone - int m_maxUpdateInterval; // max time between updates - unsigned long m_lastPowerUpdateTime; // the time of last power update secs -}; - -#endif // Timeprop_h diff --git a/platformio.ini b/platformio.ini index 587d8c55b..cb5da39a9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff-DE_4MB -;env_default = sonoff-EN_4MB -env_default = sonoff-ES_4MB +env_default = sonoff ;env_default = sonoff-minimal +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE -;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -30,8 +30,8 @@ env_default = sonoff-ES_4MB ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU -;env_default = sonoff-TW ;env_default = sonoff-UK +;env_default = sonoff-TW [common] ; ************************************************************ ; *** Esp8266 core for Arduino version 2.3.0 @@ -49,10 +49,6 @@ framework = arduino board = esp01_1m board_build.flash_mode = dout -; set CPU frequency to 80MHz or 160MHz -;board_build.f_cpu = 80000000L -board_build.f_cpu = 160000000L - ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall @@ -60,45 +56,16 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION -; VTABLES in Flash (default) - -DVTABLES_IN_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM - -board_4MB = nodemcu -build_flags_4MB = - -Wl,-Tesp8266.flash.4m1m.ld -; -Wl,-Tesp8266.flash.4m2m.ld - -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION -; VTABLES in Flash (default) - -DVTABLES_IN_FLASH -; VTABLES in Heap -; -DVTABLES_IN_DRAM -; VTABLES in IRAM -; -DVTABLES_IN_IRAM ; *** Serial Monitor options monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_speed = 115200 +;upload_speed = 115200 +upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 - -;NOTE - command to erase flash from windows console: esptool.py --port COM31 erase_flash - - ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -112,42 +79,13 @@ extra_scripts = pio/strip-floats.py ; ********************************************************************* -[env:sonoff-DE_4MB] +[env:sonoff] platform = ${common.platform} framework = ${common.framework} -board = ${common.board_4MB} +board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-EN_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board_4MB} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-ES_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board_4MB} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS +build_flags = ${common.build_flags} monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -159,7 +97,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL monitor_speed = ${common.monitor_speed} @@ -167,12 +104,47 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-classic] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_CLASSIC +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-knx] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-allsensors] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_ALL_SENSORS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG monitor_speed = ${common.monitor_speed} @@ -185,7 +157,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR monitor_speed = ${common.monitor_speed} @@ -198,7 +169,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN monitor_speed = ${common.monitor_speed} @@ -211,7 +181,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ monitor_speed = ${common.monitor_speed} @@ -224,7 +193,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE monitor_speed = ${common.monitor_speed} @@ -232,25 +200,11 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-EN] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} @@ -263,7 +217,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR monitor_speed = ${common.monitor_speed} @@ -276,7 +229,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR monitor_speed = ${common.monitor_speed} @@ -289,7 +241,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU monitor_speed = ${common.monitor_speed} @@ -302,7 +253,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT monitor_speed = ${common.monitor_speed} @@ -315,7 +265,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL monitor_speed = ${common.monitor_speed} @@ -328,7 +277,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL monitor_speed = ${common.monitor_speed} @@ -341,7 +289,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT monitor_speed = ${common.monitor_speed} @@ -354,7 +301,6 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU monitor_speed = ${common.monitor_speed} @@ -362,28 +308,26 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-TW] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-UK] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} -board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} + +[env:sonoff-TW] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 260c61adf..e0f1c2439 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -375,7 +375,7 @@ #define D_CMND_LATITUDE "Latitude" #define D_CMND_LONGITUDE "Longitude" -// Commands xdrv_14_display.ino +// Commands xdrv_98_display.ino #define D_CMND_DISPLAY "Display" #define D_CMND_DISP_ADDRESS "Address" #define D_CMND_DISP_COLS "Cols" diff --git a/sonoff/support.ino b/sonoff/support.ino index 89c80bd44..4268f38d0 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -20,11 +20,6 @@ IPAddress syslog_host_addr; // Syslog host IP address uint32_t syslog_host_hash = 0; // Syslog host name hash -#ifdef USE_CPU_LOAD -uint32_t CPU_loops = 0; // CPU Load -uint32_t CPU_last_millis = 0; // CPU Load -#endif // USE_CPU_LOAD - /*********************************************************************************************\ * Watchdog extension (https://github.com/esp8266/Arduino/issues/1532) \*********************************************************************************************/ @@ -68,34 +63,12 @@ void OsWatchInit() RtcSettings.oswatch_blocked_loop = 0; oswatch_last_loop_time = millis(); tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), OsWatchTicker); -#ifdef USE_CPU_LOAD - CPU_last_millis = millis(); -#endif // USE_CPU_LOAD } void OsWatchLoop() { oswatch_last_loop_time = millis(); // while(1) delay(1000); // this will trigger the os watch - -#ifdef USE_CPU_LOAD - CPU_loops ++; - if ((CPU_last_millis + (CPU_LOAD_CHECK*1000)) <= oswatch_last_loop_time ) { -#if defined(F_CPU) && (F_CPU == 160000000L) - int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*800) ); - CPU_loops = CPU_loops / CPU_LOAD_CHECK; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); -#else - int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*400) ); - CPU_loops = CPU_loops / CPU_LOAD_CHECK; - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); -#endif - AddLog(LOG_LEVEL_DEBUG); - CPU_last_millis = oswatch_last_loop_time; - CPU_loops = 0; - } -#endif // USE_CPU_LOAD - } String GetResetReason() diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 7944796e5..6e51d8e3d 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,23 +48,22 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter -//#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) -//#define MODULE WEMOS // [Module] Select default model from sonoff_template.h (Should not be changed) +#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) // -- Wifi ---------------------------------------- #define WIFI_IP_ADDRESS "0.0.0.0" // [IpAddress1] Set to 0.0.0.0 for using DHCP or IP address -#define WIFI_GATEWAY "192.168.1.1" // [IpAddress2] If not using DHCP set Gateway IP address +#define WIFI_GATEWAY "192.168.2.254" // [IpAddress2] If not using DHCP set Gateway IP address #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask -#define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) +#define WIFI_DNS "192.168.2.27" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) #define STA_SSID1 "" // [Ssid1] Wifi SSID #define STA_PASS1 "" // [Password1] Wifi password #define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID #define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password -#define WIFI_CONFIG_TOOL WIFI_MANAGER // [WifiConfig] Default tool if wifi fails to connect +#define WIFI_CONFIG_TOOL WIFI_WPSCONFIG // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT) // -- Syslog -------------------------------------- @@ -73,8 +72,6 @@ #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) -//#define USE_CPU_LOAD // CPU LOAD log - #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.bin" // [OtaUrl] @@ -207,9 +204,9 @@ * Select ONE of possible three MQTT library types below \*-------------------------------------------------------------------------------------------*/ // Default MQTT driver for both non-TLS and TLS connections. Blocks network if MQTT server is unavailable. -//#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library +#define MQTT_LIBRARY_TYPE MQTT_PUBSUBCLIENT // Use PubSubClient library // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support -#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only +//#define MQTT_LIBRARY_TYPE MQTT_TASMOTAMQTT // Use TasmotaMqtt library (+4k4 code, +4k mem) - non-TLS only // Alternative MQTT driver does not block network when MQTT server is unavailable. No TLS support //#define MQTT_LIBRARY_TYPE MQTT_ESPMQTTARDUINO // Use (patched) esp-mqtt-arduino library (+4k8 code, +4k mem) - non-TLS only @@ -222,7 +219,7 @@ #define DOMOTICZ_OUT_TOPIC "domoticz/out" // Domoticz Output Topic // -- MQTT - Home Assistant Discovery ------------- -//#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) +#define USE_HOME_ASSISTANT // Enable Home Assistant Discovery Support (+2k code) #define HOME_ASSISTANT_DISCOVERY_PREFIX "homeassistant" // Home Assistant discovery prefix // -- MQTT - TLS ---------------------------------- @@ -239,7 +236,7 @@ #define USE_EMULATION // Enable Belkin WeMo and Hue Bridge emulation for Alexa (+16k code, +2k mem) // -- mDNS ---------------------------------------- -//#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) +#define USE_DISCOVERY // Enable mDNS for the following services (+8k code, +0.3k mem) #define WEBSERVER_ADVERTISE // Provide access to webserver by name .local/ #define MQTT_HOST_DISCOVERY // Find MQTT host server (overrides MQTT_HOST if found) @@ -288,212 +285,31 @@ #endif // USE_SPI // -- Serial sensors ------------------------------ -//#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) -//#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) +#define USE_MHZ19 // Add support for MH-Z19 CO2 sensor (+2k code) +#define USE_SENSEAIR // Add support for SenseAir K30, K70 and S8 CO2 sensor (+2k3 code) #define CO2_LOW 800 // Below this CO2 value show green light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) #define CO2_HIGH 1200 // Above this CO2 value show red light (needs PWM or WS2812 RG(B) led and enable with SetOption18 1) -//#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) -//#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) -//#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) +#define USE_PMS5003 // Add support for PMS5003 and PMS7003 particle concentration sensor (+1k3 code) +#define USE_NOVA_SDS // Add support for SDS011 and SDS021 particle concentration sensor (+0k7 code) +#define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) -//#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) +#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) -//#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) +#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) // -- Low level interface devices ----------------- -//#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) +#define USE_IR_REMOTE // Send IR remote commands using library IRremoteESP8266 and ArduinoJson (+4k code, 0k3 mem, 48 iram) // #define USE_IR_HVAC // Support for HVAC system using IR (+2k code) -// #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) + #define USE_IR_RECEIVE // Support for IR receiver (+5k5 code, 264 iram) #define USE_WS2812 // WS2812 Led string using library NeoPixelBus (+5k code, +1k mem, 232 iram) - Disable by // #define USE_WS2812_CTYPE NEO_GRB // WS2812 Color type (NEO_RGB, NEO_GRB, NEO_BRG, NEO_RBG, NEO_RGBW, NEO_GRBW) // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow -//#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) - -//#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) - -/*********************************************************************************************\ - * DISPLAY -\*********************************************************************************************/ - -//#define USE_DISPLAY // Add Display Support for LCD, Oled and up to eigth Matrices (+19k code) - // Required USE_I2C to be defined for I2C Display Support - // Required USE_SPI to be defined for SPI Display Support using library TasmotaTFT for 320x240 and 480x320 TFT -#ifdef USE_DISPLAY -#ifdef USE_I2C // For I2C Display Support. Not required if using SPI - #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module - #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module - #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module - #define MTX_ADDRESS4 0x72 // [DisplayAddress[4]] I2C address of fourth 8x8 matrix module - #define MTX_ADDRESS5 0x73 // [DisplayAddress[5]] I2C address of fifth 8x8 matrix module - #define MTX_ADDRESS6 0x76 // [DisplayAddress[6]] I2C address of sixth 8x8 matrix module - #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module - #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module -#endif // USE_I2C -#endif // USE_DISPLAY - -/*********************************************************************************************\ - * TIME PROPORTIONAL CONTROLLER -\*********************************************************************************************/ - -/** - * Code to drive one or more relays in a time proportioned manner give a - * required power value. - * - * Given required power values in the range 0.0 to 1.0 the relays will be - * driven on/off in such that the average power suppled will represent - * the required power. - * The cycle time is configurable. If, for example, the - * period is set to 10 minutes and the power input is 0.2 then the output will - * be on for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * In the case where only one relay is being driven the power value is set by - * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than - * one relay is being driven (as might be the case for a heat/cool application - * where one relay drives the heater and the other the cooler) then the power - * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. - * - * To cope with the problem of temporary wifi failure etc a - * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max - * expected time between power updates and if this time is exceeded then the - * power will fallback to a given safe value until a new value is provided. Set - * the interval to 0 to disable this feature. - * - **/ - -//#define USE_TIMEPROP // include the timeprop feature (+1.2k) - -// Configuration for single output -/* - #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60 // cycle time seconds - #define TIMEPROP_DEADTIMES 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1 // which relay to control 1:8 -/* - -// Configuration for two outputs: -/* - #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds - #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false, false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 -*/ - -/*********************************************************************************************\ - * PID CONTROLLER -\*********************************************************************************************/ - -// Help with using the PID algorithm and with loop tuning can be found at -// http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html -// This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on -// the code there and the tuning techique described there should work just the same. - -//#define USE_PID // include the pid feature (+4.3k) - #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is - // aiming for. - // May be adjusted via MQTT using cmnd pid_sp - - #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls - // the gain of the loop and is the range of process value over which - // the power output will go from 0 to full power. The units are that - // of the process and setpoint, so for example in a heating - // application it might be set to 1.5 degrees. - // May be adjusted via MQTT using cmnd pid_pb - - #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, - // in seconds. It represents the time constant of the integration - // effect. The larger the value the slower the integral effect will be. - // Obviously the slower the process is the larger this should be. For - // example for a domestic room heated by convection radiators a setting - // of one hour might be appropriate (in seconds). To disable the - // integral effect set this to a large number. - // May be adjusted via MQTT using cmnd pid_ti - - #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, - // in seconds. It represents the time constant of the derivative effect. - // The larger the value the greater will be the derivative effect. - // Typically this will be set to somewhat less than 25% of the integral - // setting, once the integral has been adjusted to the optimum value. To - // disable the derivative effect set this to 0. When initially tuning a - // loop it is often sensible to start with derivative zero and wind it in - // once other parameters have been setup. - // May be adjusted via MQTT using cmnd pid_td - - #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used - // to preset the integrated error value when the flow is deployed in - // order to assist in homing in on the setpoint the first time. It should - // be set to an estimate of what the power requirement might be in order - // to maintain the process at the setpoint. For example for a domestic - // room heating application it might be set to 0.2 indicating that 20% of - // the available power might be required to maintain the setpoint. The - // value is of no consequence apart from device restart. - - #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. - // It is provided to cope with unusual situations such as a faulty sensor - // that might prevent the node from being supplied with a process value. - // If no new process value is received for this time then the power is set - // to the value defined for PID_MANUAL_POWER. - // May be adjusted via MQTT using cmnd pid_max_interval - - #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as - // the DS18B20), the use of deriviative can be problematic as when the - // process is changing only slowly the steps in the value cause spikes in - // the derivative. To reduce the effect of these this parameter can be - // set to apply a filter to the derivative term. I have found that with - // the DS18B20 that a value of 3 here can be beneficial, providing - // effectively a low pass filter on the derivative at 1/3 of the derivative - // time. This feature may also be useful if the process value is particularly - // noisy. The smaller the value the greater the filtering effect but the - // more it will reduce the effectiveness of the derivative. A value of zero - // disables this feature. - // May be adjusted via MQTT using cmnd pid_d_smooth - - #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable - // the control (1=enable, auto mode, 0=disabled, manual mode). When in - // manual mode the output is set the value definded for PID_MANUAL_POWER - // May be adjusted via MQTT using cmnd pid_auto - - #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses - // between process values - // May be adjusted via MQTT using cmnd pid_manual_power - - #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm - // each time a new pv value is received, for most applictions specify 0. - // Otherwise set this to a time - // that is short compared to the response of the process. For example, - // something like 15 seconds may well be appropriate for a domestic room - // heating application. - // May be adjusted via MQTT using cmnd pid_update_secs - - #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the - // process, set this to indicate which timeprop output to use. For a device - // with just one relay then this will be 1. - // It is then also necessary to define USE_TIMEPROP and set the output up as - // explained in xdrv_91_timeprop.ino - // To disable this feature leave this undefined (undefined, not defined to nothing). - - #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if - // this is not required. The rate that the sensor is read is defined by TELE_PERIOD - // If not using the sensor then you can supply process values via MQTT using - // cmnd pid_pv +#define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) +#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) #define USE_RF_FLASH // Add support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB @@ -513,7 +329,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/xdrv_13_controller.ino b/sonoff/xdrv_13_controller.ino deleted file mode 100644 index cb3a17198..000000000 --- a/sonoff/xdrv_13_controller.ino +++ /dev/null @@ -1,603 +0,0 @@ -/* - xdrv_13_controller.ino - Controller Support with TimeProp and PID for Sonoff-Tasmota - - Copyright (C) 2018 Colin Law, Thomas Herrmann and Adrian Scillato - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * Code to - * - * Usage: - * Place this file in the sonoff folder. - * Clone the library https://github.com/colinl/process-control.git from Github - * into a subfolder of lib. - * If you want to use a time proportioned relay output with this then also get - * xdrv_91_timeprop.ino - * In user_config.h or user_config_override.h include code as follows: - - #define USE_PID // include the pid feature (+4.3k) - #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is - // aiming for. - // May be adjusted via MQTT using cmnd pid_sp - - #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls - // the gain of the loop and is the range of process value over which - // the power output will go from 0 to full power. The units are that - // of the process and setpoint, so for example in a heating - // application it might be set to 1.5 degrees. - // May be adjusted via MQTT using cmnd pid_pb - - #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, - // in seconds. It represents the time constant of the integration - // effect. The larger the value the slower the integral effect will be. - // Obviously the slower the process is the larger this should be. For - // example for a domestic room heated by convection radiators a setting - // of one hour might be appropriate (in seconds). To disable the - // integral effect set this to a large number. - // May be adjusted via MQTT using cmnd pid_ti - - #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, - // in seconds. It represents the time constant of the derivative effect. - // The larger the value the greater will be the derivative effect. - // Typically this will be set to somewhat less than 25% of the integral - // setting, once the integral has been adjusted to the optimum value. To - // disable the derivative effect set this to 0. When initially tuning a - // loop it is often sensible to start with derivative zero and wind it in - // once other parameters have been setup. - // May be adjusted via MQTT using cmnd pid_td - - #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used - // to preset the integrated error value when the flow is deployed in - // order to assist in homing in on the setpoint the first time. It should - // be set to an estimate of what the power requirement might be in order - // to maintain the process at the setpoint. For example for a domestic - // room heating application it might be set to 0.2 indicating that 20% of - // the available power might be required to maintain the setpoint. The - // value is of no consequence apart from device restart. - - #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. - // It is provided to cope with unusual situations such as a faulty sensor - // that might prevent the node from being supplied with a process value. - // If no new process value is received for this time then the power is set - // to the value defined for PID_MANUAL_POWER. - // May be adjusted via MQTT using cmnd pid_max_interval - - #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as - // the DS18B20), the use of deriviative can be problematic as when the - // process is changing only slowly the steps in the value cause spikes in - // the derivative. To reduce the effect of these this parameter can be - // set to apply a filter to the derivative term. I have found that with - // the DS18B20 that a value of 3 here can be beneficial, providing - // effectively a low pass filter on the derivative at 1/3 of the derivative - // time. This feature may also be useful if the process value is particularly - // noisy. The smaller the value the greater the filtering effect but the - // more it will reduce the effectiveness of the derivative. A value of zero - // disables this feature. - // May be adjusted via MQTT using cmnd pid_d_smooth - - #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable - // the control (1=enable, auto mode, 0=disabled, manual mode). When in - // manual mode the output is set the value definded for PID_MANUAL_POWER - // May be adjusted via MQTT using cmnd pid_auto - - #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses - // between process values - // May be adjusted via MQTT using cmnd pid_manual_power - - #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm - // each time a new pv value is received, for most applictions specify 0. - // Otherwise set this to a time - // that is short compared to the response of the process. For example, - // something like 15 seconds may well be appropriate for a domestic room - // heating application. - // May be adjusted via MQTT using cmnd pid_update_secs - - #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the - // process, set this to indicate which timeprop output to use. For a device - // with just one relay then this will be 1. - // It is then also necessary to define USE_TIMEPROP and set the output up as - // explained in xdrv_91_timeprop.ino - // To disable this feature leave this undefined (undefined, not defined to nothing). - - #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if - // this is not required. The rate that the sensor is read is defined by TELE_PERIOD - // If not using the sensor then you can supply process values via MQTT using - // cmnd pid_pv - - * Help with using the PID algorithm and with loop tuning can be found at - * http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html - * This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on - * the code there and the tuning techique described there should work just the same. - - * -**/ - - -#ifdef USE_PID - -# include "PID.h" - -#define D_CMND_PID "pid_" - -#define D_CMND_PID_SETPV "pv" -#define D_CMND_PID_SETSETPOINT "sp" -#define D_CMND_PID_SETPROPBAND "pb" -#define D_CMND_PID_SETINTEGRAL_TIME "ti" -#define D_CMND_PID_SETDERIVATIVE_TIME "td" -#define D_CMND_PID_SETINITIAL_INT "initint" -#define D_CMND_PID_SETDERIV_SMOOTH_FACTOR "d_smooth" -#define D_CMND_PID_SETAUTO "auto" -#define D_CMND_PID_SETMANUAL_POWER "manual_power" -#define D_CMND_PID_SETMAX_INTERVAL "max_interval" -#define D_CMND_PID_SETUPDATE_SECS "update_secs" - -enum PIDCommands { CMND_PID_SETPV, CMND_PID_SETSETPOINT, CMND_PID_SETPROPBAND, CMND_PID_SETINTEGRAL_TIME, - CMND_PID_SETDERIVATIVE_TIME, CMND_PID_SETINITIAL_INT, CMND_PID_SETDERIV_SMOOTH_FACTOR, CMND_PID_SETAUTO, - CMND_PID_SETMANUAL_POWER, CMND_PID_SETMAX_INTERVAL, CMND_PID_SETUPDATE_SECS }; -const char kPIDCommands[] PROGMEM = D_CMND_PID_SETPV "|" D_CMND_PID_SETSETPOINT "|" D_CMND_PID_SETPROPBAND "|" - D_CMND_PID_SETINTEGRAL_TIME "|" D_CMND_PID_SETDERIVATIVE_TIME "|" D_CMND_PID_SETINITIAL_INT "|" D_CMND_PID_SETDERIV_SMOOTH_FACTOR "|" - D_CMND_PID_SETAUTO "|" D_CMND_PID_SETMANUAL_POWER "|" D_CMND_PID_SETMAX_INTERVAL "|" D_CMND_PID_SETUPDATE_SECS; - -static PID pid; -static int update_secs = PID_UPDATE_SECS <= 0 ? 0 : PID_UPDATE_SECS; // how often (secs) the pid alogorithm is run -static int max_interval = PID_MAX_INTERVAL; -static unsigned long last_pv_update_secs = 0; -static boolean run_pid_now = false; // tells PID_Every_Second to run the pid algorithm - -void PID_Init() -{ - snprintf_P(log_data, sizeof(log_data), "PID Init"); - AddLog(LOG_LEVEL_INFO); - pid.initialise( PID_SETPOINT, PID_PROPBAND, PID_INTEGRAL_TIME, PID_DERIVATIVE_TIME, PID_INITIAL_INT, - PID_MAX_INTERVAL, PID_DERIV_SMOOTH_FACTOR, PID_AUTO, PID_MANUAL_POWER ); -} - -void PID_Every_Second() { - static int sec_counter = 0; - // run the pid algorithm if run_pid_now is true or if the right number of seconds has passed or if too long has - // elapsed since last pv update. If too long has elapsed the the algorithm will deal with that. - if (run_pid_now || utc_time - last_pv_update_secs > max_interval || (update_secs != 0 && sec_counter++ % update_secs == 0)) { - run_pid(); - run_pid_now = false; - } -} - -void PID_Show_Sensor() { - // Called each time new sensor data available, data in mqtt data in same format - // as published in tele/SENSOR - // Update period is specified in TELE_PERIOD - // e.g. "{"Time":"2018-03-13T16:48:05","DS18B20":{"Temperature":22.0},"TempUnit":"C"}" - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: mqtt_data: %s", mqtt_data); - AddLog(LOG_LEVEL_INFO); - StaticJsonBuffer<400> jsonBuffer; - // force mqtt_data to read only to stop parse from overwriting it - JsonObject& data_json = jsonBuffer.parseObject((const char*)mqtt_data); - if (data_json.success()) { - const char* value = data_json["DS18B20"]["Temperature"]; - // check that something was found and it contains a number - //if (value != NULL && strlen(value) > 0 && isdigit(value[0]) ) { - if (value != NULL && strlen(value) > 0 && (isdigit(value[0]) || (value[0] == '-' && isdigit(value[1])) ) ) { - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: Temperature: %s", value); - AddLog(LOG_LEVEL_INFO); - // pass the value to the pid alogorithm to use as current pv - last_pv_update_secs = utc_time; - pid.setPv(atof(value), last_pv_update_secs); - // also trigger running the pid algorithm if we have been told to run it each pv sample - if (update_secs == 0) { - // this runs it at the next second - run_pid_now = true; - } - } else { - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - no temperature found"); - AddLog(LOG_LEVEL_INFO); - } - } else { - // parse failed - snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - json parse failed"); - AddLog(LOG_LEVEL_INFO); - } -} - - -/* struct XDRVMAILBOX { */ -/* uint16_t valid; */ -/* uint16_t index; */ -/* uint16_t data_len; */ -/* int16_t payload; */ -/* char *topic; */ -/* char *data; */ -/* } XdrvMailbox; */ - -boolean PID_Command() -{ - char command [CMDSZ]; - boolean serviced = true; - uint8_t ua_prefix_len = strlen(D_CMND_PID); // to detect prefix of command - - snprintf_P(log_data, sizeof(log_data), "Command called: " - "index: %d data_len: %d payload: %d topic: %s data: %s", - XdrvMailbox.index, - XdrvMailbox.data_len, - XdrvMailbox.payload, - (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - AddLog(LOG_LEVEL_INFO); - - if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_PID), ua_prefix_len)) { - // command starts with pid_ - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kPIDCommands); - serviced = true; - switch (command_code) { - case CMND_PID_SETPV: - snprintf_P(log_data, sizeof(log_data), "PID command setpv"); - AddLog(LOG_LEVEL_INFO); - last_pv_update_secs = utc_time; - pid.setPv(atof(XdrvMailbox.data), last_pv_update_secs); - // also trigger running the pid algorithm if we have been told to run it each pv sample - if (update_secs == 0) { - // this runs it at the next second - run_pid_now = true; - } - break; - - case CMND_PID_SETSETPOINT: - snprintf_P(log_data, sizeof(log_data), "PID command setsetpoint"); - AddLog(LOG_LEVEL_INFO); - pid.setSp(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETPROPBAND: - snprintf_P(log_data, sizeof(log_data), "PID command propband"); - AddLog(LOG_LEVEL_INFO); - pid.setPb(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETINTEGRAL_TIME: - snprintf_P(log_data, sizeof(log_data), "PID command Ti"); - AddLog(LOG_LEVEL_INFO); - pid.setTi(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETDERIVATIVE_TIME: - snprintf_P(log_data, sizeof(log_data), "PID command Td"); - AddLog(LOG_LEVEL_INFO); - pid.setTd(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETINITIAL_INT: - snprintf_P(log_data, sizeof(log_data), "PID command initial int"); - AddLog(LOG_LEVEL_INFO); - pid.setInitialInt(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETDERIV_SMOOTH_FACTOR: - snprintf_P(log_data, sizeof(log_data), "PID command deriv smooth"); - AddLog(LOG_LEVEL_INFO); - pid.setDSmooth(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETAUTO: - snprintf_P(log_data, sizeof(log_data), "PID command auto"); - AddLog(LOG_LEVEL_INFO); - pid.setAuto(atoi(XdrvMailbox.data)); - break; - - case CMND_PID_SETMANUAL_POWER: - snprintf_P(log_data, sizeof(log_data), "PID command manual power"); - AddLog(LOG_LEVEL_INFO); - pid.setManualPower(atof(XdrvMailbox.data)); - break; - - case CMND_PID_SETMAX_INTERVAL: - snprintf_P(log_data, sizeof(log_data), "PID command set max interval"); - AddLog(LOG_LEVEL_INFO); - max_interval = atoi(XdrvMailbox.data); - pid.setMaxInterval(max_interval); - break; - - case CMND_PID_SETUPDATE_SECS: - snprintf_P(log_data, sizeof(log_data), "PID command set update secs"); - AddLog(LOG_LEVEL_INFO); - update_secs = atoi(XdrvMailbox.data) ; - if (update_secs < 0) update_secs = 0; - break; - - default: - serviced = false; - } - - if (serviced) { - // set mqtt RESULT - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), XdrvMailbox.topic, XdrvMailbox.data); - } - - } else { - serviced = false; - } - return serviced; -} - -static void run_pid() -{ - double power = pid.tick(utc_time); - char buf[10]; - dtostrfd(power, 3, buf); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), "power", buf); - MqttPublishPrefixTopic_P(TELE, "PID", false); -#if defined PID_USE_TIMPROP - // send power to appropriate timeprop output - Timeprop_Set_Power( PID_USE_TIMPROP-1, power ); -#endif // PID_USE_TIMPROP -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_92 - -boolean Xdrv92(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - PID_Init(); - break; - case FUNC_EVERY_SECOND: - PID_Every_Second(); - break; - case FUNC_SHOW_SENSOR: - // only use this if the pid loop is to use the local sensor for pv - #if defined PID_USE_LOCAL_SENSOR - PID_Show_Sensor(); - #endif // PID_USE_LOCAL_SENSOR - break; - case FUNC_COMMAND: - result = PID_Command(); - break; - } - return result; -} - -#endif // USE_PID - - - - - - - -/* - xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota - Copyright (C) 2018 Colin Law and Thomas Herrmann - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - This program 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 General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * Code to drive one or more relays in a time proportioned manner give a - * required power value. - * - * Given required power values in the range 0.0 to 1.0 the relays will be - * driven on/off in such that the average power suppled will represent - * the required power. - * The cycle time is configurable. If, for example, the - * period is set to 10 minutes and the power input is 0.2 then the output will - * be on for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * In the case where only one relay is being driven the power value is set by - * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than - * one relay is being driven (as might be the case for a heat/cool application - * where one relay drives the heater and the other the cooler) then the power - * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. - * - * To cope with the problem of temporary wifi failure etc a - * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max - * expected time between power updates and if this time is exceeded then the - * power will fallback to a given safe value until a new value is provided. Set - * the interval to 0 to disable this feature. - * - * Usage: - * Place this file in the sonoff folder. - * Clone the library https://github.com/colinl/process-control.git from Github - * into a subfolder of lib. - * In user_config.h or user_config_override.h for a single relay, include - * code as follows: - - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60 // cycle time seconds - #define TIMEPROP_DEADTIMES 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1 // which relay to control 1:8 - - * or for two relays: - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds - #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false, false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 - - * Publish values between 0 and 1 to the topic(s) described above - * -**/ - - -#ifdef USE_TIMEPROP - -# include "Timeprop.h" - -#define D_CMND_TIMEPROP "timeprop_" -#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 - -enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; -const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; - -static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; -static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; -static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay - -/* call this from elsewhere if required to set the power value for one of the timeprop instances */ -/* index specifies which one, 0 up */ -void Timeprop_Set_Power( int index, float power ) -{ - if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) - { - timeprops[index].setPower( power, utc_time); - } -} - -void Timeprop_Init() -{ - snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); - AddLog(LOG_LEVEL_INFO); - int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; - int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; - int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; - int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; - int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; - - for (int i=0; i= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - - AddLog(LOG_LEVEL_INFO); - */ - if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { - // command starts with timeprop_ - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); - if (CMND_TIMEPROP_SETPOWER == command_code) { - /* - snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " - "index: %d data_len: %d payload: %d topic: %s data: %s", - XdrvMailbox.index, - XdrvMailbox.data_len, - XdrvMailbox.payload, - (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - AddLog(LOG_LEVEL_INFO); - */ - if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { - timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), - XdrvMailbox.index, XdrvMailbox.data); - } - else { - serviced = false; - } - } else { - serviced = false; - } - return serviced; -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_91 - -boolean Xdrv91(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - Timeprop_Init(); - break; - case FUNC_EVERY_SECOND: - Timeprop_Every_Second(); - break; - case FUNC_COMMAND: - result = Timeprop_Command(); - break; - case FUNC_SET_POWER: - Timeprop_Xdrv_Power(); - break; - } - return result; -} - -#endif // USE_TIMEPROP diff --git a/sonoff/xdrv_14_display.ino b/sonoff/xdrv_14_display.ino deleted file mode 100644 index 8ddd07bc1..000000000 --- a/sonoff/xdrv_14_display.ino +++ /dev/null @@ -1,1096 +0,0 @@ -/* - xdrv_14_display.ino - display support for Sonoff-Tasmota - - Copyright (C) 2018 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#if defined(USE_I2C) || defined(USE_SPI) -#ifdef USE_DISPLAY -/*********************************************************************************************\ - * Display Libraries needed - * --------------- ---------------------------------------- - * I2C LCD LiquidCrystal_I2C - * I2C SSD 1306 Adafruit_SSD1306 and Adafruit_GFX - * I2C 8x8 Matrix Adafruit_LED_Backpack and Adafruit_GFX - * SPI TFT ILI9341 TasmotaTFT and Adafruit_GFX - * SPI TFT ILI9481 TasmotaTFT and Adafruit_GFX -\*********************************************************************************************/ - -#define LCD_ADDRESS1 0x27 // LCD I2C address option 1 -#define LCD_ADDRESS2 0x3F // LCD I2C address option 2 - -#define OLED_ADDRESS1 0x3C // Oled 128x32 I2C address -#define OLED_ADDRESS2 0x3D // Oled 128x64 I2C address - -#define DISPLAY_BUFFER_COLS 40 // Max number of columns in log buffer and display shadow buffer (needed for LCD and Oled) -#define DISPLAY_BUFFER_ROWS 8 // Max number of lines in display shadow buffer (needed for LCD and Oled) - -#define DISPLAY_LOG_ROWS 32 // Number of lines in display log buffer - -enum display_types { DISP_NONE, DISP_LCD, DISP_OLED, DISP_MATRIX, DISP_TFT, DISP_TFT4, DISP_MAX }; - -enum DisplayCommands { CMND_DISP_MODEL, CMND_DISP_MODE, CMND_DISP_REFRESH, CMND_DISP_DIMMER, CMND_DISP_COLS, CMND_DISP_ROWS, - CMND_DISP_SIZE, CMND_DISP_TEXT, CMND_DISP_ADDRESS }; -const char kDisplayCommands[] PROGMEM = - D_CMND_DISP_MODEL "|" D_CMND_DISP_MODE "|" D_CMND_DISP_REFRESH "|" D_CMND_DISP_DIMMER "|" D_CMND_DISP_COLS "|" D_CMND_DISP_ROWS "|" - D_CMND_DISP_SIZE "|" D_CMND_DISP_TEXT "|" D_CMND_DISP_ADDRESS ; - -const char S_JSON_DISPLAY_COMMAND_VALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":\"%s\"}"; -const char S_JSON_DISPLAY_COMMAND_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s\":%d}"; -const char S_JSON_DISPLAY_COMMAND_INDEX_NVALUE[] PROGMEM = "{\"" D_CMND_DISPLAY "%s%d\":%d}"; - -#define DISPLAY_LOG_COLS DISPLAY_BUFFER_COLS +1 // Number of characters in display log buffer line +1 - -#ifdef USE_I2C // --------------------------------------------------------------------------- -#include // 8x8 Matrix -#include // LCD -#include // Oled - -LiquidCrystal_I2C *lcd; -Adafruit_SSD1306 *oled; - -//char disp_screen_buffer[Settings.display_rows][Settings.display_cols[0] +1]; -char disp_screen_buffer[DISPLAY_BUFFER_ROWS][DISPLAY_BUFFER_COLS +1]; - -Adafruit_8x8matrix *matrix[8]; -uint8_t mtx_matrices = 0; -uint8_t mtx_state = 0; -uint8_t mtx_counter = 0; -int16_t mtx_x = 0; -int16_t mtx_y = 0; - -#endif // USE_I2C --------------------------------------------------------------------------- - -#ifdef USE_SPI // --------------------------------------------------------------------------- -#define TFT_TOP 16 -#define TFT_BOTTOM 16 -#define TFT_FONT_WIDTH 6 -#define TFT_FONT_HEIGTH 8 // Adafruit minimal font heigth pixels - -#include // TFT 320x240 and 480x320 -TasmotaTFT *tft; - -//#include -//Adafruit_ILI9341 *tft; - -uint16_t tft_scroll; - -#endif // USE_SPI --------------------------------------------------------------------------- - -char disp_log_buffer[DISPLAY_LOG_ROWS][DISPLAY_LOG_COLS]; -char disp_temp[2]; // C or F -char disp_time[9]; // 13:45:43 -uint8_t disp_log_buffer_idx = 0; -uint8_t disp_log_buffer_ptr = 0; -bool disp_log_buffer_active = false; -uint8_t disp_model = DISP_NONE; -uint8_t disp_refresh = 1; -uint8_t disp_second = 0; -uint8_t disp_mode = 1; -uint8_t disp_power = 0; -uint8_t disp_device = 0; -uint8_t disp_subscribed = 0; - -void DisplayLogBufferIdxInc() -{ - char *pch = strchr(disp_log_buffer[disp_log_buffer_idx],'~'); // = 0x7E (~) Replace degrees character (276 octal) - if (pch != NULL) { - switch (disp_model) { - case DISP_LCD: - disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\337'; // = 0xDF - break; - case DISP_OLED: - case DISP_MATRIX: - case DISP_TFT: - case DISP_TFT4: - disp_log_buffer[disp_log_buffer_idx][pch - disp_log_buffer[disp_log_buffer_idx]] = '\370'; // = 0xF8 - break; - } - } - - disp_log_buffer_idx++; - if (DISPLAY_LOG_ROWS == disp_log_buffer_idx) { - disp_log_buffer_idx = 0; - } -} - -void DisplayLogBufferPtrInc() -{ - disp_log_buffer_ptr++; - if (DISPLAY_LOG_ROWS == disp_log_buffer_ptr) { - disp_log_buffer_ptr = 0; - } -} - -#ifdef USE_I2C // --------------------------------------------------------------------------- -void DisplayScreenBuffer() -{ - uint8_t last_row = Settings.display_rows -1; - - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); - if (disp_log_buffer_active) { - if (DISP_OLED == disp_model) { - oled->clearDisplay(); - oled->setTextSize(Settings.display_size); - oled->setCursor(0,0); - } - for (byte i = 0; i < last_row; i++) { - strlcpy(disp_screen_buffer[i], disp_screen_buffer[i +1], sizeof(disp_screen_buffer[i])); - if (DISP_LCD == disp_model) { - lcd->setCursor(0, i); // Col 0, Row i - lcd->print(disp_screen_buffer[i +1]); - } - else if (DISP_OLED == disp_model) { - oled->println(disp_screen_buffer[i]); - } - } - strlcpy(disp_screen_buffer[last_row], disp_log_buffer[disp_log_buffer_ptr], sizeof(disp_screen_buffer[last_row])); - - // Fill with spaces - byte len = sizeof(disp_screen_buffer[last_row]) - strlen(disp_screen_buffer[last_row]); - if (len) { - memset(disp_screen_buffer[last_row] + strlen(disp_screen_buffer[last_row]), 0x20, len); - disp_screen_buffer[last_row][sizeof(disp_screen_buffer[last_row])-1] = 0; - } - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), disp_screen_buffer[last_row]); - AddLog(LOG_LEVEL_DEBUG); - - if (DISP_LCD == disp_model) { - lcd->setCursor(0, last_row); - lcd->print(disp_screen_buffer[last_row]); - } - else if (DISP_OLED == disp_model) { - oled->println(disp_screen_buffer[last_row]); - oled->display(); - } - DisplayLogBufferPtrInc(); - } - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayMatrixInit() -{ - mtx_state = 1; - for (mtx_matrices = 0; mtx_matrices < 8; mtx_matrices++) { - if (Settings.display_address[mtx_matrices]) { - matrix[mtx_matrices] = new Adafruit_8x8matrix(); - matrix[mtx_matrices]->begin(Settings.display_address[mtx_matrices]); - matrix[mtx_matrices]->setRotation(1); - matrix[mtx_matrices]->setBrightness(Settings.display_dimmer); - matrix[mtx_matrices]->blinkRate(0); // 0 - 3 - matrix[mtx_matrices]->setTextWrap(false); // Allow text to run off edges -// matrix[mtx_matrices]->setTextSize(Settings.display_size); -// matrix[mtx_matrices]->setTextColor(LED_RED); - matrix[mtx_matrices]->cp437(true); - } else { - break; - } - } - DisplayMatrixClear(); -} - -void DisplayMatrixWrite() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->writeDisplay(); - } -} - -void DisplayMatrixClear() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - } - DisplayMatrixWrite(); -} -/* -void DisplayMatrixAll() // On based on Text value (1 - 6) -{ - int value = atoi(Settings.text); - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - if (i < value) { - matrix[i]->fillRect(0,0, 8,8, LED_ON); - } - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixAllOn() -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->fillRect(0,0, 8,8, LED_ON); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} -*/ -void DisplayMatrixFixed(char* txt) -{ - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(-i *8, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixCenter(char* txt) -{ - int offset; - - int len = strlen(txt); - offset = (len < 8) ? offset = ((mtx_matrices *8) - (len *6)) / 2 : 0; - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(-(i *8)+offset, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); -} - -void DisplayMatrixScrollLeft(char* txt, int loop) -{ - switch (mtx_state) { - case 1: - mtx_state = 2; - // Horiz. position of text -- starts off right edge - mtx_x = 8 * mtx_matrices; - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "[%s]"), txt); - AddLog(LOG_LEVEL_DEBUG); - - disp_refresh = Settings.display_refresh; - case 2: - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - matrix[i]->setCursor(mtx_x - i *8, 0); - matrix[i]->print(txt); - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); - // Move text position left by 1 pixel. - mtx_x--; - int16_t len = strlen(txt); - if (mtx_x < -(len *6)) { - mtx_state = loop; - } - } - break; - } -} - -void DisplayMatrixScrollUp(char* txt, int loop) -{ - int wordcounter = 0; - char tmpbuf[200]; - char *words[100]; -// char separators[] = " ,.;:!?"; -// char separators[] = " "; -// char separators[] = " /|"; - char separators[] = " /"; - - switch (mtx_state) { - case 1: - mtx_state = 2; - // Vertical position of text -- starts off left bottom edge - mtx_y = 8; - mtx_counter = 0; - disp_refresh = Settings.display_refresh; - case 2: - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - strlcpy(tmpbuf, txt, sizeof(tmpbuf)); - char *p = strtok(tmpbuf, separators); - while (p != NULL && wordcounter < 40) { - words[wordcounter++] = p; - p = strtok(NULL, separators); - } - for (byte i = 0; i < mtx_matrices; i++) { - matrix[i]->clear(); - for (byte j = 0; j < wordcounter; j++) { - matrix[i]->setCursor(-i *8, mtx_y + (j *8)); - matrix[i]->println(words[j]); - } - matrix[i]->setBrightness(Settings.display_dimmer); - } - DisplayMatrixWrite(); - if (((mtx_y %8) == 0) && mtx_counter) { - mtx_counter--; - } else { - mtx_y--; // Move text position up by 1 pixel. - mtx_counter = STATES * 1; // Hold text for 1 seconds - } - if (mtx_y < -(wordcounter *8)) { - mtx_state = loop; - } - } - break; - } -} - -void DisplayMatrixBufferScroll(uint8_t direction) -{ - if (disp_log_buffer_idx != disp_log_buffer_ptr) { - if (!mtx_state) { - mtx_state = 1; - } - if (direction) { - DisplayMatrixScrollUp(disp_log_buffer[disp_log_buffer_ptr], 0); - } else { - DisplayMatrixScrollLeft(disp_log_buffer[disp_log_buffer_ptr], 0); - } - if (!mtx_state) { - DisplayLogBufferPtrInc(); - } - } else { - DisplayMatrixFixed(disp_time); - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayLcdInit() -{ - lcd = new LiquidCrystal_I2C(Settings.display_address[0], Settings.display_cols[0], Settings.display_rows); - lcd->init(); - lcd->clear(); - memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols[0]); - disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; -} - -void DisplayLcdCenter(byte row, char* txt) -{ - int offset; - int len; - char line[Settings.display_cols[0] +2]; - - memset(line, 0x20, Settings.display_cols[0]); - line[Settings.display_cols[0]] = 0; - len = strlen(txt); - offset = (len < Settings.display_cols[0]) ? offset = (Settings.display_cols[0] - len) / 2 : 0; - strncpy(line +offset, txt, len); - lcd->setCursor(0, row); - lcd->print(line); -} - -void DisplayLcdTime() -{ - char line[Settings.display_cols[0] +1]; - - snprintf_P(line, sizeof(line), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); - DisplayLcdCenter(0, line); - snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); - DisplayLcdCenter(1, line); -} - -void DisplayLcdBufferOrTime() -{ - DisplayScreenBuffer(); - if (!disp_log_buffer_active) { - DisplayLcdTime(); - } -} - -// ------------------------------------------------------------------------------------------- - -void DisplayOledInit() -{ - oled = new Adafruit_SSD1306(); - oled->begin(SSD1306_SWITCHCAPVCC, Settings.display_address[0]); - oled->invertDisplay(false); - oled->clearDisplay(); - oled->setTextWrap(false); // Allow text to run off edges - oled->cp437(true); - - oled->setTextSize(Settings.display_size); - oled->setTextColor(WHITE); - oled->setCursor(0,0); - oled->display(); - -// memset(disp_screen_buffer[Settings.display_rows -1], 0x20, Settings.display_cols); -// disp_screen_buffer[Settings.display_rows -1][Settings.display_cols[0]] = 0; -} - -void DisplayOledDisplayOnOff(byte state) -{ - if (state) { - oled->ssd1306_command(SSD1306_DISPLAYON); - } else { - oled->ssd1306_command(SSD1306_DISPLAYOFF); - } - oled->display(); -} - -void DisplayOledTime() -{ - char line[12]; - - oled->clearDisplay(); - oled->setTextSize(2); - oled->setCursor(0, 0); - snprintf_P(line, sizeof(line), PSTR(" %02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); // [ 12:34:56 ] - oled->println(line); - snprintf_P(line, sizeof(line), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); // [01-02-2018] - oled->println(line); - oled->display(); -} - -#endif // USE_I2C --------------------------------------------------------------------------- -#ifdef USE_SPI // --------------------------------------------------------------------------- -void DisplayTftInit() -{ - if (DISP_TFT == disp_model) { - tft = new TasmotaTFT(ILI9341, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); -// tft = new Adafruit_ILI9341(pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); - } - else if (DISP_TFT4 == disp_model) { - tft = new TasmotaTFT(ILI9481, pin[GPIO_SPI_CS], pin[GPIO_SPI_DC]); - } - tft->begin(); - tft->setRotation(0); - tft->invertDisplay(0); - tft->fillScreen(TFT_BLACK); - tft->setTextWrap(false); // Allow text to run off edges - tft->cp437(true); - - tft->setScrollMargins(TFT_TOP, TFT_BOTTOM); - tft->setCursor(0, 0); - tft->setTextColor(TFT_YELLOW, TFT_BLACK); - tft->setTextSize(2); - tft->println("HEADER"); - - tft_scroll = TFT_TOP; -} - -void DisplayTftDisplayOnOff(byte state) -{ -// tft->showDisplay(state); -// tft->invertDisplay(state); - if (pin[GPIO_BACKLIGHT] < 99) { - pinMode(pin[GPIO_BACKLIGHT], OUTPUT); - digitalWrite(pin[GPIO_BACKLIGHT], state); - } -} - -void DisplayTftPrint(byte size, char *txt) -{ - uint16_t theight; - - tft->setCursor(0, tft_scroll); - tft->setTextSize(size); - theight = size * TFT_FONT_HEIGTH; - tft->fillRect(0, tft_scroll, tft->width(), theight, TFT_BLACK); - - snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION "[%s]"), txt); - AddLog(LOG_LEVEL_DEBUG); - - tft->print(txt); - tft_scroll += theight; - if (tft_scroll >= (tft->height() - TFT_BOTTOM)) { - tft_scroll = TFT_TOP; - } - tft->setScrollStart(tft_scroll); -} - -void DisplayTftBuffer() -{ - disp_refresh--; - if (!disp_refresh) { - disp_refresh = Settings.display_refresh; - disp_log_buffer_active = (disp_log_buffer_idx != disp_log_buffer_ptr); - if (disp_log_buffer_active) { - DisplayTftPrint(Settings.display_size, disp_log_buffer[disp_log_buffer_ptr]); - DisplayLogBufferPtrInc(); - } - } -} -#endif // USE_SPI --------------------------------------------------------------------------- - -/*********************************************************************************************\ - * Sensors -\*********************************************************************************************/ - -enum SensorQuantity { - JSON_TEMPERATURE, - JSON_HUMIDITY, JSON_LIGHT, JSON_NOISE, JSON_AIRQUALITY, - JSON_PRESSURE, JSON_PRESSUREATSEALEVEL, - JSON_ILLUMINANCE, - JSON_GAS, - JSON_YESTERDAY, JSON_TOTAL, JSON_TODAY, - JSON_PERIOD, - JSON_POWERFACTOR, JSON_COUNTER, JSON_ANALOG_INPUT, JSON_UV_LEVEL, - JSON_CURRENT, - JSON_VOLTAGE, - JSON_POWERUSAGE, - JSON_CO2 }; -const char kSensorQuantity[] PROGMEM = - D_JSON_TEMPERATURE "|" // degrees - D_JSON_HUMIDITY "|" D_JSON_LIGHT "|" D_JSON_NOISE "|" D_JSON_AIRQUALITY "|" // percentage - D_JSON_PRESSURE "|" D_JSON_PRESSUREATSEALEVEL "|" // hPa - D_JSON_ILLUMINANCE "|" // lx - D_JSON_GAS "|" // kOhm - D_JSON_YESTERDAY "|" D_JSON_TOTAL "|" D_JSON_TODAY "|" // kWh - D_JSON_PERIOD "|" // Wh - D_JSON_POWERFACTOR "|" D_JSON_COUNTER "|" D_JSON_ANALOG_INPUT "|" D_JSON_UV_LEVEL "|" // No unit - D_JSON_CURRENT "|" // Ampere - D_JSON_VOLTAGE "|" // Volt - D_JSON_POWERUSAGE "|" // Watt - D_JSON_CO2 ; // ppm - -void DisplayJsonValue(const char *topic, const char* device, const char* mkey, const char* value) -{ - char quantity[TOPSZ]; - char spaces[Settings.display_cols[0]]; - char source[Settings.display_cols[0] - Settings.display_cols[1]]; - char svalue[Settings.display_cols[1] +1]; - - memset(spaces, 0x20, sizeof(spaces)); - spaces[sizeof(spaces) -1] = '\0'; - snprintf_P(source, sizeof(source), PSTR("%s/%s%s"), topic, mkey, (DISP_MATRIX == Settings.display_model) ? "" : spaces); // pow1/Voltage - - int quantity_code = GetCommandCode(quantity, sizeof(quantity), mkey, kSensorQuantity); - if ((-1 == quantity_code) || !strcmp_P(mkey, S_RSLT_POWER)) { // Ok: Power, Not ok: POWER - return; - } - if (JSON_TEMPERATURE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s~%s"), value, disp_temp); - } - else if ((quantity_code >= JSON_HUMIDITY) && (quantity_code <= JSON_AIRQUALITY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s%%"), value); - } - else if ((quantity_code >= JSON_PRESSURE) && (quantity_code <= JSON_PRESSUREATSEALEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PRESSURE), value); - } - else if (JSON_ILLUMINANCE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_LUX), value); - } - else if (JSON_GAS == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOOHM), value); - } - else if ((quantity_code >= JSON_YESTERDAY) && (quantity_code <= JSON_TODAY)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_KILOWATTHOUR), value); - } - else if (JSON_PERIOD == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATTHOUR), value); - } - else if ((quantity_code >= JSON_POWERFACTOR) && (quantity_code <= JSON_UV_LEVEL)) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s"), value); - } - else if (JSON_CURRENT == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_AMPERE), value); - } - else if (JSON_VOLTAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_VOLT), value); - } - else if (JSON_POWERUSAGE == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_WATT), value); - } - else if (JSON_CO2 == quantity_code) { - snprintf_P(svalue, sizeof(svalue), PSTR("%s" D_UNIT_PARTS_PER_MILLION), value); - } - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("%s %s"), source, svalue); - -// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "mkey [%s], source [%s], value [%s], quantity_code %d, log_buffer [%s]"), mkey, source, value, quantity_code, disp_log_buffer[disp_log_buffer_idx]); -// AddLog(LOG_LEVEL_DEBUG); - - DisplayLogBufferIdxInc(); -} - -void DisplayAnalyzeJson(char *topic, char *json) -{ -// //tele/pow2/STATE {"Time":"2017-09-20T11:53:03", "Uptime":10, "Vcc":3.123, "POWER":"ON", "Wifi":{"AP":2, "SSId":"indebuurt2", "RSSI":68, "APMac":"00:22:6B:FE:8E:20"}} -// //tele/pow2/ENERGY {"Time":"2017-09-20T11:53:03", "Total":6.522, "Yesterday":0.150, "Today":0.073, "Period":0.5, "Power":12.1, "Factor":0.56, "Voltage":210.1, "Current":0.102} - -// tele/pow1/SENSOR = {"Time":"2018-01-02T17:13:17","ENERGY":{"Total":13.091,"Yesterday":0.060,"Today":0.046,"Period":0.2,"Power":9.8,"Factor":0.49,"Voltage":206.8,"Current":0.096}} -// tele/dual/STATE {"Time":"2017-09-20T11:53:03","Uptime":25,"Vcc":3.178,"POWER1":"OFF","POWER2":"OFF","Wifi":{"AP":2,"SSId":"indebuurt2","RSSI":100,"APMac":"00:22:6B:FE:8E:20"}} -// tele/sc/SENSOR {"Time":"2017-09-20T11:53:09","Temperature":24.0,"Humidity":16.0,"Light":30,"Noise":20,"AirQuality":100,"TempUnit":"C"} -// tele/rf1/SENSOR {"Time":"2017-09-20T11:53:23","BH1750":{"Illuminance":57}} -// tele/wemos5/SENSOR {"Time":"2017-09-20T11:53:53","SHT1X":{"Temperature":20.1,"Humidity":58.9},"HTU21":{"Temperature":20.7,"Humidity":58.5},"BMP280":{"Temperature":21.6,"Pressure":1020.3},"TempUnit":"C"} -// tele/th1/SENSOR {"Time":"2017-09-20T11:54:48","DS18B20":{"Temperature":49.7},"TempUnit":"C"} - - char jsonStr[MESSZ]; - const char *tempunit; - - strlcpy(jsonStr, json, sizeof(jsonStr)); // Save original before destruction by JsonObject - StaticJsonBuffer<400> jsonBuf; - JsonObject &root = jsonBuf.parseObject(jsonStr); - if (root.success()) { - - tempunit = root[D_JSON_TEMPERATURE_UNIT]; - if (tempunit) { - snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%s"), tempunit); -// snprintf_P(log_data, sizeof(log_data), disp_temp); -// AddLog(LOG_LEVEL_DEBUG); - } - - for (JsonObject::iterator it = root.begin(); it != root.end(); ++it) { - JsonVariant value = it->value; - if (value.is()) { - JsonObject& Object2 = value; - for (JsonObject::iterator it2 = Object2.begin(); it2 != Object2.end(); ++it2) { - JsonVariant value2 = it2->value; - if (value2.is()) { - JsonObject& Object3 = value2; - for (JsonObject::iterator it3 = Object3.begin(); it3 != Object3.end(); ++it3) { - DisplayJsonValue(topic, it->key, it3->key, it3->value.as()); // Sensor 56% - } - } else { - DisplayJsonValue(topic, it->key, it2->key, it2->value.as()); // Sensor 56% - } - } - } else { - DisplayJsonValue(topic, it->key, it->key, it->value.as()); // Topic 56% - } - } - } -} - -/*********************************************************************************************\ - * Public -\*********************************************************************************************/ - -void DisplayInit() -{ - if (!Settings.display_model) { -#ifdef USE_I2C - if (i2c_flg) { - if (I2cDevice(LCD_ADDRESS1)) { - Settings.display_address[0] = LCD_ADDRESS1; - Settings.display_model = DISP_LCD; - } - else if (I2cDevice(LCD_ADDRESS2)) { - Settings.display_address[0] = LCD_ADDRESS2; - Settings.display_model = DISP_LCD; - } - else if (I2cDevice(OLED_ADDRESS1)) { - Settings.display_address[0] = OLED_ADDRESS1; - Settings.display_model = DISP_OLED; - } - else if (I2cDevice(OLED_ADDRESS2)) { - Settings.display_address[0] = OLED_ADDRESS2; - Settings.display_model = DISP_OLED; - } - else if (I2cDevice(Settings.display_address[1])) { - Settings.display_model = DISP_MATRIX; - } - } -#endif // USE_I2C -#ifdef USE_SPI - if (spi_flg) { - Settings.display_model = DISP_TFT; - } -#endif // USE_SPI - } - disp_model = Settings.display_model; - -// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_DEBUG "Display model %d"), disp_model); -// AddLog(LOG_LEVEL_DEBUG); - - if (disp_model) { - devices_present++; - disp_device = devices_present; - snprintf_P(disp_temp, sizeof(disp_temp), PSTR("%c"), TempUnit()); - disp_log_buffer_idx = 0; - disp_log_buffer_ptr = 0; - disp_log_buffer_active = false; - disp_refresh = Settings.display_refresh; - disp_mode = Settings.display_mode; - -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - DisplayLcdInit(); - } - else if (DISP_OLED == disp_model) { - DisplayOledInit(); - } - else if (DISP_MATRIX == disp_model) { - DisplayMatrixInit(); - } -#endif // USE_I2C -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftInit(); - } -#endif - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR(D_VERSION " %s"), my_version); - DisplayLogBufferIdxInc(); - snprintf_P(disp_log_buffer[disp_log_buffer_idx], sizeof(disp_log_buffer[disp_log_buffer_idx]), PSTR("Display mode %d"), disp_mode); - DisplayLogBufferIdxInc(); - } -} - -void DisplaySetPower() -{ -// disp_power = XdrvMailbox.index; - disp_power = bitRead(XdrvMailbox.index, disp_device -1); - if (disp_model) { - if (disp_power) { -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - lcd->backlight(); - } - else if (DISP_OLED == disp_model) { - DisplayOledDisplayOnOff(1); - } -#endif -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftDisplayOnOff(1); - } -#endif - } else { -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - lcd->noBacklight(); - } - else if (DISP_OLED == disp_model) { - DisplayOledDisplayOnOff(0); - } -#endif -#ifdef USE_SPI - if ((DISP_TFT == disp_model) || (DISP_TFT4 == disp_model)) { - DisplayTftDisplayOnOff(0); - } -#endif - } - } -} - -void DisplayMqttSubscribe() -{ -/* Subscribe to tele messages only - * Supports the following FullTopic formats - * - %prefix%/%topic% - * - home/%prefix%/%topic% - * - home/level2/%prefix%/%topic% etc. - */ -// if (Settings.display_mode &0x04) { - if (Settings.display_model) { - - char stopic[TOPSZ]; - char ntopic[TOPSZ]; - - ntopic[0] = '\0'; - strlcpy(stopic, Settings.mqtt_fulltopic, sizeof(stopic)); - char *tp = strtok(stopic, "/"); - while (tp != NULL) { - if (!strcmp_P(tp, PSTR(MQTT_TOKEN_PREFIX))) { - break; - } - strncat_P(ntopic, PSTR("+/"), sizeof(ntopic)); // Add single-level wildcards - tp = strtok(NULL, "/"); - } - strncat(ntopic, Settings.mqtt_prefix[2], sizeof(ntopic)); // Subscribe to tele messages - strncat_P(ntopic, PSTR("/#"), sizeof(ntopic)); // Add multi-level wildcard - MqttSubscribe(ntopic); - disp_subscribed = 1; - } else { - disp_subscribed = 0; - } -} - -boolean DisplayMqttData() -{ - if (disp_subscribed) { - char stopic[TOPSZ]; - - snprintf_P(stopic, sizeof(stopic) , PSTR("%s/"), Settings.mqtt_prefix[2]); // tele/ - char *tp = strstr(XdrvMailbox.topic, stopic); - if (tp) { // tele/sonoff/SENSOR - if (Settings.display_mode &0x04) { - tp = tp + strlen(stopic); // sonoff/SENSOR - char *topic = strtok(tp, "/"); // sonoff - DisplayAnalyzeJson(topic, XdrvMailbox.data); - } - return true; - } - } - return false; -} - -void DisplayLocalSensor() -{ - if ((Settings.display_mode &0x02) && (0 == tele_period)) { - DisplayAnalyzeJson(mqtt_topic, mqtt_data); - } -} - -void DisplayRefresh() // Every 0.05 second -{ - snprintf_P(disp_time, sizeof(disp_time), PSTR("%02d" D_HOUR_MINUTE_SEPARATOR "%02d" D_MINUTE_SECOND_SEPARATOR "%02d"), RtcTime.hour, RtcTime.minute, RtcTime.second); - - disp_second++; - if (disp_second >= STATES) { - disp_second = 0; - -#ifdef USE_I2C - if (DISP_LCD == disp_model) { - switch (disp_mode) { - case 0: - lcd->clear(); - break; - case 1: - DisplayLcdTime(); - break; - case 2: - case 4: - DisplayScreenBuffer(); - break; - case 3: - case 5: - DisplayLcdBufferOrTime(); - break; - } - } - else if (DISP_OLED == disp_model) { - switch (disp_mode) { - // case 0: - // oled->clearDisplay(); - // oled->display(); - // break; - case 1: - DisplayOledTime(); - break; - case 0: // Text only - case 2: // Local - case 3: // Local - case 4: // Mqtt - case 5: // Mqtt - DisplayScreenBuffer(); - break; - } - } -#endif -#ifdef USE_SPI - if (DISP_TFT == disp_model) { - char tftdt[21]; - char disp_date4[11]; // 24-04-2017 - - snprintf_P(disp_date4, sizeof(disp_date4), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%04d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year); - - tft->setTextSize(2); - tft->setTextColor(TFT_YELLOW, TFT_BLACK); // Add background color to solve flicker - tft->setCursor(0, 0); - snprintf_P(tftdt, sizeof(tftdt), PSTR("%s %s"), disp_date4, disp_time); - tft->print(tftdt); - switch (disp_mode) { - case 0: // Text - case 2: // Local - case 3: // Local - case 4: // Mqtt - case 5: // Mqtt - tft->setTextColor(TFT_CYAN, TFT_BLACK); // Add background color to solve flicker - DisplayTftBuffer(); - break; - } - } -#endif - } - -#ifdef USE_I2C - if (DISP_MATRIX == disp_model) { - if (!disp_power) { - DisplayMatrixClear(); - } else { - char disp_date[9]; // 24-04-17 - char disp_day[10]; // Mon - - snprintf_P(disp_date, sizeof(disp_date), PSTR("%02d" D_MONTH_DAY_SEPARATOR "%02d" D_YEAR_MONTH_SEPARATOR "%02d"), RtcTime.day_of_month, RtcTime.month, RtcTime.year -2000); - snprintf_P(disp_day, sizeof(disp_day), PSTR("%d %s"), RtcTime.day_of_month, RtcTime.name_of_month); - - switch (disp_mode) { - case 0: -// DisplayMatrixScrollLeft(Settings.text, Settings.loop); - case 2: - DisplayMatrixFixed(disp_date); - break; - case 3: - DisplayMatrixCenter(disp_day); - break; - case 4: - DisplayMatrixBufferScroll(0); - break; - case 1: // Time and user text - case 5: // Time, user text and MQTT - DisplayMatrixBufferScroll(1); - break; -// case 8: -// DisplayMatrixAllOn(); -// break; -// case 9: -// DisplayMatrixAll(); -// break; - } - } - } -#endif -} - -/*********************************************************************************************\ - * Commands -\*********************************************************************************************/ - -boolean DisplayCommand() -{ - char command [CMDSZ]; - boolean serviced = true; - uint8_t disp_len = strlen(D_CMND_DISPLAY); // Prep for string length change - - if (!strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_DISPLAY), disp_len)) { // Prefix - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic +disp_len, kDisplayCommands); - if (CMND_DISP_MODEL == command_code) { - if ((XdrvMailbox.payload >= DISP_NONE) && (XdrvMailbox.payload < DISP_MAX)) { - Settings.display_model = XdrvMailbox.payload; - restart_flag = 2; // Restart to re-init interface and add/Remove MQTT subscribe - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_model); - } - else if (CMND_DISP_MODE == command_code) { -/* - * Matrix LCD / Oled TFT - * 0 = Clear display - * 1 = Text up and time Time - * 2 = Date Local sensors Local sensors - * 3 = Day Local sensors and time Local sensors and time - * 4 = Mqtt left and time Mqtt (incl local) sensors Mqtt (incl local) sensors - * 5 = Mqtt up and time Mqtt (incl local) sensors and time Mqtt (incl local) sensors and time -*/ - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 5)) { - Settings.display_mode = XdrvMailbox.payload; -// if ((disp_mode &0x04) != (Settings.display_mode &0x04)) { - if (!disp_subscribed) { - restart_flag = 2; // Restart to Add/Remove MQTT subscribe - } - disp_mode = Settings.display_mode; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_mode); - } - else if (CMND_DISP_REFRESH == command_code) { - if ((XdrvMailbox.payload >= 1) && (XdrvMailbox.payload <= 7)) { - Settings.display_refresh = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_refresh); - } - else if ((CMND_DISP_COLS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 2)) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_COLS)) { - Settings.display_cols[XdrvMailbox.index -1] = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_cols[XdrvMailbox.index -1]); - } - else if (CMND_DISP_DIMMER == command_code) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 100)) { - Settings.display_dimmer = ((XdrvMailbox.payload +1) * 100) / 666; // Correction for Domoticz (0 - 15) - if (Settings.display_dimmer && !(disp_power)) { - ExecuteCommandPower(disp_device, POWER_ON); - } - else if (!Settings.display_dimmer && disp_power) { - ExecuteCommandPower(disp_device, POWER_OFF); - } - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_dimmer); - } - else if (CMND_DISP_ROWS == command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= DISPLAY_BUFFER_ROWS)) { - Settings.display_rows = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_rows); - } - else if (CMND_DISP_SIZE == command_code) { - if ((XdrvMailbox.payload > 0) && (XdrvMailbox.payload <= 4)) { - Settings.display_size = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_NVALUE, command, Settings.display_size); - } - else if (CMND_DISP_TEXT == command_code) { - if (XdrvMailbox.data_len > 0) { - - // Here display command manipulation could take place like textsize, color, position etc. using intext parameters - // Currently just adds to the logbuffer - - strlcpy(disp_log_buffer[disp_log_buffer_idx], XdrvMailbox.data, sizeof(disp_log_buffer[disp_log_buffer_idx])); - DisplayLogBufferIdxInc(); - } else { - snprintf_P(XdrvMailbox.data, XdrvMailbox.data_len, PSTR("Text too long")); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_VALUE, command, XdrvMailbox.data); - } - else if ((CMND_DISP_ADDRESS == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= 8)) { - if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 255)) { - Settings.display_address[XdrvMailbox.index -1] = XdrvMailbox.payload; - } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DISPLAY_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.display_address[XdrvMailbox.index -1]); - } - else serviced = false; - } - else serviced = false; - return serviced; -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_14 - -boolean Xdrv14(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - if (i2c_flg || spi_flg) { - DisplayInit(); - } - break; - case FUNC_EVERY_50_MSECOND: - DisplayRefresh(); - break; - case FUNC_COMMAND: - result = DisplayCommand(); - break; - case FUNC_MQTT_SUBSCRIBE: - DisplayMqttSubscribe(); - break; - case FUNC_MQTT_DATA: - result = DisplayMqttData(); - break; - case FUNC_SET_POWER: - DisplaySetPower(); - break; - case FUNC_SHOW_SENSOR: - DisplayLocalSensor(); - break; - } - return result; -} - -#endif // USE_DISPLAY -#endif // USE_I2C or USE_SPI From 75b01e231c11576fdc5b43f1ffe818c982e9e011 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 7 Jun 2018 23:56:52 -0300 Subject: [PATCH 414/435] KNX: Fix Bug when reply sensor values --- sonoff/xdrv_11_knx.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index eef88e001..50c71c625 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -566,7 +566,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) knx.answer_1bit(msg.received_on, chan->last_state); } } - else if (chan->type = KNX_TEMPERATURE) // Reply Temperature + else if (chan->type == KNX_TEMPERATURE) // Reply Temperature { knx.answer_2byte_float(msg.received_on, last_temp); if (Settings.flag.knx_enable_enhancement) { @@ -574,7 +574,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) knx.answer_2byte_float(msg.received_on, last_temp); } } - else if (chan->type = KNX_HUMIDITY) // Reply Humidity + else if (chan->type == KNX_HUMIDITY) // Reply Humidity { knx.answer_2byte_float(msg.received_on, last_hum); if (Settings.flag.knx_enable_enhancement) { From 79c732b34cf37305a22c6e6b865b2939b91afefe Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 8 Jun 2018 18:44:07 -0300 Subject: [PATCH 415/435] Update formatting of Troubleshooting --- .github/ISSUE_TEMPLATE/Custom.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/Custom.md b/.github/ISSUE_TEMPLATE/Custom.md index 62e47446d..570e3afe3 100644 --- a/.github/ISSUE_TEMPLATE/Custom.md +++ b/.github/ISSUE_TEMPLATE/Custom.md @@ -12,5 +12,8 @@ Make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in the discussion group (https://groups.google.com/d/forum/sonoffusers) - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : +``` +STATUS 0 OUTPUT HERE +``` **(Please, remember to close the issue when the problem has been addressed)** From 25c58d90a109640c136e077a1ac1aa32e03e2003 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 8 Jun 2018 18:47:32 -0300 Subject: [PATCH 416/435] Update Bug Report Formatting --- .github/ISSUE_TEMPLATE/Bug_report.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md index 7dc1e3499..d879f46bc 100644 --- a/.github/ISSUE_TEMPLATE/Bug_report.md +++ b/.github/ISSUE_TEMPLATE/Bug_report.md @@ -6,24 +6,27 @@ about: Create a report to help us improve **Describe the bug** -A clear and concise description of what the bug is. +_A clear and concise description of what the bug is._ Also, make sure these boxes are checked [x] before submitting your issue - Thank you! - [ ] Searched the problem in issues and in the wiki - [ ] Hardware used : - [ ] Provide the output of command ``status 0`` : +``` +STATUS 0 OUTPUT HERE +``` **To Reproduce** -Steps to reproduce the behavior: +_Steps to reproduce the behavior:_ **Expected behavior** -A clear and concise description of what you expected to happen. +_A clear and concise description of what you expected to happen._ **Screenshots** -If applicable, add screenshots to help explain your problem. +_If applicable, add screenshots to help explain your problem._ **Additional context** -Add any other context about the problem here. +_Add any other context about the problem here._ **(Please, remember to close the issue when the problem has been addressed)** From d359c7efb7f641da8c3d7cbd972d46478e3d6d22 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 8 Jun 2018 18:48:25 -0300 Subject: [PATCH 417/435] Update Feature Request Formatting --- .github/ISSUE_TEMPLATE/Feature_request.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/Feature_request.md b/.github/ISSUE_TEMPLATE/Feature_request.md index 8a0895c8e..1c0989566 100644 --- a/.github/ISSUE_TEMPLATE/Feature_request.md +++ b/.github/ISSUE_TEMPLATE/Feature_request.md @@ -6,15 +6,15 @@ about: Suggest an idea for this project **Have you look for this feature in other issues and in the wiki?** **Is your feature request related to a problem? Please describe.** -A clear and concise description of what the problem is. +_A clear and concise description of what the problem is._ **Describe the solution you'd like** -A clear and concise description of what you want to happen. +_A clear and concise description of what you want to happen._ **Describe alternatives you've considered** -A clear and concise description of any alternative solutions or features you've considered. +_A clear and concise description of any alternative solutions or features you've considered._ **Additional context** -Add any other context or screenshots about the feature request here. +_Add any other context or screenshots about the feature request here._ **(Please, remember to close the issue when the problem has been addressed)** From 47f5210b29c5e11b77cc326bb8c130ee36487b78 Mon Sep 17 00:00:00 2001 From: Gennaro Tortone Date: Sat, 9 Jun 2018 11:08:12 +0200 Subject: [PATCH 418/435] update of language it-IT --- sonoff/language/it-IT.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index eeac61384..1e7ed00b5 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.14.0 + * Updated until v6.0.0a \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -321,10 +321,10 @@ #define D_UPLOAD_ERR_7 "Invio annullato" #define D_UPLOAD_ERR_8 "File non valido" #define D_UPLOAD_ERR_9 "File troppo grande" -#define D_UPLOAD_ERR_10 "Failed to init RF chip" -#define D_UPLOAD_ERR_11 "Failed to erase RF chip" -#define D_UPLOAD_ERR_12 "Failed to write to RF chip" -#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" +#define D_UPLOAD_ERR_10 "Inizializzazione fallita del chip RF" +#define D_UPLOAD_ERR_11 "Cancellazione fallita del chip RF" +#define D_UPLOAD_ERR_12 "Scrittura fallita del chip RF" +#define D_UPLOAD_ERR_13 "Decodifica fallita del firmware RF" #define D_UPLOAD_ERROR_CODE "Codice errore invio" #define D_ENTER_COMMAND "Inserire comando" From f45dd53352563878c3911ee50be3bc0a89ccda5b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sun, 10 Jun 2018 02:09:11 -0300 Subject: [PATCH 419/435] Add Arithmetic commands for VAR MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New Arithmetic commands to be used with VARs: ADD1 to ADD5: Add a value to VAR[x] Usage: ADD1 15 Result: VAR1 = VAR1 + 15 SUB1 to SUB5: Substract a value from VAR[x] Usage: SUB1 15 Result: VAR1 = VAR1 - 15 MULT1 to MULT5: Multiply a value to VAR[x] Usage: MULT1 15 Result: VAR1 = VAR1 * 15 SCALE1 to SCALE5: Scale a value from a low and high limit to another low and high limit and store it in VAR[x] (directly equivalent to MAP arduino command) Syntax: SCALEx value, fromLow, fromHigh, toLow, toHigh Parameters value: the number to scale fromLow: the lower bound of the value’s current range fromHigh: the upper bound of the value’s current range toLow: the lower bound of the value’s target range toHigh: the upper bound of the value’s target range (omitted values are taken as zero) Usage: SCALE1 15, 0, 100, 0, 1000 Result: VAR1 = 150 --- sonoff/xdrv_10_rules.ino | 62 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 65e8df730..dd46e32d5 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -74,11 +74,15 @@ #define D_CMND_EVENT "Event" #define D_CMND_VAR "Var" #define D_CMND_MEM "Mem" +#define D_CMND_ADD "Add" +#define D_CMND_SUB "Sub" +#define D_CMND_MULT "Mult" +#define D_CMND_SCALE "Scale" #define D_JSON_INITIATED "Initiated" -enum RulesCommands { CMND_RULE, CMND_RULETIMER, CMND_EVENT, CMND_VAR, CMND_MEM }; -const char kRulesCommands[] PROGMEM = D_CMND_RULE "|" D_CMND_RULETIMER "|" D_CMND_EVENT "|" D_CMND_VAR "|" D_CMND_MEM ; +enum RulesCommands { CMND_RULE, CMND_RULETIMER, CMND_EVENT, CMND_VAR, CMND_MEM, CMND_ADD, CMND_SUB, CMND_MULT, CMND_SCALE }; +const char kRulesCommands[] PROGMEM = D_CMND_RULE "|" D_CMND_RULETIMER "|" D_CMND_EVENT "|" D_CMND_VAR "|" D_CMND_MEM "|" D_CMND_ADD "|" D_CMND_SUB "|" D_CMND_MULT "|" D_CMND_SCALE ; String rules_event_value; unsigned long rules_timer[MAX_RULE_TIMERS] = { 0 }; @@ -500,6 +504,60 @@ boolean RulesCommand() } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, Settings.mems[index -1]); } + else if ((CMND_ADD == command_code) && (index > 0) && (index <= RULES_MAX_VARS)) { + if ( (XdrvMailbox.data_len > 0) && (XdrvMailbox.payload >= 0) ){ + int16_t tempvar = atol(vars[index -1]) + XdrvMailbox.payload; + snprintf_P(vars[index -1], sizeof(vars[index -1]), PSTR("%d"), tempvar ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]); + } + else if ((CMND_SUB == command_code) && (index > 0) && (index <= RULES_MAX_VARS)) { + if ( (XdrvMailbox.data_len > 0) && (XdrvMailbox.payload >= 0) ){ + int16_t tempvar = atol(vars[index -1]) - XdrvMailbox.payload; + snprintf_P(vars[index -1], sizeof(vars[index -1]), PSTR("%d"), tempvar ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]); + } + else if ((CMND_MULT == command_code) && (index > 0) && (index <= RULES_MAX_VARS)) { + if ( (XdrvMailbox.data_len > 0) && (XdrvMailbox.payload >= 0) ){ + int16_t tempvar = atol(vars[index -1]) * XdrvMailbox.payload; + snprintf_P(vars[index -1], sizeof(vars[index -1]), PSTR("%d"), tempvar ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]); + } + else if ((CMND_SCALE == command_code) && (index > 0) && (index <= RULES_MAX_VARS)) { + if ( XdrvMailbox.data_len > 0 ) { + if (strstr(XdrvMailbox.data, ",")) { // Process parameter entry + uint8_t tpos = 0; // Parameter index + int16_t value = 0; + int16_t valueIN = 0; + int16_t fromLow = 0; + int16_t fromHigh = 0; + int16_t toLow = 0; + int16_t toHigh = 0; + char *p = XdrvMailbox.data; // Parameters like "1, 2, 3, 4" + char *q = p; // Value entered flag + while (p && (tpos < 6)) { + if (p > q) { // Any value entered + if (1 == tpos) { valueIN = value; } + if (2 == tpos) { fromLow = value; } + if (3 == tpos) { fromHigh = value; } + if (4 == tpos) { toLow = value; } + if (5 == tpos) { toHigh = value; } + } + p = LTrim(p); // Skip spaces + if (tpos && (*p == ',')) { p++; } // Skip separator + p = LTrim(p); // Skip spaces + q = p; // Reset any value entered flag + value = strtol(p, &p, 10); + tpos++; // Next parameter + } + value = map(valueIN, fromLow, fromHigh, toLow, toHigh); + snprintf_P(vars[index -1], sizeof(vars[index -1]), PSTR("%d"), value ); + } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, index, vars[index -1]); + } else serviced = false; // Unknown command return serviced; From 13c159bbfaea75971c827acc5f32f92732be5028 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 11 Jun 2018 14:42:30 -0300 Subject: [PATCH 420/435] Add a Disclaimer to Readme Add a Disclaimer to Readme due that sonoff devices are being installed by uncertified people --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 6c1bf4e3d..036ba6ae4 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,13 @@ If you like **Sonoff-Tasmota**, give it a star, or fork it and contribute! Current version is **6.0.0a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +### Disclaimer +:warning: **DANGER OF ELECTROCUTION** :warning: + +A Sonoff device is not a toy. It uses Mains AC so there is a danger of electrocution if not installed properly. If you don't know how to install it, please call an electrician. Remember: _**SAFETY FIRST**_. It is not worth to risk yourself, your family and your home if you don't know exactly what you are doing. Never try to flash a Sonoff device while it is connected to MAINS AC. + +We don't take any responsibility nor liability for using this software nor for the installation or any tips, advice, videos, etc. given by any member of this site or any related site. + ### Quick Install Download one of the released binaries from https://github.com/arendst/Sonoff-Tasmota/releases and flash it to your hardware as documented in the wiki. From ae3f8d0535938fcb6bda23ec63e0a464e1d80b80 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 12 Jun 2018 14:17:02 -0300 Subject: [PATCH 421/435] KNX: Support for DS18S20 Temperature sensor --- sonoff/xdrv_11_knx.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 50c71c625..72102fe99 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -462,6 +462,7 @@ void KNX_INIT() if (GetUsedInModule(GPIO_DHT11, my_module.gp.io)) { device_param[KNX_TEMPERATURE-1].show = true; } if (GetUsedInModule(GPIO_DHT22, my_module.gp.io)) { device_param[KNX_TEMPERATURE-1].show = true; } if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_TEMPERATURE-1].show = true; } + if (GetUsedInModule(GPIO_DSB, my_module.gp.io)) { device_param[KNX_TEMPERATURE-1].show = true; } if (GetUsedInModule(GPIO_DHT11, my_module.gp.io)) { device_param[KNX_HUMIDITY-1].show = true; } if (GetUsedInModule(GPIO_DHT22, my_module.gp.io)) { device_param[KNX_HUMIDITY-1].show = true; } if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_HUMIDITY-1].show = true; } @@ -547,7 +548,7 @@ void KNX_CB_Action(message_t const &msg, void *arg) { if (!toggle_inhibit) { char command[25]; - snprintf_P(command, sizeof(command), PSTR("event KNXRX_VAL%d=%d"), ((chan->type) - KNX_SLOT1 + 1 ), msg.data[0]); + snprintf_P(command, sizeof(command), PSTR("event KNXRX_CMND%d=%d"), ((chan->type) - KNX_SLOT1 + 1 ), msg.data[0]); ExecuteCommand(command, SRC_KNX); if (Settings.flag.knx_enable_enhancement) { toggle_inhibit = TOGGLE_INHIBIT_TIME; From 51d09680aa098637115ba7c7036fff412cf1b25e Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 12 Jun 2018 14:35:48 -0300 Subject: [PATCH 422/435] Update _releasenotes.ino --- sonoff/_releasenotes.ino | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 318fff236..b93214e5d 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,6 @@ /* 6.0.0a + * KNX: Support for DS18S20 Temperature sensor + * KNX: Fixed Bug when doing reply of sensors values * Add CRC to Settings making future upgrades more fail-safe * Add support for uploading Sonoff Bridge firmware found in tools/fw_efm8bb1 folder build by Portisch using Web Gui File Upload (#2886) * Add support for I2C temperature sensor LM75AD (#2909) @@ -17,10 +19,11 @@ where [slot] is any of the 5 slots on the KNX Menu and value is a number example: KnxTx_Val1 35 * Add Slots on the KNX Web Menu to select Group Addess to send data from console commands - * Add Events to trigger rules when received data from KNX - usage on rules as: event#KnxRx_Val[slot] + * Add Events to trigger rules when a command is received from KNX + usage on rules as: event#KnxRx_Cmnd[slot] where [slot] is any of the 5 slots on the KNX Menu - example: rule on event#KnxRx_Val1 do VAR1 %value% endon + example: rule on event#KnxRx_Cmnd1 do VAR1 %value% endon + (where %value% can be 0 or 1) * Add Events to trigger rules when received read requests from KNX usage on rules as: event#KnxRx_Req[slot] where [slot] is any of the 5 slots on the KNX Menu From d80e3a928d72faa3cafea505638cae1a7ab507a6 Mon Sep 17 00:00:00 2001 From: ascillato Date: Tue, 12 Jun 2018 14:46:52 -0300 Subject: [PATCH 423/435] KNX: Support for DS18S20 Temperature sensor --- sonoff/xsns_05_ds18b20.ino | 5 +++++ sonoff/xsns_05_ds18x20.ino | 5 +++++ sonoff/xsns_05_ds18x20_legacy.ino | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/sonoff/xsns_05_ds18b20.ino b/sonoff/xsns_05_ds18b20.ino index 753fafeca..dabaf25d4 100644 --- a/sonoff/xsns_05_ds18b20.ino +++ b/sonoff/xsns_05_ds18b20.ino @@ -199,6 +199,11 @@ void Ds18b20Show(boolean json) #ifdef USE_DOMOTICZ if (0 == tele_period) DomoticzSensor(DZ_TEMP, temperature); #endif // USE_DOMOTICZ +#ifdef USE_KNX + if (0 == tele_period) { + KnxSensor(KNX_TEMPERATURE, t); + } +#endif // USE_KNX #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "DS18B20", temperature, TempUnit()); diff --git a/sonoff/xsns_05_ds18x20.ino b/sonoff/xsns_05_ds18x20.ino index b99c71298..292191b18 100644 --- a/sonoff/xsns_05_ds18x20.ino +++ b/sonoff/xsns_05_ds18x20.ino @@ -385,6 +385,11 @@ void Ds18x20Show(boolean json) domoticz_flag = false; } #endif // USE_DOMOTICZ +#ifdef USE_KNX + if ((0 == tele_period) && (0 == i)) { + KnxSensor(KNX_TEMPERATURE, t); + } +#endif // USE_KNX #ifdef USE_WEBSERVER } else { snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, (1 == ds18x20_sensors) ? ds18x20_types : stemp, temperature, TempUnit()); diff --git a/sonoff/xsns_05_ds18x20_legacy.ino b/sonoff/xsns_05_ds18x20_legacy.ino index 885ce7540..156312104 100644 --- a/sonoff/xsns_05_ds18x20_legacy.ino +++ b/sonoff/xsns_05_ds18x20_legacy.ino @@ -192,6 +192,11 @@ void Ds18x20Show(boolean json) DomoticzSensor(DZ_TEMP, temperature); } #endif // USE_DOMOTICZ +#ifdef USE_KNX + if ((0 == tele_period) && (1 == dsxflg)) { + KnxSensor(KNX_TEMPERATURE, t); + } +#endif // USE_KNX #ifdef USE_WEBSERVER } else { snprintf_P(stemp, sizeof(stemp), PSTR("%s-%d"), ds18x20_types, i +1); From 71b29f833a7a0d2a61fa71dfa3fcc60f539dec3f Mon Sep 17 00:00:00 2001 From: Felicia Hummel Date: Sat, 16 Jun 2018 15:23:11 +0200 Subject: [PATCH 424/435] When passing values for multiple WS2812 LEDs at once, updating is very slow because after each LED is set, the strip is updated. The update was so slow that it was visible with the eye. For me, it took approx 0.5 seconds to update an 28 pixel long strip. This patch suspends updates to the strip while procesing the passed LEDs, enabling the updates afterwards. --- sonoff/xdrv_04_light.ino | 3 +++ sonoff/xplg_ws2812.ino | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 7843192f7..6d87b5a5b 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -1118,6 +1118,7 @@ boolean LightCommand() if (XdrvMailbox.data_len > 0) { char *p; uint16_t idx = XdrvMailbox.index; + Ws2812ForceSuspend(); for (char *color = strtok_r(XdrvMailbox.data, " ", &p); color; color = strtok_r(NULL, " ", &p)) { if (LightColorEntry(color, strlen(color))) { Ws2812SetColor(idx, light_entry_color[0], light_entry_color[1], light_entry_color[2], light_entry_color[3]); @@ -1127,6 +1128,8 @@ boolean LightCommand() break; } } + + Ws2812ForceUpdate(); } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, Ws2812GetColor(XdrvMailbox.index, scolor)); } diff --git a/sonoff/xplg_ws2812.ino b/sonoff/xplg_ws2812.ino index 4d6410f90..2e576bfc8 100644 --- a/sonoff/xplg_ws2812.ino +++ b/sonoff/xplg_ws2812.ino @@ -93,7 +93,7 @@ uint8_t kRepeat[5] = { 1 }; // All uint8_t ws_show_next = 1; - +bool ws_suspend_update = false; /********************************************************************************************/ void Ws2812StripShow() @@ -365,6 +365,19 @@ void Ws2812SetColor(uint16_t led, uint8_t red, uint8_t green, uint8_t blue, uint strip->SetPixelColor(i, lcolor); } } + + if (!ws_suspend_update) { + strip->Show(); + ws_show_next = 1; + } +} + +void Ws2812ForceSuspend () { + ws_suspend_update = true; +} + +void Ws2812ForceUpdate () { + ws_suspend_update = false; strip->Show(); ws_show_next = 1; } From 0ac318d636df846b2e11022a83f950eff289e0c1 Mon Sep 17 00:00:00 2001 From: killadm Date: Sat, 23 Jun 2018 00:42:44 +0800 Subject: [PATCH 425/435] update of zh-CN language --- sonoff/language/zh-CN.h | 426 +++++++++++++++++++++++++++++++++++++++- 1 file changed, 425 insertions(+), 1 deletion(-) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 7a485feb0..2836256b5 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -28,7 +28,15 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * +<<<<<<< HEAD +<<<<<<< HEAD + * Updated until v5.14.0b +======= +\*********************************************************************/ + +======= * Updated until v5.12.0d +>>>>>>> parent of 70a331a... update of zh-CN language \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -37,6 +45,14 @@ // HTML (ISO 639-1) Language Code #define D_HTML_LANGUAGE "zh" +<<<<<<< HEAD +======= +\*********************************************************************/ + +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -59,7 +75,11 @@ #define D_BLINK "闪烁" #define D_BLINKOFF "闪烁关" #define D_BOOT_COUNT "启动次数" +<<<<<<< HEAD +#define D_BRIGHTLIGHT "亮" +======= #define D_BRIGHTLIGHT "亮度" +>>>>>>> upstream/development #define D_BUTTON "按钮" #define D_BY "by" // Written by me #define D_BYTES "大小:" @@ -70,6 +90,21 @@ #define D_COMMAND "命令:" #define D_CONNECTED "已连接" #define D_COUNT "数量:" +<<<<<<< HEAD +#define D_COUNTER "计数器" +#define D_CURRENT "电流" // As in Voltage and Current +#define D_DATA "数据:" +#define D_DARKLIGHT "暗" +#define D_DEBUG "调试" +#define D_DISABLED "禁用" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_DISTANCE "距离" +======= +#define D_DNS_SERVER "DNS服务器" +#define D_DONE "完成" +#define D_DST_TIME "DST" +======= #define D_COUNTER "Counter" #define D_CURRENT "电流" // As in Voltage and Current #define D_DATA "数据:" @@ -77,22 +112,47 @@ #define D_DEBUG "调试" #define D_DISABLED "禁用" #define D_DISTANCE "Distance" +>>>>>>> parent of 70a331a... update of zh-CN language #define D_DNS_SERVER "DNS服务器" #define D_DONE "完成" #define D_DST_TIME "DST" #define D_ECO2 "eCO2" +<<<<<<< HEAD +======= +#define D_DNS_SERVER "DNS服务器" +#define D_DONE "完成" +#define D_DST_TIME "DST" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_EMULATION "设备模拟" #define D_ENABLED "启用" #define D_ERASE "擦除" #define D_ERROR "错误" #define D_FAHRENHEIT "华氏" #define D_FAILED "失败" +<<<<<<< HEAD +#define D_FALLBACK "回退" +#define D_FALLBACK_TOPIC "回退主题" +#define D_FALSE "False" +#define D_FILE "文件:" +#define D_FREE_MEMORY "空闲内存" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_FREQUENCY "频率" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_FALLBACK "Fallback" #define D_FALLBACK_TOPIC "Fallback Topic" #define D_FALSE "False" #define D_FILE "文件:" #define D_FREE_MEMORY "空闲内存" #define D_FREQUENCY "Frequency" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_GAS "气体" #define D_GATEWAY "网关" #define D_GROUP "组:" @@ -100,10 +160,23 @@ #define D_HOSTNAME "主机名" #define D_HUMIDITY "湿度" #define D_ILLUMINANCE "照度" +<<<<<<< HEAD +#define D_IMMEDIATE "单次按键" // Button immediate +#define D_INDEX "索引:" +#define D_INFO "信息" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_INFRARED "红外线" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_IMMEDIATE "immediate" // Button immediate #define D_INDEX "索引:" #define D_INFO "信息" #define D_INFRARED "Infrared" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_INITIALIZED "初始化完成" #define D_IP_ADDRESS "IP地址" #define D_LIGHT "灯" @@ -122,9 +195,20 @@ #define D_PORT "端口" #define D_POWER_FACTOR "功率因数" #define D_POWERUSAGE "功率" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_POWERUSAGE_ACTIVE "有功功率" +#define D_POWERUSAGE_APPARENT "视在功率" +#define D_POWERUSAGE_REACTIVE "无功功率" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_POWERUSAGE_ACTIVE "Active Power" #define D_POWERUSAGE_APPARENT "Apparent Power" #define D_POWERUSAGE_REACTIVE "Reactive Power" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_PRESSURE "气压" #define D_PRESSUREATSEALEVEL "海平面气压" #define D_PROGRAM_FLASH_SIZE "固件 Flash 大小" @@ -136,7 +220,16 @@ #define D_RESTART_REASON "重启原因" #define D_RESTORE "恢复" #define D_RETAINED "已保留" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_RULE "规则" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_RULE "Rule" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_SAVE "保存" #define D_SENSOR "传感器" #define D_SSID "名称" @@ -146,21 +239,49 @@ #define D_SUBNET_MASK "子网掩码" #define D_SUBSCRIBE_TO "订阅" #define D_SUCCESSFUL "成功" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_SUNRISE "日出" +#define D_SUNSET "日落" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_SUNRISE "Sunrise" #define D_SUNSET "Sunset" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_TEMPERATURE "温度" #define D_TO "to" #define D_TOGGLE "切换" #define D_TOPIC "主题" #define D_TRANSMIT "发送" #define D_TRUE "True" +<<<<<<< HEAD +<<<<<<< HEAD #define D_TVOC "TVOC" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= +#define D_TVOC "TVOC" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UPGRADE "升级" #define D_UPLOAD "上传" #define D_UPTIME "运行时间" #define D_USER "用户名" #define D_UTC_TIME "UTC" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_UV_INDEX "紫外线指数" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_UV_INDEX "UV Index" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UV_LEVEL "紫外线水平" #define D_VERSION "版本" #define D_VOLTAGE "电压" @@ -168,7 +289,16 @@ #define D_WEB_SERVER "Web Server" // sonoff.ino +<<<<<<< HEAD +<<<<<<< HEAD #define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= +#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" #define D_SERIAL_LOGGING_DISABLED "串口日志已禁用" @@ -179,11 +309,47 @@ #define D_DATA_SIZE "数据大小:" #define D_ANALOG_INPUT "Analog" +<<<<<<< HEAD +<<<<<<< HEAD +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Blocked Loop" +#define D_WPS_FAILED_WITH_STATUS "WPS 配置失败,状态:" +#define D_ACTIVE_FOR_3_MINUTES "激活 3 分钟" +======= +#define D_FINGERPRINT "验证 TLS 指纹..." +#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" +#define D_RETRY_IN "重试倒计时:" +#define D_VERIFIED "验证成功" +#define D_INSECURE "指纹无效导致连接不安全" +#define D_CONNECT_FAILED_TO "连接失败:" + +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Blocked Loop" +#define D_WPS_FAILED_WITH_STATUS "WPS配置失败,状态:" +#define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +#define D_FINGERPRINT "验证 TLS 指纹..." +#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" +#define D_RETRY_IN "重试倒计时:" +#define D_VERIFIED "验证成功" +#define D_INSECURE "指纹无效导致连接不安全" +#define D_CONNECT_FAILED_TO "连接失败:" + +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Blocked Loop" +#define D_WPS_FAILED_WITH_STATUS "WPS配置失败,状态:" +======= // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Blocked Loop" #define D_WPS_FAILED_WITH_STATUS "WPSconfig FAILED with status" +>>>>>>> upstream/development #define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" +>>>>>>> parent of 70a331a... update of zh-CN language #define D_FAILED_TO_START "未能启动" #define D_PATCH_ISSUE_2186 "Patch issue 2186" #define D_CONNECTING_TO_AP "连接到 AP" @@ -194,13 +360,45 @@ #define D_CONNECT_FAILED_AP_TIMEOUT "连接失败,AP超时" #define D_ATTEMPTING_CONNECTION "尝试连接..." #define D_CHECKING_CONNECTION "检查连接..." +<<<<<<< HEAD +<<<<<<< HEAD +#define D_QUERY_DONE "查询完成。 发现 MQTT 服务" +#define D_MQTT_SERVICE_FOUND "发现 MQTT 服务:" +#define D_FOUND_AT "发现:" +#define D_SYSLOG_HOST_NOT_FOUND "Syslog 主机未找到" +======= #define D_QUERY_DONE "查询完成。 发现MQTT服务" #define D_MQTT_SERVICE_FOUND "发现MQTT服务:" -#define D_FOUND_AT "found at" +#define D_FOUND_AT "发现:" #define D_SYSLOG_HOST_NOT_FOUND "Syslog主机未找到" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +#define D_QUERY_DONE "查询完成。 发现MQTT服务" +#define D_MQTT_SERVICE_FOUND "发现MQTT服务:" +<<<<<<< HEAD +#define D_FOUND_AT "发现:" +======= +#define D_FOUND_AT "found at" +>>>>>>> upstream/development +#define D_SYSLOG_HOST_NOT_FOUND "Syslog主机未找到" +>>>>>>> parent of 70a331a... update of zh-CN language // settings.ino #define D_SAVED_TO_FLASH_AT "保存到 flash:" +<<<<<<< HEAD +#define D_LOADED_FROM_FLASH_AT "从 flash 载入:" +#define D_USE_DEFAULTS "使用默认设置" +#define D_ERASED_SECTOR "擦除扇区" + +// webserver.ino +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "当前是精简版固件 - 请升级" +#define D_WEBSERVER_ACTIVE_ON "Web服务器:" +#define D_WITH_IP_ADDRESS "IP地址:" +#define D_WEBSERVER_STOPPED "Web 服务已停止" +#define D_FILE_NOT_FOUND "文件未找到" +#define D_REDIRECTED "重定向到认证页面" +#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager 设置无线操作模式" +======= #define D_LOADED_FROM_FLASH_AT "从 flash 载入" #define D_USE_DEFAULTS "使用默认设置" #define D_ERASED_SECTOR "擦除删除" @@ -213,12 +411,17 @@ #define D_FILE_NOT_FOUND "文件未找到" #define D_REDIRECTED "重定向到认证页面" #define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager set AccessPoint and keep Station" +>>>>>>> upstream/development #define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager 设置接入点" #define D_TRYING_TO_CONNECT "尝试将设备连接到网络" #define D_RESTART_IN "重启需要" #define D_SECONDS "秒" +<<<<<<< HEAD +#define D_DEVICE_WILL_RESTART "设备将在几秒钟内重启" +======= #define D_DEVICE_WILL_RESTART "设备将在几分钟内重启" +>>>>>>> upstream/development #define D_BUTTON_TOGGLE "状态切换" #define D_CONFIGURATION "设置" #define D_INFORMATION "信息" @@ -236,7 +439,18 @@ #define D_RESET_CONFIGURATION "重置配置" #define D_BACKUP_CONFIGURATION "备份配置" #define D_RESTORE_CONFIGURATION "还原配置" +<<<<<<< HEAD +<<<<<<< HEAD #define D_MAIN_MENU "主菜单" +======= +#define D_MAIN_MENU "返回主菜单" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +#define D_MAIN_MENU "返回主菜单" +======= +#define D_MAIN_MENU "主菜单" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_MODULE_PARAMETERS "模块设置" #define D_MODULE_TYPE "模块类型" @@ -288,6 +502,33 @@ #define D_PROGRAM_VERSION "固件版本" #define D_BUILD_DATE_AND_TIME "编译时间" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_CORE_AND_SDK_VERSION "内核和 SDK 版本" +======= +#define D_CORE_AND_SDK_VERSION "内核和SDK版本" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +#define D_CORE_AND_SDK_VERSION "内核和SDK版本" +>>>>>>> parent of 70a331a... update of zh-CN language +#define D_FLASH_WRITE_COUNT "Flash 写入次数" +#define D_MAC_ADDRESS "MAC 地址" +#define D_MQTT_HOST "MQTT 主机" +#define D_MQTT_PORT "MQTT 端口" +#define D_MQTT_CLIENT "MQTT 客户端" +#define D_MQTT_USER "MQTT 用户名" +<<<<<<< HEAD +<<<<<<< HEAD +#define D_MQTT_TOPIC "MQTT 主题" +#define D_MQTT_GROUP_TOPIC "MQTT 主题组" +#define D_MQTT_FULL_TOPIC "MQTT 完整主题" +======= +#define D_MQTT_TOPIC "MQTT 主题(Topic)" +#define D_MQTT_GROUP_TOPIC "MQTT 主题组(Group Topic)" +#define D_MQTT_FULL_TOPIC "MQTT 完整主题(Full Topic)" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= #define D_CORE_AND_SDK_VERSION "内核版本" #define D_FLASH_WRITE_COUNT "刷机次数" #define D_MAC_ADDRESS "MAC地址" @@ -295,18 +536,39 @@ #define D_MQTT_PORT "MQTT端口" #define D_MQTT_CLIENT "MQTT客户端" #define D_MQTT_USER "MQTT用户名" +>>>>>>> upstream/development #define D_MQTT_TOPIC "MQTT 主题(Topic)" #define D_MQTT_GROUP_TOPIC "MQTT 主题组(Group Topic)" #define D_MQTT_FULL_TOPIC "MQTT 完整主题(Full Topic)" +>>>>>>> parent of 70a331a... update of zh-CN language #define D_MDNS_DISCOVERY "mDNS 发现" #define D_MDNS_ADVERTISE "mDNS 广播" +<<<<<<< HEAD +#define D_ESP_CHIP_ID "ESP 芯片 ID" +#define D_FLASH_CHIP_ID "Flash 芯片 ID" +#define D_FLASH_CHIP_SIZE "Flash 大小" +#define D_FREE_PROGRAM_SPACE "空闲程序空间" +<<<<<<< HEAD +<<<<<<< HEAD + +#define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" +#define D_OTA_URL "OTA 地址" +======= +#define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" +#define D_OTA_URL "OTA地址" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +#define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" +======= #define D_ESP_CHIP_ID "ESP芯片ID" #define D_FLASH_CHIP_ID "Flash芯片ID" #define D_FLASH_CHIP_SIZE "Flash大小" #define D_FREE_PROGRAM_SPACE "空闲程序空间" #define D_UPGRADE_BY_WEBSERVER "通过Web升级" +>>>>>>> upstream/development #define D_OTA_URL "OTA地址" +>>>>>>> parent of 70a331a... update of zh-CN language #define D_START_UPGRADE "开始升级" #define D_UPGRADE_BY_FILE_UPLOAD "通过文件升级" #define D_UPLOAD_STARTED "开始上传" @@ -315,6 +577,28 @@ #define D_UPLOAD_ERR_1 "没有选择文件" #define D_UPLOAD_ERR_2 "没有足够空间" #define D_UPLOAD_ERR_3 "固件头不是 0xE9" +<<<<<<< HEAD +#define D_UPLOAD_ERR_4 "固件大小超过 flash 容量" +#define D_UPLOAD_ERR_5 "上传缓冲区不足,请先刷入精简固件再升级" +#define D_UPLOAD_ERR_6 "上传失败。 启用日志级别 3 调试" +#define D_UPLOAD_ERR_7 "上传取消" +#define D_UPLOAD_ERR_8 "错误的固件" +#define D_UPLOAD_ERR_9 "固件太大" +#define D_UPLOAD_ERROR_CODE "上传错误代码" + +#define D_ENTER_COMMAND "输入命令" +#define D_ENABLE_WEBLOG_FOR_RESPONSE "如果想得到预期响应,请调整日志级别至: 2 信息" +#define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" + +<<<<<<< HEAD +<<<<<<< HEAD +// xdrv_00_mqtt.ino +======= +#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" +#define D_USE_MINIMAL_AS_LOADER "使用 -minimal 加载" + +// xdrv_wemohue.ino +======= #define D_UPLOAD_ERR_4 "固件太大" #define D_UPLOAD_ERR_5 "上传缓冲区不匹配" #define D_UPLOAD_ERR_6 "上传失败。 启用日志记录 3" @@ -332,14 +616,20 @@ #define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" // xdrv_01_mqtt.ino +>>>>>>> parent of 70a331a... update of zh-CN language #define D_FINGERPRINT "验证 TLS 指纹..." #define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" #define D_RETRY_IN "重试倒计时:" #define D_VERIFIED "验证成功" #define D_INSECURE "指纹无效导致连接不安全" #define D_CONNECT_FAILED_TO "连接失败:" +======= +#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" +#define D_USE_MINIMAL_AS_LOADER "使用 -minimal 加载" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development // xplg_wemohue.ino +>>>>>>> upstream/development #define D_MULTICAST_DISABLED "组播已禁用" #define D_MULTICAST_REJOINED "组播已(重新)加入" #define D_MULTICAST_JOIN_FAILED "组播加入失败" @@ -359,7 +649,32 @@ #define D_HUE_POST_ARGS "Hue POST 参数" #define D_3_RESPONSE_PACKETS_SENT "3 请求包发送" +<<<<<<< HEAD +<<<<<<< HEAD +======= +======= +>>>>>>> parent of 70a331a... update of zh-CN language +// xdrv_02_irremote.ino +#define D_JSON_INVALID_JSON "无效的JSON" +#define D_JSON_PROTOCOL_NOT_SUPPORTED "协议不支持" +#define D_JSON_IR_PROTOCOL "PROTOCOL" +#define D_JSON_IR_BITS "BITS" +#define D_JSON_IR_DATA "DATA" +#define D_JSON_IRHVAC_VENDOR "VENDOR" +#define D_JSON_IRHVAC_POWER "POWER" +#define D_JSON_IRHVAC_MODE "MODE" +#define D_JSON_IRHVAC_FANSPEED "FANSPEED" +#define D_JSON_IRHVAC_TEMP "TEMP" +#define D_JSON_IRRECEIVED "IrReceived" + +<<<<<<< HEAD +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> parent of 70a331a... update of zh-CN language +// xdrv_05_domoticz.ino +======= // xdrv_07_domoticz.ino +>>>>>>> upstream/development #define D_DOMOTICZ_PARAMETERS "Domoticz 设置" #define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_KEY_IDX "Key idx" @@ -370,6 +685,17 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "温度,湿度,气压" #define D_DOMOTICZ_POWER_ENERGY "功率,电量" #define D_DOMOTICZ_ILLUMINANCE "照度" +<<<<<<< HEAD +<<<<<<< HEAD +======= + #define D_DOMOTICZ_COUNT "数值" + #define D_DOMOTICZ_VOLTAGE "电压" + #define D_DOMOTICZ_CURRENT "电流" + #define D_DOMOTICZ_AIRQUALITY "空气质量" +#define D_DOMOTICZ_UPDATE_TIMER "更新计时器" + +======= +>>>>>>> parent of 70a331a... update of zh-CN language #define D_DOMOTICZ_COUNT "数值/PM1" #define D_DOMOTICZ_VOLTAGE "电压/PM2.5" #define D_DOMOTICZ_CURRENT "电流/PM10" @@ -409,6 +735,18 @@ #define D_KNX_TX_SLOT "KNX TX" #define D_KNX_RX_SLOT "KNX RX" +<<<<<<< HEAD +======= + #define D_DOMOTICZ_COUNT "数值" + #define D_DOMOTICZ_VOLTAGE "电压" + #define D_DOMOTICZ_CURRENT "电流" + #define D_DOMOTICZ_AIRQUALITY "空气质量" +#define D_DOMOTICZ_UPDATE_TIMER "更新计时器" + +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" #define D_ENERGY_YESTERDAY "昨日用电量" @@ -431,12 +769,43 @@ #define D_SHT1X_FOUND "发现 SHT1X 传感器" // xsns_18_pms5003.ino +<<<<<<< HEAD +<<<<<<< HEAD +======= +#define D_STANDARD_CONCENTRATION "标准颗粒物浓度" +#define D_ENVIRONMENTAL_CONCENTRATION "大气环境下浓度" +#define D_PARTICALS_BEYOND "颗粒物直径大于" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" +#define D_UNIT_MICROMETER "微米" +#define D_UNIT_PARTS_PER_DECILITER "每分升" + +// sonoff_template.h +// Max string length is 8 characters including suffixes +#define D_SENSOR_NONE "无" +======= +>>>>>>> parent of 70a331a... update of zh-CN language #define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter #define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter #define D_PARTICALS_BEYOND "颗粒物直径大于" // sonoff_template.h +<<<<<<< HEAD +======= +#define D_STANDARD_CONCENTRATION "标准颗粒物浓度" +#define D_ENVIRONMENTAL_CONCENTRATION "大气环境下浓度" +#define D_PARTICALS_BEYOND "颗粒物直径大于" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" +#define D_UNIT_MICROMETER "微米" +#define D_UNIT_PARTS_PER_DECILITER "每分升" + +// sonoff_template.h +// Max string length is 8 characters including suffixes +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +#define D_SENSOR_NONE "无" +======= #define D_SENSOR_NONE "None" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_SENSOR_DHT11 "DHT11" #define D_SENSOR_AM2301 "AM2301" #define D_SENSOR_SI7021 "SI7021" @@ -462,6 +831,14 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" +<<<<<<< HEAD +<<<<<<< HEAD +======= + +// Units +#define D_UNIT_AMPERE "安" +======= +>>>>>>> parent of 70a331a... update of zh-CN language #define D_SENSOR_SDS0X1 "SDS0X1" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" @@ -474,18 +851,47 @@ // Units #define D_UNIT_AMPERE "安" +<<<<<<< HEAD +#define D_UNIT_CENTIMETER "厘米" +======= + +// Units +#define D_UNIT_AMPERE "安" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= #define D_UNIT_CENTIMETER "cm" #define D_UNIT_HERTZ "Hz" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_HOUR "时" #define D_UNIT_KILOOHM "千欧" #define D_UNIT_KILOWATTHOUR "千瓦时" #define D_UNIT_LUX "勒克斯" +<<<<<<< HEAD +<<<<<<< HEAD #define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" #define D_UNIT_MICROMETER "微米" +======= +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +======= +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" +#define D_UNIT_MICROMETER "微米" +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" +<<<<<<< HEAD +<<<<<<< HEAD +======= +#define D_UNIT_PPM "ppm" +#define D_UNIT_PRESSURE "百帕" +#define D_UNIT_SECOND "秒" +#define D_UNIT_SECTORS "扇区" +======= +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "每分升" #define D_UNIT_PARTS_PER_MILLION "ppm" @@ -494,6 +900,16 @@ #define D_UNIT_SECTORS "扇区" #define D_UNIT_VA "VA" #define D_UNIT_VAR "VAr" +<<<<<<< HEAD +======= +#define D_UNIT_PPM "ppm" +#define D_UNIT_PRESSURE "百帕" +#define D_UNIT_SECOND "秒" +#define D_UNIT_SECTORS "扇区" +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_VOLT "伏" #define D_UNIT_WATT "瓦" #define D_UNIT_WATTHOUR "瓦时" @@ -523,4 +939,12 @@ #define D_LOG_UPNP "UPP: " // UPnP #define D_LOG_WIFI "WIF: " // Wifi +<<<<<<< HEAD #endif // _LANGUAGE_ZH_CN_H_ +======= +#endif // _LANGUAGE_ZH_CN_H_ +<<<<<<< HEAD +>>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development +======= +>>>>>>> upstream/development +>>>>>>> parent of 70a331a... update of zh-CN language From 371aebfc152f0c01d61af8c9f660d7e28d5c791d Mon Sep 17 00:00:00 2001 From: killadm Date: Sat, 23 Jun 2018 09:11:17 +0800 Subject: [PATCH 426/435] Update zh-CN.h Remove >>>>>> --- sonoff/language/zh-CN.h | 512 ++++------------------------------------ 1 file changed, 44 insertions(+), 468 deletions(-) diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 2836256b5..4310111ee 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -28,15 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * -<<<<<<< HEAD -<<<<<<< HEAD * Updated until v5.14.0b -======= -\*********************************************************************/ - -======= - * Updated until v5.12.0d ->>>>>>> parent of 70a331a... update of zh-CN language \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -45,14 +37,6 @@ // HTML (ISO 639-1) Language Code #define D_HTML_LANGUAGE "zh" -<<<<<<< HEAD -======= -\*********************************************************************/ - ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language // "2017-03-07T11:08:02" - ISO8601:2004 #define D_YEAR_MONTH_SEPARATOR "-" #define D_MONTH_DAY_SEPARATOR "-" @@ -60,8 +44,8 @@ #define D_HOUR_MINUTE_SEPARATOR ":" #define D_MINUTE_SECOND_SEPARATOR ":" -#define D_DAY3LIST "SunMonTueWedThuFriSat" -#define D_MONTH3LIST "JanFebMarAprMayJunJulAugSepOctNovDec" +#define D_DAY3LIST "日 一 二 三 四 五 六 " +#define D_MONTH3LIST "1月 2月 3月 4月 5月 6月 7月 8月 9月 10月11月12月" // Non JSON decimal separator #define D_DECIMAL_SEPARATOR "." @@ -75,13 +59,9 @@ #define D_BLINK "闪烁" #define D_BLINKOFF "闪烁关" #define D_BOOT_COUNT "启动次数" -<<<<<<< HEAD #define D_BRIGHTLIGHT "亮" -======= -#define D_BRIGHTLIGHT "亮度" ->>>>>>> upstream/development #define D_BUTTON "按钮" -#define D_BY "by" // Written by me +#define D_BY "汉化: killadm 作者:" // Written by me #define D_BYTES "大小:" #define D_CELSIUS "摄氏" #define D_CO2 "二氧化碳" @@ -90,69 +70,29 @@ #define D_COMMAND "命令:" #define D_CONNECTED "已连接" #define D_COUNT "数量:" -<<<<<<< HEAD #define D_COUNTER "计数器" #define D_CURRENT "电流" // As in Voltage and Current #define D_DATA "数据:" #define D_DARKLIGHT "暗" #define D_DEBUG "调试" #define D_DISABLED "禁用" -<<<<<<< HEAD -<<<<<<< HEAD #define D_DISTANCE "距离" -======= -#define D_DNS_SERVER "DNS服务器" -#define D_DONE "完成" -#define D_DST_TIME "DST" -======= -#define D_COUNTER "Counter" -#define D_CURRENT "电流" // As in Voltage and Current -#define D_DATA "数据:" -#define D_DARKLIGHT "Dark" -#define D_DEBUG "调试" -#define D_DISABLED "禁用" -#define D_DISTANCE "Distance" ->>>>>>> parent of 70a331a... update of zh-CN language #define D_DNS_SERVER "DNS服务器" #define D_DONE "完成" #define D_DST_TIME "DST" #define D_ECO2 "eCO2" -<<<<<<< HEAD -======= -#define D_DNS_SERVER "DNS服务器" -#define D_DONE "完成" -#define D_DST_TIME "DST" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_EMULATION "设备模拟" #define D_ENABLED "启用" #define D_ERASE "擦除" #define D_ERROR "错误" #define D_FAHRENHEIT "华氏" #define D_FAILED "失败" -<<<<<<< HEAD #define D_FALLBACK "回退" #define D_FALLBACK_TOPIC "回退主题" #define D_FALSE "False" #define D_FILE "文件:" #define D_FREE_MEMORY "空闲内存" -<<<<<<< HEAD -<<<<<<< HEAD #define D_FREQUENCY "频率" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_FALLBACK "Fallback" -#define D_FALLBACK_TOPIC "Fallback Topic" -#define D_FALSE "False" -#define D_FILE "文件:" -#define D_FREE_MEMORY "空闲内存" -#define D_FREQUENCY "Frequency" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_GAS "气体" #define D_GATEWAY "网关" #define D_GROUP "组:" @@ -160,23 +100,10 @@ #define D_HOSTNAME "主机名" #define D_HUMIDITY "湿度" #define D_ILLUMINANCE "照度" -<<<<<<< HEAD #define D_IMMEDIATE "单次按键" // Button immediate #define D_INDEX "索引:" #define D_INFO "信息" -<<<<<<< HEAD -<<<<<<< HEAD #define D_INFRARED "红外线" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_IMMEDIATE "immediate" // Button immediate -#define D_INDEX "索引:" -#define D_INFO "信息" -#define D_INFRARED "Infrared" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_INITIALIZED "初始化完成" #define D_IP_ADDRESS "IP地址" #define D_LIGHT "灯" @@ -195,20 +122,9 @@ #define D_PORT "端口" #define D_POWER_FACTOR "功率因数" #define D_POWERUSAGE "功率" -<<<<<<< HEAD -<<<<<<< HEAD #define D_POWERUSAGE_ACTIVE "有功功率" #define D_POWERUSAGE_APPARENT "视在功率" #define D_POWERUSAGE_REACTIVE "无功功率" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_POWERUSAGE_ACTIVE "Active Power" -#define D_POWERUSAGE_APPARENT "Apparent Power" -#define D_POWERUSAGE_REACTIVE "Reactive Power" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_PRESSURE "气压" #define D_PRESSUREATSEALEVEL "海平面气压" #define D_PROGRAM_FLASH_SIZE "固件 Flash 大小" @@ -220,16 +136,7 @@ #define D_RESTART_REASON "重启原因" #define D_RESTORE "恢复" #define D_RETAINED "已保留" -<<<<<<< HEAD -<<<<<<< HEAD #define D_RULE "规则" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_RULE "Rule" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_SAVE "保存" #define D_SENSOR "传感器" #define D_SSID "名称" @@ -239,49 +146,21 @@ #define D_SUBNET_MASK "子网掩码" #define D_SUBSCRIBE_TO "订阅" #define D_SUCCESSFUL "成功" -<<<<<<< HEAD -<<<<<<< HEAD #define D_SUNRISE "日出" #define D_SUNSET "日落" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_SUNRISE "Sunrise" -#define D_SUNSET "Sunset" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_TEMPERATURE "温度" #define D_TO "to" #define D_TOGGLE "切换" #define D_TOPIC "主题" #define D_TRANSMIT "发送" #define D_TRUE "True" -<<<<<<< HEAD -<<<<<<< HEAD #define D_TVOC "TVOC" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_TVOC "TVOC" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UPGRADE "升级" #define D_UPLOAD "上传" #define D_UPTIME "运行时间" #define D_USER "用户名" #define D_UTC_TIME "UTC" -<<<<<<< HEAD -<<<<<<< HEAD #define D_UV_INDEX "紫外线指数" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_UV_INDEX "UV Index" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UV_LEVEL "紫外线水平" #define D_VERSION "版本" #define D_VOLTAGE "电压" @@ -289,16 +168,7 @@ #define D_WEB_SERVER "Web Server" // sonoff.ino -<<<<<<< HEAD -<<<<<<< HEAD #define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" #define D_SERIAL_LOGGING_DISABLED "串口日志已禁用" @@ -309,119 +179,46 @@ #define D_DATA_SIZE "数据大小:" #define D_ANALOG_INPUT "Analog" -<<<<<<< HEAD -<<<<<<< HEAD // support.ino #define D_OSWATCH "osWatch" #define D_BLOCKED_LOOP "Blocked Loop" #define D_WPS_FAILED_WITH_STATUS "WPS 配置失败,状态:" #define D_ACTIVE_FOR_3_MINUTES "激活 3 分钟" -======= -#define D_FINGERPRINT "验证 TLS 指纹..." -#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" -#define D_RETRY_IN "重试倒计时:" -#define D_VERIFIED "验证成功" -#define D_INSECURE "指纹无效导致连接不安全" -#define D_CONNECT_FAILED_TO "连接失败:" - -// support.ino -#define D_OSWATCH "osWatch" -#define D_BLOCKED_LOOP "Blocked Loop" -#define D_WPS_FAILED_WITH_STATUS "WPS配置失败,状态:" -#define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_FINGERPRINT "验证 TLS 指纹..." -#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" -#define D_RETRY_IN "重试倒计时:" -#define D_VERIFIED "验证成功" -#define D_INSECURE "指纹无效导致连接不安全" -#define D_CONNECT_FAILED_TO "连接失败:" - -// support.ino -#define D_OSWATCH "osWatch" -#define D_BLOCKED_LOOP "Blocked Loop" -#define D_WPS_FAILED_WITH_STATUS "WPS配置失败,状态:" -======= -// support.ino -#define D_OSWATCH "osWatch" -#define D_BLOCKED_LOOP "Blocked Loop" -#define D_WPS_FAILED_WITH_STATUS "WPSconfig FAILED with status" ->>>>>>> upstream/development -#define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" ->>>>>>> parent of 70a331a... update of zh-CN language #define D_FAILED_TO_START "未能启动" #define D_PATCH_ISSUE_2186 "Patch issue 2186" #define D_CONNECTING_TO_AP "连接到 AP" #define D_IN_MODE "模式:" -#define D_CONNECT_FAILED_NO_IP_ADDRESS "连接失败,因为没有获取到IP地址" -#define D_CONNECT_FAILED_AP_NOT_REACHED "连接失败,无法连接AP" -#define D_CONNECT_FAILED_WRONG_PASSWORD "连接失败,AP密码不正确" -#define D_CONNECT_FAILED_AP_TIMEOUT "连接失败,AP超时" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "连接失败,因为没有获取到 IP 地址" +#define D_CONNECT_FAILED_AP_NOT_REACHED "连接失败,无法连接 AP" +#define D_CONNECT_FAILED_WRONG_PASSWORD "连接失败,AP 密码不正确" +#define D_CONNECT_FAILED_AP_TIMEOUT "连接失败,AP 超时" #define D_ATTEMPTING_CONNECTION "尝试连接..." #define D_CHECKING_CONNECTION "检查连接..." -<<<<<<< HEAD -<<<<<<< HEAD #define D_QUERY_DONE "查询完成。 发现 MQTT 服务" #define D_MQTT_SERVICE_FOUND "发现 MQTT 服务:" #define D_FOUND_AT "发现:" #define D_SYSLOG_HOST_NOT_FOUND "Syslog 主机未找到" -======= -#define D_QUERY_DONE "查询完成。 发现MQTT服务" -#define D_MQTT_SERVICE_FOUND "发现MQTT服务:" -#define D_FOUND_AT "发现:" -#define D_SYSLOG_HOST_NOT_FOUND "Syslog主机未找到" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_QUERY_DONE "查询完成。 发现MQTT服务" -#define D_MQTT_SERVICE_FOUND "发现MQTT服务:" -<<<<<<< HEAD -#define D_FOUND_AT "发现:" -======= -#define D_FOUND_AT "found at" ->>>>>>> upstream/development -#define D_SYSLOG_HOST_NOT_FOUND "Syslog主机未找到" ->>>>>>> parent of 70a331a... update of zh-CN language // settings.ino #define D_SAVED_TO_FLASH_AT "保存到 flash:" -<<<<<<< HEAD #define D_LOADED_FROM_FLASH_AT "从 flash 载入:" #define D_USE_DEFAULTS "使用默认设置" #define D_ERASED_SECTOR "擦除扇区" // webserver.ino #define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "当前是精简版固件 - 请升级" -#define D_WEBSERVER_ACTIVE_ON "Web服务器:" -#define D_WITH_IP_ADDRESS "IP地址:" +#define D_WEBSERVER_ACTIVE_ON "Web 服务器地址:" +#define D_WITH_IP_ADDRESS "IP 地址:" #define D_WEBSERVER_STOPPED "Web 服务已停止" #define D_FILE_NOT_FOUND "文件未找到" #define D_REDIRECTED "重定向到认证页面" #define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager 设置无线操作模式" -======= -#define D_LOADED_FROM_FLASH_AT "从 flash 载入" -#define D_USE_DEFAULTS "使用默认设置" -#define D_ERASED_SECTOR "擦除删除" - -// xdrv_02_webserver.ino -#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本过低 - 请升级" -#define D_WEBSERVER_ACTIVE_ON "Web服务器:" -#define D_WITH_IP_ADDRESS "IP地址:" -#define D_WEBSERVER_STOPPED "Web 服务器已停止" -#define D_FILE_NOT_FOUND "文件未找到" -#define D_REDIRECTED "重定向到认证页面" -#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager set AccessPoint and keep Station" ->>>>>>> upstream/development #define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager 设置接入点" #define D_TRYING_TO_CONNECT "尝试将设备连接到网络" #define D_RESTART_IN "重启需要" #define D_SECONDS "秒" -<<<<<<< HEAD #define D_DEVICE_WILL_RESTART "设备将在几秒钟内重启" -======= -#define D_DEVICE_WILL_RESTART "设备将在几分钟内重启" ->>>>>>> upstream/development #define D_BUTTON_TOGGLE "状态切换" #define D_CONFIGURATION "设置" #define D_INFORMATION "信息" @@ -439,18 +236,7 @@ #define D_RESET_CONFIGURATION "重置配置" #define D_BACKUP_CONFIGURATION "备份配置" #define D_RESTORE_CONFIGURATION "还原配置" -<<<<<<< HEAD -<<<<<<< HEAD #define D_MAIN_MENU "主菜单" -======= -#define D_MAIN_MENU "返回主菜单" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_MAIN_MENU "返回主菜单" -======= -#define D_MAIN_MENU "主菜单" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_MODULE_PARAMETERS "模块设置" #define D_MODULE_TYPE "模块类型" @@ -474,7 +260,7 @@ #define D_AP2_SSID "AP2 名称" #define D_AP2_PASSWORD "AP2 密码" -#define D_MQTT_PARAMETERS "MQTT设置" +#define D_MQTT_PARAMETERS "MQTT 设置" #define D_CLIENT "客户端" #define D_FULL_TOPIC "完整主题" @@ -488,7 +274,7 @@ #define D_TELEMETRY_PERIOD "上报周期" #define D_OTHER_PARAMETERS "其他设置" -#define D_WEB_ADMIN_PASSWORD "WEB管理密码" +#define D_WEB_ADMIN_PASSWORD "WEB 管理密码" #define D_MQTT_ENABLE "启用MQTT" #define D_FRIENDLY_NAME "昵称" #define D_BELKIN_WEMO "贝尔金 WeMo" @@ -502,134 +288,58 @@ #define D_PROGRAM_VERSION "固件版本" #define D_BUILD_DATE_AND_TIME "编译时间" -<<<<<<< HEAD -<<<<<<< HEAD #define D_CORE_AND_SDK_VERSION "内核和 SDK 版本" -======= -#define D_CORE_AND_SDK_VERSION "内核和SDK版本" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_CORE_AND_SDK_VERSION "内核和SDK版本" ->>>>>>> parent of 70a331a... update of zh-CN language #define D_FLASH_WRITE_COUNT "Flash 写入次数" #define D_MAC_ADDRESS "MAC 地址" #define D_MQTT_HOST "MQTT 主机" #define D_MQTT_PORT "MQTT 端口" #define D_MQTT_CLIENT "MQTT 客户端" #define D_MQTT_USER "MQTT 用户名" -<<<<<<< HEAD -<<<<<<< HEAD #define D_MQTT_TOPIC "MQTT 主题" #define D_MQTT_GROUP_TOPIC "MQTT 主题组" #define D_MQTT_FULL_TOPIC "MQTT 完整主题" -======= -#define D_MQTT_TOPIC "MQTT 主题(Topic)" -#define D_MQTT_GROUP_TOPIC "MQTT 主题组(Group Topic)" -#define D_MQTT_FULL_TOPIC "MQTT 完整主题(Full Topic)" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_CORE_AND_SDK_VERSION "内核版本" -#define D_FLASH_WRITE_COUNT "刷机次数" -#define D_MAC_ADDRESS "MAC地址" -#define D_MQTT_HOST "MQTT主机" -#define D_MQTT_PORT "MQTT端口" -#define D_MQTT_CLIENT "MQTT客户端" -#define D_MQTT_USER "MQTT用户名" ->>>>>>> upstream/development -#define D_MQTT_TOPIC "MQTT 主题(Topic)" -#define D_MQTT_GROUP_TOPIC "MQTT 主题组(Group Topic)" -#define D_MQTT_FULL_TOPIC "MQTT 完整主题(Full Topic)" ->>>>>>> parent of 70a331a... update of zh-CN language #define D_MDNS_DISCOVERY "mDNS 发现" #define D_MDNS_ADVERTISE "mDNS 广播" -<<<<<<< HEAD #define D_ESP_CHIP_ID "ESP 芯片 ID" #define D_FLASH_CHIP_ID "Flash 芯片 ID" #define D_FLASH_CHIP_SIZE "Flash 大小" #define D_FREE_PROGRAM_SPACE "空闲程序空间" -<<<<<<< HEAD -<<<<<<< HEAD #define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" #define D_OTA_URL "OTA 地址" -======= -#define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" -#define D_OTA_URL "OTA地址" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_UPGRADE_BY_WEBSERVER "通过 Web 升级" -======= -#define D_ESP_CHIP_ID "ESP芯片ID" -#define D_FLASH_CHIP_ID "Flash芯片ID" -#define D_FLASH_CHIP_SIZE "Flash大小" -#define D_FREE_PROGRAM_SPACE "空闲程序空间" - -#define D_UPGRADE_BY_WEBSERVER "通过Web升级" ->>>>>>> upstream/development -#define D_OTA_URL "OTA地址" ->>>>>>> parent of 70a331a... update of zh-CN language #define D_START_UPGRADE "开始升级" #define D_UPGRADE_BY_FILE_UPLOAD "通过文件升级" #define D_UPLOAD_STARTED "开始上传" #define D_UPGRADE_STARTED "开始升级" #define D_UPLOAD_DONE "上传完成" -#define D_UPLOAD_ERR_1 "没有选择文件" +#define D_UPLOAD_ERR_1 "没有选择任何文件" #define D_UPLOAD_ERR_2 "没有足够空间" #define D_UPLOAD_ERR_3 "固件头不是 0xE9" -<<<<<<< HEAD #define D_UPLOAD_ERR_4 "固件大小超过 flash 容量" #define D_UPLOAD_ERR_5 "上传缓冲区不足,请先刷入精简固件再升级" #define D_UPLOAD_ERR_6 "上传失败。 启用日志级别 3 调试" #define D_UPLOAD_ERR_7 "上传取消" #define D_UPLOAD_ERR_8 "错误的固件" #define D_UPLOAD_ERR_9 "固件太大" +#define D_UPLOAD_ERR_10 "初始化 RF 芯片失败" +#define D_UPLOAD_ERR_11 "擦除 RF 芯片失败" +#define D_UPLOAD_ERR_12 "写入 RF 芯片失败" +#define D_UPLOAD_ERR_13 "解码 RF 固件失败" #define D_UPLOAD_ERROR_CODE "上传错误代码" #define D_ENTER_COMMAND "输入命令" #define D_ENABLE_WEBLOG_FOR_RESPONSE "如果想得到预期响应,请调整日志级别至: 2 信息" #define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" -<<<<<<< HEAD -<<<<<<< HEAD // xdrv_00_mqtt.ino -======= -#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" -#define D_USE_MINIMAL_AS_LOADER "使用 -minimal 加载" - -// xdrv_wemohue.ino -======= -#define D_UPLOAD_ERR_4 "固件太大" -#define D_UPLOAD_ERR_5 "上传缓冲区不匹配" -#define D_UPLOAD_ERR_6 "上传失败。 启用日志记录 3" -#define D_UPLOAD_ERR_7 "上传取消" -#define D_UPLOAD_ERR_8 "错误的固件" -#define D_UPLOAD_ERR_9 "固件太大" -#define D_UPLOAD_ERR_10 "Failed to init RF chip" -#define D_UPLOAD_ERR_11 "Failed to erase RF chip" -#define D_UPLOAD_ERR_12 "Failed to write to RF chip" -#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" -#define D_UPLOAD_ERROR_CODE "上传错误代码" - -#define D_ENTER_COMMAND "输入命令" -#define D_ENABLE_WEBLOG_FOR_RESPONSE "如果预期响应,则启用Weblog 2" -#define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" - -// xdrv_01_mqtt.ino ->>>>>>> parent of 70a331a... update of zh-CN language #define D_FINGERPRINT "验证 TLS 指纹..." #define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" #define D_RETRY_IN "重试倒计时:" #define D_VERIFIED "验证成功" #define D_INSECURE "指纹无效导致连接不安全" #define D_CONNECT_FAILED_TO "连接失败:" -======= -#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" -#define D_USE_MINIMAL_AS_LOADER "使用 -minimal 加载" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -// xplg_wemohue.ino ->>>>>>> upstream/development +// xdrv_wemohue.ino #define D_MULTICAST_DISABLED "组播已禁用" #define D_MULTICAST_REJOINED "组播已(重新)加入" #define D_MULTICAST_JOIN_FAILED "组播加入失败" @@ -649,32 +359,7 @@ #define D_HUE_POST_ARGS "Hue POST 参数" #define D_3_RESPONSE_PACKETS_SENT "3 请求包发送" -<<<<<<< HEAD -<<<<<<< HEAD -======= -======= ->>>>>>> parent of 70a331a... update of zh-CN language -// xdrv_02_irremote.ino -#define D_JSON_INVALID_JSON "无效的JSON" -#define D_JSON_PROTOCOL_NOT_SUPPORTED "协议不支持" -#define D_JSON_IR_PROTOCOL "PROTOCOL" -#define D_JSON_IR_BITS "BITS" -#define D_JSON_IR_DATA "DATA" -#define D_JSON_IRHVAC_VENDOR "VENDOR" -#define D_JSON_IRHVAC_POWER "POWER" -#define D_JSON_IRHVAC_MODE "MODE" -#define D_JSON_IRHVAC_FANSPEED "FANSPEED" -#define D_JSON_IRHVAC_TEMP "TEMP" -#define D_JSON_IRRECEIVED "IrReceived" - -<<<<<<< HEAD ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> parent of 70a331a... update of zh-CN language // xdrv_05_domoticz.ino -======= -// xdrv_07_domoticz.ino ->>>>>>> upstream/development #define D_DOMOTICZ_PARAMETERS "Domoticz 设置" #define D_DOMOTICZ_IDX "Idx" #define D_DOMOTICZ_KEY_IDX "Key idx" @@ -685,17 +370,6 @@ #define D_DOMOTICZ_TEMP_HUM_BARO "温度,湿度,气压" #define D_DOMOTICZ_POWER_ENERGY "功率,电量" #define D_DOMOTICZ_ILLUMINANCE "照度" -<<<<<<< HEAD -<<<<<<< HEAD -======= - #define D_DOMOTICZ_COUNT "数值" - #define D_DOMOTICZ_VOLTAGE "电压" - #define D_DOMOTICZ_CURRENT "电流" - #define D_DOMOTICZ_AIRQUALITY "空气质量" -#define D_DOMOTICZ_UPDATE_TIMER "更新计时器" - -======= ->>>>>>> parent of 70a331a... update of zh-CN language #define D_DOMOTICZ_COUNT "数值/PM1" #define D_DOMOTICZ_VOLTAGE "电压/PM2.5" #define D_DOMOTICZ_CURRENT "电流/PM10" @@ -703,50 +377,38 @@ #define D_DOMOTICZ_UPDATE_TIMER "更新计时器" // xdrv_09_timers.ino -#define D_CONFIGURE_TIMER "Configure Timer" -#define D_TIMER_PARAMETERS "Timer parameters" -#define D_TIMER_ARM "Arm" -#define D_TIMER_TIME "Time" -#define D_TIMER_DAYS "Days" -#define D_TIMER_REPEAT "Repeat" -#define D_TIMER_OUTPUT "Output" -#define D_TIMER_ACTION "Action" +#define D_CONFIGURE_TIMER "定时器设置" +#define D_TIMER_PARAMETERS "定时器参数" +#define D_TIMER_ARM "启用" +#define D_TIMER_TIME "时间" +#define D_TIMER_DAYS "天" +#define D_TIMER_REPEAT "重复" +#define D_TIMER_OUTPUT "输出" +#define D_TIMER_ACTION "动作" // xdrv_10_knx.ino -#define D_CONFIGURE_KNX "Configure KNX" -#define D_KNX_PARAMETERS "KNX Parameters" -#define D_KNX_GENERAL_CONFIG "General" -#define D_KNX_PHYSICAL_ADDRESS "Physical Address" -#define D_KNX_PHYSICAL_ADDRESS_NOTE "( Must be unique on the KNX network )" -#define D_KNX_ENABLE "Enable KNX" -#define D_KNX_GROUP_ADDRESS_TO_WRITE "Data to Send to Group Addresses" -#define D_ADD "Add" -#define D_DELETE "Delete" -#define D_REPLY "Reply" -#define D_KNX_GROUP_ADDRESS_TO_READ "Group Addresses to Receive Data from" +#define D_CONFIGURE_KNX "KNX 配置" +#define D_KNX_PARAMETERS "KNX 参数" +#define D_KNX_GENERAL_CONFIG "同用" +#define D_KNX_PHYSICAL_ADDRESS "物理地址" +#define D_KNX_PHYSICAL_ADDRESS_NOTE "( 在 KNX 网络上必须是唯一的 )" +#define D_KNX_ENABLE "启用 KNX" +#define D_KNX_GROUP_ADDRESS_TO_WRITE "要发送到组地址的数据" +#define D_ADD "添加" +#define D_DELETE "删除" +#define D_REPLY "回复" +#define D_KNX_GROUP_ADDRESS_TO_READ "用来接收数据的组地址" #define D_LOG_KNX "KNX: " -#define D_RECEIVED_FROM "Received from" -#define D_KNX_COMMAND_WRITE "Write" -#define D_KNX_COMMAND_READ "Read" -#define D_KNX_COMMAND_OTHER "Other" -#define D_SENT_TO "sent to" -#define D_KNX_WARNING "The group address ( 0 / 0 / 0 ) is reserved and can not be used." -#define D_KNX_ENHANCEMENT "Communication Enhancement" +#define D_RECEIVED_FROM "接收自" +#define D_KNX_COMMAND_WRITE "写" +#define D_KNX_COMMAND_READ "读" +#define D_KNX_COMMAND_OTHER "其他" +#define D_SENT_TO "发送到" +#define D_KNX_WARNING "组地址(0/0/0)被保留,不能使用。" +#define D_KNX_ENHANCEMENT "通讯增强" #define D_KNX_TX_SLOT "KNX TX" #define D_KNX_RX_SLOT "KNX RX" -<<<<<<< HEAD -======= - #define D_DOMOTICZ_COUNT "数值" - #define D_DOMOTICZ_VOLTAGE "电压" - #define D_DOMOTICZ_CURRENT "电流" - #define D_DOMOTICZ_AIRQUALITY "空气质量" -#define D_DOMOTICZ_UPDATE_TIMER "更新计时器" - ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language // xdrv_03_energy.ino #define D_ENERGY_TODAY "今日用电量" #define D_ENERGY_YESTERDAY "昨日用电量" @@ -769,43 +431,12 @@ #define D_SHT1X_FOUND "发现 SHT1X 传感器" // xsns_18_pms5003.ino -<<<<<<< HEAD -<<<<<<< HEAD -======= -#define D_STANDARD_CONCENTRATION "标准颗粒物浓度" -#define D_ENVIRONMENTAL_CONCENTRATION "大气环境下浓度" -#define D_PARTICALS_BEYOND "颗粒物直径大于" -#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" -#define D_UNIT_MICROMETER "微米" -#define D_UNIT_PARTS_PER_DECILITER "每分升" - -// sonoff_template.h -// Max string length is 8 characters including suffixes -#define D_SENSOR_NONE "无" -======= ->>>>>>> parent of 70a331a... update of zh-CN language #define D_STANDARD_CONCENTRATION "CF-1 PM" // Standard Particle CF-1 Particle Matter #define D_ENVIRONMENTAL_CONCENTRATION "PM" // Environmetal Particle Matter #define D_PARTICALS_BEYOND "颗粒物直径大于" // sonoff_template.h -<<<<<<< HEAD -======= -#define D_STANDARD_CONCENTRATION "标准颗粒物浓度" -#define D_ENVIRONMENTAL_CONCENTRATION "大气环境下浓度" -#define D_PARTICALS_BEYOND "颗粒物直径大于" -#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" -#define D_UNIT_MICROMETER "微米" -#define D_UNIT_PARTS_PER_DECILITER "每分升" - -// sonoff_template.h -// Max string length is 8 characters including suffixes ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development #define D_SENSOR_NONE "无" -======= -#define D_SENSOR_NONE "None" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_SENSOR_DHT11 "DHT11" #define D_SENSOR_AM2301 "AM2301" #define D_SENSOR_SI7021 "SI7021" @@ -831,14 +462,6 @@ #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" #define D_SENSOR_PMS5003 "PMS5003" -<<<<<<< HEAD -<<<<<<< HEAD -======= - -// Units -#define D_UNIT_AMPERE "安" -======= ->>>>>>> parent of 70a331a... update of zh-CN language #define D_SENSOR_SDS0X1 "SDS0X1" #define D_SENSOR_SBR_RX "SerBr Rx" #define D_SENSOR_SBR_TX "SerBr Tx" @@ -851,47 +474,17 @@ // Units #define D_UNIT_AMPERE "安" -<<<<<<< HEAD #define D_UNIT_CENTIMETER "厘米" -======= - -// Units -#define D_UNIT_AMPERE "安" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -#define D_UNIT_CENTIMETER "cm" -#define D_UNIT_HERTZ "Hz" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_HOUR "时" #define D_UNIT_KILOOHM "千欧" #define D_UNIT_KILOWATTHOUR "千瓦时" #define D_UNIT_LUX "勒克斯" -<<<<<<< HEAD -<<<<<<< HEAD #define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" #define D_UNIT_MICROMETER "微米" -======= ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= -======= -#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" -#define D_UNIT_MICROMETER "微米" ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_MICROSECOND "微秒" #define D_UNIT_MILLIAMPERE "毫安" #define D_UNIT_MILLISECOND "毫秒" #define D_UNIT_MINUTE "分" -<<<<<<< HEAD -<<<<<<< HEAD -======= -#define D_UNIT_PPM "ppm" -#define D_UNIT_PRESSURE "百帕" -#define D_UNIT_SECOND "秒" -#define D_UNIT_SECTORS "扇区" -======= ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_PARTS_PER_BILLION "ppb" #define D_UNIT_PARTS_PER_DECILITER "每分升" #define D_UNIT_PARTS_PER_MILLION "ppm" @@ -900,19 +493,10 @@ #define D_UNIT_SECTORS "扇区" #define D_UNIT_VA "VA" #define D_UNIT_VAR "VAr" -<<<<<<< HEAD -======= -#define D_UNIT_PPM "ppm" -#define D_UNIT_PRESSURE "百帕" -#define D_UNIT_SECOND "秒" -#define D_UNIT_SECTORS "扇区" ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language #define D_UNIT_VOLT "伏" #define D_UNIT_WATT "瓦" #define D_UNIT_WATTHOUR "瓦时" +#define D_UNIT_HERTZ "赫兹" // Log message prefix #define D_LOG_APPLICATION "APP: " // Application @@ -939,12 +523,4 @@ #define D_LOG_UPNP "UPP: " // UPnP #define D_LOG_WIFI "WIF: " // Wifi -<<<<<<< HEAD #endif // _LANGUAGE_ZH_CN_H_ -======= -#endif // _LANGUAGE_ZH_CN_H_ -<<<<<<< HEAD ->>>>>>> parent of 16840c6... Merge remote-tracking branch 'upstream/development' into development -======= ->>>>>>> upstream/development ->>>>>>> parent of 70a331a... update of zh-CN language From bc64a4c8a3a10d84f04c8104693a8c28eaf0e611 Mon Sep 17 00:00:00 2001 From: Rene Bartsch Date: Sat, 23 Jun 2018 03:41:36 +0200 Subject: [PATCH 427/435] Doxygen configuration file and helper script. This commit adds a configuration file for the Doxygen documenation generator and a helper script to create/update the source code documentation. Just install Doxygen and GraphViz and run "updateDocs.sh" to create the source code documentation. --- Doxyfile | 2489 +++++++++++++++++++++++++++++++++++++++++++++++++ updateDocs.sh | 9 + 2 files changed, 2498 insertions(+) create mode 100644 Doxyfile create mode 100644 updateDocs.sh diff --git a/Doxyfile b/Doxyfile new file mode 100644 index 000000000..2df4d1c2c --- /dev/null +++ b/Doxyfile @@ -0,0 +1,2489 @@ +# Doxyfile 1.8.14 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See +# https://www.gnu.org/software/libiconv/ for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = Sonoff-Tasmota + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = "Provide ESP8266 based itead Sonoff with Web, MQTT and OTA firmware using Arduino IDE or PlatformIO" + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ./ + +# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- +# directories (in 2 levels) under the output directory of each output format and +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = YES + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = NO + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the +# documentation from any documented member that it re-implements. +# The default value is: YES. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines (in the resulting output). You can put ^^ in the value part of an +# alias to insert a newline as if a physical newline was in the original file. + +ALIASES = "abstract=" \ + "access=" \ + "subpackage=" \ + "license=copyright" \ + "description=" \ + "see=" + +# This tag can be used to specify a number of word-keyword mappings (TCL only). +# A mapping has the form "name=value". For example adding "class=itcl::class" +# will allow you to use the command class in the itcl::class meaning. + +TCL_SUBST = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. For +# instance, some of the names that are used will be different. The list of all +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given +# extension. Doxygen has a built-in mapping, but you can override or extend it +# using this tag. The format is ext=language, where ext is a file extension, and +# language is one of the parsers supported by doxygen: IDL, Java, Javascript, +# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran: +# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran: +# Fortran. In the later case the parser tries to guess whether the code is fixed +# or free formatted code, this is the default for Fortran type files), VHDL. For +# instance to make doxygen treat .inc files as Fortran files (default is PHP), +# and .f files as C (default is Fortran), use: inc=Fortran f=C. +# +# Note: For files without extension you can use no_extension as a placeholder. +# +# Note that for custom extensions you also need to set FILE_PATTERNS otherwise +# the files are not read by doxygen. + +EXTENSION_MAPPING = ino=C + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = NO + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = YES + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# undocumented members inside documented classes or files. If set to NO these +# members will be included in the various overviews, but no documentation +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# (class|struct|union) declarations. If set to NO, these declarations will be +# included in the documentation. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file +# names in lower-case letters. If set to YES, upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = YES + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = sonoff \ + lib + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# libiconv (or the iconv built into libc) for the transcoding. See the libiconv +# documentation (see: https://www.gnu.org/software/libiconv/) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, +# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, +# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, +# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf. + +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.idl \ + *.ddl \ + *.odl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.cs \ + *.d \ + *.php \ + *.php4 \ + *.php5 \ + *.phtml \ + *.inc \ + *.m \ + *.markdown \ + *.md \ + *.mm \ + *.dox \ + *.py \ + *.pyw \ + *.f90 \ + *.f95 \ + *.f03 \ + *.f08 \ + *.f \ + *.for \ + *.tcl \ + *.vhd \ + *.vhdl \ + *.ucf \ + *.ino \ + *.qsf + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should be +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = */.git* + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (index.html). This can be useful if you have a project on for instance GitHub +# and want to reuse the introduction page also for the doxygen output. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = YES + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = YES + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see https://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +ALPHABETICAL_INDEX = YES + +# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in +# which the alphabetical index list will be split. +# Minimum value: 1, maximum value: 20, default value: 5. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all classes will +# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag +# can be used to specify a prefix (or a list of prefixes) that should be ignored +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a +# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .xhtml + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# https://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML +# documentation will contain a main index with vertical navigation menus that +# are dynamically created via Javascript. If disabled, the navigation index will +# consists of multiple levels of tabs that are statically embedded in every HTML +# page. Disable this option to support browsers that do not have Javascript, +# like the Qt help browser. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_MENUS = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# If the GENERATE_DOCSET tag is set to YES, additional index files will be +# generated that can be used as input for Apple's Xcode 3 integrated development +# environment (see: https://developer.apple.com/tools/xcode/), introduced with +# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a +# Makefile in the HTML output directory. Running make will produce the docset in +# that directory and running make install will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at +# startup. See https://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# additional HTML index files: index.hhp, index.hhc, and index.hhk. The +# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop +# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on +# Windows. +# +# The HTML Help Workshop contains a compiler that can convert all HTML output +# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +HHC_LOCATION = + +# The GENERATE_CHI flag controls if a separate .chi index file is generated +# (YES) or that it should be included in the master .chm file (NO). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help +# Project output. For more information please see Qt Help Project / Namespace +# (see: http://doc.qt.io/qt-4.8/qthelpproject.html#namespace). +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt +# Help Project output. For more information please see Qt Help Project / Virtual +# Folders (see: http://doc.qt.io/qt-4.8/qthelpproject.html#virtual-folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom +# filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see Qt Help Project / Custom +# Filters (see: http://doc.qt.io/qt-4.8/qthelpproject.html#custom-filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://doc.qt.io/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_SECT_FILTER_ATTRS = + +# The QHG_LOCATION tag can be used to specify the location of Qt's +# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the +# generated .qhp file. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that +# doxygen will group on one line in the generated HTML documentation. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of LaTeX formulas included as images in +# the HTML documentation. When you change the font size after a successful +# doxygen run you need to manually remove any form_*.png images from the HTML +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANSPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# https://www.mathjax.org) which uses client side Javascript for the rendering +# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX +# installed or if you want to formulas look prettier in the HTML output. When +# enabled you may also need to install MathJax separately and configure the path +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# When MathJax is enabled you can set the default output format to be used for +# the MathJax output. See the MathJax site (see: +# http://docs.mathjax.org/en/latest/output.html) for more details. +# Possible values are: HTML-CSS (which is slower, but has the best +# compatibility), NativeMML (i.e. MathML) and SVG. +# The default value is: HTML-CSS. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# Content Delivery Network so you can quickly see the result without installing +# MathJax. However, it is strongly recommended to install a local copy of +# MathJax from https://www.mathjax.org before deployment. +# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/ + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces +# of code that will be used on startup of the MathJax code. See the MathJax site +# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /

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%0D0=a#Xtd2MAY%59m9Rky^Jkg$-z36qZ2rm9 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%0Dafa{L?r$ovj|9~~0Lwtok#L({t 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%0D0=a#Xtd2MAY%59m9Rky^Jkg$-z36qZ2rm9 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%0Dafa{L?r$ovj|9~~0Lwtok#L({t z0w}EX=4O7<)5Qgpq+Qm)Rb+}2!7B_%|J2?SjTG#c^);83?B7I+d87C?$Fgsg>b zi}jJV5ItG{seS?md8evI#s$lXaa!W7&w*R(I=-LXu(S!!ezU32c~$a;0`7{H1I0H= z*QeK;R00QXjSUgo{GPBK$+$9p=Jyt{?u__vncBiJLaD2on@bJ6AtfuS>Xu#Z(eDaK z^gjTiJS+Iul<61z_Rnwd8`$r~wKe+*o%1zkQ1C7W4<+1kRI)f-GgUvEO=+?=Ojp%4 zTj0(_z^6U$VmEVJn5w8_eK1F2uvs!+UqYWtqP=!%S*bhKreUsJ_}Uc_t@W|zDrV6y zI?kKt)HJ=O6VK7=dv)R|~|$jgyT<3(^Y-W%91k|sml z!mz0`27As%A^ryG^59w#G3A$k4f+H|eV-3u9)vhib=o#?oYrK%eK-diNPg=(xdM%c z|Nc8K5uJ&f%Ftlwy4);g%S`H#{7z*orW}CPdojY8SXg}P zmfKW!k#F1BhewhhE90X6W_UVIW`F_PNd&Xo5f-5))`!3B-e1oz9YGdAxNKiAhCO>skO$Jmn7YKE%#2YeYg*MJ!Ytx(q9KZIP}988itcvt-M-#z*P#dr1}a1 z3F_9E&w@Zsoz}b~iKS{TsMGe4Ne#cq?@qR2J$AIS*?b|(TjTcKBd3SzgH2+e4wil1 zycPzuxfb+Jw4dbrmML~ssl;Af>FcsS-97Y`)FoW&hs3z-47=4qYlG;f66G~JL&VL) zw&#sLq$YUf^GU>_J0!3oQS_MV@p+jD_=)izj05{V#%(;dA^A*imE^dXdR$3?Q)$J+ z!7vxTmBuo{Z7_&mJsK;$dN?YzJR;bZ3%~RBJ-wW!uNi4qOk0c1&wTNL1Cz&}5E}Zy zAR?wIXUHGYh?=8Wt+&x*X~cRSewh%|t*z2{PdRUP*L8)?oE9i+tD(F&Nk!|co=3v8 zsuiuRF*DIUi^I`kjd}48JDoE_g32evu-3g=KM*8 zXEgQ&v-dxe`F2uOEgZ?eS_HUNDC?yg3ho0ft_3-hhh%d;KeGth6?0LlEJU8utxeb7?^)o*tB+9Q=^&nLlgBLm(U*dNN;$l$ zo*3nepj}*NEjhcatgKRA@_O8fg7dCX>-M594z2J)ZXxVBk< zJmcpfswT5lp1@4>lwhE6-(i3D5HKUF$^V3Wf$jk4dDw9^uycb6@|Z;)=EUU>z&*K6 ze+KgRW>$W>DAEV|cms3~(McvWKA+kTB;w_MLO7i(JR4(2gB=mV=OUdq2ze1;D4tpD!Wv)MR**!^wV$Env=E{}Cz{(9HZYfF=>pPJu%mpm_Q3TsWm zruVlFTe8S!eXRQ144h)#cNMtuuH#Q8aDb_9HgMI+mHNZ+S-=LQOC8X{2m5`2t;$z_ zSL=W5S|-oSC0ek`Pg8s4t#4s_cgpVj{1bT9$OpM;>f*t|?h+3rPoAE7`PtUHZ|f@V zzq6Ou0EWen?6>j%I{J^z|051u*EiSwkLfqy%!-TqWB-5Lz|(vD)}8;+TmKc>sY*TK`MQUaI~>{4$_brSc!8{xiJd|IeUR|J?w1=Mu1K0Ceb|rT-c3@*h8? z{f+;h)Nf!Tc9HVO<-kQazkqFAbzmWm&2t^s|1$*C{|x@mu(SP-_xr!@KxgUydr@Z> z7{8(Z!}VMH{|d_Y+W*i8o{wbJj}gFb`+osr_0;^oXY3!v*S`X;Y|^a%?)>pn7txVz z{|K01ugL!k0Y*Y1@Q}IR{~3TT{pk&CearVx34bGx9*K*wdQEWsKj5_OC!lYO`F~8m z{|nfhKNbJ?!k?N&`xAf%j-Ur0hR5LP0(h(GXsTcsO%>qeKAI{}3c}G;F`6nctH;5d zDu4s}>~=gA&5zgj>6FOxzq}qkUA$PO$XmweVwAD~&n5$jkie7bm#^&)v(JA2Q@V}= zxH{Qw8}Qo7yrr0}2j@rTNAd-0s(y5S*mUpy!}KHT`EFN~A2Y}nzkciJ+(pqxnQp}% zsBC){cJAlp9|a6a9!KlykIl&p?$8P+}HQ_d!E&3>w_UAgl&d$ccd4QAiPvhd|<>unz z;o{`v;p5@qJqTW$+=ux24j%gR`OhGK9{=+c_LL! z>;fEuCr+O~AY^-oQ|6(t=9BcdT(TExIz;S-DRNqO1ERTkM8%GXAC*6;ps1v*t)r`V z=B&QSMN>2LOBR=}UAK2|ym8aX&E4akr;(uP;A~yNNCuHH@NIp%Zapdl1i$tqKuj z^i-&8{8bzfNzP}pxAUwOyTl6ogKgvH*uVR`sEb~Ub&~|dD`t{??aXFUT9wb@;+3^8-%vkkX z7^)Lm@0cLEeVw`oi4C?n%uuGf|eOpe)Eaj zy&#@GjmB`!xIM@`0hfpr#?2Gp2N*h3vG}3rJ%~5-Y4evV5}aFAzvM+-VsT5httYMV zo>#iM+v(?>_T0)BKA$t=oQOIQ^##|Uu;#f3Ilw{~1JaZ(VtfvjY?pa`M91J2!lJ|+ zKA&e$b$P>~eY<_U;bw}KLiTY@;d`oGrxOSx-73UYkUv7Z%DPjyIRn~kua4;8`LoNi z1xfYgpPYI=`CDvcIQX_S-}<^bsA4*M1X?T25EUYOGDN3oWq=0}_e3m*z{%J*?{bK6 z3mB@jD4rr%@7C7X7T?TkJZXP$*tkEWLd5&Ve5b%3le)FTYfF&u(`;u7P>mJgP=+3_0f)vF*Yz3Ri=BE;2XVu3&RkztRZ&8@tmvmfJx~I6dgV+7>D^N*$D<%&1Wq z1YFNVC?_~k6Y8h~H7ya7>VG7755gH1)Afk`(IGTkesC6>$zAsswl%gdOJYMzZ5NjE z0D84umNnCU0*E}eb(1xOlxX$zF7pz_)84)di!u_pKQDA~3sY}Kx5H$A_v&`n?+}`= zJ!H8LrUi24ByK**RRr*+3nC6B}g6Yta1vf+*JCcrY7@3JIVKEpoNP|$y7zl z*8JTi>-@_(Bd6_b%%<~SSMJ;@U-fN3mnNb^fJ|^n<^WmBCX2g`h{R{8z$LoSRHOQV_l^(k%NV88AW9K)L4Rk--d6^^Wy)O)^<8rp+Ut|564_nBpe zFbeDj1>P+k2NiCWDC{CBF`%TD2)2_&Wfo6pc{kV8H>yfa?_Ioqnd@FJx8pR?_!vl3 zdiy~jjdm-IY{!5C1W!uyWVbIdAKoqI#F60)JPOG^Gjj8Vt5{=V%F|4Dta=_-x!jm@OjUd!VmaUN& zQooEU`kzjDu2Ntxmzm*IBB`&p-X!$}v<$mdk;WSF7ZxRpA{XJNYaYfEEE(H2Tua3` zD+`cj@$^&nAidHJ(5LM@b73%&V=QJUp_#p1j^ba1{*id66eygK*O2KqD zK8>y(URjc)y_IXL+7!ZeTK3873{D*)s>X&Ps7$6Epz8JDxEYt3X@&}PyC2P)N$Lp8 z`8|ll)HDFQiW9|3D~_UtZZ$O&h^BqA;7%A6_f0%y!QPNBW*K2)&}hFHJJOI*w(0GE zuR7Pk%G^G5atiCK5_rC;Bw|%u4r8}yGiN<%R6(l+)z5fX7ZJO@Og{}s5aC_JR9Pab zFI9@{lx*8zX+PF_o^$Fc$VU%MZ;_v{YSQ&j8X1N$PgOrW*+F)r0Hp)5^ESx^5`af3 zz)Rv!VV&~DL#U>NC)%>b4dujHgIMp)YITjbqhwwsfjjEO>I?S|p^Ok1`mHFCox&J? zd>%~}Se#Fbrk(P}aj0&pGOQ@0ow*HJ>?{e(mg9vgO6qcTwYiFNd;(n5r3K{@3zaXd z5g6qPTyPadafqd=xa#pSoDg#70RD`L`9nfK|2 z4{G8zkIz_NuTA}OLCt(>fE8tLHLF|rBHzd%Rqxa53?IC!UbFE@aHCt#Ph?v=UVfw( zG}2;;RH#`m&;*x0nsorspb0kvboET?(baP!hSv>6s(>gp87_v&8=slYhNfuerwN)6 z?$e*i-ywn~`-a0tS-ddHG!fZhb2x0ZXO0b+oo|EMP_>PPC^QtwhGVd3rNFrDmF0P6 zreDCvE%W0JC&~`{brAlV`~>dn>qtNW{%jB8YXis+CA3R31elpS(CFWlIDw#byV1@G zy}4tf>cJ6;ejhSzn?wVdNlJPx7iGn?F4+m+Pn{N9-2{~5*LvQtCZr(@oq6~X#=c3G zVVKXV?Kb@OSHtsnihbseq^o%xCO8`{ju&2c_iiSl4Y29w|`_sESK33SO+!rsdO_!;JU^N|6GtJQmUgq1Mo5=-=WA*tF z^P4^Vae~XVbXU`dq`;yf-*+l4Z!eXM2J?1r3*EaZr}#nhIhSFuw5aiEFDQGf!J!J0 z5{65)THRsz=+KqsF*!}my2ozVXXb2Ngwy-ZfB15Vb9)cM;<5$R@jB2$=Vn|7-X5r_ zKv;ieLE73%Ux6~(AqAxx#WhuVe|~bWu~ntaLM^r!u3GoLn7@g&lf+Y`w`}Tdr=(cF z8I05kS<7vy!=TYK8`;{63Q9_9`K<*>w5_&@iZc6q3}==UH>HIYZLAEsVp>jnkcG=o z;yj8M_d}M1X2|NGSr^gXg>~A7|FIh%|L^<$DFgpEU;epZ{cpbfSNYOM99mDDmrk0~ z!BA+)?|kiiCd=iXn}iYvFZa0Lm<&W|Mg&=NR)n&Zi!6_m2%@+Jp#9(;liYMzs)X6=_j7Nl37`6xf%UB}@N@JtyvB)ZT zFSefgv|pEU5|C@Jmyy2%$9(a=|Ip(FDNIuQ&$T90s@V22j1zG)*jIaEQWvkY@YkTw ziwuPu$0}3~ooCD{=Kv4AD{cL3|Ah-OBj03kfh{~kB#1%nfWmhFsNPaYT@$c!spN7av2s1 z8D4Cqg-P2?*$x^@mx@a%9@A(&&x)xq^OM`fhv8%!9%kJ5%K66j zRvAO7N}7cv$8!%zc8{hcX$u7wB3UQuKOSv>E|R}L_Yn!)BGPE+c!S^pB>EJ zkgr%H4)jW6tgy}FWwll+)=if-gH@6V>gKt>TwZ+MaFo$z-_Q9;k*%RHiOf>LH&na_ zpfqmdH`m9z^acr=w{A>TjK(G5?1LA;Cfa`2igi(hwZJ^RvobS4TG) zR+66|eaR8qM3^8A?`OcKdsq79KBtIFK4BM#IVY8BDtvX{-x_B!0yOrSBmfMMZ$pKU z8=7sUtGF&t6tV6qPvX+ks8hyeoCzf(LHQ@QXfTC=)Ae?+shP_An&#Zm zM;3&lq2?9a@hl!J==>}K@pLz2$91SX?xb3#HdbPFw2cVDReSGd zOT5%DISp&OZ@KUJCC*o=b1H{WU0<47oU@&OxlaH5>-s3)O>}blblXP5_RKZ`MD04x z8S8{;&=#0AxO-3`VDu`GSj5l+d?U!xd|`NB6(bGT;o16CN6VXeHgR*aNtk~3^b;0r zX4aREpOj_@2C{gaJ?RGEII=9xunKY&x)&|v%{o5m&p2Dbuo@#fGmXE{{H(Y8onLKi zWYfYjIL`SWj|&rmXMGQ^X|>ojA~1x?K0rYr{QCotbKKruWp$N-_9`z)zn1hG~< zQo|TVl8qjE1y(l=;ub4Hn{>Aq?)<6G}}wjxf&ifbr@w)af zpDB0-#(r39$EFVn$b~)$ zf&wRZJ5W=7PD~WTmfF(E5*qz3mRt4|VN&XapN!WD^bhqp71_Kpa`yA+(1RW)vvc;m zJ&KS+H$GV>zuQfDaTMmgy{(&{>rhN;z#3Ms6?wk)TR$O2BM+gccJCKXq&X$oL~Qkb zT3=p;Ht4MfTD##(KhUvm-uN`>sie4#zqtW zi-~dxpEAuZbtm~q^MNvCV=NZ+c@I)EwDz4ki?{)#q7iq8cLrely~Lsk*Qk@pCS3f4ve11er-R@ zfKrE&ch+rgjo3-{UQ=z@%GVv1SJ&-hpMHQkWA_I8upHTODoT%`jQplY){8e(fRob1 zqXrB3F%(=1Vjr{4*AE#eJW=lZfTkySS+&56y{^VFS37gys+=Lu2%kQq<$`PP=6frL z@9n>5&tINgSZdAAwpG%zs&D)8KHEj&az19%d{ZYP(CHH$*K&ec-+IxIugb>}RyWj_ zY~*`sT($mVtNui@+%CQhU(-OE3k%k(Ic1KTYt6A(^fP!&K7;#%6_yqp0fy;LK+L># z(>y8x$!o0q;}N^-$+U}9_oER=pXD#Cn~j*p(M|RB1unY%i;q>=^Sb@Ih;MkXWv&`ugg+aP9)P zt@LrpcMP$$9FWJ8R9Ke=pw1b`It`f99@YUu6thtxVouWc%%-+twd`2y@`2U7NaK~; zqnF0+n8dcLi!y$JoXKugN8IIg2Q*qgO)}o?v zd8-BM0q)~IMlcoEH#Fr;K3POY9|0q_RNeC1o-?p)+~~etS(!45PXl%?6iZfFSK6D$l|`suHXQVtR8#zPnI5PocAx<3 zr#(A7Y3!3uoxHM1pRuL=%NSpC-Zwc-`p#b(w(fEOSKr$?v3yb3okYMOJPsW9_;$K z2k}A!3i0dqR2vr8&3WjQ!{q#-cXMX|UlP|*7Y{?{H+(`)wb3hU#k6OWo#Y6)nwn>% zBMl^>kwj-8{_MqTkcb}V-c_|UqV)ysuCVvEIWJNS7Lm;rR9u*mHg6Y z(ptT2MQ1Cg0gGFc!5isaPq;;HgnZ**s(vfp}kdv#@luOe1Yp&n`7E#}D zhZcZ)4SSHo#_EVWHez9LbC|$#0PngX0e@vAk@Z#Pid=wXZM}a8^Ye3+IBTDAhicml zpJ^zZJ>zF-6B_MMS)EwMwPnWd@sUB;aGzzK{Pifvdh^;2{37^*0mNx(&h`@sQ)*~z z)G34p5J_Q8TQ^CapyHx8>YZVNOpMKo+*<)rtmW|!sgF~mybqVV-~L%dA+vaDh{(gN zQI-&Jo(zx22}d0QCj0QJ%}cRFYHD?^9|pMV5MGqzXG~j{EzmX#NeUEtPnK1E^DB)Z zf@N{Xkof_{9EPB$31Cj7uWOi4m*U-qF)BBL4dR_8lJhQI44Af(I}a#tt@~BCjO+8~ zJJXdAyd$kzWN17-77Mx!9XM`;3!JULI_#y%{6GYf|FdezEKPjp*HUYvx56}J_8{B9 ztJ$fLHUE{@NmbVyVrp4C;l^^mu`0{ei7FBOFZ*(@D-En))`{u5E7|Q-7MnyixNL-TbT(=+#y$ayF1pmsyFD^AmHW zO#99WrQtDPFSH?(l8Tl{I@$@S{DFAvyhKAJ2(3W9d=Q4nfbCkjw-KoL<1 zb24c?bB13L?Dq}NSIMO*uY}fo%gVjI@qX*T1M6M;d-TuyJw28Wl?X(BZSQJy{;%O>3FD zGb;>Nc8a@nBHR9Au=@84{n8Wm^SK%wa3LpIbJ>IkTi;bH*UYI2d91|~v@9F3ztS7)JDV(9lIZRpO{NmdQ` zxF3%X|61M-=gUbe67=co!u^t9gzrJ_e8cTbxtU+27qfmMGdBv#f2?&?xa7eCv4bJL zW*Do|SKBy-2rsP^=%VX;wTnUz87h=@5$Wi|KSbwbsL#rgoH-sG-?5%|Cmcd5L(rzzyKw&4x|tQ!F)voSM=!)s21-aV8qm`)67D}(|(@S-)3jp zmv1^QM2ky{&rCmfQv;!oTgiKUqHjZ+hq3(zCI0x?+1%@ObuPFeDw2Zd5VpO3PuSKJ zBJv4@0Jd%!g2~w1Y8rcx%Q{C_R$qXT^Fm`-GV6mAjP=4tdmqR{su0U;53&!0a6({A zU6?&mG;F%(H?%j6%j*#gH@#{1(ffMAlEUZ;M;+jr;rSlGb( zSjVHTs1`lJsV=#I3%e0!-&%iq+2=)6K0#o&2vd4}?Ydu)KJcVH2zRRm*>W=xZxbCf zDCG1P^<wD{8)i^hYN`#iGO+ycy*A zv@Qa0qd*_m9`{M{=+-B$pyW`6FYQ6i%^1rxCG&y(L*nUE`+{7)G)hx!2>h;LoE^=* z$&nN^2^;-WBCn`&RZ5OJ4sJcP4!`)yHLA{7Rf&(7$!FeUJ|Y=MiW2W6iQFJxzwk8c zJBm!O68SBM4j$jCp!bVpr!)0c+FY93Drv5?R8!nr#lj@WpQiEx7}$fz#G;t-K}hCV z{G{WpvR>FPVbwjznn4j*S@LD#v3|2+;bWe^HN$@hu66!rpmB#x`fznikE4`<$u2O5 zZ~laFf@C8QX6*LxjZbrFDm*;m?Z?YC5jTs?!j9CQIH_6u;@USyn5l3O_S|aJ+rNPX z|2=5HsYE4!n>Piw#t{i_-c1)56Xcx(6>d6JW2a`OZ}kpa9egKs);3Q3rVabyOUEgu zfiOy;A^#ra0z4KHi6h{JmfLzcOU- zCj=K*^ddb^pzpf@u9W^idvj2O=wWY%Q+RwA9|lwJD}1W^iEN_q9sBDKz)~_!$W`|7 zPY5vfPsjD4Xp+f$5UXsR@kwYk;v@x~h_QfUG!6pDt8IBw9z9?3503Od7WQ~$aRzcI zV&6GQjz6$h0tL$CZU^f$I!tkU5CL2D`%lf_weF_a7eoR}}3( zFx;dPD3<*XsA9~=^*E;D7^r4q1?G{zg%BW`6`hP^$zTwt=dJiVjFB|;W|HyCwC~@S%)jF`0W&;Fa%M6^L z#EW6ltfvGX4a93w?72K;;*J% z8p*N4C5>YYrr3_GzY#pOeeZUqgZ9ATGRXYIqND~B>GWn5zWRIkzquvsbGlGuc~uD_!F-h$5T?E#}VByUF^= zf718$zgM0A?z1h-g;zqU^!DY>l!Zfpc)54o#k%g{<~T==8vN)uGcuXCrsg3{O ziBlsC3ksCDQAIK7aWY23^*RmuMiE9;lKR1;hUbY(cYoinaS`5fA}Lg4 zONQCt4`e-bZE6p~yV{514#usc*HD1{99Ze~w4$FbjbeiMzaV{DLpJ2+7LL3f#en{9 zYl-sfx?))6uQ`nc}9%{377cuw3D^(lh$v?#issxP3MDMUi~TVZ0G1oJ?s$JF_AC*t4P}$^3y}P7)*NfaT>Pf$T+G#di zOJp{XW5K!b>C2=F*`>2qBM*}-nk<%Uzo+PIddQKb-Ya>#-zF8Fqklm5)$V24TEWk_;UHN0bO-uoYSqtpoz7 z4}vQbzgNY~lNM#LV^wku>8E9~wu@7rmMwBzpE&RbNULuKkQ6L&A?hG?BCil}0f->G zIQC8aZkvpY8htafa`e5c`8yM4mdKcf$Scd`r>D(Bq}0+yv+o}3A1mP+Y|n|piDc)$ zaGA{=)(Ell>+>10v&pn9ty&ci{#lDD*qpOk zr<`WK2y@FNac193(!HN$mVM#PW0!;(q&8UYWAhAp1m^*UWt>SYRc|eXUNZovZ1zfN zk7HnbGs}*3tGN>>{v@5V8uIa1o!`Bw&v(;InD@1eb>k6zg&>_^s#5YBDm;mix{@K= zHe;A~RYjKc7G8x~Ow(&cK?`Ai)j{F=Q_88TvF9Nz0*#C(#56#D_gN*2YX!v_oR-{v ztQ|N_QiD5;>r`nDeAvQ=#n?8C=~(8Q`9bNXKb3A@IyMt7DB$kyh4@e<)ZFT+Q_4iH z&;G7jU-T=O#MBLs*hY@}RyDcTM@r%+RwpJkp1PlkaEOzW z#56i7XTLA{u&c|o{MZ9Lp6_x85t}3~LkMv7+dOTWipci-eT}BXEcHX)hfR5Qpaj)U z{DpxDO^M%&>jhx=F2evrEjhh?*R76Z>+zl(pKH8-kOUUUibZ{#)1|Ba%&?d@iw**0 zkueAS^`wc0;TaVhu~$(mehUS-Xb2I=GHOG2#~P&3VeEF!oEfw~@P&M1{1QbM4u zAzU2|^7Cq_D4cbg>+{dKM>=o`U1)6EoP}5oun3zTKtCLZdhvrnoRqO4;|hh)*=7S~ z@DNZ+2#sJqp~0{vP7gjJ!^S*nqnSkPGhX@$&|kiF&TvxemFvBIhfQ7uw)%nZ>;dgT zUx)OuAUI&f8Un3F9!V;bJY+zZK+>S!tTUqeu|ra!ub4TkIwkB7J+ZcQio~gHQUVR+ej7MP`VG=@&k&~a zSUenLo0N8GX1YJdPotAIia<~%iYmhr{f@s@dol4F5vtgbS0aD4w(l3sA;u9)LvZQ}kOE>-(a zueXr38f%VZ8v)Q%LvilwCN>jtfCtrWelwnU3Z011QDexii}HDgdPd$>s7Gaa+!hUc zC6~y3aG%K>fMjteuuf2Rd+D$QoItRKsE@P+#z@1taV)4!hVLkx&-I(rv^jgWtd`>8 zA>U(vg?BohORq!+bS!3GrbdkvK1+1bfIiZ&p@+Uw!JyN#4&A`6>$FuZuI~E!Zk9O* zz-n;};Z|UiRz^W}MP4I2t_@S)wuY9v&N%f`I+yyJDL)sBeYLtCa*x4Ny9K-5r_Sgu zIuQ=&Zky+95E@|XVwDIk%4WF-<<>FQgl#joBOXW+wf| zL}}Xt3l*|ghAS^z8u*p0(2*7oJ7x$a(a*LYN7z$1lUku3_m^o#oWz~qBI`Td92V;8 zC&$&lzLR)ae99z8*+iL5!izNytGk7)&xxtOu^wFBszE|?uIjSnD7{T0wX;Z%l~bJd z-Y4!BddWSrxRZPQ$B^)da=(N~x(lqvuNn8E1KZ}|K9 z-}h{7PM3=dKMvP4$iC^;$aY^%%AJJRM}LU$`D&;`*8#Ek{R|}}H|y)sxU4sWZ@lzf z-{i(U2}YJ$h4Ot`(VVHhWj1m??(tN&o7g_YFGQwXdkGQt4b{y$K~;Fx>P*$@!$Xq| z!%0KDmh)};n=edAel2*Rk=<<&S2UU8e)+ zm)l1^4cJ?ZTH!Y=8XJCURSj;^jhd9V_8@6fqqNYU@5?48Lb3|iypSCZY8Yo6a1zZ(cbC;`K>TUCHOOmv)_ET0ARj3R8lT+Sh?mN|7Z%rG)kra8BTt zgW%#`yN~4Q&S#!^M1L2HyO45zUqe&J@p*ELtB@z1AE5W3*xRMUpnWJIga+DzGTozp zpsmzL-#q5zNO4QU$kY+%nW7avo>9xXS4CUH0S~#CZ;mG0UoV&&<=1$j++?$11vRo8 zpIT4JsqcJmJ8RbbYpjezI*T;=(`GP`M!-5IU(f6v*fT~B4Nr{>3k(% z-nIMaY(~eumN?Szy1Isj-sRN$m9?rX$E;$GuFcGOQ`}fQz?>|QPr=czkrmd^WEG91 z-0q{=?VJ?XdaRT@1(D-5c;9u+M@YR`=D~BThEHGb!A@V|Uc?RK1dz99rAd?P*GQWQ zQZi$ic3%i0-TWM3Sd-#U_`;6lKzeSb5_r^G_1+K= zUKDf!OB(PhsWlIr7nh|v6nP3}#i`_9@;NzNa@+0)`-9!Vw6}zH z{UCS2)Hm*Hf)(dAD-#Hju*-(6gjW0tVfGO|3Q>)ROL|ItI(>0sx4am88D_8*fun8N zj29P=-9l5-68txy9xy<0Xq}&adAZ`mNUJQFDcy+^xMR0g3*6m4H(dAV>I0Zf^XVD? zz5(`}A|TEvZ63GQMcka$BBIx=h?1@(%abUw4y~-vHzdMov+MT@Q789_N2wK3?0seN5hAf(hG`*Y|qv}O;I)XwLP6#rRX4?i0A$qIITeA+U2;?Uz|cD16O z2kKb!vklm1Y>@-^)g9yms$bW8_nT+CCxz1N<8-FY zq|W!mY#Y%F)tWTBo~EGh3yKlg0o_j2b!5kRq?cL*&7PS8YW@q9wu1C`VKJS}aQvDY z=KP7eT-fQus_o7y>%W@IKdug$)_z2OBX_BDJf=5w6hO)g2#^>jK|C(-4^`W$r%2xNk+0pUP~eD>W@ zy7?N)hpsMXKD!9FA_N|p)BjmT6}fDp^o70aWP~gE6yK79y~ez6p;d|uQ&X-~vWW@Zj};?Io|Pl{Mg_QLV31y7$GNlnYu zxl`T&KZGEh3U`I2zrG(yr*4rI;sJZQB;p41^^P-m&d>m8BN}NC&2mEXwJaxEIZl?L zf6z1(Uea`bNBdlL{`D}L`eF3Or(yHOieHO*T4mH;y6-ZzZ5KXUYvbsYXMcbxM!MPV+^2=Jr|clKnbxA(iA zx3>)Um8ePSM7%py`-%&jH2<7u16F7VrK^Nh5OM1zmW2cYIY~K6=D^vky+>cG;;2TlwD;=#cuct4$;v#`(dLr0c9xsTEzup!7cF z?~Xc4(dYs-YND&?#Ey&9rsarEUPRb;^M@AYlLLBML?vag`79yPji>G9o{Uli2 zAA1n+>xe)wO~%Vhl>Z%;Y)Bo3bV9LPHcDTUXiZs0mCcM&J9Ni!h9VlQ{JIc z(%Gby$Wtz+ky1Gk-a*5L2hQn!QM=-)+Hvt!7uh?LD7_Z(kZu$;Tp&Z$c!IDxlni?3 zLnlknfRvw3wOY=NfS#X{#&`62Prm-kH=(uM&JlKsYr$LcxBSNnD-&Wsjz-2}YTnAG zr$|Koda&o`u`*B^dr^)bKvi5X+81D0WguGv#6`f^7)n3GqxA zzWB+(>9Awrc{M#I^gzZns$-Y*)bx$C53a{1z^pcSQi&fhXXwB^%B+InzVBSvjyXEk znw9uf&dUv`j$~b}$zpGj!P?Vx7y>oST%;$8jbSvZkh^L_F^lzl+hN%KN&!3pthSzE z?d)%3w4#L2k(g?99#`6ScF}&&Ua;GOZYdpC^HRXIGKCfiZFodmlgG^ZyTYW4|99Bz z{~}!W{~`7D@9^9ILHGSnt-t+yJ?=mGd*4SOne?+g5$)nV@!Ptl!paTffAs6Qa$e1N zt}C^r&b}&$rVn=tFg6{q`U7cXxQInzA3W4I^5CGajD=49+;x)1nNHS~+9L~F?GLKO zR6Y(OVnOqNf{N|kjQ>qY)X|9k9hF%Hb6yqTv$4))(;@e$=lKe2cD6)kS!fOx1Rhx_ zJm(0WZlxawZL-ozfr#Hd=Fg#os8i!hCu3z;tyuOyC;bge3?+FbgEF z-)tXe;8fOrm!xH4`CCF?wFHpwjW)mQ`BMCL`24{45-#T4_I6wAV2QN~w=(lOQCh{~ zGFb5+?EF3Ia~OYb15%(>vdlLZp^s_HF6SyZ^3zIr^>VAJQ3~f#n*ujjB+FVbO4;#GTQjP@+!0#=in=M^J z9^GOFqS*j2DZ(L2vFU|Q50E_9s3pr$$}zntp85eRM~AlNh9^NS3DtIDDd%NAkJRnc zcQ?GWk1slGXaW1|PjPB8lnX^O0EqJvVEP6EL{P7h)KKwv>Z$NPHF)oCyVh{^j9KQ2 zzSUa5&8dD>9uKpIrhAE{vi=t|AMHWF^l-ETK?*v*2%FY2A2YNi!}*roIv&Y_wb7kg z)q`(mZy^hp7r9#-l!6bZJ_haRDPa0|hUQ0qUHfp?e*5OBxx?37b1l5qHiJfHk}zuL z$G}-Ndv8?fzvrK{T&b=cwQ3Xl0b>XUvUn8cQNT&DwGEt*VPpwV=J?gwzG1jqO1dGM zwD|=U)jO^IwY1}}h0UQWY_3#4{aNQenWg(lM?9g>dlWgCo8P$fLsQZ z8^JOD|nGY_nImUI-^5gak6UNty8spFkDqFDC6dRBqNE>Op3Is zWK}XcdtGV5al5{xEK)MVFUTQY*3~vgmmpZV?7bKfj^CL4%DjzMpen5QQLvrT7(zUY zZN*rT4()*pduvpC=StK3rkSOKhU+8Dw|8|{(_~;-#e7>q3!Yz)^Dl7wkzV{$T{Pr) zs|r}IHEm9%m3vmtSQ4u)5S*GO(0)7dTz4B<+ZyW|GQNiqK1=zYP%RFC@ZetJD9&wK zWQR8Jl>Z@w-YEE`6$7bKeWdKS6rbOGnwz!(iC(ebNk!7}W4FTZJiS<Yi{QD$m`M^=bObP%})5=r>~VRUM{Y;*4>#XzCG9Ar#<~_a5)HLzEb)MvKzkqme*{h z8UPUz4qJeeel=o&4&WTcrxOvApCZYXKgBFfm zoy3Lyf&%2wN$mo2$PO%0vK0!V*j8;{Tf>P%2Y_tp#N4R&Js6Kk>%0eOLwc4?j!duN z+Z36%DVcHsLchl6H8{drSlnPvhkby8?6cu=UO9^GOv6_YzhLL36LJH-+m`vV6S~S= z%jLK_em#8sSa2~+voA(~j`9`-mD*YNhQQoBun2*@>FnK&{6*2Z2B)u2m3y;HgG$cM z8jYP;+uVb|OY}}wPBxP;U>S@FOaMBMhSv3U!edYeStr6WNo-y$4xmHXgy`~!d~R&g zrY*F0JQr5yS1;!gk57RqUm^q_LpxIISUe(>7+N^#q5*# zjc>_Dv;KyZr^rKJ>3fjS_Es?#AN=$(46By{g5Y?W$(|b4C|ifVLD&g~bGAFB8GoGH zqt(Mh;7Dl7rqcI=2b^E;^yY?rYV?1x@N-kb;$8LVt*W+3g*HD`2KeO?tTIahKOgxY zC1I;e5|{hEepRBYQSD%%)$O2vp4I!BEh zT$~*oZ*RI=Q+#30@}`_`Fic(hTCI*Mr`*EQ)Vrb*9GFSS^wwZ-d#f`oR*~RdTR`VR zfrFSd&-Y`$G%Ub@C89n*GE1G$*JB+vdPKJdeBYn146`1!rA{X3a2e_a^8QM?KN7KY zL)Np)@Dh8#i|ESSr3^y25{vkuRaO}DI9Hy%|F zUHcFvkL*xm?PEAIGqs^l9!++oYOqA0aZ7Pa*5KLr(BRT8xT@)t`?gxiGlzf?gBGn! z*%qzryH@w3z7i-lsHaGb!ZU;x2`vUVfZvxAbKXj<8?Ro2Br+qcQ;HMrSee-5@}lJ` zM_4~TUei21otaDXQ7%!kz$%0g^q8$9)~;1@=(Y@({rc+mn5wO|_2o!E%#bk%ta%U) zL=EKXVm#;RMt5aNR+m@uDEF$@@OhW6cN7p9cOa94gtBTnBzqS~I;&2q2O{&K9*hq8M zPbUp|e`gJPsEw7bnDXMoAGe&L40y-tp<#Z8bmx11s_3wbL z8sBru4nB6~Q;qmwpBSG~$@| z33Fck2ehh8?TxaiE;5oIu%DpOxJ`chLHob5TOec)QHHTN5xOI(3TM3dDF6sBza43! z7dCQJ@6X7sAV@)%$>y>7OXJtZVNtX0HXj}*u9@U<-hn2L8G{M+a~=>ceP~B_A#WTA@L#3QrBBRNpY3ILAx9Ue!n=?woh>*j>n>z8n;|?% zQe#AeQXffh7gBanWKb&rOH<3A_NQ|~S-|8}-i6pFQ2h;?*0v=yf%dWq!DxU48E_Nv zq*e4I{Khq;G{Bqj^an7)B#a3+|BPw@II_6yjXf(0|Gce#KCOR_t$)tM|MLq(slzn7 z8F7eqlwPl{n*-{8;}(${n{1!2h3Fs?Swy_W|V{KzEXb~FwW)x%s!Zvt@9`EgHuf7F8|6^|2NM1 zzkikfkvASA-(kzQAeNrQ3fT@VE3oMYAQrB_ zlN*|8^f1_T`M6fmz5j|j#_CZO#&SuB%@ZP%o==UMbu$3gB%~jeN{dLk14N8c~N5m_w&F ztv+wKlx7&OPe7F zTa^7NYT_+oG^!FYTNU=v!tPq2pKHxaeVb0Hq%CVZ_^R|}@oSTVX~K=Vf9flf2G;w$@! zFwOvM>jT*lkdPl-wm&hV38lswl9ueZ))2Fxe$#uq`oxv;+UM68mIpiiK3(04q(DiM zu{cLIs;tEdDww#okGd`_Ipa%-44N+SHzeid7r8u$__E5K7PO=vc(d|cT>+}9>XNpN z+EoV605L0_KfxI;8CQ8_WX^MVZ4~owz33)Ker(#)6?2o+D5E+ThbutK_SfldBN5h zD_x~sNa}dk>g<~b3v@PppG4~_ynIIieACTQ=3Lg^Z`eayi8n&<`QG~)!TR*l+=bo{z_V{wW*nsUPy*av* zV4Nl4+SphZQ9|{u!G%=iHuEXYp|z^RbwTgt#NzM2z3d_W;=nnDpvUVc*w$~pleW2y z&@Qpmy1(9XUE0%C`-ZOMWZp_+x}RU|T(+cnxD=XAA^YRzZ0zF+4?kn0xSadBWA7=U+E|7@q@_-O7FMk9#PqEB9=^FU!q+ ze*00*1*x|-vw{^G50~Jf6nv#*yN4QsmDWg)f=^@HYBbfbF}TV^iV5qQZ618aQn81o<>c~KS`i|= zAt#|9_r(G@%#r1RN|lI;?j<>QKq~=mY(`4UzMoG;v}m3mC{tYH3$K^WZbcnazn18__B!Cs_@-T^`A|!O zs>b=gsnZD0Z00k2uY62=>NpYVzOKw*;RO&2fu0HTfIYNVChI%~tWmjfI03PuQDWci z;o~9KwEa!VBBSre-8VMbM`~FX`sEKzeLsEcPTY~q#OH~%h$k@8b$kL~>xwg4fjIK4 zHO-P*@`ff$%IyqioJ6(kFJ5FL!r5%?wm!Fe3A!fbz4jKhc_x}=qm!7W#w)`Q-%QrA zY>_RPY*xabN2D3N@9xpnJykb;&O5e3KV_=QqUuHVTZ|5OrMXv?_2Pg>etn8#>8u~_ zx;j`E_Zv{zi1wic_R8i<=81;~j+C2s z_*I`r?gyuZ(_b(os6B*^$TzerJ6fIX!!S~$z5c63zj1h!nCVvv3Ey+K8twAO9~w0& z`a;F!=VczBpw3Z}>CZy=sF4&-dU<3MGz?WGAF$LJaPv z@l;plI%^%B^^@oPNDsgH5hoU|!oG7_$`86Zt>J9om-2E_>CGQkFHahDzVp-AN_U*Y zYgDfUHIWz_6XLm|reQtMw-6E?GJql(az9%-1WJBJDa;nII?VS$nQ@)Esu=Kz%ENb(vn;c!Kd2Mba-jK+~q?64|JF>P|&& zsyV#YkzZts>xUvJmf0d^^N+#3zCz^Xv z&Btkn325N}i?*!8Wbv%RVqMMD(uHJK>?djb$NAnP-KDQnBKE~!+UI5TsJ`Z{;fitC zy0JI%v&D{){c^SEXoZ2mOw!|F)gbMh)Llr1dUPQwybd$rUj4jg21k|ck8Bh|HJkX# zjbV+bzB3cC268RCkco9_vL1%+%!C?aenlAlB);lKIOyYtNxxBqZPk2n4wuT zPI_j2P;r1w+mzJMs=5}TL2RjZ6%E*@N8F}F(XG{cF4OaG*r|@A%5}=aBHpjB=imGA zy-^!5hhdzIJ~+v%G?6?Aa)N}Ph;RVH>c~aB8KKD$WDVO|`ftRq*fx6|eYx+)u63EzQ(xY|pRB5HC$vSIygFHi?;Or+Fc>Yse`)IIhz za3A!KgDS^kwwPx6XZ4t342vRzGR%Tggn#=L&tFrY5&IHA;( zX1?AmJ3JICBeUmyIPXV$n==k@s&XdfEcMY2*g!X*p$SjJqSIOp$hR7C!_EWkE!TaX ztx7sy<I4M>KJi;XKP3t<2P8Yt$21Q!K4l5TwyM(S zLN|JPO>9VZ>sp?%3TbIUrBjn>{r+gr#~qFx+^OnQi$eq z$x&ILkkydd)XC_5C0OcFTGdrrW{2~yy*eA=_aS;X+x&E02K_nMr0s8F%3aY56yLkhv#dEcdL+Xj@-mj7reG`xB%{fE} zUn;(k`_pyQ-Li$l2$S=bULAL){98n{U4D_r55d7F!Ef?|7gex9?c#h&Gu3f5(pV?y z@h)$)d4M2;Wot)`rcL$?%XLK^6LUdY6#*`&!0c$`Pkk8c()Q!)^CKhHZ6jUzlUMDP zO)Wj4A8$SWdX@Q;g4~2NAt4&&9_K!7kPuzJ7SkyFnX}D0B9i{n59j>uPP93qiZ8s* zv7fiQf_JNNjTxE%;{%lzXbc>qLt{q+?EdKnTNs|R9sXMWF*rv#stT?h&#!Jajf)oOY?TwDiAP=< zq+KSUnBB4@z4kvmpAAV(g@c7TpE7|+a{@A{68iV?nt)In_kdnXp zvmxX9&NatL%{wJ$EW0|3Z3^BHcQDW(r^zC~Eivf@Q74O@;ql8Ei352P6|EK`9B{cU zzeS+26bXBadgB&$ONn7PRzJ53u|%ti>ih^^J*o=!3ScP@#S3U^*wD^>qS@VRR31{O z9@*$sGyUW%E9PFkCu+wYtvFeK1Ao!4QYNiTszO>d>8)i53k?qB<_VARB#+U~9=J$= zXom>XkYd6(tFOC0l--qc0c$e;K_>KCv{WcLshFwMH09=@_K+B$Jjw!s-_USSw}m;O zgae?>D0aY$U!w$nLSVq`%Wq?F4b@9?Z;ZYRH2PvK@p_;9q|&YZ-P#VO&t@4nj|SM7 zrkHNOmqb+dMuwZ?lU`(C9ka=9Yr<}}Q~h=lqc-cq-*j!ZvP*WBsv{RQdO!O44HziI z3Y{(V_fs*wab8z56bGn~(=X5@FKioPe2&3lmy3jv{lk!guW84qFALnaQLQL;t1-LQ z0=NEKC(dqFba|7N=F{E7!(o9Z_dI$U0_1C<(@0%lq%y}iluA~Gg^O^JBcG_Fh(UV@ zlT!Vy)&?E9!ORnaT^ZA22Up*y2$tb-&dh*kRm^ zA!K`#?i|#EdtYNcF!iI(TsWZXlj#DA!*;+XIQ-2n1p96I=k*@_%AbRja5^r8i_rr# zW%X*)Wjq0~H+*uYijtpU?T9B1Z27D$hOy5-x+#XPP))sO_ru;Ie+H6ZfqP4TX z>DIIGQmLMcWdEiFs@!XOUcDJGTC~QsBs_r~IzCtxJ1N?fkyjoxy)(>nUL)>jYHmF? ztpX}>`S}TW#&j92G8xek0_Y8)p2#37D8=o2K`&JZ7A4>k6yV3~LO$_os#lSwN?!Lm z6$Ip8y|NWv?EPpivHohK`7Y#alaaFgsSD#dwzkWe#@9F9SS=o(S*d#>r=i*7hb;X* zM7W+a!$qHHr+7D<*3I?J{WhfJsw=%%96Uh=YKEVs$Y14WZ1A*AL<>hzqL21Knz;rr{<8@{SN-?Mvoznkg+Xn z<3SYskh<0ME`&S4zOx<8Q|c>wbk1VHxjfPebAB?>>+brS=r<=)BLC?5aWs&7Fg)g) z*URNxv#qMPCPo(Hedj&T^txo!Hc;J7Q)d+GQ^miPUC+s^-ZXwNjJw)GxyYyvR)E`&uq2}L`Hc$mbic4!#(e^mqImBTy9Q^ zk4&?Tq1DpkVYh-MDK2Exia4p0l1E}*kuP;+sFLGf6Ybqcsm9&Ke~}{~+6}2@53sFf^eU7i(Bx2g2_w&)2paCKXf~QI zQKiHuHu?;7=j5_0Be>1KdQsRhUcW%^a6xNevtDQT1!e7*RwYA1B?Dwnqsq$fPf|-7 zQmV%3=i~BK^0DXb{gQNles0GGmw6a_lnp?+QO)|AN2rIV<&js(K>Q}hN_FzhB@wlX z1KiC9G0{Jj?!`Lsq$^gyd(?RLX+M?c+TV2QFl#~t9BbGLkMW{nUI9KOA(eC{^JsY~ znm@qMob+(8*l9<*Cyy~)T|LRRE!*K}`*zFVeGILAw2=vUonC{Q&VaLcpga_T>jVK8 zJJKjIgw&bt7eH!|WP2$k1eDZ1C62{v0fYJ^n>vN(?8WDq$0<}`J z0|!YGAP2c6gl=!f(p-T@wjarr2gX9XH1iTdg~7@GW1i;3?bA0K+84#%#tL*5D6jFA ziXZxZ_ien9nS*=xX~hW_`)xa2J;Se46H0@^D$TXX)vp6y4@xw?r`GD7ktSZpyXI8E z41Sd%nk_V$Xb#ku1UU18$l0M1#eR|To*;rzX@HHzr(&Afk)XqxFMWgESsUitqFR^N zb!#lo&juFO2ZBJSPnDi#i)xf16)jCkk$EuF;wD5#QvM^%8kY?p!lMMk?iz$XEe_R019aQgdzDH`R7RLbgwxiT5)mG z{wu4n%aAj$ z>~JaaT&bJC#rJV{Ja+P;LV!nobrRuDP15u}Df6rMxD`r7tYcDyeAW&h7H+Z&+nWs7^F&RH6eV9U!Ra(gZ|=0Y)&RW-?-&V{jyRE^w3)hmzj@(z9#Hx5KG&An0## zJXEWd1{g-T1rf1*I!g)+)JuqrS`$I#)(X-ZKCgXg35!;uaHvU{L|W@!d}FaQwn+ zkI&fW9%A120-Npv55pYGF`c}z%Lta`h)EumQL&X9XAc-^?DvBGWpF3_K1;3y4-Gx2 z!znwK(w38Oj_DWEN|Xn+zG1QW!pYCJlE2NN?7s~68_fP%_t5{(pL0=olDp+EQ|K?# z5#sM-ap-Sm(BI6*J^#Ev(2U@>`Ps|qKYqnJA1BLV}9 zeH|)zQAje^L7GSaqSXE2@6PG3n0_}<{>MC?vj2Qq%I_W{pMP^EflxAjxl2hur`823 z=7$;G%5cB$TevXdt$tp?JJ1AviR+QwRVQ)bh}q*$z8$;g2BVrh(4jGYE#WM|U}aDE z#B8SJjU(l4Bmm=T3kKIVSpT8GV0;S1OxUl8(1JGJh0JX188)&lqn&OL1&-bz7=`~b z3+bE(e<0~EJTsFfq(e|6nL70^MA@QU>AkW zxVyoHGY4S63mi^0S%lL<68^t>V>wiqO6N7YZR*;Bz9~TmFn`Sf~qA(VH4Ws);oW zOsFz2>f;Q7sn{tnClo<79ZU+aODq@yY1T>L11FvGH^;%C|Lx@e?Mqf*P|Ool$qoi< zvSA~cdE2i$qfekspNtg2C5}F3r7R7Q-H;iqgG* zI3RA_VtO2u&LpERw4%k=b93hS&F_tNFp|wG>f5tj$ZY2>AV{#HU8n&UnV3oA*V{h6xjGZgYs+>gMo z^c5gF8RJ$~&>&Rn8gB8wU;5v_!;lQPDKPR8DuVF{xBdW4drm@;c~vSIp&*@oDaW|D zGr@oc??Oz$U7dk3X0!kFt}N6gn{fio3QX0M8HOf+G0H}bePOi=xrExf4wkv&!7IBE zw#Hq^TZdgpIsnnUKmYcAv{?b9xX1bqJz)F(K@1T3K+e*gaSxM}QL zM-X(5JhxC!CG%W`8dkE+!I?hm&@O9&dw7MQW#t2(ThalI*T zO;v>*5gTZvENntY>P0g~K33dSQe*cFY*+Rut3+wE)c=Kz@~ck(Sm^)6P^p)nZ~b!& zO9hPr{*h)Q|7)S|0{jVj{nQxnz`U;mI54RtzGmGt0E#4P_cK~EV2l?f?r&eQJ%KsX znSeajf(Uz(ff-%lCmS{^g>X}2i>dDV0~@l?mb{MczR~XWiqQ;>w$;|a9`#NYVQE8( z57>7l*h0T#6Z&J-opKkml*yxUmto?^LsBo#6OM%Q4d3@C(*6&af@bX)&Berws1|>*mfwpdSLOQwOs7c^jr7KtjF|#=<`|W zka`sNCv37Pp+uCM^TQw)zrk{d)-fM4@*B^iNI@0h~5pk6A-8vp3g5AloYo!*?xL)b*q&AZ6t0I zpSqq;v+8nd$aVKIH%>o^872;AxUO&|$7bN((v0a1p6c*vRslnn)-oz@`?zvDzrKAUyo0o&_BtYJo{Ajon8Mg?|FlIkoIESKK zq$+b1bA%!yisy!F$*TqIn+2I!^XN5;8%ZjjwpwEE#<~P58u{L;$;D9(DH3Gg&M>i& zseYqkpl{UI4VB$I3L6kn3%W3AE-Iqm{V|$| z!{C;g$qqBHRy;w#e2FTb|7#q$ozvA(!x z<6$FhI?1_}e*P5enGN&L=pS|4-Zv&teye`Aqt~~w{F33$CR6vU*K_LN8Q7%F;@AFn zN}SwPx`JoRLhxCKNM$W-PqNMqEz>SLFgHz1Ot7)LR@k)p@;hQ5ojIvQF3xqdDaZ|< z{@QJO?NO-Eqb1&~Q?-#z=a`n6o_o+=y8!)WB zLIz+wA({aoyUUGi?}c6>H5N_dxGfj9{UbLrKNo1d9`Db#oQe{wWACIyx7wB`HhqD5 zcj)bR_$eMBx13Lcx8YfFt_kC?Hi3~$iY&CVQEm`pz%sMKu1i^RsghM4&>4SXt!}ul zFnVwK*i)9Lh7HD%Bm#pEAG~F@S=X@Hm|c*RiS+|g45Jgj#FX}u09e>huc5&JLjH~Z zToDl~B17trQ#T^KJV2Zh)|NYBZS!@?N=H6w#9wzV9Qj)GWciV+=TA?>wFNodNAWds z%)>+)IjPCbny1SXOi1`xpPo2T6HG|*M8BZU$+`0J&VAlT4}QDBoC$`jCe9PZ241y6 zk;y=k*!h?yKVx{9>TLi1edP7nHcA?0G`+m#yV6UJL*L=2K9s)I-+S$@-;AqfI0?bf z671hO>JHuZt}SdlN)!JSvX>@F!iOSd9YmfJaEDyewzZ$Ty*!Q$Rg72czmL(@{q`cc zs~`jffe+aL^SjjxV$O97(>=o$4{5e^EJz>jBt%=k#I^NDFiw3A5j<_B0OE!MSPf^_+$Q)L)H7KqL z>g{d~*V$Bo3u4N#$DUPYpRYvpNFVb)R4PZDYlg-_tJvB~3=Qh3$w+X;atDs*DR-xqyEb2oEMVZV`HOVet(~(bGu)m zZ(U8OlJh#%e-|Q(N`Nh^@iH=H+-BW(aylrR2`|)9Wk^$cj^=rq7ls6HZ$J<{GfDTC zYn77S^IRU7(HqMP8=v#!%8Wm1sLry$?p+-@!Cg6_#NqIrW8PsCF~&Pn8!`l|z_unt zvro{UfW9WyA@v@Vm34vdQx~itT?DJB#Rt9`?#;-cY#MM*2vMPVXEvjlfA+@+=yZrx zjcjDnmF)-a%5JB_QYxh0;t zw`EtdyT&c5CoZRhO%(Ua$mY<-1E31n`^#Ok#xM-Ne###8#orPH!A)XM{ z$m^cbSm?Vy{(0_V#_a6m$370V0EeM7latZYQUzkkpIDyvosCU-nKYcrSEFgU8rb)G zM#G($Pvf%gZ&kfhSn!2vLV$%wV9G8b#1dPJ+#Y22>`$%FwUmk7-%#?kSFi{&s?^_X zrnvZ^la|f~K%6g!O?M#!ajNy%j6;}gJ9jw5Q&Yliq|#~$FQll84D{bePRSUUS`anR z9Bclju8K7GIy*C`qrzWiF#-cl*Z#oiI-il^I-LFZRf=SYBc^eo!5T$Cqy}p7cjy_X z5C;twJTi2}MyVyeOOn++A7OW)LIJhA5Mn|LIzp3`Y_|Cbp?Lz1|LT@?d~kW?3`Q7s z{T)XBYIRZI5lV}dbC64q{*hPO>nk@V?4%j3crJCLf`FbG=2kd=z}p|4)}t+O&er@1 zYUmF`Ohx_BvYgM3-5>as)9ym%-(4C9#l&Anh&zSzy}EN7zT*@i*J1744t)%Y>g0=dL)VP4uNN4_q_ncQmz1)K5FI z@77kC+KMwSsAZ(F4(_3O2CLwQ#myo*gOCil)m@0sHb=~s~G8L zPI0NkR2h%bE8fz3lj?OYv_FXK5MQSWJ7%lc-PaL%f!;b~y;&wmy?Glr&rQDuO~XPf zdf(8v2T+7P12IY6AaPr9$y?La z-zt+!9#EPej4?4ph4ee!HmAf-h^6=Y?My0nQ$_^*k=PX+xzm)MiE>0m*{gi=xQhTb zrF4P74bTiq&Dg%kWIlW<@pICHo<-$nyTiM(Qn}?tKDpjj)tUPtve1HaeSsgPv*xxzAqCyUR z@|0OYUMicfY|YX4yNZq9(s_Q@NmR1uN0P=D=GlJc+(6~l1~sDdiq?)T@*GGVHQAN` z$94l1J_Q{Xa2&<-N-*Y3hA~{&$R3P<$7FY=%k7xys>)|CGc5huTT@N98uIH9=$yKR z1rLNfJ<09Dn5-;yirlbL=4p@S-l+NM%Vl)!Uj#v=CPYbE9D@l6eU@?CcNaybT=LK{DK9tki zSQ;70Thz+dhURu>8Lf!rl%(82vpkKt_Tjd(|CtcGFBTVC_ryJec@&i;p!ccU0lYY- zmgcY8k#%#VUh;tt#@4>YMrm30)1L3A$N8I>?$0*PmpyDZ`Iv>E7qX!0!c12J@2hA? z3|+W8s-99)Q#xaKWl(3~nZTH-H*fOL+XjqFci!i3aauH$?tE1*Z?39+D~kF4 zJ2H&UZD=!Y+`0Ll8=k|*i5i^`Nd5NQHvBN3GC}AmyVWmu*x#Y#TqLV4jv%LYAr$xk zEszM00<^C5xaIo&1T_Q?+|_T>*mYo$mltb)|H74s^Em~^x;L+%4QLX3a3GoNK8<(+ z8b=wh&1ja)$U0~ZJ7pX$x!lSz|D%`U{(i9ght|iNg^xXS_dfjiWzLfr+XbfSG}ViY zZ^}AFf;~|;2_y&x!FZ;qv906F*0$JBhDX+w<{ckFlEu#5yZ+TVNofTk5O;TC31*GP ze82bD4dzs=@qJFfJ+ZK0(rO%$I<<~Tue6TPd)LEkIHq#C&vdk!AzrwXRJ=8qGm8kc z&-iXz|IXagka}t~;uZ<gd^kXW(eZn6QdR5kwJY2# zGB?wuM{+Ved}{r-(CnSu1;c%ksz=YLr=-`NaVatmb=6y?xE4)qyBB~Vxe@sRorflA z!?qMxf*2i{33Rc_vQp`9D5@xwmO*LQg*X^=GLo!DN4aUJPWU>k9TmHwvuP0tUB3p{ z1x+|5?!WZ0Q~dqNy7L6{pR^Uypo!#Ply$&3`gipBH$}$pF!AquUZ7C}4IsQx0*;pI z>_P+QJ6TIha=#jg3dtDh6xh_&i99khdzRb;Np8wVwNQY8{89T~wPy?t7_ZuyaqR&a z!S9E4XmSX!D14d)!aG5b_mh2xjV=n6{eINvZ?E?~L}Wyhm8#QOyBSlJSr+jC9;0r0 z+zw$`mDC|fzj-nD1h0G{hrw*2ROXizW~RNha#Z^%=3U6^9-!w_!h&GD^!81{@yV~V zC_)hMT#uAv0bHeV{4OLmo572H1aK8^pb%s&0bGpQ#e!EyE&g&8_WOyYZ(|_;>6go+ z@gzEvt|V*sh$&lF7kV9u@vdl>czthv@d3A!(@mXy$8-+VcK_Fwp`|7SJXm?vf33W5 zV2=$}Uiy84ayZi9t$uJ}fOG41`0|$@XU_P{-$}a$$(HHXZGznY!UCB;^{WG@&aa1H zKmv`eWWhs-`Q4lTUmJk_*{~h}pTC{l`#nSaOCJRb;H0jk$v;3WAH2Kb zvvcbH?8L+$@7hIl9l~!wy2Qv|Gawk-yz*U$cxx+;vUeD^k$t_iv;t`e8V7Vt=}<;u za~44&KlzPbJ)o8#?WgQ9byU8}S@@pDDJJV*knsPpukw#w>@S^D{?b6fx{;405jl;9 z?eJ<1_#|LFel)hb3ga@dYW{bbRK9v;J=d(-Q}UPQ9<{Yar7lXE5(Bg4L&Yn;hfkM( zxB1#qsU>mnR_e`5&5$2oSs<8S{XhRNcDcCnt3O2(iXsf)PJ{HJzkGG`4cOx;Zc<+% zHzkvR2FdEXxt{mcgRdhj*I8biFAzPR*m>Ip0B2O$P1@jp$9pSL80Y2JApDLGHUZBd zjN)+I2>RUn^2TZwr)uxBO%Z&Kp6BbG-PRA5rDZY>hX3#)tHqCz)^;Jj78}fa$lnbf zb`?&SV}vA`kM>(8)3 z(}#8b^!JrMK>*C6X-WA2RECldQY#scVC%VZjB8Yh7ywZVh3!Jj)OI1V{fx!z-`<^c z29UrfLxwKEr=PM>A0q)ieG$E741O?)zx&3fX?W5Vl@Y=bJf~RFaqXXmY%6y}+P=OB zzUPYi_uu>kz^#GR&OGlfL<$t}zV$6J4t9cTHk6^h40?gKEor_#+r3agI@1))MnO;= zoCyfF;uUANUYX>+%LcyEFRJ1%GD$va;$vZUTan%>i>{Qiq>VJ5kK1yV7~aHQ-kx~u z{dVk*K}6GS+5Uq$E0|4`U-Mtfr@!>(zXwHo{*6n&)iM9E4hz3mKNbGe*xBXxZqPs$ z{y*sO@V7jn|E&M_uau$x%lxC?di4H{C)l5Q`2NekTWSI>Ga(^LV5%W+UQ_gwZ-aiz z=IvJNs&_*tYtUC~q=YWti)w%Uw2-yD>FzPFFqt>Z@%nC#$-)-S*MrTLvL=+Tv_I2QHL+bU{ra+2OMhsT&em6;u$73+2gV#TTo_|X>L9?+V|6bqv``=rm z431CKPml9elk0Q2CNN1BuJd&sb&C%qX^NZeW!q9vb{HwA9^kJjs8;x| zCd_YMlQ}^hQNN#Y!8YMxy|6Etx6@iKa@i3Z^TQ4oW{3^^QmiXBAme8F@ahdq$A{O| z1hzTB8W;+9A4f&!d_oc2kZj3quF7K;I&iM@_?~+KmOK)Vq31GLxMq@6E&2#E&nyxY zc~AR%ZrBkI!hTB_`eFU`T-uOn`KR1N3g41L$6Tfo{q*b9^BDp=#8EmoTNIjVY>y&$ z!w6*{-~9|aB!fDpI9PjyN_9H3_Kj%rQ9F%EjD}lE&x>8ul|uc*>lO_q z{xwU*`4T=MYrX&p;%!UPk6lPS_)%Dc!5SA6*=9&P zEeE5{dTC0KX4k^%bqibtQee(Q3PsOlR^LpO&FTws`F_nQY~6eQ5OcYrcK*_{gt_#o zz9`4QYsCB`8cJD(1=_vAop1g+M(l@om>5&Q6JKuJz2$)>hPZYtAoB`YGyg!MuWJ!p zHxS$J#c?(6#2sx5C)jCzNZ3fDQP~yxQ`EO*28at^CUZdhCP%a3^zVGnh^}3xD2~OQ zEJ@CLeMUB?+6D_F@)6Fka<0+ZEEmm|7LCfoAv(U|BHJk zaEFjz|8Z}DJrVQ8kUkt+J@_&9y`nad51WuA!+fDo7u7qN?s)-eOIp>LmV>WVF$L#Z z{XX1@JD6sKv1FTqZN{UnN{7+&PY9S>DBWC_qQ9Y!h>R+I)dG$x~+>-WN?#)DRc{unL2#i3t& zEpOTr)M+SB=oPR#cwoHtjw}~bg7nA@P;SX$Mjb;clP%&;k{)M?zZ=R9HxF`M+0aSq zb_t6}Q%(ZS+i#CSf>%ISRu!rPd4h5e4qC61LV$mAWa0v8A<KjCg|gBym4xB*~_PH|#N7HcHZxsxbfLBhwbO!Gn>^IN9RS4 z_@-b1LpCbU+>ZHA+`DDRYM!#At>>(M96VI(C3^JL>i0%xuyt)_TCZ``aA?#F$u2$8r^x30faMtf*yHg#y@@lT z0UVAA)eMk6H)}LiPJyKWgnnJ>Y+_EB zj(cl<8&kiul=%BAa;YpAJ7r;hx;-|E3!Z`18B43((mwbzOWGBwvwEL5ZOrjD>zC|T zDM)fkwd;Lf47w9Vy2dshMhT-AC?cLfxf)M~e73faBt=f6+SYjHACyJ*KimMiK=^`R z+J{eD88NBnblmv#>SV`tq>m@*nx#5?(-Z-BYOE<~88Qm3WSxsZ+L8M^&`cpP_wn=y z&KuNUWj)LGl9R&K+iB^bHxY(*{5;Rz?J@JKx#ovoIBdjD>nv-LuoO2EJPyc`@P{TA zYN2f&ZaZxvVioV}-VdD^Mj*_L7j<|!bi)(PF2#BA33EBlePn>5STjG+=fT4>`dgP) zM4KPXy(DGdP(_DjS$VE*Bw{6g;6f zTsHhebzvZ4iUSTy=n0y8L1meS&k1Rg*^ZVg$ZN`Uf4!Oq*&!E!bu_*6fIIdwS1^@w1Xv)Jqxv>Hj0#%=<(Bkm;u z5@QY99pD z#>LHz9DJ3ouZg+cnIr?N;~n|tW|9VDJrffQqD^9BAFB@zcwILz5cD*hi{ZEpt--`(P8J zlyQ2ECOb_6Ff@SsK#0PK4ANxg0&{e|#=S;X42erqL_afDH>um=y&cl7jpKsyN4@%3 ziDRARf*U*2=;cJxCdHS$*2cyapxg>V@%CK1teG#4%a&gIeP-u6>9orOThyT}xdV6YpxhW3uM2~@_B}~6lF-i{kSK7@<5ua?eV38*h4+LSJ}RYqK9(Rt9$}B| zkvdA4*@f`?K%-FrhICxx)SZFzxu7Zyqc^Os7daEr2dS^zDFRo_yDMeeXBJh1Qw$OB zRkEh8QWW$V7=2;%rBPn;48@-WTe&o?1uQY-4lih)C4FhY4ng&XPyAS3l?c5grfr$f zBNYirx%c5qv$0BHijBG5sIR-iYKezgX}Vo0)>4>l7Yir=J7 zTQ%)TG7;dt`I>jmx9ld#KdcHBnZ-5e17%yV_KbWzPw8^LmG4UFa(8vud&)HC)YE-e z%pm)3fIgzqdZi8d`}gB4DjzJpsfZiNaKqL;NY?pU*hiVi>W6@?^bH$+W41J~ISA#q z8>0byA`~AoFfL5Nk<~gHkCS2HRnk3lRNK^%;f>59x>m^uaor~Bj7PTW-2>WQ2;rtU z^>QvReuy#39Ca5r?thv71n5*nkj7-Lm|A$KPvB39C-2N_Q!S1))g0$dGZAu=?@u?+Y6{a-={Z0-6{Jnt{K7bi{G+n!9r-{BW#>7p>NrL#e&4$N%p@6j z;jp;nOJJ_g64oF zuNbvFR4F?{HQYIxu#Yi?=4{k-pOO%f7_E2Bab*a6l8JvNo7|#mQ0ER8Ms>6K zrHN?`V|aA!=Pj-QH)X-JJ-!NW#@QcLA5{9|#fnx}|Dqyth6tyMgU;K$A)jN(-rJo- zX_|JNV~nu3T=bM=Xpp6diM(}7`65fAb^0CHoj7xmt7GxfeE5l$;%eK`wY5KtXp@`s zJ{QCz3bkaNdOUm5ywZEFRu$LMcOg0e=-~Lb{lnkAA{{^$)&ppq*GOyhxDoueP7pj* zal7R2j#B3Y0N14#3`-~;s#CTl1^_v@REP^G$~)n>LC|3 zWxoQPH3nBEMlbNS2bMjock(5zf$e{ki~~09#~-+`8(7_;DnqgJGBJF64;h;}?mem& zvn{a6U`ZsZp*ao8T1lPLx#;LzzvsU1k!SJaXFpyN@$Mcx_v66*wEp*^G30jxt=%aO z)}HDW2ra)sqY2Zpe3RA6CrYk57a|-Uy?Wa@rk8o$jmOhXZ`05~u>#SBHVBxQ9*w96 zVomB&hscS9CVzVgl5^MwR~D4d{;&s+hVg=kywYooO`zq#@d9nW+9QQhOS3Q$b@u5R zIZd8`q>;_(5?sO?a%x&;paW^b)XHb6PU7i@TWN}^J9{U*ZHR33l%=VMwgr{e0ekfXo$Vlg&IZA(tO1= zhOk^6R{b33p(RJOdgAJ4UOwc*(T+^8LYQm6Dx7oRT_GeQ2ui*%w9Nw z2=7RUQud;O6i6sbUIh9M#=fRraP7Qgs@_B&AnGdchIxTTq1a}r^;dOIQgkw=~t8hV}hYTMz&<)Si zC_Xul+Y1tD_VyVon)of~6a2EhNT>=dP;BL>U|+*C$0WVvh4&P9EXhOk0Xg=P;joqOS__OfyXHk~aZjUnep zV?+tCNX~i2S@y1?0Jq>{J#VILJ0{ZRn+AA(^mzB;j@+~4c&oF2=MrNuC!+I7p z9X*qrGk-QSSW^3Qv3dXXfyB@?cJ1>aeiu9MpX+CWKrWoyir~oO95c56x#L^sX~CdS zeqd4)S4d?C=bp(B)1;4WxoX{gt5g%56qDcM9AdRJpnCt;6PWXzM^~`XUZTMoy(3tK zrpv_CuQqT}K(tG)q{2Z)=$E_;$xXC~4%>wUL{ihghoI45`j>%NV-K*hoXSnmg}H40 zKCR@xHG}`%VD+z-s}Rlq73wmyb7U*04Yt8dN@XGWJPL(wb z^OfUfbdF#Jf{W9QTr`hY4jsmNwXX=wLxJN6v(Hx{_RCvZ}=W54F&UmGT zAIjCW1bc0(BW7EYAp&YSrpgpQfaJ*o(+Pkbv4OGsR&YlRMF3gGMA5g9B9Kd<@mta` zFUFUC*gW|CQ*SYJ`i3k%!$>6j_G?@vmcfpu*CtQ{5cC`Pu?ax=>1X^G_TD@k>bCzI zS1KVXSwfi#38BSOk!iDs5MnTu!kBQ8WiU+TlI$T|5mSU@nJh!L8M}~V&xkQ(4>M?d zGRyUx-QVZ=9nW3Y?{{Cn?;qc1Iqp9?>X?J+bDp2`e6O$f>osaH@Ed*=gr)K~I3=05 zkKp;0n%MCfuLxN<8jbwzBF@!|EemJ)!T$M6Uen++>s;d|mNV!uzrb;=Bfi75Es&Q$ z+R=oYf5`nnh4gXEdH6qnhjk;adzqaa!E6P!(hEQnqCj{>*Pmd=3D=R#$ILJrA#aZy zO1qy5{?XBIlFYb655{h#*($u*9y^p@KdA`$?Oz49KW_S8(Mhre zmzpgW!4=@0Bz&R*$xzlo$V+cXBOT7ezBEAm1A8N9PIvE_Z%c$7yGH)7JaVHVbJeFj z#@n5DmzfVAztNe;d4nE${x!>AY?Xg|HZ&Za+OAv^$b_FeLg>PU!Rc4KC4V#mAB7_iTEawmI30z|y3(i(|ZN7%x!~wQ|Uw0WYsO{{m@gjm3dJE>(HXINb>R?BWW#3xR ze=^^A@&S})GdyOkU z{3ZVAiR`kM-rGA+rwEaXYDO2VoKj>ThJ&0mw zaAL^gMT4-ib@rY`9c!6%24cb>hI9z)UIzu!_Vcxdo|PJyV&=%TOBrxp4tfikh*`Vv ze=&6auqkACAMOzxjf+l$FM?aNRXk$CtYji~XLmhp`x?i-v&l&SiVapNzBgmKD&?WH zG0|}lb@xEi)09p{**%fRQ#vV5N@!O;<+a|ld@rp|`HCT1lbbXdSB=3FQ=lJB>YQ3e zhNzbY!%DB(eo={Fi^?+Z(ebT-Oh5kjP)Uc21(3m{!9CA!CLDO1ld42oYUE6`Y22h| z&gK!+s)X?9 zcLrv#8l__u^dQw?hj+nkKz|W9U)2pce-{wF-!Z!FD8%OVs@})jJV;*w{>*1R1;4mjVNsRz)kqt6cvGSWi zSr2l@Fs=cGU0qRge0PVF z11i<;^K(vF0Vc`(BUbxv0TpRCJg4cu80a0W)49KP*XvZ2T|4EKsQ6Jc9?3Z?pW- zg6%$_k)d_5Z)xohvw}&qiQvhD15+oPU5FKFwm|rtvQx{QGrcx zZc+7IbOw7W|c}jA@({CO|MP*;wl`b0G47F$ zHVrQ_$MhL(3Mq24T(EhSkbP2Zc(S@e`-85{2{Eg71DJ}leQ93Awa7b@U7odst6cB$ zqH43j>XP4bXY4-4&8@K4s=osvVRXr?sBIfq`uTWDQX8%!f-ORzMKs4p1}(GYGSwNo z`$5fB16G0<=47|`FOA2q+c4ThCQkK)UX>h4N;J~#Vfk_g(hRnT)9kj9)%=7T_9C708pp(g{iv^XF&Vxq? zKltsO*vgFcM))VMdVidlj_HJ&IM#5WaKwSJf4VG0@mJ+5bL*}iicwf!Ys`JVs`u)Sbif6=He_{;Y7=~nW}NgT~! zy{%_~YqT9V)PYYsiVAWZtjZtx^l9X?larJ28^lP1WTM@dn_?DMZ*pH zhVt_$Cf?rk?ujkOE<7}nOKPf&N_ZuC)F_^3(+5*MmI^@PbYV~b$y0*A3HvYYe2oZOqHd-_6-;dqQ~L`3#OrZFbc z=&ojQqJOD<`Clb|2$^|SIr+`}VCn^nLuVHC;tZWMZVJqx97K$iGD>Oe%L?w%daAZ#9S+ah{YgMqmXfI} z-2Am*kAQdVfL(*OIwj`w=>aWO<^o!~$g@}1mLc)*8;oxu;EYRA-q>7Fa{BiG@zmec z_taBIeXmQJmxvjYRv-dv{~TNb=SGOh)L~eYENpBinQYZC{SR64=KC>iuUUOu+~kd9jkb>&4dp&+xR}?eCqeM9nDd=wV2D%7+gSSXQoEkp&MBG&kB?rmK1eu zhmJe=#S-4_=5Lf4-+O>w$6f#WmT64gn?|B`#^X=ONY;*a=XPTddBG#s( zUW@n!hGae~UKlX5-cxClr>GH3SyWLMz}K3Z695g-3#dhoqejYWl2HWQKzR_wq(4PG7fh%bWzK7Mkex4o^7m)H0mc-6Iu8U_o$IXOsyaT zMN);3El7GS@78d}GeecUQkIQtgy)pJYh?5t&&|mmBV_0hHCp!oW`UW*aE;SF1_f9G z!M4-mZdeK54cL8`-mh5QLqyGXpT}MKpKGayd#`jnJwUs63Wn>kdzG_wXQcg@nLs*= zwzpt8XT3k?a5}o6W;L{r0!C20NNA5f58-euSo{|Bfcl~u^YVZWjA3Hl!wz8`aqFG6 z_s=iDSbRIH+`P;5ddl6vK?^FPeGg2<(byrQ>cG-FS&#xjN8#)}#;eRlu!HrX@BJ&r zb~F51!!?r*0Xb2z;&eaZhs$fh%H?&$zG4N*NA2>>CpQV6_MUER)3%6MuonAR(7(}q zTxdZOM4uyF+8fFwm*k`n4Hr-4VdF%~6%c(^S|Ni?T$p{t-!EPJsPxL(;vUbqKns-m z0#W05leeR0-X-yCrA#3^amf|qbhKwwqw)Ov z-e*;EIWn0>gsNGNOvF3f7V>x`atn7q+Z6do_e@wb9!5HHL=hGpsyL6NCpg))%?Li4 zAXfSzw68{8>Dv8p3ugVTZPTvMLWb+_Yh)RW^OcX^x=xx8mODC8OtcpSS-x+Hbr1BE z7$(vWiep|rDBOPFv7VcSnSF~DOZif@nqJ9nhtg@pI*A<0&4_;(stJ5FZ|HWcKBth& z&o-pDJqQ)U@EJf>!6AVKkgEw4ay^A~{A6<^Pe%6f*PM)@_ZJwQ4|VS74D}%^oB*Ds z30F#vR|NyFezn#NWtI#EtCbsF5Nw^Yp|>*OpEz+X`)X|Z`#W#toe%mn^Ugi7@l(vV z@Ri0EFXN`Ej)PRy6pcKqltQ$fW?{wXVTw7ah%*z3YdDR&1z4GoOpw{pTU-!bCQTbR zD~Lfmr~8SgBh#2)N~UT%Bjv9n6t>)YX6wbeh*4-Ei|C5XQ(zAO5iC`3;mk`@cdu_n z+dSL{PdOUD)9n@;&6ZFKwOM_Wmsr$WZ=RA29)o2t9y7Hf{F$Y7%YEZ<^)4TXHF{3csjI z34ee0_H^Txxcx5z$ISHMY*AMxk}GRf7_h;WBz9muv%4`rYdIQk#1n zg`Kcym8Xwjz9EV9TU`NU=+B;gd!zNmh==j=4p4NUdk5`^_E2|n_QR38Pm1Oo|9gU1m$1%`U8-jIYW7m{!a0z_@lS_Lp}wcs;DMz$*#*tLJ{wN?SgX!PSZjVtz?lxzl)5M7wGXZ z8Uu`-PxCPd3rB6ozP#OSd-NBk1I_n6x+iwD!SI8i*sV$S4VEVq0^+@gq=O&Fq5B1H zNa5uzE2B^WGX3g+hV|pN8LcP1dsRMfy=}2u0J0oS4t36o3LI40ohLf9^x59uc0E*V zI(4$YQ;7D#!v(CF8o!&J!2?4wCyp#&=Lua-(u}PVaiNy zin`tp*sVb4!9Op)17kJAo5?3fCWOC>P2d(j|H-qK61oh=#yC51$qoNIz!;0jak#SS z90sC|B*8cwJ*jfBp}I1>$ZPSy+wwP+wJ7ngBN7vSxAuyEnlh)J-7dOmuK$OO*;y>8 zOlNTbr`BO#Bv(J1E4eTc&yiRLoLeWeKrKh(ziXm(BSmqul1 zkm%vLV1(mns&gxu){5uH&EEVm0dSv*V@DgXPxaB%I6IJFj6oMqlh0*`Qe%h>be_!1N>ZoNcz@5OXmXTjDLqG3@8{h$x!peh=T{M_Z-~);Gib}8= z`)?Ro3vSUAes%gFXtKKkTRN+oH%5NPAVA)EjmV9?q(ivz5YSsbH1smGi%h?adk8O+ zh`q@;oFHCVh)$^?wFeZ8%C&a;B;Smd(toOC2zn7ZyAkBSTFB3iz`p05&xVz?Vs8}M z)j9qcLpkdB+d!K4wRs>A^OAthtM;#me?43z`8REQP+L>xKh!(_#-jiKc$S~1v(QY(zRn-k9!=@x^$nqU-ZZYQTGzu`7BBR$~js$_u2SXHa{TURjf zoEWu=gzj{Md}7U-1Rz5+Q&56v1E=TV`ya3{Jp_%w6&*yf{qLPs`uC6idk6l#1OMKE zfA7G5;SQjK>tQlF!VIKET6g2vNjg5#b1{20H_Uioaak_%#J1^cqmLXOpTM+>Zff{3 z!4a_#WKSi5~=+Ka*jqZ~B>B1Uc!Sgf0%H;Q2hfJUo_FZhvH(kR&HX^dath zStY<%$2YIk3ZNVRBw_FijLQgMDJ*DS8{)OVZ9JI8L1}Q>RSbd~PWVv_sfKY6R|_2B z1(C!5u|IXEv~ah2T!Y0X7lr4WpS(=0;pO9s8HAH(?E!|9EBFGijR3#-)AHEgz;5`3 z4gq>C_;~r4HfTfvL>Ja_fF#HkrW-t3(vhV(!W)A$ll+P>53VIjI&ry^*5$RAtoA(u zxSe?1geN%W$`SJDIo& zMBp2HPL|dQ{pC%UeB-os7o0revC?=Ve`)ndd1gEnr5DusRK4cxoj&7dw-@D&l;2k1 zIW@uTB-5b9+`K+2{k0CrurCZnfUdeDcy)V#wnMxi?jw-~T2K-f0iVIp`%pQss9v@j zAbW{Y>ya7}e;OwYIJjpRMV({Oi_tJU=I;`AJZg9BnY zZnRgsSwgncnfXVn^Q!f4El;fjY<^42sM4qovzdQ=nC8VeQc)+EIAuzDHnj2uBGaYk zL%{VB$Zn*rsbFvb>GKir7E*yXs939k<-BRFn|YZ&R3W$?Ud97obB2mqvO5 zXC0+HbC5U71Iox|)!*#3H_#=Ef9I@B2e75*z*9>?-x&pyc`bzdWa8nfodpc5#%ia8 ziBSdr4A;C4^^uWlFB3&l-ZaKeg=F=oPz+I{0lTtlyr3g6w%DW*n4(eP4rEF~3R!GR z#bkJO&l$uK!F|3-nymVM&r}=J$dm0%|(m6d&%4q)E7>}Z*nKyPXk;lXI z6osZU-t*saG<;=~taw&-QFSA9NvE66DlRtVKT|Gtt;jyiq+sURb+RP(>(|h%pU({J zm+OpFfYW1@%+&WDn(eCl$A1u1zCn0TF)u3jnzZgjATTzPdG#UBsta|k@Q*>O^!`6k526&RwgTS0S^$cLf2zyrmS1fj|LOmQ!1 zZK~&ob$i{Kv+*DX`pF0X9EgxEa)2QnFA+z9=5t36+084SyJvtTHoHjUXj#4; z&>Zg0!z50ByY<1>-LnfiCI}WG}!zc<&BhG!?E#Y`goD|!Xp$)!4>YJ$& z^%@jh2;FU(=yWitF$lEm{CXyY_*qZx_-p)GF3Nd_VFyWlUU85q7~JP%o3E%3k8xzF zPA5jkoMz{8uNaY4(kk-42K*c-^!##$G``^W!N*@XNkb;Ab0{RgI$RLbIe}~OFfsJn z)k#AN2yP0dYSh&%K;{= zv89bIH>c!9iMZF(ModrL6>}# zpE0SeS5UBFe`X5zJSG<{bYaO*)%b(t^|Vu?%|7=8^*bG45#(_qPIw7ms-NoUjl-g4 zw$kI<5Ir}>;gaZTe>^98g8!C)hrY_P3y^&>LMN4PJ4N%Sb5JDeUYw?xs+{nsadGZYB+a0`THsbjI6N*xQC5|$-f zuL{yQ`!E~SD}~Wg$q%!$-5ytEMAE<2eAfHY7+E)EXSefRs@u(DA>;`dTU?EXyss-6 z+U<0h*oSqUxX&_04u8UEoAlgS%iho@Q3laf|SQDw8szxdl?*ci$)3f58tCLuINV+B z!I(4@J{|(*o%u1{2d> zLnk^UQjvA`3j>aho&*=Szu{@qsbw>Z{EY5@Xq3L=4v_g^lWnoJyyLjvOXm78K7CDT z!Vz+Arp?Dw?QW6!RBt5*h}3%uwM&=W)AoW6SF*)S+Q!sLoNV1a>{}nF8SyOyAQ@;< zK-f0tyr>H=x%OqnQ|0UL={8I+1r>o42GtW9SDwA@;#VrComxJ1H)o(lTU$QFdSJ-a z&o|>qU(A%ycbDf>y~D+o74f%Nvx~kVAT9Yn8`!o=kiWQNMyrV(VR~h-C^;3ZZZ| zY)DsdK9YtH-x$Q_ej1%K&D9Hj-U834_OQzxczW1s>Y@1?1LdtkRa(20@>$=+PA&E0 zQ>!O(2>Q>Gmx zS!J*`k~pw_W!HK|J-$ij!zi2x)&Pa_+oh!lXeyD`k4YZ^lnT zv#8o#IjtLEH*!^aaeb`}TS*$6?qxY_$o`xO{+h8vDc#(i#~_8G(Dt@Tr_}M~SgE|G zQ3Z<#6NXK;#6wvyz~p^&ZnH|C>2Hxf0cTRA?mF$gk34n|)5M`ZM^|JX`B+F)(Y;+= z(tq8g0QF>lY3sb?HP>fi2UZuXI|kTAxU_24VE)&^*RwLQ3fTcY%h_dp+2;D01tvun z$^ZI3`ifq?51L*7GP-o!D!S=^pPvi#3R^?Ncj6k(VK2JoQ4rTCxW>9ZmlYL&5gVf< zLoSr(Ld{AKf*xmow5|Ge^6G!hl$FJ~fAI8ax}{*!w61iF7i>NgW|s9N>t!KRD83yG zTL4%+ev$ww?2Kg;jQeNP#YdQFoD9+-^j!?OvCrPY?ZlYdkY|FviiWhx&FMjfb1D_O?JgyDJ7vO7 zWaPaC|4rHCh8=Hj`tU7%6P@%e9HlOO3nm&{JOTZ~`kU#aEh=95)^anpl+M~I&(t(` zbFxiuU6PlHomx1Ebt_?Xv-o|XROFlGur(x4CkPc91L>X3X98l>7nQG6YceTcQXapH zzv&`r_{IC+rzHU|>mBb3Z<(2`Gfki>mKTWguj}q$V;QbZb%=5D{m?Ct&-~u6-#E^f zNdvVe`A#{_Ui%btM?bghFF%+NlVn)@C4BcTyQDSCs8<~WX9?B{8dHh}3B-l{8r3${ zW&NGQZNn_JrB_-5EhbMDR=uoU3v4OW=+J#2xb@}s;K4k_4f7FgW=I*NR*dOgoiqR} z2X`BtlzOpxFV1H>j5xmBy0y^}c`;x|Sch`uyW3;lZx5^rtFT-kSPQu{uLTat#XtN; z-R@4o$La`f>LajE=Zt=;`%?KBfl6ri67BtL;Pzh9a7SOED-5@9XvxEeqy zYP$BvpWI9}p?EG)hOx`LSsi}Yxu4w$$^*pZ!6B34Azft-D0|%`M^e_=Vo8&@MI_^7 zV-bCNsD-kh5QdedAx4e6uMA|D{Ekqs4Dh;rbg<`p{GD)TyPWGz=ZwRx4kOtTT1*kB z4tP{02+umpR-unQ4RobjQkxeiV2{QQgBAodUm0SDfbVLyc!uq<*xOddgWHptJE>K9uS021ys(s@uz?C zNRu{!mwr2R3-{yLromcoMwxNVn`(M$b9$ZULQ|UKV0z9me%?ZxiVf`DL+V|sBB$lM zvSJ=vpx<*P!7pmV-OPv8nED(d+%-dsrd!4kX__?4DV`_sGcxfLXQc$CllzZiOT^X! zY#)zaJnru6FF746S(fg!0|UF{p-W;^5k;>r1Rfe&BC` zJK1(@*eTn$O)lUXlt^c=n$Sg%46&f_m(cNAy-C7ws4!@%i$golx;IK!6%`vFU9op) zKQmn0qqK*ZXN@hE4s)~(!`)bpBZF4@cpi>8)Oyy6W|lt=OfdU8bOEbD`@`>Suwf=M zY(#C-nWFJR&MUjDXQvMI-N;wT)!HQfvKV zy)u=sBYZIj^Tjbqf6BUhOMb&Uf-)x@H;zw*m8pI0rXeH9yU632$ep1F*rs$p%Ir*= zW)F16L&E94>V@1QmC^pDs~4yC9JIQ%lC-z+!HCtj#HjhAN6D8>FI$ayXn7Q;yN}v7 z4|0NE4u-Y|%bS!X0qarenAUUFCgm#y7e}UBf!dZ_`1+zAqpuaVM^}p54d1UT$^Gab zl-$OarS8ItF@&2oLL-XbiJVgLlWx#_URlv`=)#ATijwyMy3b|{Kdcp4Ipz0#_-9VzI-P8jYZ$HJ& z5<)fLsVDPHFC^y3q@cd`85I=R9bPUzk*zch_U@naQ2x>!~Nkpe1lumzC^_r&cC`%02GPM89 z@3@6@ZAWM^J+Hn<_~ILe6-JxOUq|!W=HQ5twT_w{t9-C#hduw>oXFvb9o2W%O{X0B z{?O_B!&xuVXWv`F^%k*$GM{Rjl!d(d7xPP51plRhv6WhbQSZbtZQQsSPFZsiZHMYX zFz`%JmUwU+3_b%(`XCMzoAbbEBrJ|xhHRYakIQGkE;3T%d_yi?8d$u3)g(l>cgT!X zmpL`kRpT+V)G4#_Znohn_bILcj9t4rBA9PE;kqi=lOH_`3yIzPFitGPzUkVd6>~Zz z$Ku~B@e3e$9`p0e@a-kIWM$Qc6vO8GMyx}tUseVT%cXjyE5+1h+;;RVn#=aO?YZ&Y z?oPsYX$FGJpTJ0G0_lJUf*5V4cYiH!AzK+#m*bi)rgfO_MxSxmfJYV=_8Lw_NtQ2k z=2;(4Iq+F;?-=8^bFSv*U_nWYB(4A`9BozMr0E{T)X-82=;jTe96`#si+gprs(3DS zeeA%1YL9hMVV`Mrm4(-y^Se>5n5Tmmwis-&o!c)~S&>+@n8Iey`C3g)`8fI+p@N;1 zO_yWl@~>PAyps)lu4hG#SKZlw^~@T?j5(wnQ6DeH?IY7oy<&j&yl@WA6I0U?x-YHC z_zml_Ce{7vQ$zC;u7*P|ralP=u|EvK$A1S_0e+kOJG?ZYjeHL##8$Y?x{Tf5^VJua zJj@9@-&qyx6?^fxY1_9aib|?2j=o#v*Ls(@%}%TFKH2L?vAb`Ta>z}g{9ycdg|o>O zs8yoeQd&iq1I2PWqAab}L*9!ahtC*NLKUcYcOc{O^vgfYP&QYfAdlNGbBOcI7Z>Nm z3nh%#cnCHF)REsvtiZYhT|axDMRL_cZPxu#~vz1E&S+OpYcW^oi)wjwZj zL16JYxZ$>kZh{n;w;2leLk|r@eN7~Zst~1KwY`Ffb1~~-1}GJe>4cobQw?c%qTSYO zFI;Zf$k0QZe~yY#p9+XyN5ac(NX(QDTO0p?($ZJoN9WOg9m@kgKHAJ$TneS20F8^l zq49h_T8R&GxNTfrNVX6w!U$-vVdRD7x-t|Zb&Rq`uTd6`o1*23PrT<+D{Vza-c5L{ zp3x&7g4NtT-0%hdrt<4m-7VOCKSX=PaSb{;ync*}4V6-!vH1}56kCdNwE%tQ(#DEY zVApH)R#DcKi!Smf9)~|kI>0%XRV;EP{h8%Z%7SB{L)wDh%V)ms^Hh|>Q>UxRhnaPF zWS|_I)Dcv~E{C55#Db7QTbvGvfwu1BRAEgSvJDjs_6cawI}b6NWFCz26R&eSP#ra8 zzxPX^tYc~Tp<9<9j?18DgdsUT_U_8b_4@7+YLgaRy8IK4c7^-i-<}Ch{Gy+UNy-4; zqV5SNXEM$;8Q$~dZlvXjmlt?Cq&R6=rHyT$f_2Tm2W;IMny=Sl^e0cCg0cqs?pY0` z8fHnpWJuLrxJq&A`t95At6vh~vRvLD2GNu3+&#iOIWW{LJZ#WNCfb6$29t=B#JDzB z3}#A^2G%61GHp^XS4B8fRVYdPcAai?sB#PYLnmy`^=k%=3|%6-dI@|2kz3hEuFxNg zCSc4?#J(Lxn^@}pqHO}Af4R!m!1 zzM5b6V2>4#`UO##L#9Vlr`ErI2eHImP8@l>6i)PN)q;d4y&xR&PwND7C)dL_jZ1GeU%jiuH z(Rm6|rD&dL$t`}dH(o1!|8w*ofAaVf_IVaI-GvQADZ_4vMO>8_4$IA9K0(x!QI{a4&|`~7M%8QQbuT`Y&y;k?pdQMekSw3w;R%!G^s+UHWDpow+fX|}T3Jks~9x$!k$Spl=MqHlErUqJWn1aCSf@AKOOw~}Em%581S*S{|g zh8ho?-j|ZD+^9)Rt6=&cOV)Ms(dt$1{`}-+#s-+^su@L;Kw6A=?)Evx`h>yPc$OK) zs|~qn8fszbV-{Kttu|7{zM1cyO|_XZh*}zWQCX6>vbvZSxLXjYzqY1JJDY^ZDl^f{ zlk{x_dN%U{WJkm8vd6hDkfiBx$vN|yW9}x*;74~R;;xQ`Csb6w=}63z+!BZGef26^ z!7Mtf0*n7H=U~;_v8XwfORzGg*1meJ8wXqtueV1)>6Eb&(|DFW0&cb^x1KCc+B8qC zd_p=($1^YEq;zh)o+k;xDJggVqrva3Xp11rbPFp9P`fkK`inBAT zlxguLL#v!-25Rp@>iwY}MpU}t+x{o+`Y!{l6)bR39_{R;Aho(OMi^*NU0$Y`Pm{wD{A_yb)P5cT$EY*OR!IsPLXyBMV01z`(m!=>)9VSKJJ*6o13^$ZGxy#-M~L0 z?|_d#rj{E-;Ko0bWAU4ob!EQ8#n_IM4+qsVgjoTXy@(V}rCI8G*15Nub1UZ+DJ#m@ zKUxj>n7qvEbpIUsG7|*_&^R}#UxP^DvhvC;#G;45=7h!Zi;Y^? z2OD%A`IARWforr=Z@q}kEd5yBNf~6WjD3S8&$pW)?;4M$tbYcRq3?g0y7^Tl^#?G- z@F(Ted&1Gk6)bWa?knGf7pK*>d?@-?Jjp$sUw$wCpMK5aXR>{Re*!ih;r)ocLC@@N zrHqrR2XrjlJ2#(ugW8xHh~Y(RdkqV|QVkd{=@!V2xeGFo9qTV~AJJ_%$mWMacTM#X zUf{eR2KT~eHNeqO_EY1+4cI4tD21OV><1lO#1FCWrP=2@_i!bb!SbFD#etZ+=!Y;k z0MZ5-aJJP3088ST0}zf2HCgvgnM1BXP&~{Dgy)TwmY_Vm2B4gCur(aG9g&; zQWOsj3?i(>Zvb`&kQ$5vjBq??Z2bG#{=IMiK5zd8cOimP4g8TG=W#7>o&#l$J`Xgt zPBz`xvScH=JN$$p^dvRCUcFlfBt~r%sr@&V}n9@eFBJGn%!ymX*?H{wBEC3{)TB9_kyr9Ey5c-5Z|9X zJjGx(;Bfq3d=d`IEGun)@@zg2p!x+5acMXR#F;0T@&D4Q0T2#t6)y^(Y4Ecb)0t~S5Jse#Cn9W2` zX8((i9$5f9;87f14#tpr>-s(KPo8`5Ro(CZnRk$<2U36x=$V}32H(BmyYCR%Zwxm$ zF9F9H{HKKkf`#m0QUAt!&|(5crb19xh!3+N9jPqmc30bFb^yXZhSzWRjW)eGkz=#A3N?(CQDmZ>?q88uw8B!<`D3w;k(Ci8+)*dAUur5aSz4EkXMe_ z0bc0pYd zN9`qIgnhJ!ZNS*$KqtqMV53mZQMSbdnCKCSRa!M86Dtx8JvI1Ut1WZ_7!PAirg-lZ zzAF5HnC~cXdgiW@6O0=veFB@5@KW|D$)G%WzHY<5`I5YiFcY$V+8nZw;RAp}twua_ zq!RS)K%n;1hE!K88UMYXJHq<`d!9bjlqtkmzF%C96P``8exLTfM19cz_<7lbeO^YE z9nU8Z?DKsmlRP`n@k8?Cf0Ec5_`n^8??22*$GN~Hq1M)Zcd4yWP{MFNsESnMMWFQe1sGCk^Kc-wr7(Cc4|&%Vb8rLUxE6 z&yjmR2gH<@W*#;&&T*XULc|2ef#ox!3PYuQCD!9vN zLE#f*q0eXvcI+5A{d{c+01FCbUn@?Qi@mYK|0C64N=Ka0S>40`I5h#k_MqI?b?;qM zyZlo`&g`p7&-q^axuUiC&vleId~)B4r^#|H($9rh*ZVhQS*xUeqfiufuUEniXa#@#Kn-mZVdrU zp39Dx6OSG*JE`l-N_ic;fF3m4}KVOGWQ!* z|3%Bs0tC#mpeC?(7y@PGtpJqE*27Lss{OtiO2H8ct^4^L8HDC#p;_ck^&(}1k40?R zNfq-ZeUR2r5H-=?b(?gM?n!7$mP&WJRG`qKwm(=LP@rvRblY%pa5rG#GG~USw4~M_ z)oP)<^FLU~vP?goOEMwySPLI2TfD+E8sn{ZTCoLa(dQ*i6Up@bA=ZSVqL!r!j_=$$ zr#ssgxTb%p2RJ|bJP9=Cf4b1|Ki_%ff~}o)M(8(+Gn`?!l%P-)xAsY1*41W zU#sW8mX9&bs=R_dtNmD{MXe!^#Wm}|?t4H&%d0iWl>4F(6MS*NkKeDzQmd-=O;lip zC6~5K;t?{!+pAY4LFSCfzx_*vw9C1Lj?{mS7pIW^tes$kku?aH}dO_z>nd5YSJWGdtbC7ftb9njEfIJi{ir?cW z3`0q6Ii977_w`&>UE;R*u6|D_G*Sv=NIp%dy*DTNCFlKEJ8@mlc)1gS%q^NNwsxy_ zR|~y`r)miXjUuO0W`=)x;2+oG=T%`B#*vVsQ{4no7z3X;oI~%}e{$Ts+0>;^pS~P9 z0o>NYEu=$H1wJG&hm#;%Sz48xEif0T{;E=ZQSOKo@-V&;$Vs#TR4Y6#)qu{;VMsUI zQpIZxvQabF1{F$ru<+ZSE0=GP`gPKiZoBTYIH4~hc~UMx{}u1a7hR}R?e^`Jp>e8d zsG>fnUX`&y#3y<2#E>tkW4TM2-Qy@k$k7l0=K1BZe_5Mt2cDNaUJ~TmQY6*-eGRtV z3FQwLQ6cSvQl02|vDplXh_zua4-pUDl@H%kva}v|d7sV6E->J|sJ{5PQwA{$4?~s{ z*sAgINU>V^yx9erSb7DsNk7$|1a<*T53}@^#9xcJysw z<49@fgvXvsz3PF*-%uViiLD>B{nOOGvf4hi@Eom4kmifY%6xA74o?3Le*|Kz?`qI3 z9OUY?5ru2K0XQ7eL(*Bo9jiDH3v)p1ey5h8C4*aHcTW(Ap$9?YH98Jx{XvN&cVwOi z>gEapm!;muoglMrBex8V0o?iW_gwfo=+%uVL5InO*pnbP@Dc)iP(TT+9pB7V#kJc3 zPxBVH;l4>v)OHk~o^b2EK%kQR{F>L7_=e$CgpC&?15g2qMNeEuQiC zZREVWr_}tEXtbNPzR_cnWAEp4=4l

6EgjmbT9M3%ZxD7#W*fH8s0++uFwVj-9>pLzhRcZtfnwe*OW0K~J8(co`NR5g8So zkeHO5lKLhsJtsFWzo77a(TB3~ipnbD=jxiqrskH`wy*6SefTmQqefA}Q=`n3am20I1*@{4arAXxZCcJ4ZHcDLw7 zD}npoVkb48?>TfSKD)F*Q1;wShWG=Y-o1zAG->k8zg+uop8b1{h5na3`yY<|pMFsw z`}q05hsQ4hfkC*OoM>x|pBJQ9+RB9aY z`~;DRy`P{{c?R|2LrZLyHw{g9y;*U*FQal9nRGX+UiAo(;5B2c;V~D$v5#htn*Rz3 zGeQS*q_!cUKM_=En6u?8c*XS?hM5EW1#F+EmK1jHd`)V!GK0m6On4;I~ z1q)OU)+W;r|$rI-tRf`K&5M*V^E=WDO1eUe^Qvf=Rum#Xbf!a z^RxJ*t1{Bxp9d8A3FI+!IEQ8WS&^WJiERwA$+l2Wk^&HTsdsV+<<8t8d@uxemC<*t zb}IZ#N*{jUdzkjS6#eouUq!CA*XC+j_aG*2CfP4e5mZ>Fh;Q8C-ZJSc*>suj%H~}< zE?!Gpb{;jkbTgINZ3v(&LGRv%92n(B>bo#gc_J9#+BSqH!dB#%ZbK@_<)q=+@g`3m zxg+%vRVQ$(>id}YTWpqpH=x=UMdDw8mQQ3eGbWc}XmALxm-^_%MW%4LK2kkWu6L;< zVVq7QSK%zm&K9e-+R>g|+C(;aznx<*_3~U~Ce}#efrD#HYhyK8KX2!k-wauctIkZR zvb9|qe%RgPq0-7bu?=Z3!njgj8lERH+F}fKIZ_OAlxFo#+nVe6X$$R+t=^7sAvuk2 zC9&2?&%PWxW3ccUh+xisq3)@KANT>3x1z-uEgLZeiR(T1bx)^>4o8o<=&;bihyLd} z%-;(hc_bfkEc$Sf>EksgWask5@^UJNsN12^u7w-jm^6tnl%C_M4;X53#Ae8k445b8+GE(1fDE)X*+JS4S7!Xz=XrZc;fSDUB+-Tk`IV!kW_jz zZ+N0#i)~)7{N+-pX)N*V*9X|nOGk-kD0yPfjRrI5R=u`YL@Pm;Gub zdKD^!9);~j`A!QT00OT7)r__~Oo14%BUNZhYqYg!>qw-J6PGa*nvE`$eYbw?a6vLI7C6~g>VlHMXyScM_nhoB3fMlZ&*ur_!-V6L|&PU zL}H7!3SKJWMyK$|K2qSDj*CL&atFP;f(TgHBoS9W+(;g6vf|=6R?`;hO@^|4nn*fg z9AiDWHVPBAH?31=p;9#*Rq~hiAmwue+`oG~*vvoDW~(y#y<>^0-d`itw=sv@$_f3*ht{XxC4ZHQ zz`F+#Sn)vMI%T|)%#pj<{;5qmYXj=$I+0v|EC#<6@@qdOM<t^lv`th4FEfIRyuM~|DoCRJ}sBV$n#On&qJCBt_AC$xI6Q5#}ah8t3KLcrga z(lKf(uuu5%r6JbbHiVB?ynInr8n^Db4N=^X&Oc=J$FBdC1yxH!j-=AIA#DUo({%E1 zY@K`#5It)-C)qJzeN@QKs#{O~oR>J5q&>9ZED%!k`AqxCX~p&Vlm70<3A#T<>))$x5oqpr4tWPv6W-+iDqvVomLfSM`&V=>fHUTqHncKj2a9;Y~2$ zc;Vs#8wOySQm6-cXL-HbkbQo_djaRh3Hz>@JW5Cf5~GozUl|p-@^*S7+hM6iRzZhz zFrb6Y+mp<852|II1DbZfKop_OwRxu*Cb9GfE1n#yQ_oK(G=0OoNpc&z5*I4{Ncs^r zkZvJ9eoMS71|Lmi-mOmEaHxAwd%knx7u&u7|FC+-Z0%H!CE)I}4T*6#-MFrjnre;= z#z8O*J-C&Z>ao;~J=>7}%1j?zIhG?j+zhWGG!jN+Tgj4!3T`zU&v^#{->XcCaD6C^ zAlR8Bh-|^T_+)>b>ys*eVO*&R+##gZFo{v#%ssP-!OnOx%CumG7~0_d4vha>|NW2 zgu}{_jbs@hls9Y-Bn!N(_)V`nNUcuJu2{Xbs9o-4oS56Le|<0K2X|D2IlI_}x5Gg( z4GxdjppqUk`i$}AXRXD%t9^I9g^u=h7QoNJca;-~mELMBm-Ic>3dVMPf6_)bmZIB! zOq{b=Q2MU3k{)fkX_Bm2L3Xt6DjNFvR$e^MMbP29s3+OZX*dv3@Tzn38&Jw9ZxRLP zQSoiaWExAA*0t*+%7W=^;psFs$2?Mb%b=P0-AlqtepSR89;BE2#|4P(5M>(@q17e9 zJ75JYXLB?iEclysiHl=QcNI_3i+jkHWi5{ub3J(U6#1K1DergxA-=^na*xJV73)TQ zUhT-MnCQ=$lgBJk)Aal*Q)U%*3-341ghe%;iKFy>zHKdqV0YOSZ;s=-;fp2=+@xaj zG9X7MH^L}5RyuPV(g+m|5^fHp;G)oy)WV3h%wWqwnI|n59ZUw z&Ee+rnQOM5qz%p$#;-()XPC)P@G3Pd+mz$Wl=xyHJ2g{Z23XpXi9MR9&t0g}N%>(C) zm;FtWwjlB?Lv@#Ot5m@wtJ=uXZsrqr+=h`ioUw#^PF=f(QrU()qjI0J(v_5$NFdPi z%kq|jA=t~mAbIuBe?5u6g$zzv{N&$n09$b0C2y@^nrhGjnBKDt0*@cFzCdw%Cwv&} z_21iBwnj3re;YDPaL;+B@4%DpXXx>wuwfVmNJ9uF z9KFKHK&}`R1YeUn+YqPvf@sM9HtT=it^Z&3t@T-|B+NxPd>g_~l1CjK;3!U#g?~Q{ zo5gzKJzSs#PsfYJwObih7ADBoAn`cZ7g|V#ga&#MFQIiY_w)hKo2N4(7K_qU(Wb>NRO?YXK z7bu7pvMXUzR~<`b9qWUwb-Ml`({FU>2H)R`_~r;>mM3J%G-o{ry4jYXyg~i~-LnwG zJ~MB7ST`x1&|JMXN@H_xAFQsuqsgqw2x_srS65|abeh09rsF#W|KZFE1O^$-O*Lkt90vgBIw>7&&UE=$ z-j(YmCX^gI+AW#J7bkf^(B+}Os${7$`JK!WZW&J)_yN?iC8mf?o^YNx$H!s{TN;$! zG0hXHi2WQ-2)K&=_QCnJm|BlMv3vadP`=LYff{Yn%u$_Rc)6vDfnS9-TB_~%K1^_u z=R#1WXSZq2XCW$uO!G=(7{j7cVWM?>NXCR`0ZhDoO6p3_&vEsH&vhD41T=Vy_cxKL z1ab4J4SFskkcEmd!9Y=W0M|)Brg(L2Uk03M@G4#Fyzy8&U%K_`4J15G!|?vRvV3m& zG7^Wpb!GX(`evYkM)YRJvy54$C`W_fLglWl0!E z9(v4B7(ntwRkfvE&3FUMluTD{p|dus_`QC6YS(i{z}GaJh6XJfoM8t8PEC}u_hA~e zF|;QfXzG_NZA6#(wHFpOb*=*y!EA>j?X=uryXjRvC+if8`pu#uHRGh3jP3)eIrB!+bs7T!=aA`Q&Hl&!NO43JWuyWwOvhZZRN5yXT;AhFssl$TzaT9tdbLp-s!cX%!R_G^N)K&WDy+fD55~84)&s zzj|~=^HcFzR_4fn?B{fa=U(rs5lGc5h@_RyP|L0!EAgjU?Z}eMj~T-=601G(nni4< zbhN5GG6Sw^Nm3%bBu|!s_Z7Pz{RM;yfzA8jG~6rn0U%>qCv@rYeWZZL({HxK*Qbdo zjBl=`#OhZwW+vK8#TChlvM<)MV%QH+upWK&$=@9B>17CD+2W+c=nIPX!(YBz_33lU zxT-}jZ&^-V_au&9$Uw4En7f7&8M9NvO|VGG{5UdY=`lxVDn{C7 zYC^gJ)%HrzFJ^0C5|1Xtdol%TzB@jpOsIl&jSX_Hj!A4{vZX&eP zR|c1yqYe*E`CK|3pJ4h@xc-^oQ>O2|4Y@2424iG?-iG|7!2VhB6L!CwQUV=yWjTW^p}7-zU_MKX$UHP$ zd^ouXw>El(SfBMnaG1X{De|%=YV&c6j`n!lP_d~|%SxH7ynL7Rt6OZ@Ht5>fpj+Dz z!BH&FBKIHvOG=^>{+*K`ztG1PC?&u+O=CQ!E*eV6*qnwyLF`Q6gVu>+qNMJy&o~{e=?T2&nhjsO8v#@+!73e zDu8Yw3wr6>O>I^Ra#|6dDkgm&^T>mo%TH$NVq9GiN7OaHy{CVnL}F#jj9)E?D;taa zN}&#~rQXaIxZu;a#j9P@g)d@{VR~9SLUauo)tMD+Nm?fLHlX3ND-2VBkaif-E^IaoZwAAS2UUtDSN z`@eDfzvU+JzB1dm`%^rnfexF{JZATA%cMJsHQf*tjckVK{D^YBxuPca7ojAhha6_)H|8(?UJr`!(;O44gJTRdFhH4Qe z1NwSFUdx)9wpU3mPbxBvJLVnCJDpF8CPXfsNVd76=XmK;>z@WP6-jsDDhe9pbwI1P zq-g%%>EZEj3;*u9$>0AvIv(Qd=A32j--xPH^3qbM4E}*6JkAStOFxpgqW0_A8Dm$K z_#@{}KT%Bot&#+2Z9`6m&2l6BvD^#ewzhwlMuUj-5O69)HbB`*L)0zLf#ScQ8e(}< z3Joe(BgR$W*y5G{A7IT%m2H4&??s`(2l^|18&cq)3u+C>kpg3Br~H%q0Ktx zXdJ7S+7Tuc*08*2c$$%tCd`q>`7d z&g@W<-VL*LD^9AWE{iYyqNXRSyCAQW44WI?P8gVG>39n!K^8ye zdGdCkzvB+-JFwl|ag1x@52PQg(vVHUF*=xo>rx|y6Xk&YdD)uEir0KEjuDhgr)B&n zC&j0K698pxf;amVroq@y1>Fbb!ypKuBncp&mZ>{z#7u31MmA1J)z<3isRUCOxo0}! zyiW(3ss8b5@WHrT0-xWpLzexPBSfBH#w2E>kktfKGW)t6n5of*$5HprDirz>933nU zr+SKX*pGZXbH(|kQk1vs)ltu>&9WoJUhA_yw~KTX=_d(_WYY8zosziV^Y7cWmi5R^ zQ9i*>vB^F<53BChea~IBq?lIp_sS6mIG4D&Xa%5YT8D114cVE^w8e7xT^UWS_8XB} z4qdiQHdPvTE*F05w@a{@xYoWWF$zVLAMR>8d_3_thH)Jpn{}8QiJ2^-R%Le6ji&Ys z)7oC4{HK&EL2);xb=ccI04>YtFx9*8$)U%;g88rR6B zqxx-D2{Z61vD4AoHiRy||1_x&d%48gtG}uX#>rPkF8ll%TE6Zu`dC`xZUv*ek!@kd z3!*>v~WQursPTqaqh&U zjKB$&sfr!mf2j3Na9{rQbhbte8dWqBvb3}@;)eI#90ZEl*XPMq7>>v}mO9fU%4XUI z2xRz9d8N?^v8>syYIAdkqq3nB!N72$kbRQc!y~I|2Yv3i{_Z})vFion15n_?{YqRY zNtw|doi_k;^)&9kGUVrItcN#rSWjWfj`#{HjmrJ___fXbQsJ(v(DDJBHw0?+s(bgT z_R-*hyrTBPelM3%q=tLLt(UUGWjV>~cRv-;Pm-4XYZnl6rJV0U5mUG(@QH#H;{)a( zNzCJENqim()sONTmN~~L$ySPKZbxMuf9^CtKhlkRE)ah-E!FL~u|r@d+=(|p7UZZf zn|MNnYzP2v%{mH#omfyVL@Cv>A0^`Fdgc%7IB1TJhR8^@X!4&bZx;ho1w3(B4>t?K4V(b*5`0k*%IWeD7S!G+l_JafBt|n}aNn+Bc7Tsp03b9`3=khHm3&aU*$JLC_{xl_UKXmgzfnJ*@~q(i~LN9KYPi42sK1=lt>T zQ&m}isKvg=D@w^XFPyB}S-dlD8-h?OLEFr|*ZF{SM7mntUM6c3?H!FO7MFJ%v=0U-1hxss!b`j9Q4D7gNv5`_kIb?f0g1pT znnMz#{S~1LcL3i4O7{Nuj#^pw%UshJQNyC+nlCj@NA~%$GmVhf1BxXRhK;_F)BBQg zsE^)OczhqOt*x0UGS&5Y=|@eWK4Mx0tn{%0ZL3mjP=(Ewn^GK*vfdxTtc`>?I{M)L z4x0V_(@IyN9FbYxHL)f*ONuGM!};&s@`+ZyFLUQT%T(;hN--EpynO?l%J@1^dfSkA zavP2%4MyKAQnZ|gSuYr2%XI!Hj4A_oAojH8kva>*G?raNY9UB=^LPQ>O26)m2MDO0 zO?Y?EqpgVyTJr?7<_CFg#M#kNC?sHbC4lpo>hGVw6!n-+!ljcZN>XaHvx@9i(%U$x z!k~!yL+JK4q%Tev$E@XDZHpl<3V~P1kxBbI8ZG|leLJM`XkUGGqV2kkR`#utfw=2k zu+N*@5S}176f4znGhvJAKrm={)%x15L$=v*%^}VrH|z0T3iSGtW#^PInCo>-wj60P zCt4+GKq)60GGn+O^ELY~gU6k>A=d+~9llU2bYAe}P>#&DXKRkmbdn12=aA`?3bd>n z%JQyzK|f5b^Al+&sb_3F9(}4UEbclv%!!r&@7NG*ZPwq>QHDIcPS~7#?~@J#-4nt5 z5CQ|7eR0O5K=3U9CAEed;1H|`P%i_wkkiNro*0lnooQ%3y8m*keG4fy8+hL39^K(!P?~6U0m*k-}IMAUw; zHV>)87WF=2=DyF@)Ik2aum4$8{uOCC^@AV_j`=#uFyVD*5qTN@$`DYT&v~}@pEzr{ zV)&op;WLARXr*^M{tIQFr6iyf)b2OrXnv!w#IKlK)0)*J{Tl;w&e-}P+MCgh!5_c zwO0Sq@PFcR4}w%0E;kexo%65{FZTT~&MljoVqB7QJ=n4bVkCK-@8reC*$Wpg;A@oL z9l*4Zb|A$N>F9jq$9anC5^g7}T|Qxyn0Bm7O!rgzDSF}ox`t3zE!z< zFgxP)OI}80zYg8k-Sf=&{8SDo^#y*!^lVO%IRgE#P0^Yfu(STN5)0TqZQ}}Ofia;k zA?LuMPUSDMXZg=srGK{j_b;Y_5~rQ#h`m$8Ne_;1EYDUa1ZQSFF0(lIZ81QZK#l)w z4cTW?`43t6UtWm6ILH4YHT~A3w0lu`0ejyIoi%tyNC$gCdiroAPYk!Wg#8anvKc13@~pW6+&iF$U*acnZwE5mSW! z{rzLQ>vfVgxo8UFN#w5+K11#j8HeR8*h$P6(-v$^nv+Rb-^pCy^bhM3MCHk~u?qzGKGkluKG?qo3DVC1rnUkL0mP>UU0qL;jIGT;CyxcM-#7d25-PVLhe>S0f`gkC9EU4~at=LZ(*hR@ zy-QFR8N`-l(IB`9vpZ^0iyG<6O_?_9IU%D!4u$HEjpI2fRg5>{1yxn)dz^3P4}VQ| z-m;w*pc6eoC#H{n}C3) z13oCJ!B<%P(d;Oj`TKNH6~u_;on=%d=g(CUd_1Q@`+Ro| zV0}_pWl43h0x8zSv5y5Vk78kZ%na7ni&k7|cZ~l1chsO!8Z5F-Y}!%1G3!KWU5_8# z!LDbCdizrpUG4?l!u4b~GEihS=ksehol93#Pj34A6v|umA#N{n>X%G5O!Mf$+9@k> zU*~h>EAU9Yg5iloVzA-2ElM;~I0{!qC%@#KUXT%D;F<`L7;!Da-lm;A1w#qRyEZ&Y zvBI<+cg^2VP);YbAAY!k|JJAM>3Un#=+|XN1aGghr8^h}K5QY)!9| zUJ-h1Vh3ZQkQuJ(Gi}xLktERNDjZ2z!V?=#)s%&=sF$CQ>K2Fc0bB=5+}_$ z&kTIF<~yZA-5>NyZ#TKVU;BbXr`_X{B~QiJI-e_-?jm0q?J$bfcUeuoV=P*v=pr?~ zr9!qzt?L_9bxIG7@ig+H10?GepI(EEUXS1~@l}(?Zs62%1X^Jpy3Y&D-eo#8PKW`` z_lOK!v=&{vW7u*4sZbtVQQ>xYZu#BowtcjR>4V2#H(&Fqsk2mc2brJ{&@iPw0y3Aw zKaqR9$W5wKj)a_=h`ob7b&>kF{#+Zcr39-7Pj@tg1h4MUHh&)0FWqej$)0Ov#;tL zX&CV!%T}mho%tkQ5-Ljl5mdc4W|*jQJqDe6SSQeC;zqE0@(Z)F6W7X=%MyJy9E}uG z47{(ufuZqW&Bri7*3*_gxMrPMx}j)ZANY6ezz=!0q!fl^Df)zSy-l;Op18 zQt(Ee0_vyKpFtUx0Vtr5BujUo)+Vw&ZF-M$rZ~K;Z|xDv=sr}i#o;R z55jzz*zx%#u+bJ!HAIXn@=*HFP2(CodUf?$^c|_%xY*-I!p@%4bJ%a>^w6KU;K0~_BwUDC?>bc*lA^~&jy55R~1)-GBSL~dGila(Aao=5qP7gf~2=|aZ zJg@Aa6Z~W`xrV)x5UV*j!co(B(w}N@;r6RuTeJglCMa*LvabsvH$~#)ko0@eCs1C% z2BV4f68i0Zg#Ejr}272++V+E6xro^AFBFxEj2-5*mCV5 zNY0-wmR@Avx#Z2ZdRZ@f{#3!%F%9yIFDZf^rWIECIYb_73K6epc(@I* zt(LnjD>w6%NM#^bEH+12E(RcCE{R#UrTd3;|CvMbL;|O9;SN^Vn-O2Y;4(>~9bXvH z*8JY{v_sRQxx&NQp&=hVRFSNlBNKe1M)%!8Pwbhx%!`*lG+&S!| zI@DEnE5^bAHHpV+#b?ppU5yp1h>bVy8+u!^q+*j!736OP3GXcC$b|Tv*tBLIB9bOp$j3t6!XC0dv|M$`&7V%OS=x#3@Aee#-6I z%3z1;#UM^Q`1WRw_%VI*agULQfJnpO?s{qRfrMKY&u&hOzbeocCyeQjA@d_tvjBEX(r^Awrukdq{n+P6V$ zS6HLE8&MIOEZ0##+Z0emuL4m@3x*=mOcmy+7c5L12g70VR}4=wrSoop!hqY>bH4DD z)rt=*6Omuzr$aC7RBr!OaqTzWgf$D;O%bA~;PH&v%i&pvI^V381^uAMVli62FK$(!GOoO z*?(~C|C=lwf4bJc=6Sn=vH-Y%=U>VWl?AI17tPaG?c!g@kIIU#+HyoKTV!k(U9vd_ z8(cSb^2kQ?Lw*xSj zE1AZXp8KFnZb6C#A!+DBrr1TGzVLT=Bd_gl|6|n(74~`8%6NbEN{eGm zO0t{W>f_0}*Xo(<6qhR)F(83C@k^Y+vI+?0G5XN2nd z0Mp))YTxn%Ijc8D$EZ1$U$?f0*VZY190Rb8TVB~u^5!M?kFQtwb``+ug#8O^l^%uL zgqq&hI3a(hMK=35J>ZDqrRc!{Pam=h(hrY-2ZoF${~RBEsP)A6i9=_gYK=Wz?qfok z`Q_D!Mshi|6^~%;U=kO*{277GPgRGT4P0BaQw_E1hc%5EytMpz$_%%?dUXF<>hk&W z&)>X-t{qL+3XBV^@xzG2?q@pC;B*(JP^$`vgb*6QIMs5Cm_cxV~Js+%YoJAXoHm-hO%^u;zZcYg%p=^Vgd$?Kwdoh2+cU zcEu0uhUt%^^ngl+I+(;HUkD&+Hrdm7^=bb#^a%#9emA+`hx=2{h8}vwoTooj_kQ4E zxiTBus>+&Ou6HNHg;@ULTJJs-73RFX>sYIuVNd9qEIAv&YZ7k6z0l!_G0j6r6wAf>>sK{3%~5hMJ5$Q5rKTocbk2m& zbgO_lYbSv0DOeb;(k8=|hSgo2GHJCG4k9$gZ$sQD>a1589uqR>x)YT|=4)54`o2OTc95ZD1~%3uP*@-I{b zG>oLcYsW!Jy6_+j%?r;wcM<6PFbZT`8`K;}Ui(DsK}wia_7@NbQkH^#ng97X=Z%G{ z_-Im!)z784!*B^M)=(N4g8m2umzNaMpaN82lOzS)rw!@D@~I>C^E!uX!c%`fslo?q z)z?<|%E_mgPJeqm6L@AX=4xKtqqyW`yF2%jVnYq~y8=25Phm~Cy>nZ_5fzy_7kk#; z9Hz8g@5kR98u~7O+Dg7)Y}Vy9x><`@ zzyw!L4D|re7V;-T3zE{-fUC6S$QepR&`9}A%jT>jOvM-UCDgSeo!n&iLVa(?arc@0 z^4DFiGuMV@zNtCBOYy&w%w8V3#R?(9DkQ=OlwX1~<*RmO4 zcXn-TM28x6Q!+?|1KNNPe-W^KE%+JsGX)z(%?)5x%roc0v5(>k8!`u5ikSqv7lsF8n`xQ#|NwK}h7Aa2Om-53@%5i+u z)IIo2&@IHhtFmdIn;k!3C~($MrV0H7+nr-m{h1h|{snW8$7jlz(;Cc@K!g~3USf{u zXHFp74}E1vKQ`cZJsy&1WOVhzD=)a$t;F>ri<_yP$&LZ3DWSR0hj>eKWp5|5Oluq1 zrbc=FGStBG8O9YeqOjG}0z2S`lS1v~zI!-a2Yo*>HU`Ap0GJ^qK{Ax3Z=&jSyqDIT zT7G2Gx3d-nvX6{x?+lz1&IRSce4IetWj2^3*kEX=2}m?P4P=p{>KrG>Z<+Qjl6s}V zT|pk#;e%ceU=tgrk+(9@-D{8NdvTAxtiY@ z2*(L7Jc~|bsztGdffqbM8q=~VON;v!C9#hr$UJ0I18;_hrCSe{;N1W06g85mEfD+} zO_2gFDPIr2V*Z)*0QJ)b9WDIBaADdem+cgUY)gMkL586<7lw2sWwQ4-Yuw!#bE)66 zk9GW`{VDviYD@v+qs*>*dm3POt&Hq+Q)d?kxAG_fmLZZGPIG#SF5*(Til&7!(FUaN zQS~|=?P~$`C8HQH8c^EZgrpQtDlSGbb^C1?;aHv4Z3vWO`k8HrXR%LdW|-S~(p4=Z ze_`oT>C#mz*HtCXm6sV?-7YWmX6UixnNW^cKP!nbM%}APH*diRkxo$X5zPpPOygao zvZ0(yy+D4tt7V0`|7y$AgB2xI*Labt^Mo>`9E}-o#Nzw5_SQ2u%sR~-97Q+4o`1oI zWo7lJgN`EE&a`9WX;ns9{hCeSFPzR_p(S&}13)6{88?h17o^jui)0a_wCGx%i>Gi-GBlqBHW=h~w{;Kc-KZO+3|GT4yhz1A-7d!LaE#3z*w} z^&9JsRZvseGaBiia@FL%JBIE*F@Ti@UcQt^b>yLKPU^1urQ1>E@}eG zP3G+m>cH$D8AHJV%yi6hw4ov+$v$?EmP);y)`=o_*0Ab{7u`|*raSkod{kroCdj${ zy237tzMZf9XY9$f=x8`=p>};Xz?Vcu#;8!HGd8RlGT8)_%m7akFlnr5Ei5oE_8{sA>M#5H%4ZG?{n^@Aaj?07 z_H|UHI`WLbCvFYw;qno54~B8AOMr&PB8r-(EMbjjo#J$EN4Kt8M)%+BpQ%fiN}%1m z^B~+^JU+%N_VL*0#jT;}$kwyi(>AFw#J4UNz`42aZN_?8nL5Qh&HRH87_~g)-d5<= zA8kXlSsL$7-G)5CJkL7Mji~c{k2+D=v!rjuxNhoINe~3`z35@f5l&N2O4R(itX$H( z)P8iG2tvx5K74((aWcYE7w*8tW875LS$5nE&i&~w2fx=qutfp_ai?{zQmRTy6@S8s zpt)M%ee!_a&l|eKIYZDm^br6tb&aB*b&|0ZL1?GZFB!niJk1(a3i{QZ_sLd2`&!tM zcKM8**gpPaB8j(d;wlOk3no5vtrO8*`8l45hcf}A9$3{2tNH%HqxtMW(|We!`w_WR ze)ewEp#ich^hYtx_St$tSS4X^kb`A^rI_#*xzc2ZVAV>{s*ZE|`Uj*aT3c-LLj-?^VWY6r@yZ*cqjbd zh!eQPAdCF-HwlLM;d>R#L{rTSw)mID1;6VF1T|DX3|`WKn}7a7SNmp?2# zHBQrvslU0ja^5br;Ex9f41V)FMSlf(Z}WbE7NY8bWc-}u+ujn^tG<;BX|@GdZ(cW8 zaQZuSR7nBsn4Jx#T1i|axDUs=oXk09RP)_H)(z+6@;hFD2lRGi8TwjZcd z2PJHDelb4d?i{l)`C(`NsHv#gA{wq?-1zE^hK_syam@M`49rV)p{q}25#HY&^Uw+C znQv9Bt6*!@57u|K9+FK;*O7X5We)qf@ckja6#_@hW_fBhS_?1MNk?fz)X<)d98Os6N4*bx>~5Gd)ksTr>H^zeiQJDB*q zZaa4U_YKlXqjt)-3*Y%A*K{E&slfO)M9#T|%Gw3yxAqD<8o2<}CJZAjNZq!Vvs}In z@ffji{k2G)c@o)P>t*cyc3Rdjr`mg9=GOk3Z*{!gpH_U2RW;hncw1!wYv$;HtGm5O zJ5f3SNEdegWZ>JPVGlAev4I;-C&{76V|U$T_Sc6wv#<9^uS)@h=tkY=e3R1PDw(k? zZ7_2pjPsZ&%sGsOb5l@)&J2P%V*2 zz-&)*`)#~g_t-{t4W=_qejAc};qg$tQ}iq@A~ySaAV4UDZw6&h*{QvAedEG>+}GsE z(g{s&4rcN#Tnv38sLdWY#Yk*}3vvQsFZ{^|5v3D4FEfuJ=QPXf5JFqGu=I~f8E?|>IhKnM+i6OtA- zV(9&5>BP6Q-j(H=zQ5ZpCR{P|;wZm{H0jO>+ta7tR?A1)po-H+eS>#(QF(AjJGtbN zjF_^y7Kf28s|h-RBl)r3AbH)BlwxVSISY0Z0>EY#v+Tg4?hT33XOvH!#tKL9&M~HuzfP7LB&vc zuExI=>pDFe;(W(JFi+Il)JG+O|RuLc0x~I#x2p1tw#*&~z zU^Cc=dP|lV^KRB5#_(dcyZ8M9H&OR+o`r|tiBJ&Xp39C(x}4B@LFcgk-q@-&-uwBv z#lfBI60_@C+H?MgK2CJy5dx3=oV66$i}AE3;xzlixt`y~`^FX4Oi}D<44`J&q7I7a zA}}{8_2+2ma<*`T`6lN=?wxUzJk#}+n!azbgJ9j{aQbBvME<4kQO7PhpZly}voa6{ z&4!f{+bn!psoXdE64L~+ASpQDKBX?=zTjOHN3m{qe!KGy?*pJtgNp)+v_~=dKwArj@ir*uJJqYOBu-6L)&EqKe5U9B!QOjE zHPx-_;#g4-QL2Cvm8u9RT|lBJARwTKAT>5>K8SP>NGwP%0s=~lh!jPLN{Q4+R}kqS zH6#c~2_%%TAjLa9d!OGOpPupC-#z7?bH~_!$yz2WYt1$1JKyp=&zp1X&9g6kr$6f! zv}rlUUdB`yAp~9WC)F@q|!vwoaK9!HWV#Wy4cdDKTtsj2kZ` zyA}%{$HJ-RC`k4w6W*h0jNuPpSaqx1o7m)fYzT3e61^|C*CS0Op>NIZTmnb9!utAC z%ab~ZV15*1>fky*Sz9{5Pz<_z8&FNAu;f_dCeiTlRqURCZYf^R39*-`8%Y#*1?x2a zDfP#>5f&b~PX}w~AmAizHKW$1GR~v>vX0a8BM;FC4+(C_pdb^226GqUEp|(k)T3a$ zPS8_?f{2}gh`yf0qa8~C!TI1$wPOLM?kMvTLk5W`^+wk6RP@WM!noX09RNJtl-g8n zg>Xr1r(vQC2Je2w_}rA2RzGqs{!2Y+de^%YQKLQyQT00^k@>R0wOYW1uZ*lQ)W7=4 zlA+yqta@^54%~ji*(s$k5SC0V=cP!HiG!)^o!2KizG5b%v!w>2*$0r7yb(IE*&dIp z)q13gX=^@>=%owd&RinpFB4BJ4f7*%5mZnAx;|F23M?E`{)3~T=B6Pi{t+IeJxqSs zZCWo$D^I^omdO9esZ?1=I1rqI&3G=j3N$z5h|E3Q^$6+}+*YPK5BWQD%LF$3l0kk8 z*=0qMBHZgk#j3t|#Ci@(ZQp$E24ynkF-LH->IixOK{Y%{@Gu)jlAIfPBZzy`Eg>^% zEO<*skfTu8jS@nifFlZ}5c`S$5$S};UD2`jrUy1ND*b;m?qY{kgr(qD9I0bnw1Mun&a@hlY;w=pPtH0>9>rn^qR>{2X5Zy&i{X3?{9#+ z|2bg0&A)oY|K8*Od{0`LY|;@|dyqY#KF0IY0hYI_(=<&daUXDYOi8{TIBh0RnOC?v zqDxu35xwu)_MT=_q#0XejvUVtUKGTTlmXCeNmbN<`NFsnPB---uujgZQdBmPiPR2+ z0OmU(pb)UXGKGQrUjVZDcOZ~L(PK0rpbOs#%vgsWJ&pi8Q+c2XwxKu%GM@F$dLZC( zgOjpq0qCp?O|xS2YbpY|idAXXX>oZV`m#zhU`MY-5vWhQFzcf6kTWg{zJjO*In>ZE zpp5vjkD_vsGaA!yD)s=9B;b?OVL>=T2=t{bO@^YW`<1l4?&%$ly>6NaAflc4B zK?q|?i26=O;~&AfSKCLs}p$rwp-Z4P==H%nm4(VcU$| zIgKx;S!S}Zz9?3*BWFysQ_A!8 zn$(VL;P?LLy-pQoev92z+TRI9@35MD$M`hUs%aKJK)r_Z~3FNJH&IZyN8A`E^b0e4(IRgVx=9qg3oIXnS1JO zY%s)*^bJWKvbtlRTcziP$7R;oRvG&HnG6R>Zz%U*ep?D)UjH&|HJs!5O+m0Y?9O1V z2_Cf;o9=n0-c7-!tFv?y$AYV=cBR65)K8d*IUd;U_bwr+zcQ-(lBdV9FG}V{#xMWs zO0`C-(`1;3YPtJX<7FtYLCebyfwuI(S{r4`=!2LEk-C=b*KQWE8k$Lia)fiPrhFNX zC8|1?aDQQH72jm<)B<_8?EqZ)jNLeP00Kj}Bc2H=&%*<$<%B`l5OxR+P$dpLW0<7f zlwtLoZTr5QoU>nI4`Fr<)2mQ-CmIPf-&By54bAwD862>49cB{X6mhFTHm$is8N<*h z$`=-qHTK7kwyz^+(9ND{kL^<0%$kW=S$PJ3(EyoW`fFo#69z+Brfd9XkVubQTO~WQeOgzG$6s3ojmuCTV?}i2 zkvdxj02;y+vL#bw%uHkhXV{e@~p0F$Oab5eKwOW`~ z;INek-EeH6ER*h+mMp>Psza2cpa;4K093HD>UX31Z_K2;C@vt<@~eG^{btMy|1SIT zt404e#u9+pe~QTbYSDlH@oHtdDeyd*!91*Ya1;uNUa|$sXl3}AV0E=zkIJ|lM^~YQ z!c(EOcJ=+|DgqG)wIeGfTlHHW+(nN(*Q{3+Zjka}008b?W5d?;F@=s#S$}E6sK?Zu zz>EX0j`mgOIGlM1Lj|eh`h42t+WiwO94m+QlI~8JLChXr!g~N9%<=>*xQk&9JYypQ zDGf88O#qSq2Lz=1gQJ{4x})%dIE)_S%w>@ynx65@ zYP=#=Y04qhW)5{q*J0jSrc|+g(%E^=IWHVI&cCefe{+Ys^53{~{lBrl{@2`P@OqA7 ze60Yx_a}n0jHYZuOGzTfYFSlfjV+$<`J-R0)b?6Noky{khj#<-d(Hbu-7Ykv*Sk6BQP|Bt}h0l97|L2(aY?Vbc-`O0*`Plm|v=Q{tax$?jBbe!LQa4`9# zHx4MXxj{}~+n$PwG`XOlpmuR<$K-m+^MxmmHBvb^63vX(Ow$9-3_;=TMmf9tcEqvv0jMU~@sR9aLqBYR%vEAtn zmHWr`CYiB6y7SB*c2|8}O^};!9>Jx4TgS+x;yuPr#L30;ge4!7*HmB2HXaPrD*Z-e zZ@HD`M^KxQaJ7h;Gii6=FLJ|20h(k&5ttD!NL|h&qj3;5<5gWwJAO#qu zdnmpEzSY89URItVFh8 z@M)+bk9m5aR)ncDpdFYKh!|u`5~!5SFSwhNCtRuv^JCh@n|MlWcNJKqP#0uwFL5>t6`AN}T%aepb~)g#y>8d%Zex{te)l6+A73kO ze1y@5ZD0LV9Yi&*uS|J4IWmH@Igr~v_DxJG@S1)w?gC#+{2h`i0g^G8Un9Gt5WQuJ z_u$*hc#NC==qMT;f#gh5LawJdX2!OaO65u4GTiCq^}VQfivuCgwR}S%6XooT;>pc? zf!wv{?7ldSOQ*S_avomf;MmO}@N%j7K~C5E(n`5A`Ur^Mutr$#onD{mmAhU2S)va@B|BLN^xK zI##SLTjoE6?p=Q4iz6Bn2PH_RxwJ|k@&nt279R;dA6jTYuFyW|H1y5!#*#&J11#%= z@Io^zbp4L!m0PUn+THE6e72Brungox+^f^60OW*^=m@{n9LV5r;|nQiUB-uQ@<)9c z)3j6}Ns@>A^fNs0rs>gM@y=R7qiNAq<(0-MORmxx(^{vnaCn6REnGF#H$);tt(Ft1 zIfZBF1i&xSatVXMhW?~Etyn*ycvP}q|HlC?t1bH;y>H&Gd4s^KBk?oi!#;?qQ-(Vt zB4MS|^Kgdy)ds4+y3Gu=Hh;fxrEX*0*0)WPVdQ>y<1bNSF8#*mokaGkylOqm-WZ5h zWb%8{{SXJh4r;Em35YREgK;0qu@c|Wqcf(c-Jwp=!6Z!ujyZQsIr}YmXCaLSG6Vbb z7fwo-eowEm95ODWc*I+p3a?p6=%Y6*Yc>W|gI4Y=7H{M%DbwRwuhB|qP!Saa?-FaH z*aRe4sEj(8NU)Y~q1zB5y7b5@V#nOZck7fsl+R-6F!#gYt8G9upqbCMS5k)qbrHa2 zuZa-Gu~@1}$8e4TB6^I6CYTyitq6;}Od^B@>kMsA9k)y~yizQG>{c&Ie2hEKV3U5M z{2#jC4qC9Bp%SWd9jJC|^LvtT2Lj9*98{>2JugaTZ0Jw7=iXG#*{<*6WT}7j!=Cfw zclEr)xmjU4JA>7!G7;7CB;o@C*9vSGR3Rkqf4-+$<~s6v(cx*g(KGvXPktD=Ey)vu zwP_JCv}~}-Hj%B2dS2P5dTI2C;==bNgwqK_IYE6><=m5uk*tozhl^5dxvIj&Ble~9 z=wr-_&?OSs1KQ|lVA3u!ji{Db)&m;11C2LarN*o=!AvqOFUK*^{g09%liTy%hNyQ2 zv4?KljFNGgu!wn#bAYytkMhz1T=_nZO&q|M>PP25={AsI{#p0&Q|e8IJd=blpX&#D zql0b=Jj<Yp-VsCm0a#pUvPPkdA9zEsCI`(%u{(O>EHF zM#Y6Og-KQFfd{)w<&_SoHE;J*n156MD#|+Y#_4Z~W~vWp1iB$~nPFn@n#4R0-K4IO z1%_l3d}g$bNyDeCUvGVA91+{-adYI-&f%DOyA{D)!y`9b2W-4%rl}gP%cZr(z0Dc> zUA`nSfH%CZnL6paybeo-?bJCCU_fsLZz&y9cgAONDAlmD+5|=IFuYH!qw5^uRwaZo zwdresmy?xvw>&+^_@oVa&+B3aK5;m{7ejTIX~IUrLXz6KgrHK&>&wOFA>|lDNN7HRyN9CbOVql=26sedTOrB{cw$RLqw zLsGiDrLo4>$wcWab=enp&)aR*yCapEq3Qd=l1?+&R=q@nH>hUSt8b)7kTKNys%Oj#e`{jjlHx+KElx@h<&XFXLP4_-hB`1u zeF&lAYK-sh@E;u9RV1bmVwY;H!zQWNmA3}haL(K)yUMn$75D59ywMCyNcpaP2skpb zP#vvFi;XUBuF8O+zt9d!w(9&Kx+i|C`myLs}JG8!}*Am`xET^63Zxb@Y27x%!=hb^)mk zmNup3E-l`Y?w(?g%}+}n;YdhZ2fTVNDNxvOrz%pOGI-{&TZ6Y}@k6j&=s}}etwdEt zr?!-b`*cO*I4!D_i%NGT8pEWRmcTs)wj9gmUS=G0g>O+whx5*j$x~BaDmHPuA1tTbG+M%+ z4Se-bDla*o|9HjwktL&q6u+Y<*8G`*`SiAU`Zi!8{F&y^Go0vbnsgj}L#g6J(xvx@ z$9nHPl1|unk9l-dbKn_ZsJtcAV+W1KCfI@<4T$jCZPmT*Bz&(&^+{6IDQT1QdYQGJ z_f-||e?EQV_SKEF@3qH+cTvqK+$0!ezzi8*lvT(=f32bXADEMA z@gE5LFm=G;xz+I%Kf%OqXG;VaSVG2R1jS4Y$~S-CC0R1?+V|y^(apAQ{0{dI=@_lk zY2)Yp-ERo61}08v8M4X=<5Sk!oV0Y49&JZzY6D0*r#8ZOYir?NSPkvQX@h`#8Q0x? zy0cwjP*K=h?zm8^cf*e3;#?046PN7@7IUYc+T378Es9+&4&UBu zcC`QG4aa+GEuxed*+#b$5BGhiC-|OBTeFy!EpGK02~M7nGdd!5V8yik!r|Tn#2VRV zrH~P){E)>(1(zy(j+yOMb^vFSnMm+n@H$VRhmwMiRQIZ6$^bzsnXXlPgL4&2HVtPV zAAM`cpCAw;Pm<#OoV3T#@*4UhV0$q%n1@+UfsgbaMl~IUkvPME?tGCD!>|u0$*wQE z&;P2~hxN$8w2Q+z@!Vy`TAN|%WSj=ejha7SLT&kg-c3^s_koA&Z0QPyPZ&C-H;OvO z-E&1b7k^UvodO7n=5WVW<|dkt4<6}pY1*JD!4Y))cA{e zWmQG-QHTDFXUWB{eA42w0w_V}DKL-gv1 zF@uxrsq;4*HIp-wW0~se@q%qOb(&{X3iP)ai#>YXwq|{A8LTO8x*qLk(!B{*HkC>< z0JJ-wj;K3`IF!msXBz6Rg6|Iw;Q%p{n51hPdIR*_e0s=h)bzgk(^p3AU%09#ejeOWwEwTi43Qc2&i_0p<-BRp$kt0?H;$D|FX_?lecqelOR8LETdl zCc4D2GL@;KK8BXR>q6SO8b@kHG3y{D- z%CO9tiujP?=?0L4P4iYl4pLd)>}=1Ht>qn-=ht{tHoKSDjo$8mr{ZLJOgQ6xk1D`S zzyJxQE`i;yvkmg4N+Zo8(!$DK28;Ho#>;^U)_aHD<*#(Fi6ZUi6D}p1hbDs1)aKoThgJDS>q%xIVoA>A z_EbvQgd%Vi-f&V1b0J>3Gc|R-g<%jZ(Wwp3gZh_AFCOKkt0;|hOpVkDK60Tr3!Gu(dO!f=eMVw#xJ5@2E!ncaqQq+T|+}H2i5;!FfWOwJQAziuyH}u z@kuhR)=XN!V&tpHAGgMx-eWm2b*FSV02@5qoxI4)Th5d-C;L(c9=0*y0DOO$Tj!0F>`L{1cO!ueu5G}`M zjgG4OnbIbSCEe}z?BncFz+03;*AYa}%IGebU@b4ZgHS#_&zLCkn4F~P;9lB(Du#@D zM{1Jul90!y&bS=RLLAG@tZwl+SJK$m_dalg@P zdW_;yYC0&H`F+Rb#6Zp@hag9=Lw;vvtq>#LLiNOPv$`sbP(wki!zmB=HrK*}-0w;4 z!n)&Ur*>9%U_bLz`Je1iollMvKbm#GJZPqPNOC^2=<~v8x?%3v{HvF(_%d50Ms29i zfm!92Hip(QY#sX#dWC>XqNN8zL+Q0xy5 zT?Eibe+fSKsIcn!KR@=*0r}?)`JcWP3Tb9hE5t3(okh!j#Uh_kwPs~`AcuTkgM4Wu zX+0<@ie?QT&jTv*&l4U)B(Hoi%HVHegZK)Nis*H^aWuyD&|yoO+$M0kmfz^Khv zw}hzC_l8olL+{iZJoQZ?UKNmNKKUnI9=n~ve^07X!Th>Wy!sMLh94MlE2qth^HV9g zNgucNoFyNTNt9Y>4eL6)cjmowf7MaBmQy`Vwepxxv|th7C&3~KYa#}}Xu=jiWkAlq ziR#S$fR_HjG2#gO51{oqy5WkI65Fj&tv5iO7dxJDSzq+e(yFIfgA72c-o|c&=W6Sd?>c#BOS$xz#YDK8UNfW$#0w$Wu#rfWp^r;T2*lOff^4)Ot zkSMG4y|T2<&CQ=SRSjp@GWDs#ErczQ%milxb~~g`B-`QdV8VSdTu}dXqu*k|@Nmsw zNriE&QXNUj_N=F**TG~%yrcWWBu}%o)NkL1)(c*$t{H~Rpq}MRak~1MudDU36h-bx z4)sBVl3@L^_%G@8Z|C}pit4kj zrg~dPYLD02%6-dIdvj_xG7W_3(WKF{CeYhg0q-XCsIYJ}KlI#eHxVgXixUtsjYK+o z(w|B_)_-(F{kmGo@zw`bQy=&V?9G!Pw90!H}$Z{+?x%xz+858&n=W zsF6s>ek^x;(w>uk%VGm-cmtot{AL0DLoa2^n zd#kM{;tvEw>vhGY=IKdDKX5G|<|fXnFTYapd$Z_tHAT0`^Y9-r*KY-|A3ZS+$rL7`_}b?dT)O5lBK z%QH3BMw94kA7ZBNYRV%mXwLV^r8T{(X1s1{UWg%U!)>(*s;@)s>{_;yB_E$8JaH&dLhe3?2LdN|CfzHqO4Js}#X&CHBz0ivo*;}D>{D8J%VyHg%r zpoh8X`*uiuQ02nMVS8&+-d!*D@6qF;s8wz;ktEs?4I!Q{0@MvF`WBwOi!t=|den?)jWpc!!fSJZ@Y+?qbY(n7= z4rA}Xq{;qb_g~O==a^>igTfe%V*=`;Nj5d}>I3EGr%FwBnFk7cpWY{-ocu9nzmRrP zyN_UNuqc3N>MpYzDqGkY3x#n|AMhV6sqqvMYCfqYjN-#+zueqIoULpdl{?A?n?RnK@K~KnfW$!Z{MN8gFyuM}e+U5XN;XiAh8~jHg?$F`wOgHGf zNwbR9b_7u=vZ3-^<=vj~nwku)DP(NozH3qY^3x2i=H7l({`K1*N1htWAqoxe;BVEs ze=TUL8h-A+A?3$5w9l0J<>&r5Z-WI7y><0X|bDQzgR|Z(HBi;2l3W5@F*+ z#wH-!IiqQ{Uq^cmeUODGkZfJb@AzbiQ3pcfYRKv92}5M=s;UH`r|z3}3wXp0UrMxZ zZQS}m%s(TcDluvfQ>VTzuT>>gc;=l~kQ`_s0+r2Fb*cI3DEF^+K&C1o!g`h6f1pQi z1_r4Nlq=c);CPwXCwRr&*LD84rTQ8t?gsR<%CnrOtLWAZyNjP`Eg@uM z7w0S5M)$|2PUjDM9oi_seKumLfV}Y+%qN@+oUSqq=7H2C+Hqi&H+1IMJ=^uk4OokV z>Ze+%M9e4NpTfVaW6VdgxEri!H1Br=AN!!&5I*KmB5G@ZvJuv*|H_33=_}@M>&2Bs zte-6GJE>zW2#~+bz47B1%C^@5mL=40 z{!g^a5Sa#PEKPgFdZKHYdzy3Ev2eb31d2b(xxEd^7!J0?H~35hF^yWDbRn$KZ3L<* zfe#nkzex7Kw=hAi=}++1-fr9(lN8a=G<8fV^5!YD_2%U|5puOHNpb!mO=2QHOu-k& z1zE0HbW^St+C9B-Pg3IK-u1ZJ>-!Fdj-2_RonW^DVUK0Z>RHCi>)5uXX{RP78mG|# z6(Y0J!`Fhee@Ni_r%tS@mFhmPw#+42!&(R1r7~3~T*=VTdYK@FfbXbdZ5a=5X4nfi zq#<1`<)06Z8g4N;mjA`q{o7NKC%59BepnGCU-|A>@le}CXkVpaLAyNylbMc)oN^j; zw5t-)7WB(_Hctui@1B8wkn1AcI$$}W&w5q6za1&pAOXeIZ*IM9WT>e>w<7zQ_bu*Z zF@tUaz+%}D>IcV7Q;^Qj^|YAkGTUMe|Cai#?bEG^C!I)i0A}Vqs~E6up%@U~@e2I| zzdh$4Wy$`}#E!Q7p3thc{r%isu1T~w=HuuDfw5Z;Xeteh&K4#^fdJO;4<`5gNnv*S zA1+&_5s(}zTu~cALfyOLgvHH{3Dwj>4bSv;7v;7fK~=laj(k34R^-_+t(}K`S1&u< z850;FI04f7s+YHMLRv5Wai<5EU1ZwcWT%?8yp4>#9^`Rr#_` zo9E$gvhVR%cn`Uv>Cf|G0{N|=+#_&9-Q(}(2jqKG@UAM|uI+jq3aABH+|@7MgtXw1 z;!`-MjAFumG?xL{#CRO`fV~SUBopha5K)zwMq7I;ORCUQ>g?16S+Bgjva=d%v5att zyl^3R0d`5~{%DcpjaRLfYOAnVINwbOsMZM+?GXXI_2nnn-O8WYsEiA@9!fvlt^rz7m>1EYaL?h453C>2v@Qu_5wGshVO~RV)DH+*_gReo}z=KB!1*F!w7u?%lnRWjd zd*pD(;^E7_TWJNpttmTe&Pa*u+b+x&VXAeqcL!^BR!fmG)rbbv#jrmPcCWPU+q6WH z&pxx?v)JqQt7o?oO;1Yp^(0p;4joa{QV6uYHS`d)T6mliSvW{Ey>Usy!q_sx!W zdu3F*P1KaGcd)rY`Bc)F6wgXQZ2G}5d)5&FNYfg|DbcyCbyN1+e6ipPMU0lMiBHNq zbBaLij3E((GWd_c2L6rT4H4c0djeRmZwbrfF zyzVwoDv#zUSTjruQHrUytEMyb+H5&Zk5mH!)^XBf?n+nAV+iD(4nM@Q!hJBTlS2b( zm^#yHnO6ZF^vzI_^YfX3wC0z)AIh_89=>ogj-D!)^ZeGBlakP=XR+J(`2H1~@h{)E zvhIynvBTin(a7GD*A@MqSKlcruAJ+H^3SpI(fiqB80tmX-Hn!dxafD-9+i$wP!M8Z zb*_E;jABvgtr~oJSt-6UQAw}n^Xu++b<$FD?kA3_i85@Wjuh&A#SvP47ok_Q z)-(Owid`8p|2*o5(9gb#zjZ325eF4~p+$x<(++yyPLEaSXRrka9_EfNiJelg5)CcT z5>eH!jEtuhg-Y^eBfp|~WzxroC$-)TO}*K@^D;=j$rXos!MWa2qe(L1Y{2pB4wfL< z3ibFL5R%}@tr}_bn&lRD3UqW%G;nfq3KV(zG*U9rWbZqyvaJkCdIgyIP1QlFGU$8q z*W0FWQz_+msKOB)Cs+F@_#Bv8gbx_{0Wc3uQu|0ms(JjLuS~g0=m1T|zB1mF8r~2e z(Z3NMQ6}>4VE5~V(oq8w+m}x^^9f{a@GN|_(EZ$W#ZY{L#{aW97FZZx{SYiQgq4*+ zb=u=QD(tDuT0eY;ZjRg$8G4Q^$OB&TWc01*7_efQD6pW0)Y)A8fb^4pca@^pG{%u$ zKemq=TU_(v3;vErHpW$<(AOtrP4>d&h#W%MuC5YU|67tu$6-KO#x6HVp_MqjRz;AH z>Gt;uB6LX-w$?ag>j_v0{Co?ZgzaVfR4{{#`c(hR1}G$wG-sHX{6$E`_SUh+4UU~S zkZ!o|IkV=V1hfTtqitTxix<&K?BCNah^=jpHy{)B`$6zq0BSen))A-&A86wx$UV7RLw}TZFhP5FK9rYu$mOzAXGtK> zMa;8BV+PlAZD%hMZR~Sj=x_LF#Kky2?eM7njH|f$dH##1xLD|Z4?F-SMByURQIH2|L-JfZkAZx;wdJM?0BfFtN4eVpR{OOtO1OUT2i%VRODg zr$4yzF2{9=TaVtKvLNiO7NeEaA$Fl$*Boai5^`4`nHk=jmUs1tV+ zy7ph&T=5BAbq2n-3vtLQ)YYPZ##g9_JW_Ge!Ll?}E-GC8C~NdtF0xRj=ygbwf?A>J z{W{&4ko$Sha$J_Z6)~9|saa#gYjMKm#qcrsx!P^PTS2fK3P)na0w&D+DIV2gktRbiU>sx0nuYn7yNqo@M)L}pufg84JQ#;v6{~8{`)x&!44#xdnMERN*Z0ikK&;a;Tju< z^S@Pc{9^Xg>&b%YZm$+3G_Htz5bOj!B5=$jH4VU*{%XjdH`U_0QG+?LZ z_Yxr1zvT3Qoz!-Q6c-B$yeJr3P zO|14^`fs=~Z#B%0(jeoHPR;`gvDJ}E27$#0`?EFslupE1KiyZz(Qt75uE9ak8PLGu zr~Il?FcS2HaDS$TmFgRfUmUN93v$o;!~Cq$g&6fhMPh7#7B7Z#uD>C;;FDCMV`8GBG*jX zsX`N}@?=-R4EZD5_0M-6PC2+KV^ao)@>k1;0v9>qWa1|E$g+00IlkZ5U1-hhe$cJN zPwvB?+br^*`9rWv)jJaVnQ|+ z44`cR6X7S*qPVdaWQR)fe{j$?Sf0=0p&07{<_0iEcRRq2%M0CI=VY=0VD28M11Dn> zh`;>u3Z~($&PhyXJow*C_)jx47b}2iyzzxF-KWUhj$uB*G;)4~Pp_hwTrlQqCWzL< zZv=aR5;W`whnyy;0RtQK=i4IKx#X}Vgg|*&=Ot!b8O((S_CcL9z)BTj#xMSSKVGib5e_)B|O<#N%{FK=91EnpP|Kst1f*X%#+w1Zk=ZdLi_EENi(F947 zW&YLW|Mt>nI{R?&^-eY?dQ7yuh^*G#E{{c~LYIS>B1 zKK@^|2V4G8cDjNa6PI-WT4lHeD^^n5kXDvM3h}t6K>4ZgkbDFF&&MtpiB9cn5Zcpv zyW-%XFB-*!U-{RYC@LW90Q3+`2AG+`EsKoZuCNWqlAnl_Uxg<*fI`frKle`lzkU2) z(5rbXf?r2E_(C7tH3+vE5}Nx^8B&fVrJwS1EgMyu1s%DOh3`eKWWSG)-Msanpk#{2 z9j;V{1RZ#G+2P}OHvbUzC-mb5ruAGk@F{LhgW#kmE61S+sPnKA7yAUhKnL=Re3IZvUpO_c83vOc{nj1qp^%8hA z?tfF~8HANuv39|?5vW-}diq})r4Pxm!(jJ`keM5Xnf^EZAi4oX@MrO(4#kuyga1pP z`CsmL;9t~({?h%alHmLVpa!uWaIW2|Ae1NB%Dtsd#X}pyw!#qd$PcXV79CPM&}oB|(53=v5kOeqYn zFI2`7)f!wGzVDt_Qu(IpUaN__x4Wh!eOZDx?MTA@&AX4EIkkE@+UA75VPQ@a;n!h< z{W@Ybc~NIU6YAey;BRAr{1-uw-(DCfXa4#SD?d0QVS7~&p$J~z4#9w=i{XaUwXk`a zK2@#3Ge=zAcezWx+w&|@P#}ZDu!SRSiSRX=&814c$>usq;z2q<$`ebHnVckYDN^k!66DXJw8*$>%l z@cor>^@Epow6I`w3szRJJ590Cawv1^!T2emIs4v&JvoL7Q}@TDll!F-x7izOM})QNo}haO^whteC_HW-suw{I{Smeymw)uwB+qWeH%l^N1^Ao zBz`_E0MyQ#qiKpjtUE$m{k1FlV5e`iPt}{=(&6_D^NZP@$%#j9N=fSP4>La_fI$q5 za3=qyC-;Jjv$deh^c&DgvSNg|Mjz%4Q-WlyM(9Ja+f_RTuiI^A+sQ7eU#dT%)2Dh= zf3J7?JDYO4an;ciUcqliNWTr{Z!7J+A~&Yah2RVq7=Z*Z^^Rou-7Vx>GwvjNM5Dtt z+V*=n$Zk!P9==!cb#`gU+?uE2XQO+GA7C$Ef%b}G!7F~NeIeiDZml>FfaQ3=h!^@R zbBUgIWETxJAO9z-2yhpFHi%$%lYw9iOHBO&)I$@i!%&NAj|CX81xI@=3B$Eg)HOOf znjA89X3EuH{AS22)g{n;@b-aIE^+TBZ3hX7Wj{Dnc+W4NDo!Q7&HT-B{D-W3@F3X? zlzl&R@GyNrcYBq7raLZRg0u+ITRX*50oKJqVqn-{chvXpPdBftTsL}i2roFR{OEL+ zBieS(iEZrvy^?+)6ZgFq<+%La7xAn4i~nV4>@o9`j0?~fdL?9%2hEZ4qg4 zPQ*;fderMHSDTLR*H)HwBnm{mJEY-wxyk>^i)`6iYdIweDXD;}zhrW^)Dibr^MgK^ z;)kg%;mqqKcmKvL-b9TuAmr3{t+KXD{KAv|SphGq(9l=DZ8EMcMze1IhDBM0oyFyU z(N-g;5uu<4gyCjlSVe$BpZdXJ4{bX71>}qoN+vG~S~ul4fVvIuSfvrs$^U&-)Ks8A z{YUc9*tM9p#7&aiAUU$O?o!Nj3L7Y?>2!h=G) z?l0SGh#*7RTOJjC9PcCkS>NZV}Z>B(sH_uk{XAj)L zIksu^#2PDHC7z`;*tzLyt`Vp||hdh)wB% zToKPmr}v5nw0b?n$!d(UQrktOYwXNZlWJ!>90Drc_-sv;Rt=5h16}2CsvdYmGLYAr zW(r9(BFeE$vDFE9Jc7q31Vs;_>9sT#9uS>H?1HiYJvr};N38PL8J?220WqGBESPT! zB=2&p5+OPN2pv$^{K+!DR%LHohdF>&hSD1mrJV69AzQ3y@MvG8@gVb%tGD}YXLjrP zqVcfC_ZPP8$H*M3+AoJ2P77!9@zQViVs5@ib6_8CxZ~?xP&vI{!d(j-hDz7Y52plr zJb&uplyuPXTXH1VvqXVSa|E#;9L})K>~74qRkLukHnldHjN3M+_WaADQLn`E4IjHd z98ZoU9^(3Rc+dCQ*RNl161CYo{mshswjU}$U*+-hHM~l;ykNHp>TSEAxsiCcrJJhY zz~JMI3d!=S`>D2S0|qbG7s=QN@nfvJ@bOAS33x!@TR?MU;i%gEOcb?{Iy<|LZz#~y=1aH8!E+Y${ zn*^!H7u8hD3TJ1U(ESh7`^F#UA?L&bFk0#G*g5uPrJ^ z^Rcs`(NePJo2ff0)8@)y(Jv&#^@=FvX$n!7FBOUcd`BLoX8pQs+q87gy8SFVfN8^e z#+D5L%V|8R@&a72R>q}^d8OwNLU_crRWRhN2|k2Ih#Aave2+mSD+hU#n2crLt*l9k-qNgSM4=&U)*lF z?(d!+uWC6Gf1>y>Iy_J^VHG>y#Mm2roE3*{>;dW$ZLW8)v5H~2WFChf9G9#6RYN?+ zHw!MHaE@tH?p5h-)ekMIk~ylJdt!||Ud#=B`ci_o%=Iu{F;e%kBvikCo$f42lFTu5 zV`WOAqb_BPqy?2vxRgCFEnY;z_`zd#V@p}n^}sKcnT)ST@UY5J`$3Ob3jV=L8&WP% zq4-w0lKz_B^++3Q|1JB)4jcHXAKWH+51|CUDyP5%N#U(Spk7ZyFlDGZ*a;I}61;`D z>1s=k0oiQ(?3hT33DT%+6TRi7?eHgQn&7wC!`YTWP4>h01UE=D3|$bh8@iiMSnXA)g{uovVOE zE@*f)$u0C$Q}V0Vg3@mgf_R+|JibC`Y5zQI&tH0Dba=8Ru_pc_oHtmP=Fb%HXYZte z1;zz^qG`3j_L}C8S5zC2Fg%b^OJikNe0G3eYiqr}MXCuNh}9>a(HZ0!@k+eD_1d>? zNSGc)TVl6isbG2!E;o$H(_|XJrI;@747IIZe-}=ismz@hLhXvYzHRARPE|pY2p;S+s zwj;YKQ!0AQW+jhhojYG?C??<9I3f=2jM>bT>kZ~A8YhM+503^I$*M*(+|M?YoF0Cj zGH@}nA>-dwU>LqtYU!)N9dpzBs@x4ozkcs$$_c+%T_@st#DB;d*N7mwWoSIk3h zcC@uQ4jok^>b>e^wm_aFRTdUAUO~V=j1Tk02NsIFjshq};Ep@HotqXc{ zmpNI>MB4V{VwX_htu#mHia^QR-NuIweT`4wvV}uSH8fd(2$#Hpb;`B>#OymiR~zrH zSo%t@KW05-%%!}lpeI+%o!L8F-j8etqCIa>b+}0*9oZ^!%C02gecJH@937%@yWj5CdFyAH?=flBN;Q@cf zp*4e*S=l;=&~0m$)U%{aGm=c>0jo15R6i_g2YA4R0pqOgDSn9;^GtMIguh|rNB8Q6 zFn%^F__-P3cG`@7b*bf}Nk1U9Q4kEjiTVwzxH1MWcbosTBqJ`KXLg2-coGqelW47% z9W32sgZW?Vy$4iN-MTg!D+(%#bd;!oGyz4LfW$@<0qLEn2nZM=AVmm?m5xaN1R>I- z6M;bJkuD%2U1~^Z(i3Wc5dY~pd*8c1_c>?pbN~O2bMCljIM#@34aQn4D|5cT?H?!R{%`1dB zOYupHAc;cLoU%MONZ#t*XVo)|1 zr7p?#s1sk<+I6(jd>M|{WNS}LB)HbnybdL}Aco5`R_+-Fg0s(Im%FB?=ahS@*Wn4`!iT*r;bQuaddq$+z5i z`>#FV&G~GcU4DFVrEy?bfAD28nqu{3*u%t7C&AEiyY=RF$pYsjU$v2ScB75T+0-R2 zhYZ2{xU`a_QvHFlQE_?4FFkk{WxuRb@P)0e9?ypg8qI(wP2HACB3M zt5nxYnh~5HH0T{Xetli#$C5lkO`Jk-*t{RuF5%66`r|V-P>*}=iyp9*rXSokK*`f} zfJqp1y^N~ZL^|s8hn179Tsb{5XSU`jEn~Gv``pLNAzv#DEl(v6a=mVqjMZ%`PZ2X` zzHJ6yGlec9pPY@%c2ZNKol|ZOz@bh{&?CUAdaV(Ez+Q}Lr z$a${pF*yBf1V~MG1Dkr3*B~sU%7D^wuu;wu6z;-M$O4~2yo`$DAM3$6w$>u}JfSQ0 z!6xfruC=Fn#Wm#ZF1c{IY;+k$O?p=kdUCB2w=kcGDCn$eTWk9mnirfv(Sx!t$a8b6nN`qj42yYFCBQ{Zn2R)f#fPN8&Y5iigxPVp7`p{qz9dMU8_m3*}BCfS_* zX=9~LBrpAI`zgZx;J%}(#UWcpOt#*i5HXLP6ym%A=uP|*FO>T$Eb#I zYQVNPg}~rg8G|*m5Af6zccV($^*83`bq3 zOzrPoKdK)Lr{01+$8b+lrA7&4gsJ{flsw*w{fJLOMsb7~tD^D)msa$ahmzefqeg)eh{rMfuLsqP`_Gk}efQ)}TCY)<*@m^_m-!`X zi;c=`LHCqi+X`l#L~jPd7qw?GW6|g7-pyD}xzHtU`Vi%zAm=xRn@et6fwLedb#2&C zCo~aozf6-CFCNO0KB=owkmi^_pPuMmO;SmUiL2<0v9o+P0jzClT_l0nE^R40`!@U&!_Z>KT4*6= zer?;9;R1wPTWGnpqpIDjWou%Ofh-PvYTAb0Pl0j_(x>&RUyHj^luv9quA`Hb4vWUb zMM+%IzS8Xcxf~GeWYlEP-+x)1aSoAfBZ1GdLVVVP><`z+xL-7ytrya5H(DyGGRD<2mg23( zl!}&{iIsD$6C+zA9}0#L`2u(&Oa!S2!{B^Dfibuwn_wT8YN71(rDjW>V1^i><`jL% zJKe=h!8f`wt*|77ZN~1=7ecrokaivJH{iJV!bZOiDF7D6R5SK)YzffJDzN_H8}Srn z;5`OEkU?w;_xt2DcH`-AMm1^OE7nfcHzrE!P?XM-)1!9F;|D@6Y&mUT0wSf%{md4a zAj*xVLMAcG(EHM@NsSnSa3RdO-^b0bseQ zvVMnZ8%;~I1jH8Fb=~g1p$7hf5UY91u-PwrTPk?1exay=!YcHdbA*6TRuFyEN(LGR-8!2+hmKAZ{NP1 zaPV>v2^LPE>2qLeg=_ZvM33XbYR;Yw9!Ib=LyuMw=~`?0M^NfC!KZ_tZWyb_sR+>R zB)G1y;bn}%qHe9g3j7^)+E5L7Q|1AV=K|VXZjPP#8P|H+l2{og2=zt0G)P&g0O2oD? z>K^^{wj;V8E!(-ebdqt2j@edsHku&_^3r&ks=X#ps0@Wl#L_*V2G?!{RExu% z97}J9*gy75TTS5|OnFtM*;!ow-rhT)_}u|{oOZO@tz$%K{%eeu3#(b@bsC*yUT z|M94shgBXsFMCz5nfB1Z((vH665VT?$rilrp?x-Oyb;7F$%X`xKI|lY+%m}eqEvUJ zFZVp#>fS>l)9*rL-|rKK^6Y#hK3w8L+3tkE9k*ia6+2pW3>=EPc7 zMvsh@@vEuQB5H$dBwF|E{efI<|8jfId{3g*424jcW>zGhH zv*TNp;@$o6nO0A5G6M_baJyi|az{i~j%-6=leTEW3j77>qf8zAsR!eBd>#5Yvn6_5 zBSkHDTxciz32eRb3+3uLZ1vl!q&f>Vb1$)xPrSTCauKCI*j&GwuH#|87Oe(u)uq~J z@zuBw^W(Kmw=)7?VV=}Iim4dUI37y!niQ)>_}R=xZbpK6ozRCC1sU*Or-=2Me)J`j zH$8Y9x0f#2*smbS*wP{UstH)=(a(D~z#j@#oOcBbr?+lqFTu)a5j%hBI%YcLFV z0QNo>0Au+HdAJ}tuGz2yANMMx1bIr`ajuc9s-iAdo*Wq&zUY*nDn}gXyizzOF;siJ z>E1rR1AEaO=r$n0VOCH2-ZrL@NCgINfkySCES+Dbx^?{8LMJ0SVkhHety_e{_$E98 z?(Khc{=8(HswlW&@11vyAsgio7s!`0TiRZvBM|uVi@#Z(zb}py+P6fT{~fQ^De#qW^Rq!;Zqf5|r-w zTA2F)GgOi2UoiJ20Df^{|Jbl-$6ifmt=wfhUSUCgw-_fSsgp@n*gg>hm8A^D7XKwr zYGsnK?q$z0!Ipk{hjdkATVy*3wZZQ58wW-Vq1G1n3L)LPb%Iyf^Ypc&c}v1k$jVaO6llT7(|ej4A_n=(w&%Z= zGFdR)0OKq<%mc41Bv3WOLo8Qz;SM8;d25zbxzb4UO4jQ;;Qj@;ZlK;VnkJ)_Qf z(`IDIIrX)+@amqvGAEcbGT{8@Re2g87q?ayJQ$a`| zFa?QJ0uA^Xo1m`oACDo>gAkBQhXb!Up-(XSZA%Od%)}ff516o8RCXpOHh%ZBSAGpObSMygi?DkY#_>{ z`+%1-E1N#^lIFUtA`{gC`W!G5(4k8h2B6L}_d!k;!+NX90Xxf`gr!Ab!i ze-o4|7_6`<*l)2b=C|kvzU*N$Dv=qY2~fNDcu-o7`TOrO;6vJ6fid<0xjoFo$)AuF zCKNDQzF_`g2)xMT$B{8RoDmSfS-3iFGh4de z1+qa)l*i{|1+Iq!Vg3rw{h zdO&b;=(cs?7}Az3sk#_-43Q4mbsp*`{NhsqXtxZ+EGyE19#0`=rl{#D`$EJC%(qIi zK0~Ykw#gdt=iRE@@dyT|z%BZvaeZzlWlTLbm~=EBeRA;nlkvkwb$u16z8YTbd)rsE z?aHbGC=>%^@SvoUtMIWZjP$fR(({}AkUr-FQ_DE4?1=g7d68ax>yZIF&qH|^zp}o0 zvX;RoF4>$p=jXrf<)@-zTPx$aOq@fu&h8Z8%E1VK2qcnTk$^;!y4$~K68?GLq_^`H z5J0hOhOSD}0ojvPGJ<(6?YI43eL&;=O`}3xRXV8_bNqtA2t>Y3bwayio{opGUg?V7 zL58=bvltuVkH6JA?U58Uq?tZGarnHap`frEwUlS5{e(pyFp`KIoL;@hY5? z7;YN%}fH{~7EsL;^KxF10++BPif&97lUY^a$`PBSRumFAy!Z56>>*(dQ0sfw^? zWn8BJp}HsACyOpSMBy2DyiT33zz*`a8{Mf=e%{cZgW&cmK8nxK!brtkU-cKp?UM(n zzwpAue0OnQ`{e}j8EG>jgPSPVpL0q7&!gnGK~qs7zN;1U=O4@Xw|(&AT{+S5f^ioh z0}{P*{&qUutJ_IxU4t~sj@y1^liJCTA#nj`(s|kM9k|>6xVQBINQJCb)qnLug8+F` zp8v~Ewwl@ivyBAqGDOw;iJe03&NHW)Zrx|=?YXvEZCv^991m}|EDDEkjWN289KMyF zTK@KSXiSXh{H*E|3Wk0S#h&kCt2sz4I_Fru>^;ANDjQf|tZnidS5oS@ZUG+>R07;& z?>a2q0Eqr^nbIpgJfCbU)01819?UP<1AmrbtMnT8+S8@(pP_7Jdm<|ze7*Rri@@+6 z4;LlJKbMc-aOwXx;|mR(cjze*XbA=i6y)&qIE`i{V^h(Suau*VyFHvlDrYj2`&P~- z&01Vl7;PP#o2+JpVgJMDTh%@0z0i-OVJK>W4%>_5q zIEjCDIBBxY>Pxnq`x8Z%y%{=p55B&VykJb}16YQiMSl0PZ#17c3eZ-l{he#3erYkx z@3iI}wi-@Ao(>rYF*@t_1G%}Wk(%N=h2s%hJScJSF5_wjd9uOp2h7aWAs)=#G{i+ zD|Y7xjFWMJf<56f%G<@zd_QX|O#MhexM-L3oJrW$;yGZu$Bnhn2i0TPQgwKYLv|nX zHoK;SySL!Q{u03$5exDe%+J_;u2qQKA2p|FT-7xxnKO@OD$Wea zuT8cuOeowI#ym*i)o@5weJi5AM^x3&y_Bi5)QJ|+kk~t1)gTW-#*R%>p*Vn zs?1OwrHx|tilH)2dV%3$9&aAk8BhPQ)f_bW&2@Ds_a{Uu{dGI`R?m_kpNMgEn{2Aa zeBz#^`=%SS{xUmoLP7RWv3~Z6!R0m5WDYT-+iWr6$5*qzgg~%dU={eAkoedA9Ohp7 zcsk=6J$oE?z`|niabEa* z(8Y;OcC)C|BkYyQp+ys}Kjd?@T?ch~D@A5UgOsi3iNBxp@2?_+xxf`jJJg-EcPZx* z{4Wy)&Jc6`o440rb}Mqk_Qd|<-ytXU>F+1XrUy2wouj^f=AY{&s&|Fs6f{k(vGGxt_E#m=!Pr#wX}g=2=dMzx zs`H1O#ssn-%5A#Zm3|gR-Z$iVs;@N0Z@hvMp6yBhK=eu-svuMiS}yoC{@{|ezAx5Q zFt%XOqHeLGxR39$Vo7>}zvuj&PTP`g2NX*uC}bl;6)KK|x@Fr~w5Jb}ib+}#r=m(?-RxGWdq8<%d6L$b&dTyuCbqaXeXBm z9d_E_uxjxxur$}fk7*xT&XW~i+h@&Gx}4iKSF;lfoA`kSw1@BAA22i4Ca>KNbnLP` zZl=eBx8l^4ZEK+C2oVsKV0l^D#vdX9$t4`t%j{()@np1}vHArN3Z?ugq| zmWd#(pXh?EwmI5%{~Lr(h+M>`R(ud<{@n~_%cI9-(4`Uo+mQ#50wXes5zYkuB_HSE zTMr8h3VzQF)hy`VxcQD3vlBQ6Y=_Kn^F-wn|S&}w|6+0RE7~KjHh&!ioTGrC$ zJ+iXmpz(>^T?-hho<6JdDCmoQ?vFa$={cEj*+rXrB+v<66elY@b9Z+cVtC^Gsp)t9 z>cFk*8eNyx)|>$U<<>Q_|gL25ShwD(2cxh`#xRY}4uF2ZLI5pTCTW^WM{% zn5yQ$ztR>{YRk!h#)`FyZ?)*ywtLpRa=Dor<7M43t!BEz;pVlNFgO@vpziR?ppr%W zcX66%Os$q@<%suKay+$OBPpf7Mq$pB$r_&OV3CjC+|bS$PO&vf?Y>ua-(xvg^}X*? ze@BWacvyRWJuKqZ!ns~N&%>04Gy({gBWX}D{03ywVm!(jFM9O_ATg}Pqv@@DcR*i0S*LKe)ub{dw$h~Ovts6~xj2IPP zH``DnJqgYp-_a#PJ(vB4qQ7DZzOu7rDDolB6|`fQ)Oh>JMXGa}aQurXQUZ(-&wdQ^ zolOTs$Z(A+@AY@ablSEJa3wS?E9*k3T%fe3)U#qB=6k=T? z?_*#B#rl$$taYn5LLx^~8wj#4tyngVB*bPc6K=S+{>ev`4EdnXD<~YMmx1RTmbK;1I#tJ?ovkt1pcZa_5aqI;ulgDrcq(if|M_YA2Z>0$M; zHa)CprC)lKjhv0;lGj%Cxe6e^W0CL*v>u+wtS4>?FrI+y=R0wAz|NdUjfeh;#NWtJ zQ>ME>>#>*2e;~)K`ue`unjaz#UN<|sC~N=1KX8|pO?vn==J!DIDy{6YNkk}S?7d}w zEe0fYJSo&9a0z~t$ViF*-q-1LyEWPA=&+4U@(Bdt z-O0>R*uA9#3`?qhtx_KPqEGZqK%_fhL_;I1zk5JpIad5$+r3cI}FJ7m=d&XU)MrTHv!) zc#!Y;Zq(JZ8Q-a7!qJgXn`>PvSvS757GFQxywAH?LMYcx;&a~lEAkxS!>D)g;qD#Q zOf?G+=n;lRJS7&lFhn)0CF1o%tJtzp7kbvN=J~)3sevzD@w_Ga+=IeVRx=feHqMGQ zh6f14RzU;kPPu)2(QU^%R`kPF#mC`6BsR4O=#x7iP#SS)7=7*itR-@Nt^akE-x&08xcC~N5Nobh zJ6MHEBKqPt90tizO?M(r6rPh_$=%$g9nUpMWWn6uCh?)aK}*;_CCMUR2p*&fqjym| zLIAHrnia2eX* z>m8&jK-Trpr#)||SSw9Qw;H*g9~5hP;qmL2ddEzzZ9Xe~1+m**-o9tugo>#}vW|$> zLHDCB&=C}|$JuiEXSe$6&WBnZNN_AWrpk?bxNNn#tong7;r!S6fkWB_zK4Pa^=(I@DBhC5H0V)PH= zS33(-bu;LQ`Ew;t&ZW6*>o^tU51QM(!~GFismXWWkSj#|)R^5M(OzbtQhz5-?WiU> zSEs2LiIW#t@V4w3l@Tei(c7BR$*qi#@p$6geRErAcyD0PqsEOq88l?PjuF0$@)ypuv9cMuNYLkKK%i_t+i>^{VHv@%Sms z33@M3Czd1DvbTUx3(tT?VJ%UI1ozWfws~xAeYP;%AkX2GwjAW7F4wO278aw9Z!^y1 zYMEb{cCWbODU?UcL+_zei7aZu50>(5e2{hgBiNT!nxa95u+k@5oh4O-b1$3PS`Ka2 zu0WJ(_lzI*Zrmb-NX_5vS<}@t2-G2P#{oI=6{&QgbhiM}dq-N!c1JZgRusg)hdU`$ zB&Q%VW&;$ei$lm=qw`JPrz3X_ZtDv@Qc?|}S5%1`dL~~Sk~cMq#k*UYzTVoInv^H`I>k(rREsJQQKH1QSqCUY^yG z-yb#_sC+k+Wu9mUo86d~eDiLBojAoJs29z+i5!p_>qc=SkI9D}w~;QAyJl(M!`S&= z!PXJ`Tx$j9jW1Ya?f+7W1uZq_+=KrfprC>_&s}0 zJkA5J4Fj5D{kBe#7JJ5p4ACDHXTOCn*Z<(?%r8TpCyROO+%d|F5*v?>cu84_TJ+GCjd#6Em{{HE)=>ymxtY~4Q= zLnHiE4DHe~a+4SE8ctwV)6x9~>RgO#n3U#F6cBLv4{YK8i`vHA7RIp0W^6_JmgM|B zZj_ex6?D;3syZjjqeQKI?wnE{ZaQ%0D0=a#Xtd2MAY%59m9Rky^Jkg$-z36qZ2rm9 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%0Dafa{L?r$ovj|9~~0Lwtok#L({t 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

5Bgy>>CHU?q5hw>iHij~VW!8VSY9jb77{ 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 (m3dhS{C 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 From e093d60539e734d2f2eb25a87147195c31b3899f Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 16 May 2018 05:13:43 -0300 Subject: [PATCH 369/435] Update user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index ff9a80092..4a7722025 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -293,7 +293,7 @@ #define USE_SERIAL_BRIDGE // Add support for software Serial Bridge (+0k8 code) //#define USE_SDM120 // Add support for Eastron SDM120-Modbus energy meter (+1k7 code) #define SDM120_SPEED 9600 // SDM120-Modbus RS485 serial speed (default: 2400 baud) -#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) +//#define USE_SDM630 // Add support for Eastron SDM630-Modbus energy meter (+2k code) #define SDM630_SPEED 9600 // SDM630-Modbus RS485 serial speed (default: 9600 baud) // -- Low level interface devices ----------------- From 0fe052b7da221c6518bb9df19c7c0a89304afe78 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 16 May 2018 15:07:57 -0300 Subject: [PATCH 370/435] Update platformio.ini --- platformio.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/platformio.ini b/platformio.ini index 798848017..a8a4421e5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -100,7 +100,7 @@ board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -monitor_speed = ${common.monitor_baud} +monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} @@ -112,7 +112,7 @@ board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -monitor_speed = ${common.monitor_baud} +monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} upload_port = ${common.upload_port} @@ -125,7 +125,7 @@ board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -monitor_speed = ${common.monitor_baud} +monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} upload_port = ${common.upload_port} @@ -138,7 +138,7 @@ board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL -monitor_speed = ${common.monitor_baud} +monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} From 629854bae096ea5273bf604b4c6ca1fe750e4c87 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 00:21:35 -0300 Subject: [PATCH 371/435] Update platformio.ini --- platformio.ini | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platformio.ini b/platformio.ini index a8a4421e5..dfd1dc41d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -99,7 +99,7 @@ framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} @@ -111,7 +111,7 @@ framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} +build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -124,7 +124,7 @@ framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} From 1a44bfec5213cb40096ff14a8639c147e28538f6 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 00:22:24 -0300 Subject: [PATCH 372/435] Update user_config.h --- sonoff/user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 4a7722025..5a4f077e2 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -48,7 +48,7 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter -#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) +//#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) From c91ffb2a8663f9fccad628d18ce5b39776043eb8 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 02:04:14 -0300 Subject: [PATCH 373/435] Update README.md --- README.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 0376be29c..4eaf2253c 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Log Info - [x] Complete all the language files with keys - [x] Add support for other output devices supported by Tasmota -- [ ] Add options for increase communication reliability (re send telegrams, check for ack) +- [x] Add options for increase communication reliability (re send telegrams) - [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) - [ ] Add option to support KNX Snooping to debug KNX Network - [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNX-IP Tunneling @@ -125,15 +125,15 @@ We can configure to send the value of temperature or humidity every teleperiod. ## Modifications to Sonoff-Tasmota ## -* Adding the file _/sonoff/xdrv_11_KNX.ino_ -* Add the entry `#define USE_KNX` on _/sonoff/user_config.h_ -* Add entries to the file _/sonoff/webserver.ino_ -* Add entries to the file _/sonoff/sonoff.ino_ -* Add entries to the file _/sonoff/sonoff.h_ -* Add entries to the file _/sonoff/settings.h_ -* Add entries to the file _/sonoff/support.ino_ -* Add entries to sensor files -* Add entries to language files +* Added the file _/sonoff/xdrv_11_KNX.ino_ +* Added the entry `#define USE_KNX` on _/sonoff/user_config.h_ +* Added entries to the file _/sonoff/webserver.ino_ +* Added entries to the file _/sonoff/sonoff.ino_ +* Added entries to the file _/sonoff/sonoff.h_ +* Added entries to the file _/sonoff/settings.h_ +* Added entries to the file _/sonoff/support.ino_ +* Added entries to sensor files +* Added entries to language files Up to now, enabling KNX uses +23k of code and +3k3 of memory. From 0d64b6caba9c59e15d4d2c9e58bfdd8ba1f7d322 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 02:11:05 -0300 Subject: [PATCH 374/435] Update --- COPYFILES.BAT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/COPYFILES.BAT b/COPYFILES.BAT index 77f04555e..c34441eef 100644 --- a/COPYFILES.BAT +++ b/COPYFILES.BAT @@ -6,7 +6,7 @@ echo Copying Firmwares for Release echo: echo *************************************************************** -cd %systemdrive%\users\%username%\Desktop\Sonoff-Tasmota-development\.pioenvs +cd %USERPROFILE%\Documents\GitHub\Sonoff-Tasmota_KNX\.pioenvs copy sonoff-BG\firmware.bin sonoff_KNX-BG.bin copy sonoff-BR\firmware.bin sonoff_KNX-BR.bin From d31c960124c1de2a2d008d9e6e113634de326b33 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 02:28:36 -0300 Subject: [PATCH 375/435] Update platformio.ini --- platformio.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index dfd1dc41d..88a85c9c0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -210,7 +210,7 @@ board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -monitor_baud = ${common.monitor_baud} +monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} upload_port = ${common.upload_port} From f7a93142eef705df87e6deca84bdaf1523cc0fd7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 03:06:47 -0300 Subject: [PATCH 376/435] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4eaf2253c..fe32fdd87 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ So, for example, if 2 devices that are configured with the **2 / 2 / 1** for tur Several home automation systems have KNX support. For example, [Home Assistant](https://github.com/home-assistant/home-assistant) has a [XKNX Python Library](https://github.com/XKNX/xknx) to connect to KNX devices using a KNX Router. If you don't have a **KNX Router**, you can use a **Software KNX Router** like [KNXd](https://github.com/knxd/knxd) on the same Raspberry Pi than Home Assistant. KNXd is used by Home Assistant for reading this UDP Multicast, although KNXd has other cool features that need extra hardware like connect to KNX devices by Twister Pair, Power Line or RF. -If you use the ETS (KNX Configurator Software) you can add any Sonoff Tasmota KNX as a dummy device. +If you use the ETS (KNX Configurator Software) you can add any Sonoff-Tasmota_KNX as a dummy device. ## Requirement ## @@ -116,10 +116,12 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Add Log Info - [x] Complete all the language files with keys - [x] Add support for other output devices supported by Tasmota +- [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) - [x] Add options for increase communication reliability (re send telegrams) -- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok) +- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) - [ ] Add option to support KNX Snooping to debug KNX Network -- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNX-IP Tunneling +- [ ] Add option for KNXnet/IP Tunneling +- [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling - [ ] Add option to support ETS Programming - [ ] Optimize code to reduce Flash and RAM From aa86943c9292a02c0d0ab36f87abf0cb1955b72b Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 17 May 2018 04:16:21 -0300 Subject: [PATCH 377/435] Update platformio.ini --- platformio.ini | 1 - 1 file changed, 1 deletion(-) diff --git a/platformio.ini b/platformio.ini index 88a85c9c0..cbd7949c3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -77,7 +77,6 @@ monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU upload_speed = 115200 -;upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 From f3e9df7c99a148563b5f45359095f341341a7746 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 18 May 2018 10:31:32 -0300 Subject: [PATCH 378/435] Update platformio.ini --- platformio.ini | 103 +++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 59 deletions(-) diff --git a/platformio.ini b/platformio.ini index cbd7949c3..90b89cb9c 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff-DE_4MB -;env_default = sonoff-EN_4MB -;env_default = sonoff-ES_4MB +env_default = sonoff ;env_default = sonoff-minimal +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE -;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -55,19 +55,7 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION - -build_flags_4MB = - -Wl,-Tesp8266.flash.4m1m.ld - -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -76,12 +64,11 @@ extra_scripts = pio/strip-floats.py monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_speed = 115200 +;upload_speed = 115200 +upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 -;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash - ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -92,38 +79,13 @@ upload_port = COM5 ; ********************************************************************* -[env:sonoff-DE_4MB] +[env:sonoff] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-EN_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-ES_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS +build_flags = ${common.build_flags} monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -142,6 +104,42 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-classic] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_CLASSIC +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-knx] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-allsensors] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_ALL_SENSORS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -202,19 +200,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-EN] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} From a3ff1d05a9c8f992d09c8b275be8f7ede3cd3c38 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 18 May 2018 10:33:29 -0300 Subject: [PATCH 379/435] Update platformio.ini --- platformio.ini | 103 ++++++++++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 44 deletions(-) diff --git a/platformio.ini b/platformio.ini index 90b89cb9c..cbd7949c3 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -env_default = sonoff +;env_default = sonoff-DE_4MB +;env_default = sonoff-EN_4MB +;env_default = sonoff-ES_4MB ;env_default = sonoff-minimal -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE +;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -55,7 +55,19 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION + +build_flags_4MB = + -Wl,-Tesp8266.flash.4m1m.ld + -DVTABLES_IN_FLASH + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -64,11 +76,12 @@ extra_scripts = pio/strip-floats.py monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -;upload_speed = 115200 -upload_speed = 512000 +upload_speed = 115200 upload_resetmethod = nodemcu upload_port = COM5 +;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash + ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -79,13 +92,38 @@ upload_port = COM5 ; ********************************************************************* -[env:sonoff] +[env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_flash_mode = ${common.board_flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-EN_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-ES_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -104,42 +142,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-classic] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_CLASSIC -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-knx] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-allsensors] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_ALL_SENSORS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -200,6 +202,19 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-EN] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_flash_mode = ${common.board_flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} From 66720754817652221d8753aff5434e585466a3e8 Mon Sep 17 00:00:00 2001 From: ascillato Date: Fri, 18 May 2018 15:00:37 -0300 Subject: [PATCH 380/435] Added Optional Files Added Optional Files --- lib/ESPAsyncUDP-master/.travis.yml | 37 ++ lib/ESPAsyncUDP-master/README.md | 10 + .../AsyncUDPClient/AsyncUDPClient.ino | 51 +++ .../AsyncUDPMulticastServer.ino | 52 +++ .../AsyncUDPServer/AsyncUDPServer.ino | 50 ++ lib/ESPAsyncUDP-master/keywords.txt | 33 ++ lib/ESPAsyncUDP-master/library.json | 17 + lib/ESPAsyncUDP-master/library.properties | 9 + lib/ESPAsyncUDP-master/src/AsyncUDP.cpp | 427 ++++++++++++++++++ lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h | 130 ++++++ lib/ESPAsyncUDP-master/travis/common.sh | 23 + .../DPT.h | 2 +- .../LICENSE | 0 .../README.md | 0 .../esp-knx-ip-config.cpp | 0 .../esp-knx-ip-conversion.cpp | 0 .../esp-knx-ip-send.cpp | 18 +- .../esp-knx-ip-webserver.cpp | 0 .../esp-knx-ip.cpp | 28 +- .../esp-knx-ip.h | 38 +- .../environment-sensor/environment-sensor.ino | 0 .../examples/sonoff/sonoff.ino | 0 .../examples/static-config/static-config.ino | 0 .../keywords.txt | 0 .../library.properties | 2 +- lib/process-control-master/LICENSE | 201 +++++++++ lib/process-control-master/PID.cpp | 168 +++++++ lib/process-control-master/PID.h | 89 ++++ lib/process-control-master/README.md | 2 + lib/process-control-master/Timeprop.cpp | 94 ++++ lib/process-control-master/Timeprop.h | 85 ++++ sonoff/user_config.h | 167 ++++++- sonoff/xdrv_11_knx.ino | 13 +- sonoff/xdrv_91_timeprop.ino | 220 +++++++++ sonoff/xdrv_92_pid.ino | 374 +++++++++++++++ 35 files changed, 2323 insertions(+), 17 deletions(-) create mode 100644 lib/ESPAsyncUDP-master/.travis.yml create mode 100644 lib/ESPAsyncUDP-master/README.md create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino create mode 100644 lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino create mode 100644 lib/ESPAsyncUDP-master/keywords.txt create mode 100644 lib/ESPAsyncUDP-master/library.json create mode 100644 lib/ESPAsyncUDP-master/library.properties create mode 100644 lib/ESPAsyncUDP-master/src/AsyncUDP.cpp create mode 100644 lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h create mode 100644 lib/ESPAsyncUDP-master/travis/common.sh rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/DPT.h (99%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/LICENSE (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/README.md (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip-config.cpp (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip-conversion.cpp (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip-send.cpp (88%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip-webserver.cpp (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip.cpp (97%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/esp-knx-ip.h (93%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/examples/environment-sensor/environment-sensor.ino (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/examples/sonoff/sonoff.ino (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/examples/static-config/static-config.ino (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/keywords.txt (100%) rename lib/{esp-knx-ip-0.5.0 => esp-knx-ip-0.5.1}/library.properties (95%) create mode 100644 lib/process-control-master/LICENSE create mode 100644 lib/process-control-master/PID.cpp create mode 100644 lib/process-control-master/PID.h create mode 100644 lib/process-control-master/README.md create mode 100644 lib/process-control-master/Timeprop.cpp create mode 100644 lib/process-control-master/Timeprop.h create mode 100644 sonoff/xdrv_91_timeprop.ino create mode 100644 sonoff/xdrv_92_pid.ino diff --git a/lib/ESPAsyncUDP-master/.travis.yml b/lib/ESPAsyncUDP-master/.travis.yml new file mode 100644 index 000000000..c1ef4ec8f --- /dev/null +++ b/lib/ESPAsyncUDP-master/.travis.yml @@ -0,0 +1,37 @@ +sudo: false +language: bash +os: + - linux + +script: + - /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16 + - sleep 3 + - export DISPLAY=:1.0 + - wget http://downloads.arduino.cc/arduino-1.6.5-linux64.tar.xz + - tar xf arduino-1.6.5-linux64.tar.xz + - mv arduino-1.6.5 $HOME/arduino_ide + - export PATH="$HOME/arduino_ide:$PATH" + - which arduino + - mkdir -p $HOME/Arduino/libraries + - cp -r $TRAVIS_BUILD_DIR $HOME/Arduino/libraries/ESPAsyncUDP + - cd $HOME/arduino_ide/hardware + - mkdir esp8266com + - cd esp8266com + - git clone https://github.com/esp8266/Arduino.git esp8266 + - cd esp8266/tools + - python get.py + - source $TRAVIS_BUILD_DIR/travis/common.sh + - arduino --board esp8266com:esp8266:generic --save-prefs + - arduino --get-pref sketchbook.path + - build_sketches arduino $HOME/Arduino/libraries/ESPAsyncUDP esp8266 + +notifications: + email: + on_success: change + on_failure: change + webhooks: + urls: + - https://webhooks.gitter.im/e/60e65d0c78ea0a920347 + on_success: change # options: [always|never|change] default: always + on_failure: always # options: [always|never|change] default: always + on_start: false # default: false diff --git a/lib/ESPAsyncUDP-master/README.md b/lib/ESPAsyncUDP-master/README.md new file mode 100644 index 000000000..997a7cc26 --- /dev/null +++ b/lib/ESPAsyncUDP-master/README.md @@ -0,0 +1,10 @@ +# ESPAsyncUDP +Async UDP Library for ESP8266 Arduino [![Build Status](https://travis-ci.org/me-no-dev/ESPAsyncUDP.svg?branch=master)](https://travis-ci.org/me-no-dev/ESPAsyncUDP) + +[![Join the chat at https://gitter.im/me-no-dev/ESPAsyncWebServer](https://badges.gitter.im/me-no-dev/ESPAsyncWebServer.svg)](https://gitter.im/me-no-dev/ESPAsyncWebServer?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) + +This is a fully asynchronous UDP library, aimed at enabling trouble-free, multi-connection network environment for Espressif's ESP8266 MCUs. + +The library is easy to use and includes support for Unicast, Broadcast and Multicast environments + +Latest GIT version of ESP8266 Arduino might be required for this library to work diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino new file mode 100644 index 000000000..cf528fe12 --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPClient/AsyncUDPClient.ino @@ -0,0 +1,51 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.connect(IPAddress(192,168,1,100), 1234)) { + Serial.println("UDP connected"); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + //Send unicast + udp.print("Hello Server!"); + } +} + +void loop() +{ + delay(1000); + //Send broadcast on port 1234 + udp.broadcastTo("Anyone here?", 1234); +} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino new file mode 100644 index 000000000..bb3e69c9b --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPMulticastServer/AsyncUDPMulticastServer.ino @@ -0,0 +1,52 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.listenMulticast(IPAddress(239,1,2,3), 1234)) { + Serial.print("UDP Listening on IP: "); + Serial.println(WiFi.localIP()); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + //Send multicast + udp.print("Hello!"); + } +} + +void loop() +{ + delay(1000); + //Send multicast + udp.print("Anyone here?"); +} diff --git a/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino b/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino new file mode 100644 index 000000000..fc12a7fc3 --- /dev/null +++ b/lib/ESPAsyncUDP-master/examples/AsyncUDPServer/AsyncUDPServer.ino @@ -0,0 +1,50 @@ +#include +#include "ESPAsyncUDP.h" + +const char * ssid = "***********"; +const char * password = "***********"; + +AsyncUDP udp; + +void setup() +{ + Serial.begin(115200); + WiFi.mode(WIFI_STA); + WiFi.begin(ssid, password); + if (WiFi.waitForConnectResult() != WL_CONNECTED) { + Serial.println("WiFi Failed"); + while(1) { + delay(1000); + } + } + if(udp.listen(1234)) { + Serial.print("UDP Listening on IP: "); + Serial.println(WiFi.localIP()); + udp.onPacket([](AsyncUDPPacket packet) { + Serial.print("UDP Packet Type: "); + Serial.print(packet.isBroadcast()?"Broadcast":packet.isMulticast()?"Multicast":"Unicast"); + Serial.print(", From: "); + Serial.print(packet.remoteIP()); + Serial.print(":"); + Serial.print(packet.remotePort()); + Serial.print(", To: "); + Serial.print(packet.localIP()); + Serial.print(":"); + Serial.print(packet.localPort()); + Serial.print(", Length: "); + Serial.print(packet.length()); + Serial.print(", Data: "); + Serial.write(packet.data(), packet.length()); + Serial.println(); + //reply to the client + packet.printf("Got %u bytes of data", packet.length()); + }); + } +} + +void loop() +{ + delay(1000); + //Send broadcast + udp.broadcast("Anyone here?"); +} diff --git a/lib/ESPAsyncUDP-master/keywords.txt b/lib/ESPAsyncUDP-master/keywords.txt new file mode 100644 index 000000000..67c0b97a7 --- /dev/null +++ b/lib/ESPAsyncUDP-master/keywords.txt @@ -0,0 +1,33 @@ +####################################### +# Syntax Coloring Map For Ultrasound +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +AsyncUDP KEYWORD1 +AsyncUDPPacket KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +connect KEYWORD2 +connected KEYWORD2 +listen KEYWORD2 +listenMulticast KEYWORD2 +close KEYWORD2 +write KEYWORD2 +broadcast KEYWORD2 +onPacket KEYWORD2 +data KEYWORD2 +length KEYWORD2 +localIP KEYWORD2 +localPort KEYWORD2 +remoteIP KEYWORD2 +remotePort KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### diff --git a/lib/ESPAsyncUDP-master/library.json b/lib/ESPAsyncUDP-master/library.json new file mode 100644 index 000000000..fe300b6e6 --- /dev/null +++ b/lib/ESPAsyncUDP-master/library.json @@ -0,0 +1,17 @@ +{ + "name":"ESPAsyncUDP", + "description":"Asynchronous UDP Library for ESP8266", + "keywords":"async,udp,server,client,multicast,broadcast", + "authors": + { + "name": "Hristo Gochkov", + "maintainer": true + }, + "repository": + { + "type": "git", + "url": "https://github.com/me-no-dev/ESPAsyncUDP.git" + }, + "frameworks": "arduino", + "platforms":"espressif" +} diff --git a/lib/ESPAsyncUDP-master/library.properties b/lib/ESPAsyncUDP-master/library.properties new file mode 100644 index 000000000..1aa6ef1ad --- /dev/null +++ b/lib/ESPAsyncUDP-master/library.properties @@ -0,0 +1,9 @@ +name=ESP Async UDP +version=1.0.0 +author=Me-No-Dev +maintainer=Me-No-Dev +sentence=Async UDP Library for ESP8266 +paragraph=Async UDP Library for ESP8266 +category=Other +url=https://github.com/me-no-dev/ESPAsyncUDP +architectures=* diff --git a/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp b/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp new file mode 100644 index 000000000..2a538c4c6 --- /dev/null +++ b/lib/ESPAsyncUDP-master/src/AsyncUDP.cpp @@ -0,0 +1,427 @@ +#include "Arduino.h" +#include "ESPAsyncUDP.h" + +extern "C" { +#include "user_interface.h" +#include "lwip/opt.h" +#include "lwip/inet.h" +#include "lwip/udp.h" +#include "lwip/igmp.h" +} + +AsyncUDPMessage::AsyncUDPMessage(size_t size) +{ + _index = 0; + if(size > 1460) { + size = 1460; + } + _size = size; + _buffer = (uint8_t *)malloc(size); +} + +AsyncUDPMessage::~AsyncUDPMessage() +{ + if(_buffer) { + free(_buffer); + } +} + +size_t AsyncUDPMessage::write(const uint8_t *data, size_t len) +{ + if(_buffer == NULL) { + return 0; + } + size_t s = space(); + if(len > s) { + len = s; + } + memcpy(_buffer + _index, data, len); + _index += len; + return len; +} + +size_t AsyncUDPMessage::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDPMessage::space() +{ + if(_buffer == NULL) { + return 0; + } + return _size - _index; +} + +uint8_t * AsyncUDPMessage::data() +{ + return _buffer; +} + +size_t AsyncUDPMessage::length() +{ + return _index; +} + +void AsyncUDPMessage::flush() +{ + _index = 0; +} + + +AsyncUDPPacket::AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len) +{ + _udp = udp; + _localIp = localIp; + _localPort = localPort; + _remoteIp = remoteIp; + _remotePort = remotePort; + _data = data; + _len = len; +} + +AsyncUDPPacket::~AsyncUDPPacket() +{ + +} + +uint8_t * AsyncUDPPacket::data() +{ + return _data; +} + +size_t AsyncUDPPacket::length() +{ + return _len; +} + +IPAddress AsyncUDPPacket::localIP() +{ + return IPAddress(_localIp->addr); +} + +uint16_t AsyncUDPPacket::localPort() +{ + return _localPort; +} + +IPAddress AsyncUDPPacket::remoteIP() +{ + return IPAddress(_remoteIp->addr); +} + +uint16_t AsyncUDPPacket::remotePort() +{ + return _remotePort; +} + +bool AsyncUDPPacket::isBroadcast() +{ + return _localIp->addr == 0xFFFFFFFF || _localIp->addr == (uint32_t)(0); +} + +bool AsyncUDPPacket::isMulticast() +{ + return ip_addr_ismulticast(_localIp); +} + +size_t AsyncUDPPacket::write(const uint8_t *data, size_t len) +{ + return _udp->writeTo(data, len, _remoteIp, _remotePort); +} + +size_t AsyncUDPPacket::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDPPacket::send(AsyncUDPMessage &message) +{ + return write(message.data(), message.length()); +} + + + +AsyncUDP::AsyncUDP() +{ + _pcb = NULL; + _connected = false; + _handler = NULL; +} + +AsyncUDP::~AsyncUDP() +{ + close(); +} + +AsyncUDP::operator bool() +{ + return _connected; +} + +bool AsyncUDP::connected() +{ + return _connected; +} + +void AsyncUDP::onPacket(AuPacketHandlerFunctionWithArg cb, void * arg) +{ + onPacket(std::bind(cb, arg, std::placeholders::_1)); +} + +void AsyncUDP::onPacket(AuPacketHandlerFunction cb) +{ + _handler = cb; +} + +void AsyncUDP::_recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port) +{ + (void)upcb; // its unused, avoid warning + while(pb != NULL) { + if(_handler) { + uint8_t * data = (uint8_t*)((pb)->payload); + size_t len = pb->len; + + ip_hdr* iphdr = reinterpret_cast(data - UDP_HLEN - IP_HLEN); + ip_addr_t daddr; + daddr.addr = iphdr->dest.addr; + + udp_hdr* udphdr = reinterpret_cast(((uint8_t*)((pb)->payload)) - UDP_HLEN); + uint16_t dport = ntohs(udphdr->dest); + + AsyncUDPPacket packet(this, &daddr, dport, addr, port, data, len); + _handler(packet); + } + + pbuf * this_pb = pb; + pb = pb->next; + this_pb->next = NULL; + pbuf_free(this_pb); + } +} + +#if LWIP_VERSION_MAJOR == 1 +void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port) +#else +void AsyncUDP::_s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port) +#endif +{ + reinterpret_cast(arg)->_recv(upcb, p, (ip_addr_t *)addr, port); +} + +bool AsyncUDP::listen(ip_addr_t *addr, uint16_t port) +{ + close(); + _pcb = udp_new(); + if(_pcb == NULL) { + return false; + } + err_t err = udp_bind(_pcb, addr, port); + if(err != ERR_OK) { + close(); + return false; + } + udp_recv(_pcb, &_s_recv, (void *) this); + _connected = true; + return true; +} + +bool AsyncUDP::listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl) +{ + close(); + if(!ip_addr_ismulticast(addr)) { + return false; + } + ip_addr_t multicast_if_addr; + struct ip_info ifIpInfo; + int mode = wifi_get_opmode(); + if(mode & STATION_MODE) { + wifi_get_ip_info(STATION_IF, &ifIpInfo); + multicast_if_addr.addr = ifIpInfo.ip.addr; + } else if (mode & SOFTAP_MODE) { + wifi_get_ip_info(SOFTAP_IF, &ifIpInfo); + multicast_if_addr.addr = ifIpInfo.ip.addr; + } else { + return false; + } + if (igmp_joingroup(&multicast_if_addr, addr)!= ERR_OK) { + return false; + } + if(!listen(IPADDR_ANY, port)) { + return false; + } +#if LWIP_VERSION_MAJOR == 1 + udp_set_multicast_netif_addr(_pcb, multicast_if_addr); +#else + udp_set_multicast_netif_addr(_pcb, &multicast_if_addr); +#endif + udp_set_multicast_ttl(_pcb, ttl); + ip_addr_copy(_pcb->remote_ip, *addr); + _pcb->remote_port = port; + return true; +} + +bool AsyncUDP::connect(ip_addr_t *addr, uint16_t port) +{ + close(); + _pcb = udp_new(); + if(_pcb == NULL) { + return false; + } + err_t err = udp_connect(_pcb, addr, port); + if(err != ERR_OK) { + close(); + return false; + } + udp_recv(_pcb, &_s_recv, (void *) this); + _connected = true; + return true; +} + +void AsyncUDP::close() +{ + if(_pcb != NULL) { + if(_connected) { + udp_disconnect(_pcb); + } + udp_remove(_pcb); + _connected = false; + _pcb = NULL; + } +} + +size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port) +{ + if(!_pcb && !connect(addr, port)) { + return 0; + } + if(len > 1460) { + len = 1460; + } + pbuf* pbt = pbuf_alloc(PBUF_TRANSPORT, len, PBUF_RAM); + if(pbt != NULL) { + uint8_t* dst = reinterpret_cast(pbt->payload); + memcpy(dst, data, len); + err_t err = udp_sendto(_pcb, pbt, addr, port); + pbuf_free(pbt); + if(err < ERR_OK) { + return 0; + } + return len; + } + return 0; +} + +bool AsyncUDP::listen(const IPAddress addr, uint16_t port) +{ + ip_addr_t laddr; + laddr.addr = addr; + return listen(&laddr, port); +} + +bool AsyncUDP::listen(uint16_t port) +{ + return listen(IPAddress((uint32_t)INADDR_ANY), port); +} + +bool AsyncUDP::listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl) +{ + ip_addr_t laddr; + laddr.addr = addr; + return listenMulticast(&laddr, port, ttl); +} + +bool AsyncUDP::connect(const IPAddress addr, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = addr; + return connect(&daddr, port); +} + +size_t AsyncUDP::writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = addr; + return writeTo(data, len, &daddr, port); +} + +size_t AsyncUDP::write(const uint8_t *data, size_t len) +{ + //return writeTo(data, len, &(_pcb->remote_ip), _pcb->remote_port); + if(_pcb){ // Patch applied (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) + return writeTo(data, len, &(_pcb->remote_ip), _pcb->remote_port); + } + return 0; +} + +size_t AsyncUDP::write(uint8_t data) +{ + return write(&data, 1); +} + +size_t AsyncUDP::broadcastTo(uint8_t *data, size_t len, uint16_t port) +{ + ip_addr_t daddr; + daddr.addr = 0xFFFFFFFF; + return writeTo(data, len, &daddr, port); +} + +size_t AsyncUDP::broadcastTo(const char * data, uint16_t port) +{ + return broadcastTo((uint8_t *)data, strlen(data), port); +} + +size_t AsyncUDP::broadcast(uint8_t *data, size_t len) +{ + if(_pcb->local_port != 0) { + return broadcastTo(data, len, _pcb->local_port); + } + return 0; +} + +size_t AsyncUDP::broadcast(const char * data) +{ + return broadcast((uint8_t *)data, strlen(data)); +} + + +size_t AsyncUDP::sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port) +{ + if(!message) { + return 0; + } + return writeTo(message.data(), message.length(), addr, port); +} + +size_t AsyncUDP::sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port) +{ + //if(!message) { + if((!message) || (!_pcb)) { // Patch applied (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) + return 0; + } + return writeTo(message.data(), message.length(), addr, port); +} + +size_t AsyncUDP::send(AsyncUDPMessage &message) +{ + if(!message) { + return 0; + } + return writeTo(message.data(), message.length(), &(_pcb->remote_ip), _pcb->remote_port); +} + +size_t AsyncUDP::broadcastTo(AsyncUDPMessage &message, uint16_t port) +{ + if(!message) { + return 0; + } + return broadcastTo(message.data(), message.length(), port); +} + +size_t AsyncUDP::broadcast(AsyncUDPMessage &message) +{ + if(!message) { + return 0; + } + return broadcast(message.data(), message.length()); +} diff --git a/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h b/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h new file mode 100644 index 000000000..8e5a70b21 --- /dev/null +++ b/lib/ESPAsyncUDP-master/src/ESPAsyncUDP.h @@ -0,0 +1,130 @@ +#ifndef ESPASYNCUDP_H +#define ESPASYNCUDP_H + +#include "IPAddress.h" +#include "Print.h" +#include +#include "lwip/init.h" + +class AsyncUDP; +class AsyncUDPPacket; +class AsyncUDPMessage; +struct udp_pcb; +struct pbuf; +#if LWIP_VERSION_MAJOR == 1 +struct ip_addr; +typedef struct ip_addr ip_addr_t; +#else +struct ip4_addr; +typedef struct ip4_addr ip_addr_t; +#endif + +class AsyncUDPMessage : public Print +{ +protected: + uint8_t *_buffer; + size_t _index; + size_t _size; +public: + AsyncUDPMessage(size_t size=1460); + virtual ~AsyncUDPMessage(); + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); + size_t space(); + uint8_t * data(); + size_t length(); + void flush(); + operator bool() + { + return _buffer != NULL; + } +}; + +class AsyncUDPPacket : public Print +{ +protected: + AsyncUDP *_udp; + ip_addr_t *_localIp; + uint16_t _localPort; + ip_addr_t *_remoteIp; + uint16_t _remotePort; + uint8_t *_data; + size_t _len; +public: + AsyncUDPPacket(AsyncUDP *udp, ip_addr_t *localIp, uint16_t localPort, ip_addr_t *remoteIp, uint16_t remotePort, uint8_t *data, size_t len); + virtual ~AsyncUDPPacket(); + + uint8_t * data(); + size_t length(); + bool isBroadcast(); + bool isMulticast(); + + IPAddress localIP(); + uint16_t localPort(); + IPAddress remoteIP(); + uint16_t remotePort(); + + size_t send(AsyncUDPMessage &message); + + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); +}; + +typedef std::function AuPacketHandlerFunction; +typedef std::function AuPacketHandlerFunctionWithArg; + +class AsyncUDP : public Print +{ +protected: + udp_pcb *_pcb; + bool _connected; + AuPacketHandlerFunction _handler; + + void _recv(udp_pcb *upcb, pbuf *pb, ip_addr_t *addr, uint16_t port); +#if LWIP_VERSION_MAJOR == 1 + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, ip_addr_t *addr, uint16_t port); +#else + static void _s_recv(void *arg, udp_pcb *upcb, pbuf *p, const ip_addr_t *addr, uint16_t port); +#endif + +public: + AsyncUDP(); + virtual ~AsyncUDP(); + + void onPacket(AuPacketHandlerFunctionWithArg cb, void * arg=NULL); + void onPacket(AuPacketHandlerFunction cb); + + bool listen(ip_addr_t *addr, uint16_t port); + bool listen(const IPAddress addr, uint16_t port); + bool listen(uint16_t port); + + bool listenMulticast(ip_addr_t *addr, uint16_t port, uint8_t ttl=1); + bool listenMulticast(const IPAddress addr, uint16_t port, uint8_t ttl=1); + + bool connect(ip_addr_t *addr, uint16_t port); + bool connect(const IPAddress addr, uint16_t port); + + void close(); + + size_t writeTo(const uint8_t *data, size_t len, ip_addr_t *addr, uint16_t port); + size_t writeTo(const uint8_t *data, size_t len, const IPAddress addr, uint16_t port); + size_t write(const uint8_t *data, size_t len); + size_t write(uint8_t data); + + size_t broadcastTo(uint8_t *data, size_t len, uint16_t port); + size_t broadcastTo(const char * data, uint16_t port); + size_t broadcast(uint8_t *data, size_t len); + size_t broadcast(const char * data); + + size_t sendTo(AsyncUDPMessage &message, ip_addr_t *addr, uint16_t port); + size_t sendTo(AsyncUDPMessage &message, const IPAddress addr, uint16_t port); + size_t send(AsyncUDPMessage &message); + + size_t broadcastTo(AsyncUDPMessage &message, uint16_t port); + size_t broadcast(AsyncUDPMessage &message); + + bool connected(); + operator bool(); +}; + +#endif diff --git a/lib/ESPAsyncUDP-master/travis/common.sh b/lib/ESPAsyncUDP-master/travis/common.sh new file mode 100644 index 000000000..57bede343 --- /dev/null +++ b/lib/ESPAsyncUDP-master/travis/common.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +function build_sketches() +{ + local arduino=$1 + local srcpath=$2 + local platform=$3 + local sketches=$(find $srcpath -name *.ino) + for sketch in $sketches; do + local sketchdir=$(dirname $sketch) + if [[ -f "$sketchdir/.$platform.skip" ]]; then + echo -e "\n\n ------------ Skipping $sketch ------------ \n\n"; + continue + fi + echo -e "\n\n ------------ Building $sketch ------------ \n\n"; + $arduino --verify $sketch; + local result=$? + if [ $result -ne 0 ]; then + echo "Build failed ($1)" + return $result + fi + done +} diff --git a/lib/esp-knx-ip-0.5.0/DPT.h b/lib/esp-knx-ip-0.5.1/DPT.h similarity index 99% rename from lib/esp-knx-ip-0.5.0/DPT.h rename to lib/esp-knx-ip-0.5.1/DPT.h index 72e0c7f54..71045b103 100644 --- a/lib/esp-knx-ip-0.5.0/DPT.h +++ b/lib/esp-knx-ip-0.5.1/DPT.h @@ -69,4 +69,4 @@ typedef struct __color uint8_t red; uint8_t green; uint8_t blue; -} color_t; \ No newline at end of file +} color_t; diff --git a/lib/esp-knx-ip-0.5.0/LICENSE b/lib/esp-knx-ip-0.5.1/LICENSE similarity index 100% rename from lib/esp-knx-ip-0.5.0/LICENSE rename to lib/esp-knx-ip-0.5.1/LICENSE diff --git a/lib/esp-knx-ip-0.5.0/README.md b/lib/esp-knx-ip-0.5.1/README.md similarity index 100% rename from lib/esp-knx-ip-0.5.0/README.md rename to lib/esp-knx-ip-0.5.1/README.md diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip-config.cpp b/lib/esp-knx-ip-0.5.1/esp-knx-ip-config.cpp similarity index 100% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip-config.cpp rename to lib/esp-knx-ip-0.5.1/esp-knx-ip-config.cpp diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip-conversion.cpp b/lib/esp-knx-ip-0.5.1/esp-knx-ip-conversion.cpp similarity index 100% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip-conversion.cpp rename to lib/esp-knx-ip-0.5.1/esp-knx-ip-conversion.cpp diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp b/lib/esp-knx-ip-0.5.1/esp-knx-ip-send.cpp similarity index 88% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp rename to lib/esp-knx-ip-0.5.1/esp-knx-ip-send.cpp index 72459f922..624e08d18 100644 --- a/lib/esp-knx-ip-0.5.0/esp-knx-ip-send.cpp +++ b/lib/esp-knx-ip-0.5.1/esp-knx-ip-send.cpp @@ -33,10 +33,11 @@ void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t da cemi_msg->additional_info_len = 0; cemi_service_t *cemi_data = &cemi_msg->data.service_information; cemi_data->control_1.bits.confirm = 0; - cemi_data->control_1.bits.ack = 0; +//cemi_data->control_1.bits.ack = 1; + cemi_data->control_1.bits.ack = 0; // ask for ACK? 0-no 1-yes cemi_data->control_1.bits.priority = B11; cemi_data->control_1.bits.system_broadcast = 0x01; - cemi_data->control_1.bits.repeat = 0x01; + cemi_data->control_1.bits.repeat = 0x01; // 0 = repeated telegram, 1 = not repeated telegram cemi_data->control_1.bits.reserved = 0; cemi_data->control_1.bits.frame_type = 0x01; cemi_data->control_2.bits.extended_frame_format = 0x00; @@ -47,10 +48,13 @@ void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t da //cemi_data->destination.bytes.high = (area << 3) | line; //cemi_data->destination.bytes.low = member; cemi_data->data_len = data_len; - cemi_data->pci.apci = (ct & 0x0C) >> 2; - cemi_data->pci.tpci_seq_number = 0x00; // ??? - cemi_data->pci.tpci_comm_type = KNX_COT_UDP; // ??? + cemi_data->pci.apci = (ct & 0x0C) >> 2; +//cemi_data->pci.apci = KNX_COT_NCD_ACK; + cemi_data->pci.tpci_seq_number = 0x00; + cemi_data->pci.tpci_comm_type = KNX_COT_UDP; // Type of communication: DATA PACKAGE or CONTROL DATA +//cemi_data->pci.tpci_comm_type = KNX_COT_NCD; // Type of communication: DATA PACKAGE or CONTROL DATA memcpy(cemi_data->data, data, data_len); +//cemi_data->data[0] = (cemi_data->data[0] & 0x3F) | ((KNX_COT_NCD_ACK & 0x03) << 6); cemi_data->data[0] = (cemi_data->data[0] & 0x3F) | ((ct & 0x03) << 6); #if SEND_CHECKSUM @@ -73,9 +77,13 @@ void ESPKNXIP::send(address_t const &receiver, knx_command_type_t ct, uint8_t da DEBUG_PRINTLN(F("")); #endif +#ifdef USE_ASYNC_UDP + udp.writeTo(buf, len, MULTICAST_IP, MULTICAST_PORT); +#else udp.beginPacketMulticast(MULTICAST_IP, MULTICAST_PORT, WiFi.localIP()); udp.write(buf, len); udp.endPacket(); +#endif } void ESPKNXIP::send_1bit(address_t const &receiver, knx_command_type_t ct, uint8_t bit) diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip-webserver.cpp b/lib/esp-knx-ip-0.5.1/esp-knx-ip-webserver.cpp similarity index 100% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip-webserver.cpp rename to lib/esp-knx-ip-0.5.1/esp-knx-ip-webserver.cpp diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp b/lib/esp-knx-ip-0.5.1/esp-knx-ip.cpp similarity index 97% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp rename to lib/esp-knx-ip-0.5.1/esp-knx-ip.cpp index b572333b9..767fa9752 100644 --- a/lib/esp-knx-ip-0.5.0/esp-knx-ip.cpp +++ b/lib/esp-knx-ip-0.5.1/esp-knx-ip.cpp @@ -96,7 +96,12 @@ void ESPKNXIP::__start() server->begin(); } +#ifdef USE_ASYNC_UDP + udp.listenMulticast(MULTICAST_IP, MULTICAST_PORT); + udp.onPacket([this](AsyncUDPPacket &packet) { __loop_knx(packet); }); +#else udp.beginMulticast(WiFi.localIP(), MULTICAST_IP, MULTICAST_PORT); +#endif } void ESPKNXIP::save_to_eeprom() @@ -511,7 +516,9 @@ feedback_id_t ESPKNXIP::feedback_register_action(String name, feedback_action_fp void ESPKNXIP::loop() { + #ifndef USE_ASYNC_UDP __loop_knx(); + #endif if (server != nullptr) { __loop_webserver(); @@ -523,9 +530,16 @@ void ESPKNXIP::__loop_webserver() server->handleClient(); } +#ifdef USE_ASYNC_UDP +void ESPKNXIP::__loop_knx(AsyncUDPPacket &packet) +{ + size_t read = packet.length(); +#else void ESPKNXIP::__loop_knx() { int read = udp.parsePacket(); +#endif + if (!read) { return; @@ -534,19 +548,31 @@ void ESPKNXIP::__loop_knx() DEBUG_PRINT(F("LEN: ")); DEBUG_PRINTLN(read); +#ifdef USE_ASYNC_UDP + uint8_t *buf = packet.data(); +#else uint8_t buf[read]; - udp.read(buf, read); udp.flush(); +#endif DEBUG_PRINT(F("Got packet:")); + #ifdef ESP_KNX_DEBUG + +#ifdef USE_ASYNC_UDP + for (size_t i = 0; i < read; ++i) +#else for (int i = 0; i < read; ++i) +#endif + { DEBUG_PRINT(F(" 0x")); DEBUG_PRINT(buf[i], 16); } + #endif + DEBUG_PRINTLN(F("")); knx_ip_pkt_t *knx_pkt = (knx_ip_pkt_t *)buf; diff --git a/lib/esp-knx-ip-0.5.0/esp-knx-ip.h b/lib/esp-knx-ip-0.5.1/esp-knx-ip.h similarity index 93% rename from lib/esp-knx-ip-0.5.0/esp-knx-ip.h rename to lib/esp-knx-ip-0.5.1/esp-knx-ip.h index 538264b3e..d8fde1dc9 100644 --- a/lib/esp-knx-ip-0.5.0/esp-knx-ip.h +++ b/lib/esp-knx-ip-0.5.1/esp-knx-ip.h @@ -7,6 +7,14 @@ #ifndef ESP_KNX_IP_H #define ESP_KNX_IP_H +//#define USE_ASYNC_UDP // UDP WIFI Library Selection for Multicast + // If commented out, the esp-knx-ip library will use WIFI_UDP Library that is compatible with ESP8266 Library Version 2.3.0 and up + // If not commented out, the esp-knx-ip library will use ESPAsyncUDP Library that is compatible with ESP8266 Library Version 2.4.0 and up + // The ESPAsyncUDP Library have a more reliable multicast communication + // Please Use it with Patch (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) ) + // check line 57 on esp-knx-ip.h file is uncommented: #include + // Comment out that line when using UDP WIFI to avoid compiling issues on PlatformIO with ESP8266 Library Version 2.3.0 + /** * CONFIG * All MAX_ values must not exceed 255 (1 byte, except MAC_CONFIG_SPACE which can go up to 2 bytes, so 0xffff in theory) and must not be negative! @@ -25,8 +33,8 @@ #define ALLOW_MULTIPLE_CALLBACKS_PER_ADDRESS 1 // [Default 0] Set to 1 to always test all assigned callbacks. This allows for multiple callbacks being assigned to the same address. If disabled, only the first assigned will be called. // Webserver related -#define USE_BOOTSTRAP 1 // [Default 1] Set to 1 to enable use of bootstrap CSS for nicer webconfig. CSS is loaded from bootstrapcdn.com. Set to 0 to disable -#define ROOT_PREFIX "" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx +#define USE_BOOTSTRAP 0 // [Default 1] Set to 1 to enable use of bootstrap CSS for nicer webconfig. CSS is loaded from bootstrapcdn.com. Set to 0 to disable +#define ROOT_PREFIX "/knx" // [Default ""] This gets prepended to all webserver paths, default is empty string "". Set this to "/knx" if you want the config to be available on http:///knx #define DISABLE_EEPROM_BUTTONS 1 // [Default 0] Set to 1 to disable the EEPROM buttons in the web ui. #define DISABLE_REBOOT_BUTTON 1 // [Default 0] Set to 1 to disable the reboot button in the web ui. #define DISABLE_RESTORE_BUTTON 1 // [Default 0] Set to 1 to disable the "restore defaults" button in the web ui. @@ -45,7 +53,13 @@ #include "Arduino.h" #include #include + +#ifdef USE_ASYNC_UDP +//#include +#else #include +#endif + #include #include "DPT.h" @@ -157,6 +171,14 @@ typedef enum __knx_communication_type { KNX_COT_NCD = 0x03, // Numbered Control Data } knx_communication_type_t; +/** + * acpi for KNX_COT_NCD + */ +typedef enum __knx_cot_ncd_ack_type { + KNX_COT_NCD_ACK = 0x10, // Inform positively reception of the Previouly received telegram + KNX_COT_NCD_NACK = 0x11, // Inform negatively reception of the Previouly received telegram +} knx_cot_ncd_ack_type_t; + /** * KNX/IP header */ @@ -217,7 +239,7 @@ typedef struct __cemi_service uint8_t ack:1; // 0 = no ack, 1 = ack uint8_t priority:2; // 0 = system, 1 = high, 2 = urgent/alarm, 3 = normal uint8_t system_broadcast:1; // 0 = system broadcast, 1 = broadcast - uint8_t repeat:1; // 0 = repeat on error, 1 = do not repeat + uint8_t repeat:1; // 0 = repeated telegram, 1 = not repeated telegram uint8_t reserved:1; // always zero uint8_t frame_type:1; // 0 = extended, 1 = standard } bits; @@ -509,7 +531,12 @@ class ESPKNXIP { private: void __start(); + +#ifdef USE_ASYNC_UDP + void __loop_knx(AsyncUDPPacket &packet); +#else void __loop_knx(); +#endif // Webserver functions void __loop_webserver(); @@ -544,7 +571,12 @@ class ESPKNXIP { ESP8266WebServer *server; address_t physaddr; + +#ifdef USE_ASYNC_UDP + AsyncUDP udp; +#else WiFiUDP udp; +#endif callback_assignment_id_t registered_callback_assignments; callback_assignment_id_t free_callback_assignment_slots; diff --git a/lib/esp-knx-ip-0.5.0/examples/environment-sensor/environment-sensor.ino b/lib/esp-knx-ip-0.5.1/examples/environment-sensor/environment-sensor.ino similarity index 100% rename from lib/esp-knx-ip-0.5.0/examples/environment-sensor/environment-sensor.ino rename to lib/esp-knx-ip-0.5.1/examples/environment-sensor/environment-sensor.ino diff --git a/lib/esp-knx-ip-0.5.0/examples/sonoff/sonoff.ino b/lib/esp-knx-ip-0.5.1/examples/sonoff/sonoff.ino similarity index 100% rename from lib/esp-knx-ip-0.5.0/examples/sonoff/sonoff.ino rename to lib/esp-knx-ip-0.5.1/examples/sonoff/sonoff.ino diff --git a/lib/esp-knx-ip-0.5.0/examples/static-config/static-config.ino b/lib/esp-knx-ip-0.5.1/examples/static-config/static-config.ino similarity index 100% rename from lib/esp-knx-ip-0.5.0/examples/static-config/static-config.ino rename to lib/esp-knx-ip-0.5.1/examples/static-config/static-config.ino diff --git a/lib/esp-knx-ip-0.5.0/keywords.txt b/lib/esp-knx-ip-0.5.1/keywords.txt similarity index 100% rename from lib/esp-knx-ip-0.5.0/keywords.txt rename to lib/esp-knx-ip-0.5.1/keywords.txt diff --git a/lib/esp-knx-ip-0.5.0/library.properties b/lib/esp-knx-ip-0.5.1/library.properties similarity index 95% rename from lib/esp-knx-ip-0.5.0/library.properties rename to lib/esp-knx-ip-0.5.1/library.properties index 57cad993c..1adbc402a 100644 --- a/lib/esp-knx-ip-0.5.0/library.properties +++ b/lib/esp-knx-ip-0.5.1/library.properties @@ -1,5 +1,5 @@ name=ESP KNX IP Library -version=0.5 +version=0.5.1 author=Nico Weichbrodt maintainer=Nico Weichbrodt sentence=ESP8266 library for KNX/IP communication. diff --git a/lib/process-control-master/LICENSE b/lib/process-control-master/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/lib/process-control-master/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lib/process-control-master/PID.cpp b/lib/process-control-master/PID.cpp new file mode 100644 index 000000000..b19cfa64c --- /dev/null +++ b/lib/process-control-master/PID.cpp @@ -0,0 +1,168 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * See Timeprop.h for Usage + * + **/ + + +#include "PID.h" + +PID::PID() { + m_initialised = 0; + m_last_sample_time = 0; + m_last_pv_update_time = 0; +} + +void PID::initialise( double setpoint, double prop_band, double t_integral, double t_derivative, + double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ) { + + m_setpoint = setpoint; + m_prop_band = prop_band; + m_t_integral = t_integral; + m_t_derivative = t_derivative; + m_integral_default = integral_default; + m_max_interval = max_interval; + m_smooth_factor= smooth_factor; + m_mode_auto= mode_auto; + m_manual_op = manual_op; + + m_initialised = 1; + +} + + +/* called regularly to calculate and return new power value */ +double PID::tick( unsigned long nowSecs ) { + double power; + unsigned char integral_locked = 0; + double factor; + if (m_initialised && m_last_pv_update_time) { + // we have been initialised and have been given a pv value + // check whether too long has elapsed since pv was last updated + if (m_max_interval > 0 && nowSecs - m_last_pv_update_time > m_max_interval) { + // yes, too long has elapsed since last PV update so go to fallback power + power = m_manual_op; + } else { + // is this the first time through here? + if (m_last_sample_time) { + // not first time + unsigned long delta_t = nowSecs - m_last_sample_time; // seconds + if (delta_t <= 0 || delta_t > m_max_interval) { + // too long since last sample so leave integral as is and set deriv to zero + m_derivative = 0; + } else { + if (m_smooth_factor > 0) { + // A derivative smoothing factor has been supplied + // smoothing time constant is td/factor but with a min of delta_t to stop overflows + int ts = m_t_derivative/m_smooth_factor > delta_t ? m_t_derivative/m_smooth_factor : delta_t; + factor = 1.0/(ts/delta_t); + } else { + // no integral smoothing so factor is 1, this makes smoothed_value the previous pv + factor = 1.0; + } + double delta_v = (m_pv - m_smoothed_value) * factor; + m_smoothed_value = m_smoothed_value + delta_v; + m_derivative = m_t_derivative * delta_v/delta_t; + // lock the integral if abs(previous integral + error) > prop_band/2 + // as this means that P + I is outside the linear region so power will be 0 or full + // also lock if control is disabled + double error = m_pv - m_setpoint; + double pbo2 = m_prop_band/2.0; + double epi = error + m_integral; + if (epi < 0.0) epi = -epi; // abs value of error + m_integral + if (epi < pbo2 && m_mode_auto) { + integral_locked = 0; + m_integral = m_integral + error * delta_t/m_t_integral; + // clamp to +- 0.5 prop band widths so that it cannot push the zero power point outside the pb + if ( m_integral < -pbo2 ) { + m_integral = -pbo2; + } else if (m_integral > pbo2) { + m_integral = pbo2; + } + integral_locked = 1; + } + } + + } else { + // first time through, initialise context data + m_smoothed_value = m_pv; + // setup the integral term so that the power out would be integral_default if pv=setpoint + m_integral = (0.5 - m_integral_default)*m_prop_band; + m_derivative = 0.0; + } + + double proportional = m_pv - m_setpoint; + power = -1.0/m_prop_band * (proportional + m_integral + m_derivative) + 0.5; + if (power < 0.0) { + power = 0.0; + } else if (power > 1.0) { + power = 1.0; + } + // set power to disabled value if the loop is not enabled + if (!m_mode_auto) { + power = m_manual_op; + } + m_last_sample_time = nowSecs; + } + } else { + // not yet initialised or no pv value yet so set power to disabled value + power = m_manual_op; + } + return power; +} + +// call to pass in new process value +void PID::setPv( double pv, unsigned long nowSecs ){ + m_pv = pv; + m_last_pv_update_time = nowSecs; +} + +// methods to modify configuration data +void PID::setSp( double setpoint ) { + m_setpoint = setpoint; +} + +void PID::setPb( double prop_band ) { + m_prop_band = prop_band; +} + +void PID::setTi( double t_integral ) { + m_t_integral = t_integral; +} + +void PID::setTd( double t_derivative ) { + m_t_derivative = t_derivative; +} + +void PID::setInitialInt( double integral_default ) { + m_integral_default = integral_default; +} + +void PID::setDSmooth( double smooth_factor ) { + m_smooth_factor = smooth_factor; +} + +void PID::setAuto( unsigned char mode_auto ) { + m_mode_auto = mode_auto; +} + +void PID::setManualPower( double manual_op ) { + m_manual_op = manual_op; +} + +void PID::setMaxInterval( int max_interval ) { + m_max_interval = max_interval; +} diff --git a/lib/process-control-master/PID.h b/lib/process-control-master/PID.h new file mode 100644 index 000000000..782baa8ef --- /dev/null +++ b/lib/process-control-master/PID.h @@ -0,0 +1,89 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + + /** + * A PID control class + * + * Github repository https://github.com/colinl/process-control.git + * + * Given ... + * + * Usage: + * First call initialise(), see below for parameters then + * ... + * The functions require a parameter nowSecs which is a representation of the + * current time in seconds. The absolute value of this is immaterial, it is + * used for relative timing only. + * + **/ + + +#ifndef PID_h +#define PID_h + +class PID { +public: + + PID(); + + /* + Initialiser given + + current time in seconds + */ + void initialise( double setpoint, double prop_band, double t_integral, double t_derivative, + double integral_default, int max_interval, double smooth_factor, unsigned char mode_auto, double manual_op ); + + + /* called regularly to calculate and return new power value */ + double tick(unsigned long nowSecs); + + // call to pass in new process value + void setPv( double pv, unsigned long nowSecs ); + + // methods to modify configuration data + void setSp( double setpoint ); + void setPb( double prop_band ); + void setTi( double t_integral ); + void setTd( double t_derivative ); + void setInitialInt( double integral_default ); + void setDSmooth( double smooth_factor ); + void setAuto( unsigned char mode_auto ); + void setManualPower( double manual_op ); + void setMaxInterval( int max_interval ); + +private: + double m_pv; + double m_setpoint; + double m_prop_band; + double m_t_integral; + double m_t_derivative; + double m_integral_default; + double m_smooth_factor; + unsigned char m_mode_auto; + double m_manual_op; + int m_max_interval; + + + unsigned char m_initialised; + unsigned long m_last_pv_update_time; // the time of last pv update secs + unsigned long m_last_sample_time; // the time of the last tick() run + double m_smoothed_value; + double m_integral; + double m_derivative ; +}; + +#endif // Timeprop_h diff --git a/lib/process-control-master/README.md b/lib/process-control-master/README.md new file mode 100644 index 000000000..4682d2f3f --- /dev/null +++ b/lib/process-control-master/README.md @@ -0,0 +1,2 @@ +# process-control +A C++ library of process control algorithms diff --git a/lib/process-control-master/Timeprop.cpp b/lib/process-control-master/Timeprop.cpp new file mode 100644 index 000000000..c4d5e9eb8 --- /dev/null +++ b/lib/process-control-master/Timeprop.cpp @@ -0,0 +1,94 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * See Timeprop.h for Usage + * + **/ + + +#include "Timeprop.h" + +void Timeprop::initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, + unsigned long nowSecs) { + m_cycleTime = cycleTime; + m_deadTime = deadTime; + m_invert = invert; + m_fallbackPower = fallbackPower; + m_maxUpdateInterval = maxUpdateInterval; + + m_dtoc = (float)deadTime/cycleTime; + m_opState = 0; + setPower(m_fallbackPower, nowSecs); +} + +/* set current power required 0:1, given power and current time in seconds */ +void Timeprop::setPower( float power, unsigned long nowSecs ) { + if (power < 0.0) { + power = 0.0; + } else if (power >= 1.0) { + power = 1.0; + } + m_power = power; + m_lastPowerUpdateTime = nowSecs; +}; + +/* called regularly to provide new output value */ +/* returns new o/p state 0, 1 */ +int Timeprop::tick( unsigned long nowSecs) { + int newState; + float wave; + float direction; + float effectivePower; + + // check whether too long has elapsed since power was last updated + if (m_maxUpdateInterval > 0 && nowSecs - m_lastPowerUpdateTime > m_maxUpdateInterval) { + // yes, go to fallback power + setPower(m_fallbackPower, nowSecs); + } + + wave = (nowSecs % m_cycleTime)/(float)m_cycleTime; + // determine direction of travel and convert to triangular wave + if (wave < 0.5) { + direction = 1; // on the way up + wave = wave*2; + } else { + direction = -1; // on the way down + wave = (1 - wave)*2; + } + // if a dead_time has been supplied for this o/p then adjust power accordingly + if (m_deadTime > 0 && m_power > 0.0 && m_power < 1.0) { + effectivePower = (1.0-2.0*m_dtoc)*m_power + m_dtoc; + } else { + effectivePower = m_power; + } + // cope with end cases in case values outside 0..1 + if (effectivePower <= 0.0) { + newState = 0; // no heat + } else if (effectivePower >= 1.0) { + newState = 1; // full heat + } else { + // only allow power to come on on the way down and off on the way up, to reduce short pulses + if (effectivePower >= wave && direction == -1) { + newState = 1; + } else if (effectivePower <= wave && direction == 1) { + newState = 0; + } else { + // otherwise leave it as it is + newState = m_opState; + } + } + m_opState = newState; + return m_invert ? (1-m_opState) : m_opState; +} diff --git a/lib/process-control-master/Timeprop.h b/lib/process-control-master/Timeprop.h new file mode 100644 index 000000000..c6df45be0 --- /dev/null +++ b/lib/process-control-master/Timeprop.h @@ -0,0 +1,85 @@ +/** + * Copyright 2018 Colin Law + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + + /** + * A class to generate a time proportioned digital output from a linear input + * + * Github repository https://github.com/colinl/process-control.git + * + * Given a required power value in the range 0.0 to 1.0 this class generates + * a time proportioned 0/1 output (representing OFF/ON) which averages to the + * required power value. The cycle time is configurable. If, for example, this + * is set to 10 minutes and the power input is 0.2 then the output will be on + * for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * Usage: + * First call initialise(), see below for parameters then call setPower() to + * specify the current power required. + * Then regularly call tick() to determine the output state required. + * setPower may be called as often as required to change the power required. + * The functions require a parameter nowSecs which is a representation of the + * current time in seconds. The absolute value of this is immaterial, it is + * used for relative timing only. + * + **/ + + +#ifndef Timeprop_h +#define Timeprop_h + +class Timeprop { +public: + /* + Initialiser given + cycleTime seconds + actuator deadTime seconds + whether to invert the output + fallback power value if updates are not received within time below + max number of seconds to allow between power updates before falling back to default power (0 to disable) + current time in seconds + */ + void initialise( int cycleTime, int deadTime, unsigned char invert, float fallbackPower, int maxUpdateInterval, + unsigned long nowSecs); + + /* set current power required 0:1, given power and current time in seconds */ + void setPower( float power, unsigned long nowSecs ); + + /* called regularly to provide new output value */ + /* returns new o/p state 0, 1 */ + int tick(unsigned long nowSecs); + +private: + int m_cycleTime; // cycle time seconds, float to force float calcs + int m_deadTime; // actuator action time seconds + unsigned char m_invert; // whether to invert the output + float m_dtoc; // deadTime/m_cycleTime + int m_opState; // current output state (before invert) + float m_power; // required power 0:1 + float m_fallbackPower; // falls back to this if updates not received with max allowed timezone + int m_maxUpdateInterval; // max time between updates + unsigned long m_lastPowerUpdateTime; // the time of last power update secs +}; + +#endif // Timeprop_h diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 5a4f077e2..2ccbc00f5 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -309,6 +309,10 @@ //#define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +/*********************************************************************************************\ + * DISPLAY +\*********************************************************************************************/ + //#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) //#define DISPLAY_CONFIG // Display Support for LCD, Oled @@ -334,6 +338,167 @@ #endif // DISPLAY_CONFIG +/*********************************************************************************************\ + * TIME PROPORTIONAL CONTROLLER +\*********************************************************************************************/ + +/** + * Code to drive one or more relays in a time proportioned manner give a + * required power value. + * + * Given required power values in the range 0.0 to 1.0 the relays will be + * driven on/off in such that the average power suppled will represent + * the required power. + * The cycle time is configurable. If, for example, the + * period is set to 10 minutes and the power input is 0.2 then the output will + * be on for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * In the case where only one relay is being driven the power value is set by + * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than + * one relay is being driven (as might be the case for a heat/cool application + * where one relay drives the heater and the other the cooler) then the power + * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. + * + * To cope with the problem of temporary wifi failure etc a + * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max + * expected time between power updates and if this time is exceeded then the + * power will fallback to a given safe value until a new value is provided. Set + * the interval to 0 to disable this feature. + * + **/ + +//#define USE_TIMEPROP // include the timeprop feature (+1.2k) + +// Configuration for single output +/* + #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60 // cycle time seconds + #define TIMEPROP_DEADTIMES 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1 // which relay to control 1:8 +/* + +// Configuration for two outputs: +/* + #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds + #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false, false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 +*/ + +/*********************************************************************************************\ + * PID CONTROLLER +\*********************************************************************************************/ + +// Help with using the PID algorithm and with loop tuning can be found at +// http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html +// This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on +// the code there and the tuning techique described there should work just the same. + +//#define USE_PID // include the pid feature (+4.3k) + #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is + // aiming for. + // May be adjusted via MQTT using cmnd pid_sp + + #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls + // the gain of the loop and is the range of process value over which + // the power output will go from 0 to full power. The units are that + // of the process and setpoint, so for example in a heating + // application it might be set to 1.5 degrees. + // May be adjusted via MQTT using cmnd pid_pb + + #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, + // in seconds. It represents the time constant of the integration + // effect. The larger the value the slower the integral effect will be. + // Obviously the slower the process is the larger this should be. For + // example for a domestic room heated by convection radiators a setting + // of one hour might be appropriate (in seconds). To disable the + // integral effect set this to a large number. + // May be adjusted via MQTT using cmnd pid_ti + + #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, + // in seconds. It represents the time constant of the derivative effect. + // The larger the value the greater will be the derivative effect. + // Typically this will be set to somewhat less than 25% of the integral + // setting, once the integral has been adjusted to the optimum value. To + // disable the derivative effect set this to 0. When initially tuning a + // loop it is often sensible to start with derivative zero and wind it in + // once other parameters have been setup. + // May be adjusted via MQTT using cmnd pid_td + + #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used + // to preset the integrated error value when the flow is deployed in + // order to assist in homing in on the setpoint the first time. It should + // be set to an estimate of what the power requirement might be in order + // to maintain the process at the setpoint. For example for a domestic + // room heating application it might be set to 0.2 indicating that 20% of + // the available power might be required to maintain the setpoint. The + // value is of no consequence apart from device restart. + + #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. + // It is provided to cope with unusual situations such as a faulty sensor + // that might prevent the node from being supplied with a process value. + // If no new process value is received for this time then the power is set + // to the value defined for PID_MANUAL_POWER. + // May be adjusted via MQTT using cmnd pid_max_interval + + #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as + // the DS18B20), the use of deriviative can be problematic as when the + // process is changing only slowly the steps in the value cause spikes in + // the derivative. To reduce the effect of these this parameter can be + // set to apply a filter to the derivative term. I have found that with + // the DS18B20 that a value of 3 here can be beneficial, providing + // effectively a low pass filter on the derivative at 1/3 of the derivative + // time. This feature may also be useful if the process value is particularly + // noisy. The smaller the value the greater the filtering effect but the + // more it will reduce the effectiveness of the derivative. A value of zero + // disables this feature. + // May be adjusted via MQTT using cmnd pid_d_smooth + + #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable + // the control (1=enable, auto mode, 0=disabled, manual mode). When in + // manual mode the output is set the value definded for PID_MANUAL_POWER + // May be adjusted via MQTT using cmnd pid_auto + + #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses + // between process values + // May be adjusted via MQTT using cmnd pid_manual_power + + #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm + // each time a new pv value is received, for most applictions specify 0. + // Otherwise set this to a time + // that is short compared to the response of the process. For example, + // something like 15 seconds may well be appropriate for a domestic room + // heating application. + // May be adjusted via MQTT using cmnd pid_update_secs + + #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the + // process, set this to indicate which timeprop output to use. For a device + // with just one relay then this will be 1. + // It is then also necessary to define USE_TIMEPROP and set the output up as + // explained in xdrv_91_timeprop.ino + // To disable this feature leave this undefined (undefined, not defined to nothing). + + #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if + // this is not required. The rate that the sensor is read is defined by TELE_PERIOD + // If not using the sensor then you can supply process values via MQTT using + // cmnd pid_pv + + /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space \*********************************************************************************************/ @@ -350,7 +515,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 84bd9de23..038c224d9 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -48,11 +48,14 @@ byte Settings.knx_CB_param[MAX_KNX_CB] Type of Output (set relay, t \*********************************************************************************************/ -#include +#include // KNX Library + // Note: Inside the file there is a //#define USE_ASYNC_UDP // UDP WIFI Library Selection for Multicast + // If commented out, the esp-knx-ip library will use WIFI_UDP Library that is compatible with ESP8266 Library Version 2.3.0 and up + // If not commented out, the esp-knx-ip library will use ESPAsyncUDP Library that is compatible with ESP8266 Library Version 2.4.0 and up + // The ESPAsyncUDP Library have a more reliable multicast communication + // Please Use it with Patch (https://github.com/me-no-dev/ESPAsyncUDP/pull/21) ) -//#include - -//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the KNX_IP Library +//void KNX_CB_Action(message_t const &msg, void *arg); // Define function (action callback) to be called by the Esp-KNX-IP Library // when an action is requested by another KNX Device address_t KNX_physs_addr; // Physical KNX address of this device @@ -970,4 +973,4 @@ boolean Xdrv11(byte function) return result; } -#endif // USE_KNX \ No newline at end of file +#endif // USE_KNX diff --git a/sonoff/xdrv_91_timeprop.ino b/sonoff/xdrv_91_timeprop.ino new file mode 100644 index 000000000..c14aa0b23 --- /dev/null +++ b/sonoff/xdrv_91_timeprop.ino @@ -0,0 +1,220 @@ +/* + xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota + Copyright (C) 2018 Colin Law and Thomas Herrmann + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Code to drive one or more relays in a time proportioned manner give a + * required power value. + * + * Given required power values in the range 0.0 to 1.0 the relays will be + * driven on/off in such that the average power suppled will represent + * the required power. + * The cycle time is configurable. If, for example, the + * period is set to 10 minutes and the power input is 0.2 then the output will + * be on for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * In the case where only one relay is being driven the power value is set by + * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than + * one relay is being driven (as might be the case for a heat/cool application + * where one relay drives the heater and the other the cooler) then the power + * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. + * + * To cope with the problem of temporary wifi failure etc a + * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max + * expected time between power updates and if this time is exceeded then the + * power will fallback to a given safe value until a new value is provided. Set + * the interval to 0 to disable this feature. + * + * Usage: + * Place this file in the sonoff folder. + * Clone the library https://github.com/colinl/process-control.git from Github + * into a subfolder of lib. + * In user_config.h or user_config_override.h for a single relay, include + * code as follows: + + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60 // cycle time seconds + #define TIMEPROP_DEADTIMES 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1 // which relay to control 1:8 + + * or for two relays: + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds + #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false, false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 + + * Publish values between 0 and 1 to the topic(s) described above + * +**/ + + +#ifdef USE_TIMEPROP + +# include "Timeprop.h" + +#define D_CMND_TIMEPROP "timeprop_" +#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 + +enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; +const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; + +static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; +static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; +static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay + +/* call this from elsewhere if required to set the power value for one of the timeprop instances */ +/* index specifies which one, 0 up */ +void Timeprop_Set_Power( int index, float power ) +{ + if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) + { + timeprops[index].setPower( power, utc_time); + } +} + +void Timeprop_Init() +{ + snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); + AddLog(LOG_LEVEL_INFO); + int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; + int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; + int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; + int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; + int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; + + for (int i=0; i= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + + AddLog(LOG_LEVEL_INFO); + */ + if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { + // command starts with timeprop_ + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); + if (CMND_TIMEPROP_SETPOWER == command_code) { + /* + snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " + "index: %d data_len: %d payload: %d topic: %s data: %s", + XdrvMailbox.index, + XdrvMailbox.data_len, + XdrvMailbox.payload, + (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + AddLog(LOG_LEVEL_INFO); + */ + if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { + timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), + XdrvMailbox.index, XdrvMailbox.data); + } + else { + serviced = false; + } + } else { + serviced = false; + } + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_91 + +boolean Xdrv91(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + Timeprop_Init(); + break; + case FUNC_EVERY_SECOND: + Timeprop_Every_Second(); + break; + case FUNC_COMMAND: + result = Timeprop_Command(); + break; + case FUNC_SET_POWER: + Timeprop_Xdrv_Power(); + break; + } + return result; +} + +#endif // USE_TIMEPROP diff --git a/sonoff/xdrv_92_pid.ino b/sonoff/xdrv_92_pid.ino new file mode 100644 index 000000000..163944e40 --- /dev/null +++ b/sonoff/xdrv_92_pid.ino @@ -0,0 +1,374 @@ +/* + xdrv_92_pid.ino - PID algorithm plugin for Sonoff-Tasmota + Copyright (C) 2018 Colin Law and Thomas Herrmann + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Code to + * + * Usage: + * Place this file in the sonoff folder. + * Clone the library https://github.com/colinl/process-control.git from Github + * into a subfolder of lib. + * If you want to use a time proportioned relay output with this then also get + * xdrv_91_timeprop.ino + * In user_config.h or user_config_override.h include code as follows: + + #define USE_PID // include the pid feature (+4.3k) + #define PID_SETPOINT 19.5 // Setpoint value. This is the process value that the process is + // aiming for. + // May be adjusted via MQTT using cmnd pid_sp + + #define PID_PROPBAND 5 // Proportional band in process units (eg degrees). This controls + // the gain of the loop and is the range of process value over which + // the power output will go from 0 to full power. The units are that + // of the process and setpoint, so for example in a heating + // application it might be set to 1.5 degrees. + // May be adjusted via MQTT using cmnd pid_pb + + #define PID_INTEGRAL_TIME 1800 // Integral time seconds. This is a setting for the integral time, + // in seconds. It represents the time constant of the integration + // effect. The larger the value the slower the integral effect will be. + // Obviously the slower the process is the larger this should be. For + // example for a domestic room heated by convection radiators a setting + // of one hour might be appropriate (in seconds). To disable the + // integral effect set this to a large number. + // May be adjusted via MQTT using cmnd pid_ti + + #define PID_DERIVATIVE_TIME 15 // Derivative time seconds. This is a setting for the derivative time, + // in seconds. It represents the time constant of the derivative effect. + // The larger the value the greater will be the derivative effect. + // Typically this will be set to somewhat less than 25% of the integral + // setting, once the integral has been adjusted to the optimum value. To + // disable the derivative effect set this to 0. When initially tuning a + // loop it is often sensible to start with derivative zero and wind it in + // once other parameters have been setup. + // May be adjusted via MQTT using cmnd pid_td + + #define PID_INITIAL_INT 0.5 // Initial integral value (0:1). This is an initial value which is used + // to preset the integrated error value when the flow is deployed in + // order to assist in homing in on the setpoint the first time. It should + // be set to an estimate of what the power requirement might be in order + // to maintain the process at the setpoint. For example for a domestic + // room heating application it might be set to 0.2 indicating that 20% of + // the available power might be required to maintain the setpoint. The + // value is of no consequence apart from device restart. + + #define PID_MAX_INTERVAL 300 // This is the maximum time in seconds that is expected between samples. + // It is provided to cope with unusual situations such as a faulty sensor + // that might prevent the node from being supplied with a process value. + // If no new process value is received for this time then the power is set + // to the value defined for PID_MANUAL_POWER. + // May be adjusted via MQTT using cmnd pid_max_interval + + #define PID_DERIV_SMOOTH_FACTOR 3 // In situations where the process sensor has limited resolution (such as + // the DS18B20), the use of deriviative can be problematic as when the + // process is changing only slowly the steps in the value cause spikes in + // the derivative. To reduce the effect of these this parameter can be + // set to apply a filter to the derivative term. I have found that with + // the DS18B20 that a value of 3 here can be beneficial, providing + // effectively a low pass filter on the derivative at 1/3 of the derivative + // time. This feature may also be useful if the process value is particularly + // noisy. The smaller the value the greater the filtering effect but the + // more it will reduce the effectiveness of the derivative. A value of zero + // disables this feature. + // May be adjusted via MQTT using cmnd pid_d_smooth + + #define PID_AUTO 1 // Auto mode 1 or 0 (for manual). This can be used to enable or disable + // the control (1=enable, auto mode, 0=disabled, manual mode). When in + // manual mode the output is set the value definded for PID_MANUAL_POWER + // May be adjusted via MQTT using cmnd pid_auto + + #define PID_MANUAL_POWER 0 // Power output when in manual mode or fallback mode if too long elapses + // between process values + // May be adjusted via MQTT using cmnd pid_manual_power + + #define PID_UPDATE_SECS 0 // How often to run the pid algorithm (integer secs) or 0 to run the algorithm + // each time a new pv value is received, for most applictions specify 0. + // Otherwise set this to a time + // that is short compared to the response of the process. For example, + // something like 15 seconds may well be appropriate for a domestic room + // heating application. + // May be adjusted via MQTT using cmnd pid_update_secs + + #define PID_USE_TIMPROP 1 // To use an internal relay for a time proportioned output to drive the + // process, set this to indicate which timeprop output to use. For a device + // with just one relay then this will be 1. + // It is then also necessary to define USE_TIMEPROP and set the output up as + // explained in xdrv_91_timeprop.ino + // To disable this feature leave this undefined (undefined, not defined to nothing). + + #define PID_USE_LOCAL_SENSOR // if defined then the local sensor will be used for pv. Leave undefined if + // this is not required. The rate that the sensor is read is defined by TELE_PERIOD + // If not using the sensor then you can supply process values via MQTT using + // cmnd pid_pv + + * Help with using the PID algorithm and with loop tuning can be found at + * http://blog.clanlaw.org.uk/2018/01/09/PID-tuning-with-node-red-contrib-pid.html + * This is directed towards using the algorithm in the node-red node node-red-contrib-pid but the algorithm here is based on + * the code there and the tuning techique described there should work just the same. + + * +**/ + + +#ifdef USE_PID + +# include "PID.h" + +#define D_CMND_PID "pid_" + +#define D_CMND_PID_SETPV "pv" +#define D_CMND_PID_SETSETPOINT "sp" +#define D_CMND_PID_SETPROPBAND "pb" +#define D_CMND_PID_SETINTEGRAL_TIME "ti" +#define D_CMND_PID_SETDERIVATIVE_TIME "td" +#define D_CMND_PID_SETINITIAL_INT "initint" +#define D_CMND_PID_SETDERIV_SMOOTH_FACTOR "d_smooth" +#define D_CMND_PID_SETAUTO "auto" +#define D_CMND_PID_SETMANUAL_POWER "manual_power" +#define D_CMND_PID_SETMAX_INTERVAL "max_interval" +#define D_CMND_PID_SETUPDATE_SECS "update_secs" + +enum PIDCommands { CMND_PID_SETPV, CMND_PID_SETSETPOINT, CMND_PID_SETPROPBAND, CMND_PID_SETINTEGRAL_TIME, + CMND_PID_SETDERIVATIVE_TIME, CMND_PID_SETINITIAL_INT, CMND_PID_SETDERIV_SMOOTH_FACTOR, CMND_PID_SETAUTO, + CMND_PID_SETMANUAL_POWER, CMND_PID_SETMAX_INTERVAL, CMND_PID_SETUPDATE_SECS }; +const char kPIDCommands[] PROGMEM = D_CMND_PID_SETPV "|" D_CMND_PID_SETSETPOINT "|" D_CMND_PID_SETPROPBAND "|" + D_CMND_PID_SETINTEGRAL_TIME "|" D_CMND_PID_SETDERIVATIVE_TIME "|" D_CMND_PID_SETINITIAL_INT "|" D_CMND_PID_SETDERIV_SMOOTH_FACTOR "|" + D_CMND_PID_SETAUTO "|" D_CMND_PID_SETMANUAL_POWER "|" D_CMND_PID_SETMAX_INTERVAL "|" D_CMND_PID_SETUPDATE_SECS; + +static PID pid; +static int update_secs = PID_UPDATE_SECS <= 0 ? 0 : PID_UPDATE_SECS; // how often (secs) the pid alogorithm is run +static int max_interval = PID_MAX_INTERVAL; +static unsigned long last_pv_update_secs = 0; +static boolean run_pid_now = false; // tells PID_Every_Second to run the pid algorithm + +void PID_Init() +{ + snprintf_P(log_data, sizeof(log_data), "PID Init"); + AddLog(LOG_LEVEL_INFO); + pid.initialise( PID_SETPOINT, PID_PROPBAND, PID_INTEGRAL_TIME, PID_DERIVATIVE_TIME, PID_INITIAL_INT, + PID_MAX_INTERVAL, PID_DERIV_SMOOTH_FACTOR, PID_AUTO, PID_MANUAL_POWER ); +} + +void PID_Every_Second() { + static int sec_counter = 0; + // run the pid algorithm if run_pid_now is true or if the right number of seconds has passed or if too long has + // elapsed since last pv update. If too long has elapsed the the algorithm will deal with that. + if (run_pid_now || utc_time - last_pv_update_secs > max_interval || (update_secs != 0 && sec_counter++ % update_secs == 0)) { + run_pid(); + run_pid_now = false; + } +} + +void PID_Show_Sensor() { + // Called each time new sensor data available, data in mqtt data in same format + // as published in tele/SENSOR + // Update period is specified in TELE_PERIOD + // e.g. "{"Time":"2018-03-13T16:48:05","DS18B20":{"Temperature":22.0},"TempUnit":"C"}" + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: mqtt_data: %s", mqtt_data); + AddLog(LOG_LEVEL_INFO); + StaticJsonBuffer<400> jsonBuffer; + // force mqtt_data to read only to stop parse from overwriting it + JsonObject& data_json = jsonBuffer.parseObject((const char*)mqtt_data); + if (data_json.success()) { + const char* value = data_json["DS18B20"]["Temperature"]; + // check that something was found and it contains a number + //if (value != NULL && strlen(value) > 0 && isdigit(value[0]) ) { + if (value != NULL && strlen(value) > 0 && isdigit(value[0]) && strcmp(value,"0.0") ) { + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: Temperature: %s", value); + AddLog(LOG_LEVEL_INFO); + // pass the value to the pid alogorithm to use as current pv + last_pv_update_secs = utc_time; + pid.setPv(atof(value), last_pv_update_secs); + // also trigger running the pid algorithm if we have been told to run it each pv sample + if (update_secs == 0) { + // this runs it at the next second + run_pid_now = true; + } + } else { + Timeprop_Set_Power( PID_USE_TIMPROP-1, 0 ); + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - no temperature found"); + AddLog(LOG_LEVEL_INFO); + } + } else { + // parse failed + Timeprop_Set_Power( PID_USE_TIMPROP-1, 0 ); + snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - json parse failed"); + AddLog(LOG_LEVEL_INFO); + } +} + + +/* struct XDRVMAILBOX { */ +/* uint16_t valid; */ +/* uint16_t index; */ +/* uint16_t data_len; */ +/* int16_t payload; */ +/* char *topic; */ +/* char *data; */ +/* } XdrvMailbox; */ + +boolean PID_Command() +{ + char command [CMDSZ]; + boolean serviced = true; + uint8_t ua_prefix_len = strlen(D_CMND_PID); // to detect prefix of command + + snprintf_P(log_data, sizeof(log_data), "Command called: " + "index: %d data_len: %d payload: %d topic: %s data: %s", + XdrvMailbox.index, + XdrvMailbox.data_len, + XdrvMailbox.payload, + (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + AddLog(LOG_LEVEL_INFO); + + if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_PID), ua_prefix_len)) { + // command starts with pid_ + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kPIDCommands); + serviced = true; + switch (command_code) { + case CMND_PID_SETPV: + snprintf_P(log_data, sizeof(log_data), "PID command setpv"); + AddLog(LOG_LEVEL_INFO); + last_pv_update_secs = utc_time; + pid.setPv(atof(XdrvMailbox.data), last_pv_update_secs); + // also trigger running the pid algorithm if we have been told to run it each pv sample + if (update_secs == 0) { + // this runs it at the next second + run_pid_now = true; + } + break; + + case CMND_PID_SETSETPOINT: + snprintf_P(log_data, sizeof(log_data), "PID command setsetpoint"); + AddLog(LOG_LEVEL_INFO); + pid.setSp(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETPROPBAND: + snprintf_P(log_data, sizeof(log_data), "PID command propband"); + AddLog(LOG_LEVEL_INFO); + pid.setPb(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETINTEGRAL_TIME: + snprintf_P(log_data, sizeof(log_data), "PID command Ti"); + AddLog(LOG_LEVEL_INFO); + pid.setTi(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETDERIVATIVE_TIME: + snprintf_P(log_data, sizeof(log_data), "PID command Td"); + AddLog(LOG_LEVEL_INFO); + pid.setTd(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETINITIAL_INT: + snprintf_P(log_data, sizeof(log_data), "PID command initial int"); + AddLog(LOG_LEVEL_INFO); + pid.setInitialInt(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETDERIV_SMOOTH_FACTOR: + snprintf_P(log_data, sizeof(log_data), "PID command deriv smooth"); + AddLog(LOG_LEVEL_INFO); + pid.setDSmooth(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETAUTO: + snprintf_P(log_data, sizeof(log_data), "PID command auto"); + AddLog(LOG_LEVEL_INFO); + pid.setAuto(atoi(XdrvMailbox.data)); + break; + + case CMND_PID_SETMANUAL_POWER: + snprintf_P(log_data, sizeof(log_data), "PID command manual power"); + AddLog(LOG_LEVEL_INFO); + pid.setManualPower(atof(XdrvMailbox.data)); + break; + + case CMND_PID_SETMAX_INTERVAL: + snprintf_P(log_data, sizeof(log_data), "PID command set max interval"); + AddLog(LOG_LEVEL_INFO); + max_interval = atoi(XdrvMailbox.data); + pid.setMaxInterval(max_interval); + break; + + case CMND_PID_SETUPDATE_SECS: + snprintf_P(log_data, sizeof(log_data), "PID command set update secs"); + AddLog(LOG_LEVEL_INFO); + update_secs = atoi(XdrvMailbox.data) ; + if (update_secs < 0) update_secs = 0; + break; + + default: + serviced = false; + } + + if (serviced) { + // set mqtt RESULT + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), XdrvMailbox.topic, XdrvMailbox.data); + } + + } else { + serviced = false; + } + return serviced; +} + +static void run_pid() +{ + double power = pid.tick(utc_time); + char buf[10]; + dtostrfd(power, 3, buf); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"%s\"}"), "power", buf); + MqttPublishPrefixTopic_P(TELE, "PID", false); +#if defined PID_USE_TIMPROP + // send power to appropriate timeprop output + Timeprop_Set_Power( PID_USE_TIMPROP-1, power ); +#endif // PID_USE_TIMPROP +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_92 + +boolean Xdrv92(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + PID_Init(); + break; + case FUNC_EVERY_SECOND: + PID_Every_Second(); + break; + case FUNC_SHOW_SENSOR: + // only use this if the pid loop is to use the local sensor for pv + #if defined PID_USE_LOCAL_SENSOR + PID_Show_Sensor(); + #endif // PID_USE_LOCAL_SENSOR + break; + case FUNC_COMMAND: + result = PID_Command(); + break; + } + return result; +} + +#endif // USE_TIMEPROP From 3d0152bcaedb02138226173336e15307049bb2be Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 18 May 2018 19:17:17 -0300 Subject: [PATCH 381/435] Fix Bug on KNX Menu Fix Bug on KNX Menu that shows Energy Options while there is no energy sensor selected. --- sonoff/xdrv_11_knx.ino | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 038c224d9..dfbdbb33b 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -63,7 +63,7 @@ address_t KNX_addr; // KNX Address converter variable #define KNX_Empty 255 -#define TOGGLE_INHIBIT_TIME 10 // 10*50mseg = 500mseg (inhibit time for not toggling again relays) +#define TOGGLE_INHIBIT_TIME 15 // 15*50mseg = 750mseg (inhibit time for not toggling again relays by a KNX toggle command) float last_temp; float last_hum; @@ -438,11 +438,7 @@ void KNX_INIT() if (GetUsedInModule(GPIO_SI7021, my_module.gp.io)) { device_param[KNX_HUMIDITY-1].show = true; } // Sonoff 31 or Sonoff Pow or any HLW8012 based device or Sonoff POW R2 or Any device with a Pzem004T - if ( ( SONOFF_S31 == Settings.module ) || - ( (GetUsedInModule(GPIO_HLW_SEL, my_module.gp.io)) && (GetUsedInModule(GPIO_HLW_CF1, my_module.gp.io)) && (GetUsedInModule(GPIO_HLW_CF, my_module.gp.io)) ) || - ( SONOFF_POW_R2 == Settings.module ) || - ( (GetUsedInModule(GPIO_PZEM_RX, my_module.gp.io)) && (GetUsedInModule(GPIO_PZEM_TX, my_module.gp.io)) ) ) - { + if ( ( SONOFF_S31 == Settings.module ) || ( SONOFF_POW_R2 == Settings.module ) || ( energy_flg != ENERGY_NONE ) ) { device_param[KNX_ENERGY_POWER-1].show = true; device_param[KNX_ENERGY_DAILY-1].show = true; device_param[KNX_ENERGY_START-1].show = true; From 1bc74a8ac838eb45bc4b9df5b7bbc7c2cf65048c Mon Sep 17 00:00:00 2001 From: ascillato Date: Fri, 18 May 2018 19:48:32 -0300 Subject: [PATCH 382/435] Sync with Tasmota --- sonoff/settings.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index c174ecc55..6f67c3843 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -319,4 +319,4 @@ struct XDRVMAILBOX { ADC_MODE(ADC_VCC); // Set ADC input for Power Supply Voltage usage #endif -#endif // _SETTINGS_H_ +#endif // _SETTINGS_H_ \ No newline at end of file From 119eafbd44f22d9140c2835d8903be50edd0d363 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 19 May 2018 04:25:29 -0300 Subject: [PATCH 383/435] Update xdrv_10_rules.ino --- sonoff/xdrv_10_rules.ino | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index 076e7333d..dfd26d534 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -88,6 +88,8 @@ uint32_t rules_triggers = 0; uint8_t rules_trigger_count = 0; uint8_t rules_teleperiod = 0; +char vars[RULES_MAX_VARS][10] = { 0 }; + /*******************************************************************************************/ long TimeDifference(unsigned long prev, unsigned long next) @@ -243,7 +245,6 @@ bool RulesRuleMatch(String &event, String &rule) bool RulesProcess() { bool serviced = false; - char vars[RULES_MAX_VARS][10] = { 0 }; char stemp[10]; delay(0); // Prohibit possible loop software watchdog @@ -488,4 +489,4 @@ boolean Xdrv10(byte function) return result; } -#endif // USE_RULES \ No newline at end of file +#endif // USE_RULES From d4cc66935339394e50194c38e23dae000a3a9a56 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Sat, 19 May 2018 18:31:39 -0300 Subject: [PATCH 384/435] Update stale.yml --- .github/stale.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index 58b939e73..1db2a8bf1 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -3,11 +3,11 @@ # Probot-stale Repository: https://github.com/probot/stale # Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 60 +daysUntilStale: 30 # Number of days of inactivity before a stale Issue or Pull Request is closed. # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 14 +daysUntilClose: 7 # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable exemptLabels: From a730766ee243a8d095de827c82237f10fc07aa3a Mon Sep 17 00:00:00 2001 From: Gennaro Tortone Date: Tue, 22 May 2018 16:54:56 +0200 Subject: [PATCH 385/435] images for wiki --- media/fw-upgrade-menu.png | Bin 0 -> 20221 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 media/fw-upgrade-menu.png diff --git a/media/fw-upgrade-menu.png b/media/fw-upgrade-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..f47e362741da266b775c2ead4bd6fe48552a6f2b GIT binary patch literal 20221 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 S=Fbo80BiF{kQ&qHasL4-(Piua literal 0 HcmV?d00001 From f415bd668d550da29356ba41d01ea61cbb05ce5e Mon Sep 17 00:00:00 2001 From: Gennaro Tortone Date: Wed, 23 May 2018 20:15:47 +0200 Subject: [PATCH 386/435] remove temporary media directory --- media/fw-upgrade-menu.png | Bin 20221 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 media/fw-upgrade-menu.png diff --git a/media/fw-upgrade-menu.png b/media/fw-upgrade-menu.png deleted file mode 100644 index f47e362741da266b775c2ead4bd6fe48552a6f2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20221 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 S=Fbo80BiF{kQ&qHasL4-(Piua From 6acf9f3a0d49d84df197079d11723672c5cafdcb Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 29 May 2018 10:27:36 -0300 Subject: [PATCH 387/435] Update platformio.ini --- platformio.ini | 152 ++++++++++++++++++++++++------------------------- 1 file changed, 75 insertions(+), 77 deletions(-) diff --git a/platformio.ini b/platformio.ini index 5926af1fe..cb5da39a9 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff-DE_4MB -;env_default = sonoff-EN_4MB -;env_default = sonoff-ES_4MB +env_default = sonoff ;env_default = sonoff-minimal +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE -;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -30,6 +30,7 @@ src_dir = sonoff ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU +;env_default = sonoff-UK ;env_default = sonoff-TW [common] ; ************************************************************ @@ -46,7 +47,7 @@ platform = espressif8266@1.5.0 framework = arduino board = esp01_1m -board_flash_mode = dout +board_build.flash_mode = dout ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall @@ -55,32 +56,19 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION - -build_flags_4MB = - -Wl,-Tesp8266.flash.4m1m.ld - -DVTABLES_IN_FLASH - -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY -; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -; -DUSE_CONFIG_OVERRIDE - -DUSE_KNX_NO_EMULATION ; *** Serial Monitor options monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -upload_speed = 115200 +;upload_speed = 115200 +upload_speed = 512000 upload_resetmethod = nodemcu upload_port = COM5 ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py -;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash - ; *** Upload file to OTA server using SCP ;upload_port = user@host:/path ;extra_scripts = pio/strip-floats.py, pio/sftp-uploader.py @@ -91,38 +79,13 @@ extra_scripts = pio/strip-floats.py ; ********************************************************************* -[env:sonoff-DE_4MB] +[env:sonoff] platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-EN_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-ES_4MB] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS +build_flags = ${common.build_flags} monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -133,7 +96,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL monitor_speed = ${common.monitor_speed} @@ -141,11 +104,47 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-classic] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_CLASSIC +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-knx] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-allsensors] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DUSE_ALL_SENSORS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG monitor_speed = ${common.monitor_speed} @@ -157,7 +156,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR monitor_speed = ${common.monitor_speed} @@ -169,7 +168,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN monitor_speed = ${common.monitor_speed} @@ -181,7 +180,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ monitor_speed = ${common.monitor_speed} @@ -193,7 +192,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE monitor_speed = ${common.monitor_speed} @@ -201,24 +200,11 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-EN] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_flash_mode = ${common.board_flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_resetmethod = ${common.upload_resetmethod} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} @@ -230,7 +216,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR monitor_speed = ${common.monitor_speed} @@ -242,7 +228,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR monitor_speed = ${common.monitor_speed} @@ -254,7 +240,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU monitor_speed = ${common.monitor_speed} @@ -266,7 +252,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT monitor_speed = ${common.monitor_speed} @@ -278,7 +264,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL monitor_speed = ${common.monitor_speed} @@ -290,7 +276,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL monitor_speed = ${common.monitor_speed} @@ -302,7 +288,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT monitor_speed = ${common.monitor_speed} @@ -314,7 +300,7 @@ extra_scripts = ${common.extra_scripts} platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU monitor_speed = ${common.monitor_speed} @@ -322,11 +308,23 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-UK] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-TW] platform = ${common.platform} framework = ${common.framework} board = ${common.board} -board_flash_mode = ${common.board_flash_mode} +board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW monitor_speed = ${common.monitor_speed} From 87d98733010d0e70be2bda8d8800ad9dc7aae1c0 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 29 May 2018 10:40:41 -0300 Subject: [PATCH 388/435] Update platformio.ini --- platformio.ini | 131 ++++++++++++++++++++++++++++--------------------- 1 file changed, 74 insertions(+), 57 deletions(-) diff --git a/platformio.ini b/platformio.ini index cb5da39a9..6d0133014 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,16 +11,16 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -env_default = sonoff +;env_default = sonoff-DE_4MB +;env_default = sonoff-EN_4MB +;env_default = sonoff-ES_4MB ;env_default = sonoff-minimal -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-allsensors ;env_default = sonoff-BG ;env_default = sonoff-BR ;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE +;env_default = sonoff-EN ;env_default = sonoff-ES ;env_default = sonoff-FR ;env_default = sonoff-GR @@ -30,8 +30,8 @@ env_default = sonoff ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU -;env_default = sonoff-UK ;env_default = sonoff-TW +;env_default = sonoff-UK [common] ; ************************************************************ ; *** Esp8266 core for Arduino version 2.3.0 @@ -56,16 +56,31 @@ build_flags = -Wl,-Tesp8266.flash.1m0.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION + +build_flags_4MB = + -Wl,-Tesp8266.flash.4m1m.ld + -DVTABLES_IN_FLASH + -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH +; -DUSE_CONFIG_OVERRIDE + -DUSE_KNX_NO_EMULATION ; *** Serial Monitor options monitor_speed = 115200 ; *** Upload Serial reset method for Wemos and NodeMCU -;upload_speed = 115200 -upload_speed = 512000 +upload_speed = 115200 upload_resetmethod = nodemcu upload_port = COM5 + +;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash + + ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes extra_scripts = pio/strip-floats.py @@ -79,13 +94,39 @@ extra_scripts = pio/strip-floats.py ; ********************************************************************* -[env:sonoff] +[env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-EN_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_resetmethod = ${common.upload_resetmethod} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + +[env:sonoff-ES_4MB] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_resetmethod = ${common.upload_resetmethod} @@ -104,42 +145,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-classic] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_CLASSIC -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-knx] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_KNX_NO_EMULATION -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - -[env:sonoff-allsensors] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DUSE_ALL_SENSORS -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-BG] platform = ${common.platform} framework = ${common.framework} @@ -200,6 +205,18 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} +[env:sonoff-EN] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} + [env:sonoff-ES] platform = ${common.platform} framework = ${common.framework} @@ -308,18 +325,6 @@ upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} -[env:sonoff-UK] -platform = ${common.platform} -framework = ${common.framework} -board = ${common.board} -board_build.flash_mode = ${common.board_build.flash_mode} -build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK -monitor_speed = ${common.monitor_speed} -upload_speed = ${common.upload_speed} -upload_port = ${common.upload_port} -extra_scripts = ${common.extra_scripts} - [env:sonoff-TW] platform = ${common.platform} framework = ${common.framework} @@ -331,3 +336,15 @@ monitor_speed = ${common.monitor_speed} upload_speed = ${common.upload_speed} upload_port = ${common.upload_port} extra_scripts = ${common.extra_scripts} + +[env:sonoff-UK] +platform = ${common.platform} +framework = ${common.framework} +board = ${common.board} +board_build.flash_mode = ${common.board_build.flash_mode} +build_unflags = ${common.build_unflags} +build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK +monitor_speed = ${common.monitor_speed} +upload_speed = ${common.upload_speed} +upload_port = ${common.upload_port} +extra_scripts = ${common.extra_scripts} From 4455cbd4c170e419f5d0aa9dd0690018fcd8fdb7 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 29 May 2018 10:43:35 -0300 Subject: [PATCH 389/435] Update COPYFILES.BAT --- COPYFILES.BAT | 1 + 1 file changed, 1 insertion(+) diff --git a/COPYFILES.BAT b/COPYFILES.BAT index c34441eef..8d7cf75f5 100644 --- a/COPYFILES.BAT +++ b/COPYFILES.BAT @@ -28,6 +28,7 @@ copy sonoff-PL\firmware.bin sonoff_KNX-PL.bin copy sonoff-PT\firmware.bin sonoff_KNX-PT.bin copy sonoff-RU\firmware.bin sonoff_KNX-RU.bin copy sonoff-TW\firmware.bin sonoff_KNX-TW.bin +copy sonoff-UK\firmware.bin sonoff_KNX-UK.bin echo: echo: From 5f2fdd0241dd066770df6efa93928efaf5ac6edd Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Wed, 30 May 2018 00:06:34 -0300 Subject: [PATCH 390/435] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 86ac4d6e8..b555a9430 100644 --- a/README.md +++ b/README.md @@ -117,8 +117,10 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Complete all the language files with keys - [x] Add support for other output devices supported by Tasmota - [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) -- [x] Add options for increase communication reliability (re send telegrams) -- [ ] Add options for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) +- [ ] Add option for saving values received from KNX to MEM and VAR for Tasmota's rules +- [ ] Add command for rules to send values by KNX +- [x] Add option for increase communication reliability (re send telegrams) +- [ ] Add option for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) - [ ] Add option to support KNX Snooping to debug KNX Network - [ ] Add option for KNXnet/IP Tunneling - [ ] Add option to repeat all KNX multicast broadcast (Tasmota to Tasmota communications) to KNXnet/IP Tunneling From 1bc3057c8ac2b33af3f08e4516f1d6c5151e131d Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 02:42:13 -0300 Subject: [PATCH 391/435] Update platformio.ini --- platformio.ini | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/platformio.ini b/platformio.ini index 6d0133014..587d8c55b 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,7 +13,7 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment ;env_default = sonoff-DE_4MB ;env_default = sonoff-EN_4MB -;env_default = sonoff-ES_4MB +env_default = sonoff-ES_4MB ;env_default = sonoff-minimal ;env_default = sonoff-BG ;env_default = sonoff-BR @@ -49,6 +49,10 @@ framework = arduino board = esp01_1m board_build.flash_mode = dout +; set CPU frequency to 80MHz or 160MHz +;board_build.f_cpu = 80000000L +board_build.f_cpu = 160000000L + ; *** Fix espressif8266@1.7.0 induced undesired all warnings build_unflags = -Wall @@ -60,15 +64,29 @@ build_flags = ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE -DUSE_KNX_NO_EMULATION +; VTABLES in Flash (default) + -DVTABLES_IN_FLASH +; VTABLES in Heap +; -DVTABLES_IN_DRAM +; VTABLES in IRAM +; -DVTABLES_IN_IRAM +board_4MB = nodemcu build_flags_4MB = -Wl,-Tesp8266.flash.4m1m.ld +; -Wl,-Tesp8266.flash.4m2m.ld -DVTABLES_IN_FLASH -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH ; -DUSE_CONFIG_OVERRIDE -DUSE_KNX_NO_EMULATION +; VTABLES in Flash (default) + -DVTABLES_IN_FLASH +; VTABLES in Heap +; -DVTABLES_IN_DRAM +; VTABLES in IRAM +; -DVTABLES_IN_IRAM ; *** Serial Monitor options monitor_speed = 115200 @@ -78,7 +96,7 @@ upload_speed = 115200 upload_resetmethod = nodemcu upload_port = COM5 -;NOTE - command to erase flash from windows console: esptool.py --port COM18 erase_flash +;NOTE - command to erase flash from windows console: esptool.py --port COM31 erase_flash ; *** Fix Esp/Arduino core 2.4.x induced Tasmota unused floating point includes @@ -97,8 +115,9 @@ extra_scripts = pio/strip-floats.py [env:sonoff-DE_4MB] platform = ${common.platform} framework = ${common.framework} -board = ${common.board} +board = ${common.board_4MB} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=de-DE -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} @@ -110,8 +129,9 @@ extra_scripts = ${common.extra_scripts} [env:sonoff-EN_4MB] platform = ${common.platform} framework = ${common.framework} -board = ${common.board} +board = ${common.board_4MB} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} @@ -123,8 +143,9 @@ extra_scripts = ${common.extra_scripts} [env:sonoff-ES_4MB] platform = ${common.platform} framework = ${common.framework} -board = ${common.board} +board = ${common.board_4MB} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags_4MB} -DMY_LANGUAGE=es-AR -DMODULE=WEMOS monitor_speed = ${common.monitor_speed} @@ -138,6 +159,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DBE_MINIMAL monitor_speed = ${common.monitor_speed} @@ -150,6 +172,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=bg-BG monitor_speed = ${common.monitor_speed} @@ -162,6 +185,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-BR monitor_speed = ${common.monitor_speed} @@ -174,6 +198,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-CN monitor_speed = ${common.monitor_speed} @@ -186,6 +211,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=cs-CZ monitor_speed = ${common.monitor_speed} @@ -198,6 +224,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=de-DE monitor_speed = ${common.monitor_speed} @@ -210,6 +237,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} monitor_speed = ${common.monitor_speed} @@ -222,6 +250,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} @@ -234,6 +263,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=fr-FR monitor_speed = ${common.monitor_speed} @@ -246,6 +276,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=el-GR monitor_speed = ${common.monitor_speed} @@ -258,6 +289,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=hu-HU monitor_speed = ${common.monitor_speed} @@ -270,6 +302,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=it-IT monitor_speed = ${common.monitor_speed} @@ -282,6 +315,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=nl-NL monitor_speed = ${common.monitor_speed} @@ -294,6 +328,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pl-PL monitor_speed = ${common.monitor_speed} @@ -306,6 +341,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=pt-PT monitor_speed = ${common.monitor_speed} @@ -318,6 +354,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=ru-RU monitor_speed = ${common.monitor_speed} @@ -330,6 +367,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=zh-TW monitor_speed = ${common.monitor_speed} @@ -342,6 +380,7 @@ platform = ${common.platform} framework = ${common.framework} board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} +board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} build_flags = ${common.build_flags} -DMY_LANGUAGE=uk-UK monitor_speed = ${common.monitor_speed} From 55711354377671050505dbb1dcc8e1c46ff6f904 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 02:44:17 -0300 Subject: [PATCH 392/435] Update user_config.h --- sonoff/user_config.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 6893e9ae8..4bdf30adf 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -49,6 +49,7 @@ // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter //#define MODULE SONOFF_BASIC // [Module] Select default model from sonoff_template.h (Should not be changed) +//#define MODULE WEMOS // [Module] Select default model from sonoff_template.h (Should not be changed) #define SAVE_DATA 1 // [SaveData] Save changed parameters to Flash (0 = disable, 1 - 3600 seconds) #define SAVE_STATE 1 // [SetOption0] Save changed power state to Flash (0 = disable, 1 = enable) @@ -516,7 +517,7 @@ * Select KNX without Emulation to save space \*********************************************************************************************/ -//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) +#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! From e9238ac773f71f2e5117661f031399db67a0d6a2 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 03:45:53 -0300 Subject: [PATCH 393/435] Update Optional files --- sonoff/{xdrv_06_display.ino => xdrv_14_display.ino} | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) rename sonoff/{xdrv_06_display.ino => xdrv_14_display.ino} (99%) diff --git a/sonoff/xdrv_06_display.ino b/sonoff/xdrv_14_display.ino similarity index 99% rename from sonoff/xdrv_06_display.ino rename to sonoff/xdrv_14_display.ino index 5ac8c3727..8ddd07bc1 100644 --- a/sonoff/xdrv_06_display.ino +++ b/sonoff/xdrv_14_display.ino @@ -1,5 +1,5 @@ /* - xdrv_06_display.ino - display support for Sonoff-Tasmota + xdrv_14_display.ino - display support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends @@ -1058,9 +1058,9 @@ boolean DisplayCommand() * Interface \*********************************************************************************************/ -#define XDRV_06 +#define XDRV_14 -boolean Xdrv06(byte function) +boolean Xdrv14(byte function) { boolean result = false; From 9a09fed6eb24fdf78d1a1559c963942d30eab509 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 03:47:14 -0300 Subject: [PATCH 394/435] Update i18n.h --- sonoff/i18n.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index c6346a748..fbb4ab609 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -374,7 +374,7 @@ #define D_CMND_LATITUDE "Latitude" #define D_CMND_LONGITUDE "Longitude" -// Commands xdrv_98_display.ino +// Commands xdrv_14_display.ino #define D_CMND_DISPLAY "Display" #define D_CMND_DISP_ADDRESS "Address" #define D_CMND_DISP_COLS "Cols" From 5f2fe01a03af4c1234d9a98e57fb41183fda71e8 Mon Sep 17 00:00:00 2001 From: ascillato Date: Thu, 31 May 2018 03:50:09 -0300 Subject: [PATCH 395/435] updated optional files --- ...xdrv_92_pid.ino => xdrv_13_controller.ino} | 239 +++++++++++++++++- sonoff/xdrv_91_timeprop.ino | 220 ---------------- 2 files changed, 234 insertions(+), 225 deletions(-) rename sonoff/{xdrv_92_pid.ino => xdrv_13_controller.ino} (67%) delete mode 100644 sonoff/xdrv_91_timeprop.ino diff --git a/sonoff/xdrv_92_pid.ino b/sonoff/xdrv_13_controller.ino similarity index 67% rename from sonoff/xdrv_92_pid.ino rename to sonoff/xdrv_13_controller.ino index 163944e40..cb3a17198 100644 --- a/sonoff/xdrv_92_pid.ino +++ b/sonoff/xdrv_13_controller.ino @@ -1,14 +1,18 @@ /* - xdrv_92_pid.ino - PID algorithm plugin for Sonoff-Tasmota - Copyright (C) 2018 Colin Law and Thomas Herrmann + xdrv_13_controller.ino - Controller Support with TimeProp and PID for Sonoff-Tasmota + + Copyright (C) 2018 Colin Law, Thomas Herrmann and Adrian Scillato + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License along with this program. If not, see . */ @@ -185,7 +189,7 @@ void PID_Show_Sensor() { const char* value = data_json["DS18B20"]["Temperature"]; // check that something was found and it contains a number //if (value != NULL && strlen(value) > 0 && isdigit(value[0]) ) { - if (value != NULL && strlen(value) > 0 && isdigit(value[0]) && strcmp(value,"0.0") ) { + if (value != NULL && strlen(value) > 0 && (isdigit(value[0]) || (value[0] == '-' && isdigit(value[1])) ) ) { snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor: Temperature: %s", value); AddLog(LOG_LEVEL_INFO); // pass the value to the pid alogorithm to use as current pv @@ -197,13 +201,11 @@ void PID_Show_Sensor() { run_pid_now = true; } } else { - Timeprop_Set_Power( PID_USE_TIMPROP-1, 0 ); snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - no temperature found"); AddLog(LOG_LEVEL_INFO); } } else { // parse failed - Timeprop_Set_Power( PID_USE_TIMPROP-1, 0 ); snprintf_P(log_data, sizeof(log_data), "PID_Show_Sensor - json parse failed"); AddLog(LOG_LEVEL_INFO); } @@ -371,4 +373,231 @@ boolean Xdrv92(byte function) return result; } +#endif // USE_PID + + + + + + + +/* + xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota + Copyright (C) 2018 Colin Law and Thomas Herrmann + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program 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 General Public License for more details. + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +/** + * Code to drive one or more relays in a time proportioned manner give a + * required power value. + * + * Given required power values in the range 0.0 to 1.0 the relays will be + * driven on/off in such that the average power suppled will represent + * the required power. + * The cycle time is configurable. If, for example, the + * period is set to 10 minutes and the power input is 0.2 then the output will + * be on for two minutes in every ten minutes. + * + * A value for actuator dead time may be provided. If you have a device that + * takes a significant time to open/close then set this to the average of the + * open and close times. The algorithim will then adjust the output timing + * accordingly to ensure that the output is not switched more rapidly than + * the actuator can cope with. + * + * A facility to invert the output is provided which can be useful when used in + * refrigeration processes and similar. + * + * In the case where only one relay is being driven the power value is set by + * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than + * one relay is being driven (as might be the case for a heat/cool application + * where one relay drives the heater and the other the cooler) then the power + * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. + * + * To cope with the problem of temporary wifi failure etc a + * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max + * expected time between power updates and if this time is exceeded then the + * power will fallback to a given safe value until a new value is provided. Set + * the interval to 0 to disable this feature. + * + * Usage: + * Place this file in the sonoff folder. + * Clone the library https://github.com/colinl/process-control.git from Github + * into a subfolder of lib. + * In user_config.h or user_config_override.h for a single relay, include + * code as follows: + + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60 // cycle time seconds + #define TIMEPROP_DEADTIMES 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1 // which relay to control 1:8 + + * or for two relays: + #define USE_TIMEPROP // include the timeprop feature (+1.2k) + // for single output + #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) + #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds + #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds + #define TIMEPROP_OPINVERTS false, false // whether to invert the output + #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates + #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) + #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 + + * Publish values between 0 and 1 to the topic(s) described above + * +**/ + + +#ifdef USE_TIMEPROP + +# include "Timeprop.h" + +#define D_CMND_TIMEPROP "timeprop_" +#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 + +enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; +const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; + +static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; +static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; +static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay + +/* call this from elsewhere if required to set the power value for one of the timeprop instances */ +/* index specifies which one, 0 up */ +void Timeprop_Set_Power( int index, float power ) +{ + if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) + { + timeprops[index].setPower( power, utc_time); + } +} + +void Timeprop_Init() +{ + snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); + AddLog(LOG_LEVEL_INFO); + int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; + int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; + int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; + int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; + int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; + + for (int i=0; i= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + + AddLog(LOG_LEVEL_INFO); + */ + if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { + // command starts with timeprop_ + int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); + if (CMND_TIMEPROP_SETPOWER == command_code) { + /* + snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " + "index: %d data_len: %d payload: %d topic: %s data: %s", + XdrvMailbox.index, + XdrvMailbox.data_len, + XdrvMailbox.payload, + (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), + (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); + AddLog(LOG_LEVEL_INFO); + */ + if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { + timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), + XdrvMailbox.index, XdrvMailbox.data); + } + else { + serviced = false; + } + } else { + serviced = false; + } + return serviced; +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XDRV_91 + +boolean Xdrv91(byte function) +{ + boolean result = false; + + switch (function) { + case FUNC_INIT: + Timeprop_Init(); + break; + case FUNC_EVERY_SECOND: + Timeprop_Every_Second(); + break; + case FUNC_COMMAND: + result = Timeprop_Command(); + break; + case FUNC_SET_POWER: + Timeprop_Xdrv_Power(); + break; + } + return result; +} + #endif // USE_TIMEPROP diff --git a/sonoff/xdrv_91_timeprop.ino b/sonoff/xdrv_91_timeprop.ino deleted file mode 100644 index c14aa0b23..000000000 --- a/sonoff/xdrv_91_timeprop.ino +++ /dev/null @@ -1,220 +0,0 @@ -/* - xdrv_91_timeprop.ino - Timeprop support for Sonoff-Tasmota - Copyright (C) 2018 Colin Law and Thomas Herrmann - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - This program 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 General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * Code to drive one or more relays in a time proportioned manner give a - * required power value. - * - * Given required power values in the range 0.0 to 1.0 the relays will be - * driven on/off in such that the average power suppled will represent - * the required power. - * The cycle time is configurable. If, for example, the - * period is set to 10 minutes and the power input is 0.2 then the output will - * be on for two minutes in every ten minutes. - * - * A value for actuator dead time may be provided. If you have a device that - * takes a significant time to open/close then set this to the average of the - * open and close times. The algorithim will then adjust the output timing - * accordingly to ensure that the output is not switched more rapidly than - * the actuator can cope with. - * - * A facility to invert the output is provided which can be useful when used in - * refrigeration processes and similar. - * - * In the case where only one relay is being driven the power value is set by - * writing the value to the mqtt topic cmnd/timeprop_setpower_0. If more than - * one relay is being driven (as might be the case for a heat/cool application - * where one relay drives the heater and the other the cooler) then the power - * for the second relay is written to topic cmnd/timeprop_setpower_1 and so on. - * - * To cope with the problem of temporary wifi failure etc a - * TIMEPROP_MAX_UPDATE_INTERVALS value is available. This can be set to the max - * expected time between power updates and if this time is exceeded then the - * power will fallback to a given safe value until a new value is provided. Set - * the interval to 0 to disable this feature. - * - * Usage: - * Place this file in the sonoff folder. - * Clone the library https://github.com/colinl/process-control.git from Github - * into a subfolder of lib. - * In user_config.h or user_config_override.h for a single relay, include - * code as follows: - - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 1 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60 // cycle time seconds - #define TIMEPROP_DEADTIMES 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1 // which relay to control 1:8 - - * or for two relays: - #define USE_TIMEPROP // include the timeprop feature (+1.2k) - // for single output - #define TIMEPROP_NUM_OUTPUTS 2 // how many outputs to control (with separate alogorithm for each) - #define TIMEPROP_CYCLETIMES 60, 10 // cycle time seconds - #define TIMEPROP_DEADTIMES 0, 0 // actuator action time seconds - #define TIMEPROP_OPINVERTS false, false // whether to invert the output - #define TIMEPROP_FALLBACK_POWERS 0, 0 // falls back to this if too long betwen power updates - #define TIMEPROP_MAX_UPDATE_INTERVALS 120, 120 // max no secs that are allowed between power updates (0 to disable) - #define TIMEPROP_RELAYS 1, 2 // which relay to control 1:8 - - * Publish values between 0 and 1 to the topic(s) described above - * -**/ - - -#ifdef USE_TIMEPROP - -# include "Timeprop.h" - -#define D_CMND_TIMEPROP "timeprop_" -#define D_CMND_TIMEPROP_SETPOWER "setpower_" // add index no on end (0:8) and data is power 0:1 - -enum TimepropCommands { CMND_TIMEPROP_SETPOWER }; -const char kTimepropCommands[] PROGMEM = D_CMND_TIMEPROP_SETPOWER; - -static Timeprop timeprops[TIMEPROP_NUM_OUTPUTS]; -static int relayNos[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_RELAYS}; -static long currentRelayStates = 0; // current actual relay states. Bit 0 first relay - -/* call this from elsewhere if required to set the power value for one of the timeprop instances */ -/* index specifies which one, 0 up */ -void Timeprop_Set_Power( int index, float power ) -{ - if (index >= 0 && index < TIMEPROP_NUM_OUTPUTS) - { - timeprops[index].setPower( power, utc_time); - } -} - -void Timeprop_Init() -{ - snprintf_P(log_data, sizeof(log_data), "Timeprop Init"); - AddLog(LOG_LEVEL_INFO); - int cycleTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_CYCLETIMES}; - int deadTimes[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_DEADTIMES}; - int opInverts[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_OPINVERTS}; - int fallbacks[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_FALLBACK_POWERS}; - int maxIntervals[TIMEPROP_NUM_OUTPUTS] = {TIMEPROP_MAX_UPDATE_INTERVALS}; - - for (int i=0; i= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - - AddLog(LOG_LEVEL_INFO); - */ - if (0 == strncasecmp_P(XdrvMailbox.topic, PSTR(D_CMND_TIMEPROP), ua_prefix_len)) { - // command starts with timeprop_ - int command_code = GetCommandCode(command, sizeof(command), XdrvMailbox.topic + ua_prefix_len, kTimepropCommands); - if (CMND_TIMEPROP_SETPOWER == command_code) { - /* - snprintf_P(log_data, sizeof(log_data), "Timeprop command timeprop_setpower: " - "index: %d data_len: %d payload: %d topic: %s data: %s", - XdrvMailbox.index, - XdrvMailbox.data_len, - XdrvMailbox.payload, - (XdrvMailbox.payload >= 0 ? XdrvMailbox.topic : ""), - (XdrvMailbox.data_len >= 0 ? XdrvMailbox.data : "")); - AddLog(LOG_LEVEL_INFO); - */ - if (XdrvMailbox.index >=0 && XdrvMailbox.index < TIMEPROP_NUM_OUTPUTS) { - timeprops[XdrvMailbox.index].setPower( atof(XdrvMailbox.data), utc_time ); - } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_TIMEPROP D_CMND_TIMEPROP_SETPOWER "%d\":\"%s\"}"), - XdrvMailbox.index, XdrvMailbox.data); - } - else { - serviced = false; - } - } else { - serviced = false; - } - return serviced; -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XDRV_91 - -boolean Xdrv91(byte function) -{ - boolean result = false; - - switch (function) { - case FUNC_INIT: - Timeprop_Init(); - break; - case FUNC_EVERY_SECOND: - Timeprop_Every_Second(); - break; - case FUNC_COMMAND: - result = Timeprop_Command(); - break; - case FUNC_SET_POWER: - Timeprop_Xdrv_Power(); - break; - } - return result; -} - -#endif // USE_TIMEPROP From 77b6be6b93a0593f8dbf584f3c49251c4c8419c3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 05:55:16 -0300 Subject: [PATCH 396/435] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f9b1241ca..338438ccb 100644 --- a/README.md +++ b/README.md @@ -117,8 +117,8 @@ We can configure to send the value of temperature or humidity every teleperiod. - [x] Complete all the language files with keys - [x] Add support for other output devices supported by Tasmota - [x] Add support for other sensors supported by Tasmota (TEMP, HUM, ENERGY) -- [ ] Add option for saving values received from KNX to MEM and VAR for Tasmota's rules -- [ ] Add command for rules to send values by KNX +- [x] Add command for rules to send values and commands by KNX +- [x] Add events for rules when receiving data from KNX and read requests - [x] Add option for increase communication reliability (re send telegrams) - [ ] Add option for multicast forced reconnection (needed for some routers that have IGMP conflict with actual esp8266 lib v2.3.0 to v2.4.1, and lwIP v1.4 to v2.0 - Send a telegram to itself. If it is received, multicast is ok, if not, reconnect) - [ ] Add option to support KNX Snooping to debug KNX Network From e230063dacee25f67a90eb8e6fd362c732616b42 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Thu, 31 May 2018 06:22:35 -0300 Subject: [PATCH 397/435] Update user_config.h --- sonoff/user_config.h | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 4bdf30adf..25fa6eeca 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -315,13 +315,11 @@ * DISPLAY \*********************************************************************************************/ -//#define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) - -//#define DISPLAY_CONFIG // Display Support for LCD, Oled -#ifdef DISPLAY_CONFIG - -#ifdef USE_I2C - #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) +//#define USE_DISPLAY // Add Display Support for LCD, Oled and up to eigth Matrices (+19k code) + // Required USE_I2C to be defined for I2C Display Support + // Required USE_SPI to be defined for SPI Display Support using library TasmotaTFT for 320x240 and 480x320 TFT +#ifdef USE_DISPLAY +#ifdef USE_I2C // For I2C Display Support. Not required if using SPI #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module @@ -331,14 +329,7 @@ #define MTX_ADDRESS7 0x00 // [DisplayAddress[7]] I2C address of seventh 8x8 matrix module #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module #endif // USE_I2C - -#ifdef USE_SPI // SPI using library TasmotaTFT - #ifndef USE_DISPLAY - #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT, using library TasmotaTFT - #endif -#endif // USE_SPI - -#endif // DISPLAY_CONFIG +#endif // USE_DISPLAY /*********************************************************************************************\ * TIME PROPORTIONAL CONTROLLER From 8d59f463c8b740bb7cb49efee5b20722fbe0c9d3 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 1 Jun 2018 19:47:43 -0300 Subject: [PATCH 398/435] Add CPU_LOAD Log --- sonoff/support.ino | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/sonoff/support.ino b/sonoff/support.ino index f92d32235..b9f5e6676 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -20,6 +20,11 @@ IPAddress syslog_host_addr; // Syslog host IP address uint32_t syslog_host_hash = 0; // Syslog host name hash +#ifdef USE_CPU_LOAD +uint32_t CPU_loops = 0; // CPU Load +uint32_t CPU_last_millis = 0; // CPU Load +#endif // USE_CPU_LOAD + /*********************************************************************************************\ * Watchdog extension (https://github.com/esp8266/Arduino/issues/1532) \*********************************************************************************************/ @@ -63,12 +68,34 @@ void OsWatchInit() RtcSettings.oswatch_blocked_loop = 0; oswatch_last_loop_time = millis(); tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), OsWatchTicker); +#ifdef USE_CPU_LOAD + CPU_last_millis = millis(); +#endif // USE_CPU_LOAD } void OsWatchLoop() { oswatch_last_loop_time = millis(); // while(1) delay(1000); // this will trigger the os watch + +#ifdef USE_CPU_LOAD + CPU_loops ++; + if ((CPU_last_millis + (CPU_LOAD_CHECK*1000)) <= oswatch_last_loop_time ) { +#if defined(F_CPU) && (F_CPU == 160000000L) + int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*800) ); + CPU_loops = CPU_loops / CPU_LOAD_CHECK; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(160MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); +#else + int CPU_LOAD = 100 - ( (CPU_loops*(1 + 30*sleep)) / (CPU_LOAD_CHECK*400) ); + CPU_loops = CPU_loops / CPU_LOAD_CHECK; + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_APPLICATION D_OSWATCH " FreeRam %d, rssi %d, CPU %d%%(80MHz), Loops/sec %d"), ESP.getFreeHeap(), WifiGetRssiAsQuality(WiFi.RSSI()), CPU_LOAD, CPU_loops); +#endif + AddLog(LOG_LEVEL_DEBUG); + CPU_last_millis = oswatch_last_loop_time; + CPU_loops = 0; + } +#endif // USE_CPU_LOAD + } String GetResetReason() From 2700a4332ff3352dec21722455bae9a48ae1df74 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Fri, 1 Jun 2018 19:51:55 -0300 Subject: [PATCH 399/435] Add CPU_LOAD Log --- sonoff/user_config.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 25fa6eeca..d8fbfd2eb 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -73,6 +73,8 @@ #define SYS_LOG_LEVEL LOG_LEVEL_NONE // [SysLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define SERIAL_LOG_LEVEL LOG_LEVEL_INFO // [SerialLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) #define WEB_LOG_LEVEL LOG_LEVEL_INFO // [WebLog] (LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE) +//#define USE_CPU_LOAD // CPU LOAD log + #define CPU_LOAD_CHECK 1 // Seconds between each CPU_LOAD log // -- Ota ----------------------------------------- #define OTA_URL "http://sonoff.maddox.co.uk/tasmota/sonoff.bin" // [OtaUrl] From cec701fb339e3c88394a92728f9eadc363f6e78f Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Sun, 3 Jun 2018 14:43:17 +0200 Subject: [PATCH 400/435] Fix Pzem004T checksum error 6.0.0a * Fix Pzem004T checksum error --- sonoff/_releasenotes.ino | 1 + sonoff/xdrv_02_webserver.ino | 9 --------- sonoff/xdrv_03_energy.ino | 19 ++++++++++++++++++- 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 5acca6a36..e32a7c7ef 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -2,6 +2,7 @@ * Add CRC to Settings making future upgrades more fail-safe * Remove version 3, 4 and pre 5.2 settings auto-upgrade. See https://github.com/arendst/Sonoff-Tasmota/wiki/Upgrade#migration-path * Change default CFG_HOLDER from 0x20161209 to 4617 (=0x1209) - no impact on default upgrades + * Fix Pzem004T checksum error * * 5.14.0b * Add Console Commands to send KNX Commands diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index 0ecea9f79..c290bcd90 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -942,15 +942,6 @@ void HandleBackupConfiguration() WebServer->send(200, FPSTR(HDR_CTYPE_STREAM), ""); memcpy(settings_buffer, &Settings, sizeof(Settings)); -/* - settings_buffer[0] = CONFIG_FILE_SIGN; - settings_buffer[1] = (!config_xor_on_set) ? 0 : 1; - if (settings_buffer[1]) { - for (uint16_t i = 2; i < sizeof(Settings); i++) { - settings_buffer[i] ^= (config_xor_on_set +i); - } - } -*/ if (config_xor_on_set) { for (uint16_t i = 2; i < sizeof(Settings); i++) { settings_buffer[i] ^= (config_xor_on_set +i); diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 10b8f1c95..e38dc537b 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -281,6 +281,9 @@ long cf_pulses_last_time = CSE_PULSES_NOT_INITIALIZED; void CseReceived() { + // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 + // 55 5A 02 F7 60 00 03 AB 00 40 10 02 60 5D 51 A6 58 03 E9 EF 71 0B 7A 36 + // Hd Id VCal---- Voltage- ICal---- Current- PCal---- Power--- Ad CF--- Ck AddLogSerial(LOG_LEVEL_DEBUG_MORE); uint8_t header = serial_in_buffer[0]; @@ -481,7 +484,17 @@ bool PzemReceiveReady() bool PzemRecieve(uint8_t resp, float *data) { - uint8_t buffer[sizeof(PZEMCommand)]; + // 0 1 2 3 4 5 6 + // A4 00 00 00 00 00 A4 - Set address + // A0 00 D4 07 00 00 7B - Voltage (212.7V) + // A1 00 00 0A 00 00 AB - Current (0.1A) + // A1 00 00 00 00 00 A1 - No current + // A2 00 16 00 00 00 B8 - Power (22W) + // A2 00 00 00 00 00 A2 - No power + // A3 00 08 A4 00 00 4F - Energy (2.212kWh) + // A3 01 86 9F 00 00 C9 - Energy (99.999kWh) + + uint8_t buffer[sizeof(PZEMCommand)] = { 0 }; unsigned long start = millis(); uint8_t len = 0; @@ -491,6 +504,10 @@ bool PzemRecieve(uint8_t resp, float *data) if (!c && !len) { continue; // skip 0 at startup } + if ((1 == len) && (buffer[0] == c)) { + len--; + continue; // fix skewed data + } buffer[len++] = c; } } From 976f167ae39e5036f8d26214af14d36992fc34ea Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Sun, 3 Jun 2018 17:09:10 +0200 Subject: [PATCH 401/435] Minor fixes Minor fixes --- sonoff/sonoff.ino | 26 ++++++++++++++------------ sonoff/support.ino | 22 ++++++++++++++++++++-- sonoff/user_config.h | 2 +- 3 files changed, 35 insertions(+), 15 deletions(-) diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index b030d63b3..0d0fc91da 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -740,6 +740,8 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) } } else if (CMND_GPIOS == command_code) { + mytmplt cmodule; + memcpy_P(&cmodule, &kModules[Settings.module], sizeof(cmodule)); for (byte i = 0; i < GPIO_SENSOR_END; i++) { if (!jsflg) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_GPIOS "%d\":["), lines); @@ -747,12 +749,14 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,"), mqtt_data); } jsflg = 1; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, i, GetTextIndexed(stemp1, sizeof(stemp1), i, kSensorNames)); - if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == GPIO_SENSOR_END -1)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]}"), mqtt_data); - MqttPublishPrefixTopic_P(RESULT_OR_STAT, type); - jsflg = 0; - lines++; + if (!GetUsedInModule(i, cmodule.gp.io)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"%d (%s)\""), mqtt_data, i, GetTextIndexed(stemp1, sizeof(stemp1), i, kSensorNames)); + if ((strlen(mqtt_data) > (LOGSZ - TOPSZ)) || (i == GPIO_SENSOR_END -1)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s]}"), mqtt_data); + MqttPublishPrefixTopic_P(RESULT_OR_STAT, type); + jsflg = 0; + lines++; + } } } mqtt_data[0] = '\0'; @@ -1000,7 +1004,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len) break; case 99: AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING)); - ESP.restart(); + EspRestart(); break; default: snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESTART); @@ -1937,7 +1941,7 @@ void StateLoop() restart_flag--; if (restart_flag <= 0) { AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING)); - ESP.restart(); + EspRestart(); } } break; @@ -2012,8 +2016,7 @@ void ArduinoOTAInit() } snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_UPLOAD "Arduino OTA %s. " D_RESTARTING), error_str); AddLog(LOG_LEVEL_INFO); - delay(100); // Allow time for message xfer - ESP.restart(); + EspRestart(); }); ArduinoOTA.onEnd([]() @@ -2021,8 +2024,7 @@ void ArduinoOTAInit() if ((LOG_LEVEL_DEBUG <= seriallog_level)) Serial.println(); snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_UPLOAD "Arduino OTA " D_SUCCESSFUL ". " D_RESTARTING)); AddLog(LOG_LEVEL_INFO); - delay(100); // Allow time for message xfer - ESP.restart(); + EspRestart(); }); ArduinoOTA.begin(); diff --git a/sonoff/support.ino b/sonoff/support.ino index f92d32235..4268f38d0 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -644,7 +644,7 @@ void ShowSource(int source) void GetFeatures() { - feature_drv1 = 0x00000000; // xdrv_00_mqtt.ino, xdrv_01_light.ino, xdrv_04_snfbridge.ino + feature_drv1 = 0x00000000; // xdrv_01_mqtt.ino, xdrv_01_light.ino, xdrv_04_snfbridge.ino // feature_drv1 |= 0x00000001; // feature_drv1 |= 0x00000002; @@ -1006,6 +1006,7 @@ void WifiBegin(uint8_t flag) WiFi.mode(WIFI_OFF); // See https://github.com/esp8266/Arduino/issues/2186 #endif + WiFi.persistent(false); // Solve possible wifi init errors WiFi.disconnect(true); // Delete SDK wifi config delay(200); WiFi.mode(WIFI_STA); // Disable AP mode @@ -1219,13 +1220,30 @@ int WifiState() void WifiConnect() { - WiFi.persistent(false); // Solve possible wifi init errors + WiFi.persistent(false); // Solve possible wifi init errors wifi_status = 0; wifi_retry_init = WIFI_RETRY_OFFSET_SEC + ((ESP.getChipId() & 0xF) * 2); wifi_retry = wifi_retry_init; wifi_counter = 1; } +void WifiDisconnect() +{ + // Courtesy of EspEasy + WiFi.persistent(true); // use SDK storage of SSID/WPA parameters + ETS_UART_INTR_DISABLE(); + wifi_station_disconnect(); // this will store empty ssid/wpa into sdk storage + ETS_UART_INTR_ENABLE(); + WiFi.persistent(false); // Do not use SDK storage of SSID/WPA parameters +} + +void EspRestart() +{ + delay(100); // Allow time for message xfer + WifiDisconnect(); + ESP.restart(); +} + #ifdef USE_DISCOVERY /*********************************************************************************************\ * mDNS diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 1ac534d0f..a9f7cfab4 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -178,7 +178,7 @@ * - Disable a feature by preceding it with // \*********************************************************************************************/ -//#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+4k5 code) +//#define USE_ARDUINO_OTA // Add optional support for Arduino OTA (+13k code) // -- Localization -------------------------------- // If non selected the default en-GB will be used From d4119fe54d46debbf494726a28228bb5ec537473 Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Mon, 4 Jun 2018 18:10:38 +0200 Subject: [PATCH 402/435] Add SnfBrdg EFM8BB1 fw tools 6.0.0a * Add support for uploading Sonoff Bridge firmware found in tools/fw_efm8bb1 folder build by Portisch using Web Gui File Upload (#2886) * Add command RfRaw to control Portisch firmware features --- lib/C2Programmer-1.0.0/README.md | 10 + lib/C2Programmer-1.0.0/keywords.txt | 19 + lib/C2Programmer-1.0.0/library.json | 15 + lib/C2Programmer-1.0.0/library.properties | 9 + lib/C2Programmer-1.0.0/src/c2.cpp | 649 ++++++++++++++++++ lib/C2Programmer-1.0.0/src/c2.h | 141 ++++ lib/C2Programmer-1.0.0/src/ihx.cpp | 71 ++ lib/C2Programmer-1.0.0/src/ihx.h | 39 ++ sonoff/_releasenotes.ino | 2 + sonoff/i18n.h | 3 +- sonoff/language/bg-BG.h | 4 + sonoff/language/cs-CZ.h | 4 + sonoff/language/de-DE.h | 4 + sonoff/language/el-GR.h | 4 + sonoff/language/en-GB.h | 4 + sonoff/language/es-AR.h | 4 + sonoff/language/fr-FR.h | 4 + sonoff/language/hu-HU.h | 4 + sonoff/language/it-IT.h | 4 + sonoff/language/nl-NL.h | 6 +- sonoff/language/pl-PL.h | 4 + sonoff/language/pt-BR.h | 4 + sonoff/language/pt-PT.h | 4 + sonoff/language/ru-RU.h | 4 + sonoff/language/uk-UK.h | 4 + sonoff/language/zh-CN.h | 4 + sonoff/language/zh-TW.h | 4 + sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 3 +- sonoff/user_config.h | 2 + sonoff/xdrv_02_webserver.ino | 115 +++- sonoff/xdrv_03_energy.ino | 2 +- sonoff/xdrv_04_light.ino | 2 +- sonoff/xdrv_05_irremote.ino | 2 +- sonoff/xdrv_06_snfbridge.ino | 272 +++++++- sonoff/xdrv_08_serial_bridge.ino | 2 +- sonoff/xdrv_09_timers.ino | 2 +- sonoff/xdrv_10_rules.ino | 2 +- sonoff/xdrv_11_knx.ino | 2 +- sonoff/xdrv_interface.ino | 1 + tools/fw_efm8bb1/RF_Bridge_00.hex | 406 +++++++++++ tools/fw_efm8bb1/RF_Bridge_iTead_Original.hex | 207 ++++++ 42 files changed, 2013 insertions(+), 37 deletions(-) create mode 100644 lib/C2Programmer-1.0.0/README.md create mode 100644 lib/C2Programmer-1.0.0/keywords.txt create mode 100644 lib/C2Programmer-1.0.0/library.json create mode 100644 lib/C2Programmer-1.0.0/library.properties create mode 100644 lib/C2Programmer-1.0.0/src/c2.cpp create mode 100644 lib/C2Programmer-1.0.0/src/c2.h create mode 100644 lib/C2Programmer-1.0.0/src/ihx.cpp create mode 100644 lib/C2Programmer-1.0.0/src/ihx.h create mode 100644 tools/fw_efm8bb1/RF_Bridge_00.hex create mode 100644 tools/fw_efm8bb1/RF_Bridge_iTead_Original.hex diff --git a/lib/C2Programmer-1.0.0/README.md b/lib/C2Programmer-1.0.0/README.md new file mode 100644 index 000000000..ff7295c8d --- /dev/null +++ b/lib/C2Programmer-1.0.0/README.md @@ -0,0 +1,10 @@ +# c2_prog_wifi +WiFi-enabled programmer for Silicon Labs microcontrollers using the C2 programmer protocol, and to act as a serial-wifi bridge. + +Designed to run in the Arduino environment for ESP8266 module: https://github.com/esp8266/Arduino + +New programs can be loaded sending .hex files through the web-interface. + +Everything is still alpha. Currently tested with EFM8BB10F2G-A-QFN20 and ESP-01 module: http://app.cear.ufpb.br/~lucas.hartmann/tag/efm8bb1/ + +LICENSE: GPLv3 or newer. \ No newline at end of file diff --git a/lib/C2Programmer-1.0.0/keywords.txt b/lib/C2Programmer-1.0.0/keywords.txt new file mode 100644 index 000000000..80066aed8 --- /dev/null +++ b/lib/C2Programmer-1.0.0/keywords.txt @@ -0,0 +1,19 @@ +####################################### +# Syntax Coloring Map for C2Programmer +# (esp8266) +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + + +####################################### +# Constants (LITERAL1) +####################################### + diff --git a/lib/C2Programmer-1.0.0/library.json b/lib/C2Programmer-1.0.0/library.json new file mode 100644 index 000000000..be074b8ed --- /dev/null +++ b/lib/C2Programmer-1.0.0/library.json @@ -0,0 +1,15 @@ +{ + "name": "C2Programmer", + "version": "1.0.0", + "keywords": [ + "C2", "io", "Programmer" + ], + "description": "Implementation of C2 programmer allowing update of Sonoff Bridge RF chip.", + "repository": + { + "type": "git", + "url": "https://github.com/lhartmann/c2_prog_wifi" + }, + "frameworks": "arduino", + "platforms": "espressif8266" +} diff --git a/lib/C2Programmer-1.0.0/library.properties b/lib/C2Programmer-1.0.0/library.properties new file mode 100644 index 000000000..affc5e809 --- /dev/null +++ b/lib/C2Programmer-1.0.0/library.properties @@ -0,0 +1,9 @@ +name=C2Programmer +version=1.0.0 +author=Lucas Hartmann +maintainer=Theo Arends +sentence=Implementation of C2 programmer allowing update of Sonoff Bridge RF chip. +paragraph= +category=Signal Input/Output +url= +architectures=esp8266 diff --git a/lib/C2Programmer-1.0.0/src/c2.cpp b/lib/C2Programmer-1.0.0/src/c2.cpp new file mode 100644 index 000000000..22bfbaedd --- /dev/null +++ b/lib/C2Programmer-1.0.0/src/c2.cpp @@ -0,0 +1,649 @@ +#include "c2.h" + +///////////////////////////////////////////// +// Nothing should need change on this file // +///////////////////////////////////////////// + +// Times in microseconds +#define T_RD (20+5) +#define T_SD ( 2+5) + +// Layer 0: Bit shifter +static bool c2_bit(bool b) { + C2D(b); + // C2_DELAY_US(1); + C2CK(0); + // C2_DELAY_US(1); + b = C2D(); + C2CK(1); + return b; +} + +// Layer 1: C2D Register read/write +void c2_address_write(uint8_t address) { +#ifdef C2_DEBUG + Serial.print("AW"); + Serial.println(address, HEX); +#endif + // start + c2_bit(true); + C2D_enable(true); + + // instruction + c2_bit(1); + c2_bit(1); + + // Address + for (int i = 0; i < 8; ++i) { + c2_bit(address & 1); + address >>= 1; + } + + // Stop + C2D_enable(false); + c2_bit(1); +} + +uint8_t c2_address_read() { + // start + c2_bit(true); + C2D_enable(true); + + // instruction + c2_bit(0); + c2_bit(1); + + // Change C2D direction + C2D_enable(false); + c2_bit(0); + + // Address + uint8_t a = 0, m = 1; + for (int i = 0; i < 8; ++i) { + if (c2_bit(a & 1)) { + a |= m; + } + m <<= 1; + } + + // Stop is implied +#ifdef C2_DEBUG + Serial.print("AR"); + Serial.println(a, HEX); +#endif + return a; +} + +uint8_t c2_data_write(uint32_t d, uint8_t bytes) { +#ifdef C2_DEBUG + Serial.print("DW"); + Serial.println(d, HEX); +#endif + + // start + c2_bit(true); + C2D_enable(true); + + // instruction + c2_bit(1); + c2_bit(0); + + // Length + bytes--; + c2_bit(bytes & 1); + c2_bit(bytes & 2); + bytes++; + + // Data + for (int i = 0; i < 8 * bytes; ++i) { + c2_bit(d & 1); + d >>= 1; + } + + // Reverse C2D direction + C2D_enable(false); + c2_bit(0); + + // Wait + uint8_t to = 128; + while (!c2_bit(0)) if (!--to) return C2_SHIFT_TIMEOUT; + + // Stop + //c2_bit(0); implied + + return C2_SUCCESS; +} + +uint8_t c2_data_read(uint32_t &d, uint8_t bytes) { + // start + c2_bit(true); + C2D_enable(true); + + // instruction + c2_bit(0); + c2_bit(0); + + // Length + bytes--; + c2_bit(bytes & 1); + c2_bit(bytes & 2); + bytes++; + + // Reverse C2D direction + C2D_enable(false); + c2_bit(0); + + // Wait + uint8_t to = 128; + while (!c2_bit(0)) if (!--to) return C2_SHIFT_TIMEOUT; + + // Data + d = 0; + uint32_t m = 1; + for (int i = 0; i < 8 * bytes; ++i) { + if (c2_bit(d & 1)) { + d |= m; + } + m <<= 1; + } + + // Stop is implied +#ifdef C2D_DEBUG + Serial.print("DR"); + Serial.println(d, HEX); +#endif + return C2_SUCCESS; +} + +// Layer 2: Operations +#define C2_POLL_INBUSY() { \ + uint16_t to = 1000; \ + uint8_t a; \ + while (1) { \ + a = c2_address_read(); \ + if (a == 0xFF) return C2_BROKEN_LINK; \ + if (~a & C2_INBUSY) break; \ + if (--to == 0) return C2_POLL_TIMEOUT; \ + C2_DELAY_MS(1); \ + }; \ + } + +#define C2_POLL_OUTREADY() { \ + uint16_t to = 10000; \ + uint8_t a; \ + while (1) { \ + a = c2_address_read(); \ + if (a == 0xFF) return C2_BROKEN_LINK; \ + if (a & C2_OUTREADY) break; \ + if (--to == 0) return C2_POLL_TIMEOUT; \ + C2_DELAY_MS(1); \ + }; \ + } + +#define C2_DATA_WRITE_AND_CHECK(v, s) { \ + uint8_t r = c2_data_write(v, s); \ + if (r != C2_SUCCESS) return r; \ + } + +#define C2_DATA_READ_AND_CHECK(v, s) { \ + uint8_t r = c2_data_read(v, s); \ + if (r != C2_SUCCESS) return r; \ + } + +#define C2_EXPECT_DATA(value) { \ + uint8_t d; \ + C2_DATA_READ_AND_CHECK(d, 1); \ + if (d != (value)) return C2_CMD_ERROR; \ + } + +uint8_t c2_reset() { + C2CK(false); + C2_DELAY_US(T_RD); + C2CK(true); + C2_DELAY_US(T_SD); + return C2_SUCCESS; +} + +uint8_t c2_programming_init() { + c2_reset(); + c2_address_write(C2FPCTL); + C2_DATA_WRITE_AND_CHECK(C2FPCTL_ENABLE0, 1); + C2_DATA_WRITE_AND_CHECK(C2FPCTL_CORE_HALT, 1); + C2_DATA_WRITE_AND_CHECK(C2FPCTL_ENABLE1, 1) + C2_DELAY_MS(21); + return C2_SUCCESS; +} + +uint8_t c2_block_write(uint32_t address, uint8_t *data, uint8_t len) { + // 1. Perform an Address Write with a value of FPDAT + c2_address_write(C2FPDAT); + + // 2. Perform a Data Write with the Block Write command. + C2_DATA_WRITE_AND_CHECK(C2FPDAT_BLOCK_WRITE, 1); + + // 3. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 4. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with the high byte of the address. + C2_DATA_WRITE_AND_CHECK(address >> 8, 1); + + // 7. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 8. Perform a Data Write with the low byte of the address. + C2_DATA_WRITE_AND_CHECK(address & 255, 1); + + // 9. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 10. Perform a Data Write with the length. + C2_DATA_WRITE_AND_CHECK(len, 1); + + // 12a. Repeat steps 11 and 12 for each byte specified by the length field. + uint8_t i = 0; + do { + // 11. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 12. Perform a Data Write with the data. This will write the data to the flash. + C2_DATA_WRITE_AND_CHECK(data[i], 1); + } while (++i != len); + + // 13. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 14. Perform a Data Read instruction. A value of 0x0D is okay. write to an EPROM block: + C2_EXPECT_DATA(0x0D); + + return C2_SUCCESS; +} + +uint8_t c2_eeprom_write(uint32_t address, uint8_t *data, uint8_t len) { + // 1. Write 0x04 to the FPCTL register. + c2_address_write(C2FPCTL); + C2_DATA_WRITE_AND_CHECK(0x04, 1); + + // 2. Write 0x40 to EPCTL. + c2_address_write(C2EPCTL); + C2_DATA_WRITE_AND_CHECK(0x40, 1); + + // 3. Write 0x58 to EPCTL. + C2_DATA_WRITE_AND_CHECK(0x58, 1); + + // 4. Write the high byte of the address to EPADDRH. + c2_address_write(C2EPADDRH); + C2_DATA_WRITE_AND_CHECK(address >> 8, 1); + + // 5. Write the low byte of the address to address EPADDRL. + c2_address_write(C2EPADDRL); + C2_DATA_WRITE_AND_CHECK(address, 1); + + // 6. Perform an Address Write with a value of EPDAT. + c2_address_write(C2EPDAT); + + // 7. Turn on VPP. + + // 8. Wait for the VPP settling time. + + // 10a. Repeat steps 9 and 10 until all bytes are written. + uint8_t i = 0; + do { + // 9. Write the data to the device using a Data Write. + C2_DATA_WRITE_AND_CHECK(data[i], 1); + + // 10. Perform Address Read instructions until the value returned is not 0x80 and the EPROM is no longer busy. + C2_POLL_INBUSY(); + } while (++i != len); + + // 12. Turn off VPP. Note that VPP can only be applied for a maximum lifetime amount, and this value is specified in the device data sheet. + + // 13. Write 0x40 to EPCTL. + c2_address_write(C2EPCTL); + C2_DATA_WRITE_AND_CHECK(0x40, 1); + + // 14. Write 0x00 to EPCTL. + C2_DATA_WRITE_AND_CHECK(0x00, 1); + + // 15. Write 0x02 to FPCTL. + c2_address_write(C2FPCTL); + C2_DATA_WRITE_AND_CHECK(0x02, 1); + + // 16. Write 0x04 to FPCTL. + C2_DATA_WRITE_AND_CHECK(0x04, 1); + + // 17. Write 0x01 to FPCTL. + C2_DATA_WRITE_AND_CHECK(0x01, 1); + + return C2_SUCCESS; +} + +uint8_t c2_block_read(uint32_t address, uint8_t *data, uint8_t len) { + // 1. Perform an Address Write with a value of FPDAT. + c2_address_write(C2FPDAT); + + // 2. Perform a Data Write with the Block Read command. + C2_DATA_WRITE_AND_CHECK(C2FPDAT_BLOCK_READ, 1); + + // 3. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 4. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with the high byte of the address. + C2_DATA_WRITE_AND_CHECK(address >> 8, 1); + + // 7. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 8. Perform a Data Write with the low byte of the address. + C2_DATA_WRITE_AND_CHECK(address, 1); + + // 9. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 10. Perform a Data Write with the length. + C2_DATA_WRITE_AND_CHECK(len, 1); + + // 11. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 12. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 13. Read FPI Command Status. Abort if Status != 0x0D. + C2_EXPECT_DATA(0x0D); + + // 15a. Repeat step 14 and 15 for each byte specified by the length field. + uint8_t i = 0; + do { + // 14. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 15. Perform a Data Read instruction. This will read the data from the flash. + C2_DATA_READ_AND_CHECK(data[i], 1); + } while (++i != len); + + return C2_SUCCESS; +} + +uint8_t c2_eeprom_read(uint32_t address, uint8_t *data, uint8_t len) { + // 1. Write 0x04 to the FPCTL register. + c2_address_write(C2FPCTL); + C2_DATA_WRITE_AND_CHECK(0x04, 1); + + // 2. Write 0x00 to EPCTL. + c2_address_write(C2EPCTL); + C2_DATA_WRITE_AND_CHECK(0x00, 1); + + // 3. Write 0x58 to EPCTL. + C2_DATA_WRITE_AND_CHECK(0x58, 1); + + // 4. Write the high byte of the address to EPADDRH. + c2_address_write(C2EPADDRH); + C2_DATA_WRITE_AND_CHECK(address >> 8, 1); + + // 5. Write the low byte of the address to address EPADDRL. + c2_address_write(C2EPADDRL); + C2_DATA_WRITE_AND_CHECK(address, 1); + + // 6. Perform an Address Write with a value of EPDAT. + c2_address_write(C2EPDAT); + + // 9. Repeat steps 7 and 8 until all bytes are read. + uint8_t i = 0; + do { + // 7.1. Perform an Address Write operation with a value of EPSTAT. + c2_address_write(C2EPSTAT); + + // 7.2. Perform a Data Read operation and check the bits of the EPSTAT register. + uint8_t err; + C2_DATA_READ_AND_CHECK(err, 1); + if (err & C2EPSTAT_ERROR) return C2_CMD_ERROR; + + // 7.3. Perform an Address Write operation with a value of EPDAT. + c2_address_write(C2EPDAT); + + // 7. Perform Address Read instructions until the value returned is not 0x80 and the EPROM is no longer busy. + C2_POLL_INBUSY(); + + // 8.1. Perform an Address Write operation with a value of EPSTAT. + c2_address_write(C2EPSTAT); + + // 8.2. Perform a Data Read operation and check the ERROR bit in the EPSTAT register. + C2_DATA_READ_AND_CHECK(err, 1); + if (err & C2EPSTAT_ERROR) return C2_CMD_ERROR; + + // 8.3. Perform an Address Write operation with a value of EPDAT. + C2_DATA_WRITE_AND_CHECK(C2EPDAT, 1); + + // 8. Read the byte using the Data Read instruction. + C2_DATA_READ_AND_CHECK(data[i], 1); + } while (++i != len); + + // 10. Write 0x40 to EPCTL. + c2_address_write(C2EPCTL); + C2_DATA_WRITE_AND_CHECK(0x40, 1); + + // 11. Write 0x00 to EPCTL. + C2_DATA_WRITE_AND_CHECK(0x00, 1); + + // 12. Write 0x02 to FPCTL. + c2_address_write(C2FPCTL); + C2_DATA_WRITE_AND_CHECK(0x02, 1); + + // 13. Write 0x04 to FPCTL. + C2_DATA_WRITE_AND_CHECK(0x04, 1); + + // 14. Write 0x01 to FPCTL. + C2_DATA_WRITE_AND_CHECK(0x01, 1); + + return C2_SUCCESS; +} + +uint8_t c2_page_erase(uint8_t page) { + // 1. Perform an Address Write with a value of FPDAT. + c2_address_write(C2FPDAT); + + // 2. Perform a Data Write with the Page Erase command. + c2_data_write(C2FPDAT_FLASH_PAGE_ERASE, 1); + + // 3. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 4. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with the page number. + c2_data_write(page, 1); + + // 7. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 8. Poll on OutReady using Address Read until the bit clears. + C2_POLL_OUTREADY(); + + // 9. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + // 10. Perform a Data Write with the a value of 0x00. + c2_data_write(0x00, 1); + + // 11. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 12. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 13. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + return C2_SUCCESS; +} + +uint8_t c2_device_erase() { + // 1. Perform an Address Write with a value of FPDAT. + c2_address_write(C2FPDAT); + + // 2. Perform a Data Write with the Device Erase command. + C2_DATA_WRITE_AND_CHECK(C2FPDAT_DEVICE_ERASE, 1); + + // 3. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 4. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with a value of 0xDE. + C2_DATA_WRITE_AND_CHECK(0xDE, 1); + + // 7. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 8. Perform a Data Write with a value of 0xAD. + C2_DATA_WRITE_AND_CHECK(0xAD, 1); + + // 9. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 10. Perform a Data Write with a value of 0xA5. + C2_DATA_WRITE_AND_CHECK(0xA5, 1); + + // 11. Poll on InBusy using Address Read until the bit clears. + C2_POLL_INBUSY(); + + // 12. Poll on OutReady using Address Read until the bit set. + C2_POLL_OUTREADY(); + + // 13. Perform a Data Read instruction. A value of 0x0D is okay. + C2_EXPECT_DATA(0x0D); + + return C2_SUCCESS; +} + +uint8_t c2_sfr_write_non_paged(uint8_t address, uint8_t data) { + // 1. Write the SFR address to the device using the Address Write instruction. + c2_address_write(address); + + // 2. Write the SFR value to the device using the Data Write instruction. + C2_DATA_WRITE_AND_CHECK(data, 1); + + return C2_SUCCESS; +} + +uint8_t c2_sfr_write_paged(uint8_t address, uint8_t data) { + // 1. Perform an Address Write with a value of FPDAT. + c2_address_write(C2FPDAT); + + // 2. Write the Direct Write command (0x0A) using a Data Write + C2_DATA_WRITE_AND_CHECK(C2FPDAT_DIRECT_WRITE, 1); + + // 3. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 4. Poll OutReady it sets to 1. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read to ensure a return value of 0x0D (no errors). + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with a value of the SFR address. + C2_DATA_WRITE_AND_CHECK(address, 1); + + // 7. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 8. Perform a Data Write with a value of 0x01. + C2_DATA_WRITE_AND_CHECK(0x01, 1); + + // 9. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 10. Perform a Data Write with the new SFR value. + C2_DATA_WRITE_AND_CHECK(data, 1); + + // 11. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + return C2_SUCCESS; +} + +// 4.6. Reading from an SFR +// To read from an SFR on a device that does not have SFR paging: +uint8_t c2_sfr_read_non_paged(uint8_t address, uint8_t &v) { + // 1. Write the SFR address to the device using the Address Write instruction. + c2_address_write(address); + + // 2. Read the SFR value from the device using the Data Read instruction. + C2_DATA_READ_AND_CHECK(v, 1); + + return C2_SUCCESS; +} + +// For devices with SFR paging, direct reads through the PI using the Direct Read command are recommended to ensure the SFR Page is managed properly. +// To read an SFR from a device with SFR paging: +uint8_t c2_sfr_read_paged(uint8_t address, uint8_t &v) { + // 1. Perform an Address Write with a value of FPDAT. + c2_address_write(C2FPDAT); + + // 2. Write the Direct Read command (0x09) using a Data Write. + C2_DATA_WRITE_AND_CHECK(C2FPDAT_DIRECT_READ, 1); + + // 3. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 4. Poll OutReady until it sets to 1. + C2_POLL_OUTREADY(); + + // 5. Perform a Data Read to ensure a return value of 0x0D (no errors). + C2_EXPECT_DATA(0x0D); + + // 6. Perform a Data Write with a value of the SFR address. + C2_DATA_WRITE_AND_CHECK(address, 1); + + // 7. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 8. Perform a Data Write with a value of 0x01. + C2_DATA_WRITE_AND_CHECK(0x01, 1); + + // 9. Poll InBusy until the data is processed by the PI. + C2_POLL_INBUSY(); + + // 10. Poll OutReady until it sets to 0. + C2_POLL_OUTREADY(); + + // 11. Read the SFR value from the device using the Data Read instruction. + C2_DATA_READ_AND_CHECK(v, 1); + + return C2_SUCCESS; +} + +const char *c2_print_status_by_name(uint8_t ch) { + switch (ch) { + case C2_SUCCESS: return "Success"; + case C2_SHIFT_TIMEOUT: return "Shift wait timeout error"; + case C2_POLL_TIMEOUT: return "Register poll timeout error"; + case C2_CMD_ERROR: return "In-command error"; + case C2_BROKEN_LINK: return "Broken link, address read failed"; + default: return "unknownl error"; + } +} + +// This is to enforce arduino-like formatting in kate +// kate: space-indent on; indent-width 2; mixed-indent off; indent-mode cstyle; diff --git a/lib/C2Programmer-1.0.0/src/c2.h b/lib/C2Programmer-1.0.0/src/c2.h new file mode 100644 index 000000000..bc744d02f --- /dev/null +++ b/lib/C2Programmer-1.0.0/src/c2.h @@ -0,0 +1,141 @@ +#ifndef C2_H +#define C2_H + +#include +#include + +//////////////////////////////// +// Hardware Abstraction Layer // +//////////////////////////////// + +// Rewrite these for your hardware + +#define PIN_C2CK 4 +#define PIN_C2D 5 + +// Set C2CK state +inline void C2CK(bool ck) { + digitalWrite(PIN_C2CK, ck); +} + +// get C2CK state +inline bool C2CK() { + return digitalRead(PIN_C2CK); +} + +// Set C2D state +inline void C2D(bool d) { + digitalWrite(PIN_C2D, d); +} + +// Get C2D state +inline bool C2D() { + return digitalRead(PIN_C2D); +} + +// Enable/disable C2D output butter +inline void C2D_enable(bool oe) { + if (oe) pinMode(PIN_C2D, OUTPUT); + else pinMode(PIN_C2D, INPUT); +} + +// Delay functions +#define C2_DELAY_US(n) delayMicroseconds(n) +#define C2_DELAY_MS(n) delay(n) + +//////////////////////////////////////////// +// Nothing should need change from now on // +//////////////////////////////////////////// + +// Exceptions: +#define C2_SUCCESS 0x00 // Compare for success +#define C2_ERROR 0xFF // Mask for all errors +#define C2_TIMEOUT 0x03 // Mask for timeouts +#define C2_SHIFT_TIMEOUT 0x01 // Shift wait +#define C2_POLL_TIMEOUT 0x02 // Register poll +#define C2_CMD_ERROR 0x04 // In-command Error +#define C2_BROKEN_LINK 0x08 // Address read returned 0xFF, comms disabled + +// Register Addresses +#define C2DEVID 0x00 +#define C2REVID 0x01 +#define C2FPCTL 0x02 +#define C2FPDAT 0xB4 + +#define C2EPCTL 0x00 +#define C2EPDAT 0x00 +#define C2EPDAT 0x00 +#define C2EPADDRH 0x00 +#define C2EPADDRL 0x00 +#define C2EPSTAT 0x00 + +// Commands for FPCTL register +#define C2FPCTL_ENABLE0 0x02 +#define C2FPCTL_CORE_HALT 0x04 +#define C2FPCTL_ENABLE1 0x01 + +// Commands for FPDAT register +#define C2FPDAT_DEVICE_ERASE 0x03 +#define C2FPDAT_FLASH_BLOCK_READ 0x06 +#define C2FPDAT_BLOCK_WRITE 0x07 +#define C2FPDAT_FLASH_PAGE_ERASE 0x08 +#define C2FPDAT_BLOCK_READ 0x06 +#define C2FPDAT_GET_VERSION 0x01 +#define C2FPDAT_GET_DERIVATIVE 0x02 +#define C2FPDAT_DIRECT_READ 0x09 +#define C2FPDAT_DIRECT_WRITE 0x0A +#define C2FPDAT_INDIRECT_READ 0x0B +#define C2FPDAT_INDIRECT_WRITE 0x0C + +// Commands for EPCTL register +#define C2EPCTL_ENABLE0 0x40 +#define C2EPCTL_ENABLE1 0x58 + +// EPSTAT status bits +#define C2EPSTAT_WLOCK 0x80 +#define C2EPSTAT_RLOCK 0x40 +#define C2EPSTAT_ERROR 0x01 + +// 'Address read' status bits +#define C2_FLBUSY 0x08 +#define C2_EEBUSY C2_FLBUSY +#define C2_EEERROR 0x04 +#define C2_INBUSY 0x02 +#define C2_OUTREADY 0x01 + +// Layer 1: C2 Programmig Interface (PI) Register access +void c2_address_write(uint8_t address); +uint8_t c2_address_read(); +uint8_t c2_data_write(uint32_t d, uint8_t bytes); +uint8_t c2_data_read(uint32_t &d, uint8_t bytes=4); + +// Shorcuts for smaller words +inline uint8_t c2_data_read(uint16_t &d, uint8_t bytes=2) { + uint32_t dd; + uint8_t r = c2_data_read(dd, 2); + d = dd; + return r; +} +inline uint8_t c2_data_read(uint8_t &d, uint8_t bytes=1) { + uint32_t dd; + uint8_t r = c2_data_read(dd, 1); + d = dd; + return r; +} + +// Layer 2: Operations +uint8_t c2_reset(); +uint8_t c2_programming_init(); +uint8_t c2_block_write(uint32_t address, uint8_t *data, uint8_t len); +uint8_t c2_block_read(uint32_t address, uint8_t *data, uint8_t len); +uint8_t c2_eeprom_read(uint32_t address, uint8_t *data, uint8_t len); +uint8_t c2_page_erase(uint8_t page); +uint8_t c2_device_erase(); +uint8_t c2_sfr_write_non_paged(uint8_t address, uint8_t data); +uint8_t c2_sfr_write_paged(uint8_t address, uint8_t data); +uint8_t c2_sfr_read_non_paged(uint8_t address, uint8_t &data); +uint8_t c2_sfr_read_paged(uint8_t address, uint8_t &data); + +const char *c2_print_status_by_name(uint8_t ch); + +#endif // C2_H diff --git a/lib/C2Programmer-1.0.0/src/ihx.cpp b/lib/C2Programmer-1.0.0/src/ihx.cpp new file mode 100644 index 000000000..9a0ad6fcd --- /dev/null +++ b/lib/C2Programmer-1.0.0/src/ihx.cpp @@ -0,0 +1,71 @@ +#include "ihx.h" +#include + +static const char *conv = "0123456789ABCDEFabcdef"; +static uint8_t value_of_hex(uint8_t ch) { + uint8_t i = 0; + //Loop through list + while (conv[i] && ch != conv[i]) i++; + + if (!conv[i]) return 0; + //Convert to upper case + if (i >= 16) return i - 6; // lowercase + return i; +} + +uint8_t ihx_decode(uint8_t *buff, uint16_t slen) { + // Make sure the line looks like intel + if (buff[0] != ':') { +#ifdef IHX_DEBUG + Serial.println("IHX: Bad start:" + buff[0]); +#endif + return IHX_ERROR; + } + + // Remove strayline terminators at the end of the file + while (buff[slen - 1] == '\n' || buff[slen - 1] == '\r') slen--; + + // Length must be odd: start followed by hex pairs + if (slen < 11) { +#ifdef IHX_DEBUG + Serial.printf("IHX: Short read: %u\n", slen); +#endif + return IHX_ERROR; + } + + if (slen % 2 != 1) { +#ifdef IHX_DEBUG + Serial.printf("IHX: Length not odd (%u)\n", slen); +#endif + return IHX_ERROR; + } + + // Decode + uint8_t cs = 0; + for (int i = 0; i < (slen - 1) / 2; ++i) { + buff[i] = (value_of_hex(buff[2 * i + 1]) << 4) | value_of_hex(buff[2 * i + 2]); + cs += buff[i]; + } + + // Validate checksum + if (cs) { +#ifdef IHX_DEBUG + Serial.print("IHX: Bad checksum: "); + Serial.println(cs, HEX); +#endif + + return IHX_ERROR; + } + + // Check if lengths match + if (buff[0] * 2 + 11 != slen) { +#ifdef IHX_DEBUG + Serial.println("IHX: Length mismatch"); +#endif + return IHX_ERROR; + } + + return IHX_SUCCESS; +} + + diff --git a/lib/C2Programmer-1.0.0/src/ihx.h b/lib/C2Programmer-1.0.0/src/ihx.h new file mode 100644 index 000000000..b9fe8bec8 --- /dev/null +++ b/lib/C2Programmer-1.0.0/src/ihx.h @@ -0,0 +1,39 @@ +#ifndef IHX_H +#define IHX_H + +#include + +// Decoded +// Intel HEX file format: +// 1B - Start ':' +// 2B - data bytes +// 4B - address +// 2B - record type +// ?B - data +// 2B - checksum + +// 01234567890123 +// :NNAAAATTDDSS +struct ihx_t { + uint8_t len; + uint8_t address_high; + uint8_t address_low; + uint8_t record_type; // See IHX_RT_* below + uint8_t data[]; +}; +#define IHX_RT_DATA 0x00 +#define IHX_RT_END_OF_FILE 0x01 +#define IHX_RT_EXTENDED_SEGMENT_ADDRESS 0x02 +#define IHX_RT_START_SEGMENT_ADDRESS 0x03 +#define IHX_RT_EXTENDED_LINEAR_ADDRESS 0x04 +#define IHX_RT_START_LINEAR_ADDRESS 0x05 + +#define IHX_SUCCESS 0x00 +#define IHX_ERROR 0xFF + +extern uint8_t ihx_decode(uint8_t *buff, uint16_t slen); + +#endif // IHX_H + +// This is to enforce arduino-like formatting in kate +// kate: space-indent on; indent-width 2; mixed-indent off; indent-mode cstyle; diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index e32a7c7ef..5f28ffcc7 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,5 +1,7 @@ /* 6.0.0a * Add CRC to Settings making future upgrades more fail-safe + * Add support for uploading Sonoff Bridge firmware found in tools/fw_efm8bb1 folder build by Portisch using Web Gui File Upload (#2886) + * Add command RfRaw to control Portisch firmware features * Remove version 3, 4 and pre 5.2 settings auto-upgrade. See https://github.com/arendst/Sonoff-Tasmota/wiki/Upgrade#migration-path * Change default CFG_HOLDER from 0x20161209 to 4617 (=0x1209) - no impact on default upgrades * Fix Pzem004T checksum error diff --git a/sonoff/i18n.h b/sonoff/i18n.h index c6346a748..e0f1c2439 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -345,6 +345,7 @@ #define D_CMND_RFLOW "RfLow" #define D_CMND_RFSYNC "RfSync" #define D_JSON_RFRECEIVED "RfReceived" +#define D_CMND_RFRAW "RfRaw" // Commands xdrv_07_domoticz.ino #define D_CMND_DOMOTICZ "Domoticz" @@ -511,7 +512,7 @@ const char kOptionToggle[] PROGMEM = "TOGGLE|" D_TOGGLE "|" D_ADMIN ; const char kOptionBlink[] PROGMEM = "BLINK|" D_BLINK ; const char kOptionBlinkOff[] PROGMEM = "BLINKOFF|" D_BLINKOFF ; -// webserver.ino +// xdrv_02_webserver.ino #ifdef USE_WEBSERVER const char HTTP_SNS_TEMP[] PROGMEM = "%s{s}%s " D_TEMPERATURE "{m}%s°%c{e}"; // {s} = , {m} = , {e} = const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; // {s} = , {m} = , {e} = diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 37a252909..13911e083 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Зареждането е прекъснато" #define D_UPLOAD_ERR_8 "Файлът е невалиден" #define D_UPLOAD_ERR_9 "Файлът е прекалено голям" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Код на грешка при зареждането" #define D_ENTER_COMMAND "Въвеждане на команда" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 96883e1fb..eec72fc31 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Nahrávání přerušeno" #define D_UPLOAD_ERR_8 "Špatný soubor" #define D_UPLOAD_ERR_9 "Soubor je příliš velký" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Chyba nahrávání" #define D_ENTER_COMMAND "Vlož příkaz" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 4670b6999..91a2bcfef 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Upload abgebrochen" #define D_UPLOAD_ERR_8 "Datei ungültig" #define D_UPLOAD_ERR_9 "Datei zu groß" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Upload Fehler Nummer" #define D_ENTER_COMMAND "Befehl eingeben" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 5abbf2b22..2281e2faf 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Το ανεβάσμα διακόπηκε" #define D_UPLOAD_ERR_8 "Μη έγκυρο αρχείο" #define D_UPLOAD_ERR_9 "Το αρχείο είναι πολύ μεγάλο" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Κωδικός λάθους ανεβάσματος" #define D_ENTER_COMMAND "Εισαγωγή εντολής" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 2d0ffb38a..f5f0d6e22 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Upload aborted" #define D_UPLOAD_ERR_8 "File invalid" #define D_UPLOAD_ERR_9 "File too large" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Upload error code" #define D_ENTER_COMMAND "Enter command" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 4b08fff62..68fbb1750 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Carga cancelada" #define D_UPLOAD_ERR_8 "Archivo no válido" #define D_UPLOAD_ERR_9 "Archivo muy grande" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Código de error de carga" #define D_ENTER_COMMAND "Ingresar comando" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 4a980e174..09f9ffe0f 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Téléchargement annulé" #define D_UPLOAD_ERR_8 "Fichier invalide" #define D_UPLOAD_ERR_9 "Fichier trop grand" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Code d'erreur téléchargement" #define D_ENTER_COMMAND "Saisir une commande" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index f6c1aac8d..986b18fdf 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Feltöltés megszakítva" #define D_UPLOAD_ERR_8 "Érvénytelen file" #define D_UPLOAD_ERR_9 "File túl nagy" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Feltöltés hiba kód" #define D_ENTER_COMMAND "Parancsolj" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 5ce673196..eeac61384 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Invio annullato" #define D_UPLOAD_ERR_8 "File non valido" #define D_UPLOAD_ERR_9 "File troppo grande" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Codice errore invio" #define D_ENTER_COMMAND "Inserire comando" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 6e088bdb1..a764cb667 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.14.0a + * Updated until v6.0.0a \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Opwaarderen afgebroken" #define D_UPLOAD_ERR_8 "Ongeldig bestand" #define D_UPLOAD_ERR_9 "Bestand is te groot" +#define D_UPLOAD_ERR_10 "Init RF chip mislukt" +#define D_UPLOAD_ERR_11 "Wissen RF chip mislukt" +#define D_UPLOAD_ERR_12 "Opwaarderen RF chip mislukt" +#define D_UPLOAD_ERR_13 "Decoderen RF bestand mislukt" #define D_UPLOAD_ERROR_CODE "Opwaardeer foutcode" #define D_ENTER_COMMAND "Geef opdracht" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 62b112698..a039cf333 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Wgrywanie przerwane" #define D_UPLOAD_ERR_8 "Błędny plik" #define D_UPLOAD_ERR_9 "Plik jest za duży" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Błąd wgrywania" #define D_ENTER_COMMAND "Wprowadź polecenie" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 01ff2e48c..4bcf8efa2 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Envio cancelado" #define D_UPLOAD_ERR_8 "Arquivo inválido" #define D_UPLOAD_ERR_9 "Arquivo muito grande" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Código de erro do envio" #define D_ENTER_COMMAND "Inserir comando" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index a7da5a4ac..4eeeb3965 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Envio cancelado" #define D_UPLOAD_ERR_8 "Ficheiro inválido" #define D_UPLOAD_ERR_9 "Ficheiro demasiado grande" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Código de erro do envio" #define D_ENTER_COMMAND "Inserir comando" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index b54f2d7f1..cda108cdc 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Загрузка прервана" #define D_UPLOAD_ERR_8 "Файл неверный" #define D_UPLOAD_ERR_9 "Слишком большой файл" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Код ошибки загрузки" #define D_ENTER_COMMAND "Введите команду" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 481291ee8..c0339b9e8 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "Завантаження перервано" #define D_UPLOAD_ERR_8 "Файл невірний" #define D_UPLOAD_ERR_9 "Занадто великий файл" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "Код помилки завантаження" #define D_ENTER_COMMAND "Уведіть команду" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 5b036a557..7a485feb0 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "上传取消" #define D_UPLOAD_ERR_8 "错误的固件" #define D_UPLOAD_ERR_9 "固件太大" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "上传错误代码" #define D_ENTER_COMMAND "输入命令" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index baecc8318..e6adb4b0e 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -321,6 +321,10 @@ #define D_UPLOAD_ERR_7 "上傳取消" #define D_UPLOAD_ERR_8 "錯誤的固件" #define D_UPLOAD_ERR_9 "固件太大" +#define D_UPLOAD_ERR_10 "Failed to init RF chip" +#define D_UPLOAD_ERR_11 "Failed to erase RF chip" +#define D_UPLOAD_ERR_12 "Failed to write to RF chip" +#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" #define D_UPLOAD_ERROR_CODE "上傳錯誤代碼" #define D_ENTER_COMMAND "輸入命令" diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 5dd01a632..5d641f5fb 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -193,7 +193,7 @@ enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_RGBWC}; enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; -enum XsnsFunctions {FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, +enum XsnsFunctions {FUNC_PRE_INIT, FUNC_INIT, FUNC_LOOP, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_INIT, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR, FUNC_RULES_PROCESS}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 0d0fc91da..de3935c07 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -2324,7 +2324,7 @@ void GpioInit() } SetLedPower(Settings.ledstate &8); - XdrvCall(FUNC_INIT); + XdrvCall(FUNC_PRE_INIT); } extern "C" { @@ -2449,6 +2449,7 @@ void setup() ArduinoOTAInit(); #endif // USE_ARDUINO_OTA + XdrvCall(FUNC_INIT); XsnsCall(FUNC_INIT); } diff --git a/sonoff/user_config.h b/sonoff/user_config.h index a9f7cfab4..17b09bbe0 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -310,6 +310,8 @@ #define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +#define USE_RF_FLASH // Add support for flashing the EFM8BB1 chip on the Sonoff RF Bridge. C2CK must be connected to GPIO4, C2D to GPIO5 on the PCB + /*********************************************************************************************\ * Select features and sensors enabled in previous version saving space \*********************************************************************************************/ diff --git a/sonoff/xdrv_02_webserver.ino b/sonoff/xdrv_02_webserver.ino index c290bcd90..1f699cfb0 100644 --- a/sonoff/xdrv_02_webserver.ino +++ b/sonoff/xdrv_02_webserver.ino @@ -25,6 +25,12 @@ * Based on source by AlexT (https://github.com/tzapu) \*********************************************************************************************/ +#ifdef USE_RF_FLASH +uint8_t *efm8bb1_update = NULL; +#endif // USE_RF_FLASH + +enum UploadTypes { UPL_TASMOTA, UPL_SETTINGS, UPL_EFM8BB1 }; + const char HTTP_HEAD[] PROGMEM = "" "" @@ -1162,7 +1168,7 @@ void HandleRestoreConfiguration() ShowPage(page); upload_error = 0; - upload_file_type = 1; + upload_file_type = UPL_SETTINGS; } void HandleUpgradeFirmware() @@ -1181,7 +1187,7 @@ void HandleUpgradeFirmware() ShowPage(page); upload_error = 0; - upload_file_type = 0; + upload_file_type = UPL_TASMOTA; } void HandleUpgradeFirmwareStart() @@ -1238,6 +1244,12 @@ void HandleUploadDone() case 7: strncpy_P(error, PSTR(D_UPLOAD_ERR_7), sizeof(error)); break; case 8: strncpy_P(error, PSTR(D_UPLOAD_ERR_8), sizeof(error)); break; case 9: strncpy_P(error, PSTR(D_UPLOAD_ERR_9), sizeof(error)); break; +#ifdef USE_RF_FLASH + case 10: strncpy_P(error, PSTR(D_UPLOAD_ERR_10), sizeof(error)); break; + case 11: strncpy_P(error, PSTR(D_UPLOAD_ERR_11), sizeof(error)); break; + case 12: strncpy_P(error, PSTR(D_UPLOAD_ERR_12), sizeof(error)); break; + case 13: strncpy_P(error, PSTR(D_UPLOAD_ERR_13), sizeof(error)); break; +#endif default: snprintf_P(error, sizeof(error), PSTR(D_UPLOAD_ERROR_CODE " %d"), upload_error); } @@ -1248,9 +1260,8 @@ void HandleUploadDone() } else { page += F("green'>" D_SUCCESSFUL "
"); page += FPSTR(HTTP_MSG_RSTRT); - ShowWebSource(SRC_WEBGUI); - restart_flag = 2; + restart_flag = 2; // Always restart to re-enable disabled features during update } SettingsBufferFree(); page += F("
"); @@ -1265,7 +1276,7 @@ void HandleUploadLoop() if (HTTP_USER == webserver_state) { return; } if (upload_error) { - if (!upload_file_type) { Update.end(); } + if (UPL_TASMOTA == upload_file_type) { Update.end(); } return; } @@ -1280,7 +1291,7 @@ void HandleUploadLoop() SettingsSave(1); // Free flash for upload snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_UPLOAD D_FILE " %s ..."), upload.filename.c_str()); AddLog(LOG_LEVEL_INFO); - if (upload_file_type) { + if (UPL_SETTINGS == upload_file_type) { if (!SettingsBufferAlloc()) { upload_error = 2; // Not enough space return; @@ -1296,6 +1307,12 @@ void HandleUploadLoop() if (Settings.flag.mqtt_enabled) MqttDisconnect(); uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; if (!Update.begin(maxSketchSpace)) { //start with max available size + +// if (_serialoutput) Update.printError(Serial); +// if (Update.getError() == UPDATE_ERROR_BOOTSTRAP) { +// if (_serialoutput) Serial.println("Device still in UART update mode, perform powercycle"); +// } + upload_error = 2; // Not enough space return; } @@ -1303,22 +1320,34 @@ void HandleUploadLoop() upload_progress_dot_count = 0; } else if (!upload_error && (UPLOAD_FILE_WRITE == upload.status)) { if (0 == upload.totalSize) { - if (upload_file_type) { + if (UPL_SETTINGS == upload_file_type) { config_block_count = 0; - } else { - if (upload.buf[0] != 0xE9) { - upload_error = 3; // Magic byte is not 0xE9 - return; + } + else { +#ifdef USE_RF_FLASH + if ((SONOFF_BRIDGE == Settings.module) && (upload.buf[0] == ':')) { // Check if this is a RF bridge FW file + Update.end(); // End esp8266 update session + upload_file_type = UPL_EFM8BB1; + + upload_error = SnfBrUpdateInit(); + if (upload_error != 0) { return; } + } else +#endif // USE_RF_FLASH + { + if (upload.buf[0] != 0xE9) { + upload_error = 3; // Magic byte is not 0xE9 + return; + } + uint32_t bin_flash_size = ESP.magicFlashChipSize((upload.buf[3] & 0xf0) >> 4); + if(bin_flash_size > ESP.getFlashChipRealSize()) { + upload_error = 4; // Program flash size is larger than real flash size + return; + } + upload.buf[2] = 3; // Force DOUT - ESP8285 } - uint32_t bin_flash_size = ESP.magicFlashChipSize((upload.buf[3] & 0xf0) >> 4); - if(bin_flash_size > ESP.getFlashChipRealSize()) { - upload_error = 4; // Program flash size is larger than real flash size - return; - } - upload.buf[2] = 3; // Force DOUT - ESP8285 } } - if (upload_file_type) { // config + if (UPL_SETTINGS == upload_file_type) { if (!upload_error) { if (upload.currentSize > (sizeof(Settings) - (config_block_count * HTTP_UPLOAD_BUFLEN))) { upload_error = 9; // File too large @@ -1327,7 +1356,42 @@ void HandleUploadLoop() memcpy(settings_buffer + (config_block_count * HTTP_UPLOAD_BUFLEN), upload.buf, upload.currentSize); config_block_count++; } - } else { // firmware + } +#ifdef USE_RF_FLASH + else if (UPL_EFM8BB1 == upload_file_type) { + if (efm8bb1_update != NULL) { // We have carry over data since last write, i. e. a start but not an end + ssize_t result = rf_glue_remnant_with_new_data_and_write(efm8bb1_update, upload.buf, upload.currentSize); + free(efm8bb1_update); + efm8bb1_update = NULL; + if (result != 0) { + upload_error = abs(result); // 2 = Not enough space, 8 = File invalid + return; + } + } + ssize_t result = rf_search_and_write(upload.buf, upload.currentSize); + if (result < 0) { + upload_error = abs(result); + return; + } else if (result > 0) { + if (result > upload.currentSize) { + // Offset is larger than the buffer supplied, this should not happen + upload_error = 9; // File too large - Failed to decode RF firmware + return; + } + // A remnant has been detected, allocate data for it plus a null termination byte + size_t remnant_sz = upload.currentSize - result; + efm8bb1_update = (uint8_t *) malloc(remnant_sz + 1); + if (efm8bb1_update == NULL) { + upload_error = 2; // Not enough space - Unable to allocate memory to store new RF firmware + return; + } + memcpy(efm8bb1_update, upload.buf + result, remnant_sz); + // Add null termination at the end of of remnant buffer + efm8bb1_update[remnant_sz] = '\0'; + } + } +#endif // USE_RF_FLASH + else { // firmware if (!upload_error && (Update.write(upload.buf, upload.currentSize) != upload.currentSize)) { upload_error = 5; // Upload buffer miscompare return; @@ -1342,7 +1406,7 @@ void HandleUploadLoop() if (_serialoutput && (upload_progress_dot_count % 80)) { Serial.println(); } - if (upload_file_type) { + if (UPL_SETTINGS == upload_file_type) { if (config_xor_on_set) { for (uint16_t i = 2; i < sizeof(Settings); i++) { settings_buffer[i] ^= (config_xor_on_set +i); @@ -1370,7 +1434,14 @@ void HandleUploadLoop() upload_error = 8; // File invalid return; } - } else { + } +#ifdef USE_RF_FLASH + else if (UPL_EFM8BB1 == upload_file_type) { + // RF FW flash done + upload_file_type = UPL_TASMOTA; + } +#endif // USE_RF_FLASH + else { if (!Update.end(true)) { // true to set the size to the current progress if (_serialoutput) { Update.printError(Serial); } upload_error = 6; // Upload failed. Enable logging 3 @@ -1385,7 +1456,7 @@ void HandleUploadLoop() restart_flag = 0; MqttRetryCounter(0); upload_error = 7; // Upload aborted - if (!upload_file_type) { Update.end(); } + if (UPL_TASMOTA == upload_file_type) { Update.end(); } } delay(0); } diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index e38dc537b..180e9b858 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -1165,7 +1165,7 @@ boolean Xdrv03(byte function) if (energy_flg) { switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: EnergyDrvInit(); break; case FUNC_COMMAND: diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 34a1a9861..7843192f7 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -1295,7 +1295,7 @@ boolean Xdrv04(byte function) if (light_type) { switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: LightInit(); break; case FUNC_EVERY_50_MSECOND: diff --git a/sonoff/xdrv_05_irremote.ino b/sonoff/xdrv_05_irremote.ino index df2828fb9..2688d6c2f 100644 --- a/sonoff/xdrv_05_irremote.ino +++ b/sonoff/xdrv_05_irremote.ino @@ -401,7 +401,7 @@ boolean Xdrv05(byte function) if ((pin[GPIO_IRSEND] < 99) || (pin[GPIO_IRRECV] < 99)) { switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: if (pin[GPIO_IRSEND] < 99) { IrSendInit(); } diff --git a/sonoff/xdrv_06_snfbridge.ino b/sonoff/xdrv_06_snfbridge.ino index 4149ae2a9..e146ea1ea 100644 --- a/sonoff/xdrv_06_snfbridge.ino +++ b/sonoff/xdrv_06_snfbridge.ino @@ -1,7 +1,7 @@ /* xdrv_06_snfbridge.ino - sonoff RF bridge 433 support for Sonoff-Tasmota - Copyright (C) 2018 Theo Arends + Copyright (C) 2018 Theo Arends and Erik Andrén Zachrisson (fw update) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,11 +24,12 @@ #define SFB_TIME_AVOID_DUPLICATE 2000 // Milliseconds enum SonoffBridgeCommands { - CMND_RFSYNC, CMND_RFLOW, CMND_RFHIGH, CMND_RFHOST, CMND_RFCODE, CMND_RFKEY }; + CMND_RFSYNC, CMND_RFLOW, CMND_RFHIGH, CMND_RFHOST, CMND_RFCODE, CMND_RFKEY, CMND_RFRAW }; const char kSonoffBridgeCommands[] PROGMEM = - D_CMND_RFSYNC "|" D_CMND_RFLOW "|" D_CMND_RFHIGH "|" D_CMND_RFHOST "|" D_CMND_RFCODE "|" D_CMND_RFKEY ; + D_CMND_RFSYNC "|" D_CMND_RFLOW "|" D_CMND_RFHIGH "|" D_CMND_RFHOST "|" D_CMND_RFCODE "|" D_CMND_RFKEY "|" D_CMND_RFRAW; uint8_t sonoff_bridge_receive_flag = 0; +uint8_t sonoff_bridge_receive_raw_flag = 0; uint8_t sonoff_bridge_learn_key = 1; uint8_t sonoff_bridge_learn_active = 0; uint8_t sonoff_bridge_expected_bytes = 0; @@ -37,6 +38,206 @@ uint32_t sonoff_bridge_last_send_code = 0; unsigned long sonoff_bridge_last_time = 0; unsigned long sonoff_bridge_last_learn_time = 0; +#ifdef USE_RF_FLASH +/*********************************************************************************************\ + * EFM8BB1 RF microcontroller in-situ firmware update + * + * Enables upload of EFM8BB1 firmware provided by https://github.com/Portisch/RF-Bridge-EFM8BB1 using the web gui. + * Based on source by Erik Andrén Zachrisson (https://github.com/arendst/Sonoff-Tasmota/pull/2886) +\*********************************************************************************************/ + +#include "ihx.h" +#include "c2.h" + +#define RF_RECORD_NO_START_FOUND -1 +#define RF_RECORD_NO_END_FOUND -2 + +ssize_t rf_find_hex_record_start(uint8_t *buf, size_t size) +{ + for (int i = 0; i < size; i++) { + if (buf[i] == ':') { + return i; + } + } + return RF_RECORD_NO_START_FOUND; +} + +ssize_t rf_find_hex_record_end(uint8_t *buf, size_t size) +{ + for (ssize_t i = 0; i < size; i++) { + if (buf[i] == '\n') { + return i; + } + } + return RF_RECORD_NO_END_FOUND; +} + +ssize_t rf_glue_remnant_with_new_data_and_write(const uint8_t *remnant_data, uint8_t *new_data, size_t new_data_len) +{ + ssize_t record_start; + ssize_t record_end; + ssize_t glue_record_sz; + uint8_t *glue_buf; + ssize_t result; + + if (remnant_data[0] != ':') { return -8; } // File invalid - RF Remnant data did not start with a start token + + // Find end token in new data + record_end = rf_find_hex_record_end(new_data, new_data_len); + record_start = rf_find_hex_record_start(new_data, new_data_len); + + // Be paranoid and check that there is no start marker before the end record + // If so this implies that there was something wrong with the last start marker saved + // in the last upload part + if ((record_start != RF_RECORD_NO_START_FOUND) && (record_start < record_end)) { + return -8; // File invalid - Unexpected RF start marker found before RF end marker + } + + glue_record_sz = strlen((const char *) remnant_data) + record_end; + + glue_buf = (uint8_t *) malloc(glue_record_sz); + if (glue_buf == NULL) { return -2; } // Not enough space + + // Assemble new glue buffer + memcpy(glue_buf, remnant_data, strlen((const char *) remnant_data)); + memcpy(glue_buf + strlen((const char *) remnant_data), new_data, record_end); + + result = rf_decode_and_write(glue_buf, glue_record_sz); + free(glue_buf); + return result; +} + +ssize_t rf_decode_and_write(uint8_t *record, size_t size) +{ + uint8_t err = ihx_decode(record, size); + if (err != IHX_SUCCESS) { return -13; } // Failed to decode RF firmware + + ihx_t *h = (ihx_t *) record; + if (h->record_type == IHX_RT_DATA) { + int retries = 5; + uint16_t address = h->address_high * 0x100 + h->address_low; + + do { + err = c2_programming_init(); + err = c2_block_write(address, h->data, h->len); + } while (err != C2_SUCCESS && retries--); + } else if (h->record_type == IHX_RT_END_OF_FILE) { + // RF firmware upgrade done, restarting RF chip + err = c2_reset(); + } + + if (err != C2_SUCCESS) { return -12; } // Failed to write to RF chip + + return 0; +} + +ssize_t rf_search_and_write(uint8_t *buf, size_t size) +{ + // Binary contains a set of commands, decode and program each one + ssize_t rec_end; + ssize_t rec_start; + ssize_t err; + + for (size_t i = 0; i < size; i++) { + // Find starts and ends of commands + rec_start = rf_find_hex_record_start(buf + i, size - i); + if (rec_start == RF_RECORD_NO_START_FOUND) { + // There is nothing left to save in this buffer + return -8; // File invalid + } + + // Translate rec_start from local buffer position to chunk position + rec_start += i; + rec_end = rf_find_hex_record_end(buf + rec_start, size - rec_start); + if (rec_end == RF_RECORD_NO_END_FOUND) { + // We have found a start but not an end, save remnant + return rec_start; + } + + // Translate rec_end from local buffer position to chunk position + rec_end += rec_start; + + err = rf_decode_and_write(buf + rec_start, rec_end - rec_start); + if (err < 0) { return err; } + i = rec_end; + } + // Buffer was perfectly aligned, start and end found without any remaining trailing characters + return 0; +} + +uint8_t rf_erase_flash() +{ + uint8_t err; + + for (int i = 0; i < 4; i++) { // HACK: Try multiple times as the command sometimes fails (unclear why) + err = c2_programming_init(); + if (err != C2_SUCCESS) { + return 10; // Failed to init RF chip + } + err = c2_device_erase(); + if (err != C2_SUCCESS) { + if (i < 3) { + c2_reset(); // Reset RF chip and try again + } else { + return 11; // Failed to erase RF chip + } + } else { + break; + } + } + return 0; +} + +uint8_t SnfBrUpdateInit() +{ + pinMode(PIN_C2CK, OUTPUT); + pinMode(PIN_C2D, INPUT); + + return rf_erase_flash(); // 10, 11 +} +#endif // USE_RF_FLASH + +/********************************************************************************************/ + +void SonoffBridgeSendRaw(char *codes, int size) +{ + char *p; + char stemp[3]; + uint8_t code; + + while (size > 0) { + snprintf(stemp, sizeof(stemp), codes); + code = strtol(stemp, &p, 16); + Serial.write(code); + size -= 2; + codes += 2; + } +} + +void SonoffBridgeReceivedRaw() +{ + // Decoding according to https://github.com/Portisch/RF-Bridge-EFM8BB1 + uint8_t buckets = 0; + + if (0xB1 == serial_in_buffer[1]) { buckets = serial_in_buffer[2] << 1; } // Bucket sniffing + + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RFRAW "\":{\"" D_JSON_DATA "\":\"")); + for (int i = 0; i < serial_in_byte_counter; i++) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s%02X"), mqtt_data, serial_in_buffer[i]); + if (0xB1 == serial_in_buffer[1]) { + if ((i > 3) && buckets) { buckets--; } + if ((i < 3) || (buckets % 2) || (i == serial_in_byte_counter -2)) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s "), mqtt_data); + } + } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s\"}}"), mqtt_data); + MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_CMND_RFRAW)); + XdrvRulesProcess(); +} + +/********************************************************************************************/ + void SonoffBridgeLearnFailed() { sonoff_bridge_learn_active = 0; @@ -110,12 +311,28 @@ boolean SonoffBridgeSerialInput() { // iTead Rf Universal Transceiver Module Serial Protocol Version 1.0 (20170420) if (sonoff_bridge_receive_flag) { - if (!((0 == serial_in_byte_counter) && (0 == serial_in_byte))) { // Skip leading 0 + if (sonoff_bridge_receive_raw_flag) { + if (!serial_in_byte_counter) { + serial_in_buffer[serial_in_byte_counter++] = 0xAA; + } + serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; + if (0x55 == serial_in_byte) { // 0x55 - End of text + SonoffBridgeReceivedRaw(); + sonoff_bridge_receive_flag = 0; + return 1; + } + } + else if (!((0 == serial_in_byte_counter) && (0 == serial_in_byte))) { // Skip leading 0 if (0 == serial_in_byte_counter) { sonoff_bridge_expected_bytes = 2; // 0xA0, 0xA1, 0xA2 if (serial_in_byte >= 0xA3) { sonoff_bridge_expected_bytes = 11; // 0xA3, 0xA4, 0xA5 } + if (serial_in_byte == 0xA6) { + sonoff_bridge_expected_bytes = 0; // 0xA6 and up supported by Portisch firmware only + serial_in_buffer[serial_in_byte_counter++] = 0xAA; + sonoff_bridge_receive_raw_flag = 1; + } } serial_in_buffer[serial_in_byte_counter++] = serial_in_byte; if ((sonoff_bridge_expected_bytes == serial_in_byte_counter) && (0x55 == serial_in_byte)) { // 0x55 - End of text @@ -134,6 +351,13 @@ boolean SonoffBridgeSerialInput() return 0; } +void SonoffBridgeSendCommand(byte code) +{ + Serial.write(0xAA); // Start of Text + Serial.write(code); // Command or Acknowledge + Serial.write(0x55); // End of Text +} + void SonoffBridgeSendAck() { Serial.write(0xAA); // Start of Text @@ -294,11 +518,48 @@ boolean SonoffBridgeCommand() } else { snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, sonoff_bridge_learn_key, D_JSON_LEARNING_ACTIVE); } + } + else if (CMND_RFRAW == command_code) { + if (XdrvMailbox.data_len) { + if (XdrvMailbox.data_len < 6) { // On, Off + switch (XdrvMailbox.payload) { + case 0: // Receive Raw Off + SonoffBridgeSendCommand(0xA7); // Stop reading RF signals enabling iTead default RF handling + case 1: // Receive Raw On + sonoff_bridge_receive_raw_flag = XdrvMailbox.payload; + break; + case 166: // 0xA6 - Start reading RF signals disabling iTead default RF handling + case 167: // 0xA7 - Stop reading RF signals enabling iTead default RF handling + case 169: // 0xA9 - Start learning predefined protocols + case 176: // 0xB0 - Stop sniffing + case 177: // 0xB1 - Start sniffing + SonoffBridgeSendCommand(XdrvMailbox.payload); + sonoff_bridge_receive_raw_flag = 1; + break; + case 192: // 0xC0 - Beep + char beep[] = "AAC000C055"; + SonoffBridgeSendRaw(beep, sizeof(beep)); + break; + } + } else { + SonoffBridgeSendRaw(XdrvMailbox.data, XdrvMailbox.data_len); + sonoff_bridge_receive_raw_flag = 1; + } + } + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(sonoff_bridge_receive_raw_flag)); } else serviced = false; // Unknown command return serviced; } +/*********************************************************************************************/ + +void SonoffBridgeInit() +{ + sonoff_bridge_receive_raw_flag = 0; + SonoffBridgeSendCommand(0xA7); // Stop reading RF signals enabling iTead default RF handling +} + /*********************************************************************************************\ * Interface \*********************************************************************************************/ @@ -311,6 +572,9 @@ boolean Xdrv06(byte function) if (SONOFF_BRIDGE == Settings.module) { switch (function) { + case FUNC_INIT: + SonoffBridgeInit(); + break; case FUNC_COMMAND: result = SonoffBridgeCommand(); break; diff --git a/sonoff/xdrv_08_serial_bridge.ino b/sonoff/xdrv_08_serial_bridge.ino index 653649b91..5d04c8059 100644 --- a/sonoff/xdrv_08_serial_bridge.ino +++ b/sonoff/xdrv_08_serial_bridge.ino @@ -135,7 +135,7 @@ boolean Xdrv08(byte function) if (serial_bridge_active) { switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: SerialBridgeInit(); break; case FUNC_LOOP: diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index e19be6fff..337846efc 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -726,7 +726,7 @@ boolean Xdrv09(byte function) boolean result = false; switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: TimerSetRandomWindows(); break; case FUNC_EVERY_SECOND: diff --git a/sonoff/xdrv_10_rules.ino b/sonoff/xdrv_10_rules.ino index b33872b7e..65e8df730 100644 --- a/sonoff/xdrv_10_rules.ino +++ b/sonoff/xdrv_10_rules.ino @@ -516,7 +516,7 @@ boolean Xdrv10(byte function) boolean result = false; switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: RulesInit(); break; case FUNC_EVERY_50_MSECOND: diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 1dc9fcd44..eef88e001 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -1078,7 +1078,7 @@ boolean Xdrv11(byte function) { boolean result = false; switch (function) { - case FUNC_INIT: + case FUNC_PRE_INIT: KNX_INIT(); break; case FUNC_LOOP: diff --git a/sonoff/xdrv_interface.ino b/sonoff/xdrv_interface.ino index 1897cec5f..6080b103b 100644 --- a/sonoff/xdrv_interface.ino +++ b/sonoff/xdrv_interface.ino @@ -179,6 +179,7 @@ boolean XdrvRulesProcess() /*********************************************************************************************\ * Function call to all xdrv * + * FUNC_PRE_INIT * FUNC_INIT * FUNC_LOOP * FUNC_MQTT_SUBSCRIBE diff --git a/tools/fw_efm8bb1/RF_Bridge_00.hex b/tools/fw_efm8bb1/RF_Bridge_00.hex new file mode 100644 index 000000000..4fbda3662 --- /dev/null +++ b/tools/fw_efm8bb1/RF_Bridge_00.hex @@ -0,0 +1,406 @@ +:020000040000FA +:10000000020FEFED24F8FEEFD39E4015ED2408FD1E +:10001000E433FCC3EF9DEC6480F874809850028058 +:1000200001C322020ED0E4F5A922220213637EFF4F +:10003000EFD394004022EF9480501DE4FDED75F065 +:100040000EA424A5F582E43418F583E493B50704DF +:10005000AE0580040DBD05E5AF062202110612189B +:100060004E53D87853DBFE12180FE4900085F0222F +:10007000D2DE220213B6D2011215F6C290C296D277 +:1000800080E4FBFD7F101217F612064374A4F0D231 +:10009000AFE4F52FF530D2960530E5307002052F2C +:1000A000B410F3E52FB427EEC29630010912150DF6 +:1000B0008E328F338006753201753300E53370045C +:1000C000E532640170409000CCE07007F52FF53008 +:1000D0000202870530E5307002052FD39410E52F1A +:1000E00094274002D296D3E5309430E52F94755092 +:1000F00003020287E4F52FF5309000CCF09000CB9E +:10010000F0C296020287E4F52FF5309000CCE0149F +:10011000602A14700302025914700302021E147044 +:100120000302023424046003020287E53364AA60F8 +:10013000030202879000CC04F0020287E5339000AE +:10014000CBF0A37402F0E5331208B30206A00170ED +:10015000A10182A501A6A601BAA701C3A801DFA932 +:1001600001C6B001CFB10197C00287FF00000215A0 +:100170001205E69000A87401F0E4900075F07FA1EC +:10018000806E12005E9000CC7404F0753108E4F5C6 +:10019000357534090202879000CC7404F0E4F5351B +:1001A000753402020287E49000A8F0900075F07F99 +:1001B000A612067474A6F002028712064374A4F015 +:1001C0000202877531089000CC7403F00202879018 +:1001D00000757401F07FB1120674EFF0020287120D +:1001E00005E69000A8E0F52EE4F0900075F07FA9F8 +:1001F0001214D090007CEFF07D307C757F017E0082 +:1002000012164902028712065790007CEFF0E49024 +:1002100000CCF08072E49000CBF0A3F08069E4F5AC +:1002200035E533F534E534D394009000CC402574A3 +:1002300004F0805374042535F582E43400F583E539 +:1002400033F00535E53565346007E535C394704016 +:10025000369000CC7402F0802EE5336455702890FF +:1002600000CCF0C2019000CBE02460601824FC6058 +:100270000F24FE600B14600824F66004241070073D +:100280007FA01217C3D2019000CBE01208B302B0D6 +:10029000A102DAA402ECA503C5A603E1A8051FA9E3 +:1002A000055CB005CFB1038DC003B3FF000000AA09 +:1002B000900084E030E70F7DC87C001206167FA313 +:1002C00012140902053912180740030200AA7DE83A +:1002D0007C031206167FA2020554900084E020E7FA +:1002E000030200AA7FA41214090203D99000CCE0F3 +:1002F00060030200AA900085E024FC606D24046085 +:10030000030200AA1531900008E0FEA3E0FF7C0084 +:100310007D641208D9C006C0071215A0D007D00608 +:100320001208218F3E900006E0FEA3E0FF8E3FF50D +:10033000407C007D641208D9C006C0071215A0D009 +:1003400007D0061208218F41754218900008E0FA84 +:10035000A3E0FB900004E0FCA3E0FDA3E0FEA3E02B +:10036000FF12067B7406F00204EBE53160171206FB +:100370002DD39400500302051012062D12066012B0 +:1003800018400205101206577FA00205549000CCB9 +:10039000E060030200AA900004E0FCA3E0FD7F01FE +:1003A0007E00121649D296121840C2967FA01217EC +:1003B000C3800AE4FF1217C3E49000CCF0D201120C +:1003C000066B0200AA900084E020E7030200AA5412 +:1003D0007FF537FD7FA612130CE4900084F0020035 +:1003E000AA9000CCE060030200AA900085E024FC03 +:1003F00070030204F1240460030200AA1531120004 +:100400005E900004E0647F702FA3E0FEA3E0FFA3F2 +:10041000E0FCA3E0FDA3E0FAA3E0FBA3E0F53EA32C +:10042000E0F53FA3E0F540A3E0F541A3E0F542127B +:10043000067B740CF00204E2900004E0FF12002E30 +:100440008F36E536F470030204DDEF75F00EA42458 +:1004500060F582E43418F583E493FE740193FFC0E1 +:1004600006C0071215BA2462F582E434181215C1C9 +:10047000C004C0051215BA2465F582E43418F5836A +:10048000E493FA740193FB1215BA2469F582E434FB +:1004900018F583E493FF1215BA2467F582E4341843 +:1004A0001215C11215BA246AF582E43418F583E4F2 +:1004B00093FE1215BA246BF582E43418F583E493A5 +:1004C000F5428E418C3F8D408F3ED005D004D00741 +:1004D000D0061212929000747401F08005E490002E +:1004E000CBF09000CBE070030200AA121749020083 +:1004F000AAE53160231215BA246CF582E43418F5AC +:1005000083E493FFD394004007EF12066012184073 +:10051000E4900085F00200AA12066B7FA08035905F +:100520000084E0FF30E71C547FF5377DC87C001263 +:1005300005F9AD377FAB12130CE4900084F0D201C3 +:100540000200AA12180740030200AA7DE87C0312E9 +:1005500005F97FAA1217C3D2010200AA900004E095 +:1005600025E0F5379000CCE060030200AA900085FA +:10057000E0700512005E800B900085E0640460036B +:100580000200AAE5376007E534C394045008E490FC +:1005900000CBF00200AA74062537F9E43400753B5D +:1005A00001F53C893DC3E534953724FEF53E9000C6 +:1005B00005E0F53F7B017A00790612118B7FA012CE +:1005C00017C390007CE0FF1214D0D2010200AA9061 +:1005D0000084E020E7030200AA7FB1121210E49029 +:1005E0000084F00200AA7D327C007F017E0012169A +:1005F00049D296121840C296227F017E00121649F7 +:10060000D296121840C2969000A8E52EF090007C79 +:10061000E0FF1214D0227F017E00121649D29612FA +:100620001840C29690007CE0FF1214D0227F011285 +:10063000002EEF75F00EA4246CF582E43418F583D7 +:10064000E493229000A87401F0E4900075F07FA478 +:100650001214D090007C2290007CE0FF1214D02273 +:10066000FD7C007F017E001216492290007CE0FF95 +:100670001214D0221214D090007C221212929000F8 +:100680007422BB010CE58229F582E5833AF583E00B +:10069000225006E92582F8E622BBFE06E92582F80B +:1006A000E222E58229F582E5833AF583E49322BBD1 +:1006B000010689828A83F0225002F722BBFE01F3F1 +:1006C00022EF8DF0A4A8F0CF8CF0A428CE8DF0A45A +:1006D0002EFE22BC000BBE0029EF8DF084FFADF092 +:1006E00022E4CCF875F008EF2FFFEE33FEEC33FC7C +:1006F000EE9DEC984005FCEE9DFE0FD5F0E9E4CEB2 +:10070000FD22EDF8F5F0EE8420D21CFEADF075F080 +:1007100008EF2FFFED33FD4007985006D5F0F22289 +:10072000C398FD0FD5F0EA22C2D5EC30E709B2D567 +:10073000E4C39DFDE49CFCEE30E715B2D5E4C39F15 +:10074000FFE49EFE1206D3C3E49DFDE49CFC8003FF +:100750001206D330D507C3E49FFFE49EFE22BB01FF +:1007600010E58229F582E5833AF583E0F5F0A3E010 +:10077000225009E92582F886F008E622BBFE0AE944 +:100780002582F8E2F5F008E222E5832AF583E99371 +:10079000F5F0A3E99322E88FF0A4CC8BF0A42CFC15 +:1007A000E98EF0A42CFC8AF0EDA42CFCEA8EF0A4D7 +:1007B000CDA8F08BF0A42DCC3825F0FDE98FF0A466 +:1007C0002CCD35F0FCEB8EF0A4FEA9F0EB8FF0A45D +:1007D000CFC5F02ECD39FEE43CFCEAA42DCE35F099 +:1007E000FDE43CFC2275F008758200EF2FFFEE332C +:1007F000FECD33CDCC33CCC58233C5829BED9AEC94 +:1008000099E58298400CF582EE9BFEED9AFDEC99FD +:10081000FC0FD5F0D6E4CEFBE4CDFAE4CCF9A88207 +:1008200022B800C1B90059BA002DEC8BF084CFCEAC +:10083000CDFCE5F0CBF97818EF2FFFEE33FEED336A +:10084000FDEC33FCEB33FB10D703994004EB99FB31 +:100850000FD8E5E4F9FA227818EF2FFFEE33FEED1A +:1008600033FDEC33FCC933C910D7059BE99A400727 +:10087000EC9BFCE99AF90FD8E0E4C9FAE4CCFB223E +:1008800075F010EF2FFFEE33FEED33FDCC33CCC807 +:1008900033C810D7079BEC9AE899400AED9BFDEC12 +:1008A0009AFCE899F80FD5F0DAE4CDFBE4CCFAE451 +:1008B000C8F922D083D082F8E49370127401937047 +:1008C0000DA3A393F8740193F5828883E4737402F3 +:1008D000936860EFA3A3A380DFEC8EF0A4CCC5F0F7 +:1008E000CCCDF8EFA4CEC5F02DFDE43CFCE8A42E61 +:1008F000C8C5F03DFDE43CFCEFA4FFE5F028FEE4B4 +:100900003DFDE43CFC22EF4E6012EF60010EEDBBBA +:10091000010B89828A83F0A3DFFCDEFA2289F05082 +:1009200007F709DFFCA9F022BBFEFCF309DFFCA9F5 +:10093000F022AFE9AEEA7C007D0A1206C18E088F74 +:1009400009209303020B2185080A85090BC3E509D9 +:10095000950DF511E508950CF510900075E01470F3 +:1009600003020B1B046003020B42900085E014603D +:1009700065046003020B42900084E06003020B42B6 +:100980009000A8E0FFAB11AA10AD0FAC0E120E1331 +:100990008F12E51264807003020B4290007F120CEC +:1009A000A3900002E510F0A3E511120C5FE49000A3 +:1009B00074F0900077F090007EF0F513F514FE7F50 +:1009C00070FD7B017A007904120906E490007DF045 +:1009D00090008504F022E51275F00EA424AAF58299 +:1009E000E43418F583E493FFD39400400B90007E29 +:1009F000E09F5004E004F022900088E014F09000A2 +:100A000077E004F0AE10AF11AB07AA06E50F2BFF9D +:100A1000E50E3AFEE433FDE433FCC004A905AA0662 +:100A2000AB07AE0EAF0F120CABD0001208218F2215 +:100A3000120C231200034029E51275F00EA424B015 +:100A4000F582E43418F583E493FDAF2212000340ED +:100A500010120B436F600AE4900084F0C290A3F080 +:100A600022120C23AF221200035007120B43C39F24 +:100A70004011D3E50F9514E50E9513402B120B434F +:100A80006F7025900086120CA3D290120BF6C083D3 +:100A9000C082120C9B7401A806088002C333D8FCE4 +:100AA0004FD082D083F0801790007A120CA3C290AE +:100AB000D39514E50E95134006850E13850F1490FB +:100AC0000088E07015120BF6E0FF90007DE06FFFEC +:100AD00012176490007DEF120C5F120B436F70626F +:100AE0001217FF5005E4900083F0900083E0FF9020 +:100AF000007DE06F601D12180F7DF47C017F017E88 +:100B00000012162090007DE0900083F0A3E512F023 +:100B10004480F0C290E4900085F022AF11AE1080C6 +:100B20001E85080C85090DC3E509950BF50FE50831 +:100B3000950AF50E900075E0147007AF0FAE0E1217 +:100B40000CC822E51275F00EA424B1F582E4341825 +:100B5000F583E493FF900077E022120821AB07AA07 +:100B600006E4F9F87F407E427D0FFC120821E47B09 +:100B7000FFFAF9F8120796A804A905AA06AB077FA1 +:100B8000207ED77D757C01120821EFF40422AE2669 +:100B9000AF277C007D1F1206D38E2A8F2B7C007D11 +:100BA000051206D3C3E52B9FFDE52A9EFCD3E52560 +:100BB0009DE5249C22E52975F00EA424A8F582E485 +:100BC0003418F583E493FE740193FF2438FDEE346A +:100BD000FFFCD3E5279DE5269C22900074E02404C9 +:100BE000F582E43400F58322E52525E0248AF582A8 +:100BF000E43400F58322900077E024FFFFE434FF23 +:100C0000FE7C007D0812072874042FF58274003ED4 +:100C1000F58322E52B2FFFE52A3EC3FEE5259FE560 +:100C2000249E22E51275F00EA424AFF582E4341858 +:100C3000F583E493FD22E52975F00EA424A6F58240 +:100C4000E43418F5832253DAFE53F7DF53F7BF225B +:100C5000AB3BAA3CA93D854082758300020682F029 +:100C60009000887408F022EF24C8FFE43EFEC3E53C +:100C7000279FE5269E2275F0FFA4FFAEF07C007D45 +:100C8000640206D3900078E523F0A3E524F02290D7 +:100C90000081E0FF900077E0D39F22E0FF90008882 +:100CA000E0FE22E50EF0A3E50FF0227C007D640259 +:100CB00008D9540F75F002A4F58285F08322D3E59C +:100CC000279470E5269417228E238F24900085E0C8 +:100CD000146035147003020D9D24026003020E049B +:100CE000C290900084E06003020E04AF24AE231291 +:100CF00017914003020E04E4900001F0120C84905E +:100D000000857401F0D29022900078E0FCA3E0FD11 +:100D1000AE047802CEC313CE13D8F92DFFEC3EFEFD +:100D2000D3E5249FE5239E4009120C84E490000142 +:100D3000F022AF24AE23121492501A900001E094D6 +:100D4000004012E4900074F09000887404F0900069 +:100D5000857402F022C3E5249464E5239400403AAC +:100D6000120E05501C120BE8E0FEA3E02524FFE55F +:100D7000233EC313FEEF13FF120BE8EEF0A3EFF0D8 +:100D800022900001E0120BEA120C87900001E004AF +:100D9000F0E0D3941E406DE4805EE48063B290AFD7 +:100DA00024AE23121492500D900084E04480F0C2CF +:100DB00090E4A3F022120E055041900088E0B404A4 +:100DC00011E525C454F0FF120BDAEFF0E49000882F +:100DD000F022120BDAE0FFE525540FFEEF4EF09003 +:100DE0000074E004F09000887404F0900074E0D384 +:100DF00094704010E4900001F08005E4900001F050 +:100E0000900085F0227B007A007925AF24AE231272 +:100E1000107E228F238C248D258A268B277528808F +:100E2000E523707CE4F5297F0112002EEF6529701F +:100E30001B120CBE405FE5279450E52694465055A2 +:100E4000120B8E4050120C13504B807E120C36E465 +:100E500093FE740193FFD39400EE9400402BEF2493 +:100E600038FFEE34FFD3120C1B402A120C367401EB +:100E70009324C8FFE4933400120C1A5018120BB5D7 +:100E80004013120C67500E8041120BB54007120C34 +:100E900067500280350529E529C394054089802DD6 +:100EA000AF2312002E8F297F0112002EEF652970CB +:100EB0001C120CBE4017E5279450E5269446500DB1 +:100EC000120B8E4008120C135003852928AF2822DC +:100ED000C0E0C0F0C083C082C0D075D000C000C0E8 +:100EE00001C002C003C004C005C006C007E5985495 +:100EF00003F547F45298E54730E017121857900071 +:100F0000C0121690EFF09000C0E004F0E0B41402BC +:100F1000E4F0E54730E12E9000C2E0D39400401A9F +:100F20009000BFE02448F8E6FF1218549000BFE09C +:100F300004F09000C2E014F08002D2029000BFE002 +:100F4000B42002E4F0D007D006D005D004D003D0FE +:100F500002D001D000D0D0D082D083D0F0D0E03207 +:100F60004200C700004200C300004200C900004226 +:100F700000C500004100CC004100CB0041008400CE +:100F8000410085004100A8004100750041007C003F +:100F900041007656410089AB4100000041008200CB +:100FA00042007F0000420002000042008600004232 +:100FB000007A000041008100410088004100770074 +:100FC00041007E00410074004100830041007D002B +:100FD000410001004100C0004100C1004100BE00CD +:100FE0004100BF004100C2004100BD00C10200122B +:100FF000002A787FE4F6D8FD758167021039020077 +:1010000076E493A3F8E493A34003F68001F208DFAB +:10101000F48029E493A3F85407240CC8C333C454C0 +:101020000F4420C8834004F456800146F6DFE48074 +:101030000B0102040810204080900F60E47E0193B1 +:1010400060BCA3FF543F30E509541FFEE493A36046 +:10105000010ECF54C025E060A840B8E493A3FAE4A1 +:1010600093A3F8E493A3C8C582C8CAC583CAF0A3F2 +:10107000C8C582C8CAC583CADFE9DEE780BE8E263E +:101080008F278B288A29892AC200E4F52B9000013A +:10109000E0FFE52BC39F506BE527AE267803CEC358 +:1010A00013CE13D8F9FDAC06E527AE267802CEC3E1 +:1010B00013CE13D8F92DF52DEE3CF52CE52B120BA4 +:1010C000EAE0FEA3E0FFC3952DFDEE952CFCC3EDF9 +:1010D0009527EC95265028E52D2FFFE52C3EFEC3E5 +:1010E000E5279FE5269E5017E52A45294528600BF0 +:1010F000AB28AA29A92AE52B1206AFD20080040545 +:101100002B808AA20022C0E0C0F0C083C082C0D081 +:1011100075D000C000C001C002C003C004C005C03B +:1011200006C007E5D85487F521F452D8E5F730E535 +:1011300008E5F730E60312154353F7DFE52130E702 +:1011400008E5D930E00312185DE52130E008E5DA62 +:1011500030E00312169BE52130E108E5DB30E003C7 +:10116000120932E52130E208E5DC30E00312185EB6 +:10117000D007D006D005D004D003D002D001D000D3 +:10118000D0D0D082D083D0F0D0E0328B388A398969 +:101190003A53DBFE120C4653E2FDE4F540E540C352 +:1011A000953E504FAB38AA39A93AC003C002C001DE +:1011B000120C50C4120CB2D001D002D00312075E40 +:1011C000F54285F041D280121202AB38AA39A93A11 +:1011D000C003C002C001120C50120CB2D001D002E8 +:1011E000D00312075EF54285F041C280121202055B +:1011F0004080AAB290AF3F153FEF709E43E202C21B +:101200009022FDAC417F0A7E001215741218402214 +:10121000AE07E4F5381216EA900001E004FF12165A +:10122000F112128B900001E0FFE538C39F501212BB +:101230001684121677121684F58312167E053880EE +:10124000E3900078E0FF1216F190007812167E12FB +:10125000128B900088E07006900074E004F0E4F5D2 +:1012600038900074E0FFE538C39F501774042538A8 +:101270001216720538E538541F70E612185112180C +:101280004A80DE7F551216F10218511218511218B9 +:101290004A228E388F398C3A8D3BAE02AF03120C46 +:1012A000ABC007AF3EAB07E4FAF9F8D007120B5A10 +:1012B000900000F0AE3FAF40120CABC007AF41ABA7 +:1012C00007E4FAF9F8D007120B5A900082F0E53ED5 +:1012D000120C76900076EFF0E541120C76900089C2 +:1012E000EFF090007FE538F0A3E539F0900002E5DB +:1012F0003AF0A3E53BF0900081E542F043DA015378 +:10130000F7DF43F74053DBFE75F9FF22AE07E4FC3D +:10131000FB1216EAED75F00EA424F7F582E43418FA +:10132000F583E493FFECC39F500774082CFC0B80FB +:10133000E3EB04FF1216F1ED75F00EA424EBF58239 +:10134000E43418F583E493FF1216F1E4FCECC39B3C +:10135000500974042C1216720C80F27F551216F18B +:10136000021851C0E0C083C082C0D075D000C00454 +:10137000C005C006C00753C87F9000C7E0FEA3E0C9 +:10138000FF4E700353C8FB9000C31214875009909E +:1013900000C7E4F0A3F0800DC39000C8E09DF0907A +:1013A00000C7E09CF0D007D006D005D004D0D0D044 +:1013B00082D083D0E032C0E0C083C082C0D075D07C +:1013C00000C004C005C006C00753917F9000C9E06B +:1013D000FEA3E0FF4E70035391FB9000C5121487EB +:1013E00050099000C9E4F0A3F0800DC39000CAE05A +:1013F0009DF09000C9E09CF0D007D006D005D00445 +:10140000D0D0D082D083D0E032AE07E4FDF53812E0 +:1014100016EA900002E0FF1216F190000212167E0A +:1014200090007AE0FF1216F190007A12167E90007A +:1014300086E0FF1216F190008612167E74042D12BB +:1014400016720DBD03F67F551216F1021851AB0747 +:10145000AA06E4F9F87F407E427D0FFC120821A81D +:1014600004A905AA06AB077F207ED77D757C0112F3 +:101470000821C3E49FFFE49EFE22AB07AA06E4F91D +:10148000F87FE87E03FD22E0FCA3E0FDC3EF9DEEC4 +:101490009C22AD07AC06900078E0FEA3E07802CE77 +:1014A000C313CE13D8F9FFC3900079E09FFB9000DF +:1014B00078E09EFAC3EB9DEA9C5013A3E02FFF90C7 +:1014C0000078E03EFEC3ED9FEC9E50028001C322F7 +:1014D0008F3890007CE0F5397F0B12185A43DB01FE +:1014E000120C461200707D0A7C007F017E001216ED +:1014F0004912184043E202E4900085F0900084F025 +:101500009000CBE538F090007CF0AF39229000C01D +:10151000E0FF9000BEE0B507057E017F002290004D +:10152000BE121690E0FD7C009000BEE004F0E0B436 +:101530001402E4F09000BDE0FEEE4204E4F0AE04DC +:10154000AF0522120C8F400302172B120BDA120C7C +:101550009BEFA806088002C313D8FC30E00B900074 +:1015600000E0FF12185AD29022900082E0FF121879 +:101570005AC290228E438F448C458D4612144E12CF +:1015800017ABE54624BF9000CAF0E54534FF900054 +:10159000C9F09000C5E543F0A3E544F0439104226F +:1015A000900006E0FEA3E0FF900009E02FFF90000E +:1015B00008E03EAB07FAE4F9F822E53675F00EA430 +:1015C00022F583E493FC740193FD22D29053E2FD53 +:1015D000D28090007F1215E6C290C2809000021265 +:1015E00015E643E20222E0FCA3E0FD7F0A7E001242 +:1015F00015741218402212181612181D12182412EF +:1016000017CE12002612177B1217EC1217D81217DA +:10161000E21217B712182B12183212184602183994 +:101620008E238F248C258D2612147A12145B1217A8 +:101630009F9000C7E525F0A3E526F09000C3E523C1 +:10164000F0A3E524F043C804228E3A8F3B8C3C8DF6 +:101650003D12147A12145B1217AB9000C9E53CF0EE +:10166000A3E53DF09000C5E53AF0A3E53BF04391DA +:101670000422F582E43400F583E0FF0216F1A3E0D2 +:10168000FF0216F1E53825E0248AF582E4340022D1 +:10169000E024A9F582E43400F58322900088E0700C +:1016A00008900074E004120C5F900077E004F09062 +:1016B0000088E014F0120C8F50030216C353E2FDB1 +:1016C000C28022120BDA120C9BEFA806088002C31C +:1016D00013D8FC30E0059000768003900089E07D0F +:1016E00000FCE4FF12170D22AE077FAA1216F1AF1D +:1016F00006C2029000C1E0B42002E4F09000C1E014 +:101700002448F8A607E004F0A3E004F022AB07AFFA +:1017100004EB14600C14600E2402700E8DFB8FFC21 +:10172000228DE98FEA228DEB8FEC22E4FDFCFF1283 +:10173000170D120C4612184E53D87853E2FDC28092 +:10174000C2909000857404F022120C60E014F090B6 +:1017500000777401F09000857403F01216C312151F +:10176000CB0200707E1DE4FDEF30E70625E06EFF42 +:101770008004EF25E0FF0DBD08EE22AF885388AF4F +:10178000758CA0758DCBEF5440FEEF54104E4288FF +:1017900022C3EF94ACEE940D4003D38001C322AD7D +:1017A00007AC06ECF5CBAF058FCA22AD07AC06EC53 +:1017B000F593AF058F9222C2DE75D90575F9FF75D5 +:1017C0009601221216E87F551216F102185175E3A0 +:1017D0004075E10175E20222E59154045391FB4208 +:1017E0009122758E5475892243885022E5C854048D +:1017F00053C8FB42C82253984FEB4F4DF59822E552 +:10180000C8C320E201D322E591C320E201D32253D1 +:10181000C8FB53C87F227597DE7597AD2275A4115A +:1018200075D4CE2275A54175D5772253F77F75DA29 +:101830004A2253F77F75DB302275E69075A8B022F7 +:10184000E59120E2FB22439810223002FD22C2DE05 +:1018500022D299228F9922AF99228F8C22222201A3 +:101860000190307000064001904B1918000212C020 +:1018700005DC0002BC012C461E2808030BB82328F7 +:1018800000044C01904B19180004251C0BB80003F0 +:10189000840140461E180005000072D80702BC01F2 +:1018A0002C26404000010190307000064001904B12 +:1018B0001918000212C005DC0002BC012C461E28CB +:1018C00008030BB8232800044C01904B191800049E +:1018D000251C0BB80003840140461E1800050000BB +:1018E00072D80702BC012C264040000101903070E4 +:1018F00000064001904B1918000212C005DC0002DE +:10190000BC012C461E2808030BB8232800044C01F8 +:10191000904B19180004251C0BB8000384014046A5 +:101920001E180005000072D80702BC012C2640409A +:0119300000B6 +:00000001FF diff --git a/tools/fw_efm8bb1/RF_Bridge_iTead_Original.hex b/tools/fw_efm8bb1/RF_Bridge_iTead_Original.hex new file mode 100644 index 000000000..ee0e95356 --- /dev/null +++ b/tools/fw_efm8bb1/RF_Bridge_iTead_Original.hex @@ -0,0 +1,207 @@ +:020000040000FA +:10000000020779AB07AA06EB2401FEE43A900080D0 +:10001000F0A3CEF0ED1490007DF08B828A83E0F5A2 +:100020009922220204D0C204C29022020B03120CB5 +:100030009C120CA3120CAA120C8012006E120B91CF +:10004000120BAA120BC3120C8A120C75120B5D0252 +:100050000C5C53984FEB4F4DF598220208CC1200E0 +:100060002E120C30D2AF120B77120C0A80F8E4F586 +:10007000A922FF020A37020218E86480F8E933E88F +:100080003360110460F0ED33EC337009E8FCE9FDF6 +:10009000EAFEEBFF220460DED3EB9FEA9EE99DE8D7 +:1000A000C2E78CF0C2F795F0400CE8CCF8E9CDF946 +:1000B000EACEFAEBCFFB1201E385D0F058047003CF +:1000C00020D5B3E80470075002B2D502022292D5BF +:1000D000EC0460F7E4CCC0E0C398F8603B9418608F +:1000E00008400DD0E0FB0201FAE4FBFAC9FC8028CD +:1000F000E830E406E4C9FBE4CAFCE830E305E4C9FF +:10010000CACBFCE854076010F8C3E913F9EA13FA04 +:10011000EB13FBEC13FCD8F130F52FC3E49CFCEFA0 +:100120009BFFEE9AFEED99FDD0E0FBEF4E4D4C703B +:100130001222DB0302021FEC2CFCEF33FFEE33FE36 +:10014000ED33FDED30E7EB0201FAEF2BFFEE3AFE67 +:10015000ED39FDD0E0FB50130BBB0003020222ED92 +:1001600013FDEE13FEEF13FFEC13FC0201FA75F022 +:1001700020800E75F010800575F0087D007E007FF0 +:10018000003392D530D5031202E3EC334010EF3345 +:10019000FFEE33FEED33FDEC33FCD5F0ED22E5F060 +:1001A000247EA2D513CC92E7CDCEFF22EDD2E7CDAF +:1001B00033EC3392D524814006E4FFFEFDFC22FCA3 +:1001C000E4CFCECDCC24E0501174FF80EDC3CC132E +:1001D000CCCD13CDCE13CECF13CF0470F030D5DEFF +:1001E0000202E3E9D2E7C933E833F892D5EDD2E76A +:1001F000CD33EC33FC5002B2D522EC30E7100FBF08 +:10020000000C0EBE00080DBD00040BEB6014A2D55F +:10021000EB13FCED92E7FD2274FFFCFDFEFF22E4F0 +:1002200080F8A2D574FF13FC7D80E480EFEF8DF0A1 +:10023000A4A8F0CF8CF0A428CE8DF0A42EFE22BC72 +:10024000000BBE0029EF8DF084FFADF022E4CCF866 +:1002500075F008EF2FFFEE33FEEC33FCEE9DEC98CB +:100260004005FCEE9DFE0FD5F0E9E4CEFD22EDF851 +:10027000F5F0EE8420D21CFEADF075F008EF2FFFF4 +:10028000ED33FD4007985006D5F0F222C398FD0FDC +:10029000D5F0EA22E88FF0A4CC8BF0A42CFCE98EF8 +:1002A000F0A42CFC8AF0EDA42CFCEA8EF0A4CDA8DE +:1002B000F08BF0A42DCC3825F0FDE98FF0A42CCDE7 +:1002C00035F0FCEB8EF0A4FEA9F0EB8FF0A4CFC5C7 +:1002D000F02ECD39FEE43CFCEAA42DCE35F0FDE451 +:1002E0003CFC22C3E49FFFE49EFEE49DFDE49CFCF5 +:1002F00022EB9FF5F0EA9E42F0E99D42F0E89C4532 +:10030000F022E8600FECC313FCED13FDEE13FEEFDB +:1003100013FFD8F122E8600FEFC333FFEE33FEED99 +:1003200033FDEC33FCD8F122E4F50BF50AF509F5C1 +:1003300008F50CF50DF50EF50FF510F511F512F5A4 +:1003400013F514F515F516F517900000E06401603B +:10035000030204C7F0E52C7015900004E0F524A317 +:10036000E0F525A3E0F526A3E0F5271208ADE52585 +:100370002527F50DE5243526F50CFEAF0D7C007D17 +:100380000512023F8E108F11AE22AF237C007D0537 +:1003900012023F8E128F13E4FBEBC3943040030232 +:1003A000044F12086A12087BF583E0FCA3E0FD2FDE +:1003B000F50FEC3EF50EE50D2511FFE50C3510FEB1 +:1003C000D3E50F9FE50E9E5014C3E50D9511FFE593 +:1003D0000C9510FEC3E50F9FE50E9E5009052EE516 +:1003E0002E7002052D2212086AFFD3ED9FEC9E406D +:1003F000221208A0EF4401F50BEEF50AEDF509EC29 +:10040000F50812086A1208B812087C12087412085B +:10041000C2803712086A12087BF583E0FCA3E0C3B0 +:100420009FEC9E501C1208A08F0B8E0A8D098C0821 +:1004300012086A1208C212087C1208741208B880E6 +:1004400009052EE52E7002052D220B0B0203999053 +:100450000002E0FEA3E0FF2511FDE5103EFCC3E530 +:10046000239DE5229C5027C3EF9511FFEE9510FECA +:10047000D3E5239FE5229E4015AF2BAE2AAD29ACD4 +:1004800028AB0BAA0AA909A8081202F160311208C8 +:10049000AD850B2B850A2A850929850828752C012D +:1004A000E4F52DF52EAE14AF15FC1208878E268FBD +:1004B00027AE16AF177C001208878E248F252205E1 +:1004C0002CE4F52DF52E22052EE52E7002052D22A9 +:1004D000C0E0C0F0C083C082C0D075D000C000C0F2 +:1004E00001C002C003C004C005C006C007E598549F +:1004F00003F51EF4529890007CE0700302058AE533 +:100500001E20E00302058A90007EE0FEA3E0FFF5D6 +:10051000828E83E599F08F828E83E0FF20000B644A +:10052000AA60030205BCD200803A200137300034B3 +:10053000EF64A0601EEF64A16019EF64A26014EF85 +:1005400064A3600FEF64A4600AEF64A56005120C59 +:10055000698069D201EF64A06008EF64A16003BF05 +:10056000A202D20290007FE004F0700690007EE0CC +:1005700004F090007CE014F0E0FE6008BF550B3002 +:1005800002086006120C691209E3E51E30E12D90A5 +:10059000007DE06024900080E0FEA3E0F5828E8381 +:1005A000E0F599900081E004F07006900080E0048E +:1005B000F090007DE014F08003120022D007D006F6 +:1005C000D005D004D003D002D001D000D0D0D0824A +:1005D000D083D0F0D0E032E4F518F519F51DF51C04 +:1005E000F51BF51A30AF6890006612096BF522ED25 +:1005F000F52312096AF526EDF52712096AF524EDAF +:10060000F525A3E0FFE4FCFDFEFBFA7901F81202F8 +:1006100094A804A905AA06AB0790006DE0FEE4FCCF +:10062000FD2BFBEA3EFAED39F9EC38F8A3E0FFE4E4 +:10063000FEEB2FFFEE3AFEED39FDEC388F2B8E2AC4 +:100640008D29F5287F0A7E00120BDCC291C2AFE42F +:10065000F51812095EAF23AE22120BF4852B1D850F +:100660002A1C85291B85281AE4F519E4FFFEE51BE1 +:100670005480FDE4FCFBFAF9F8C31202F16011D2D8 +:1006800080AF25AE24120BF4C280AF27AE268007C0 +:1006900012095EAF25AE24120BF4AF1DAE1CAD1BCC +:1006A000AC1A78011203158F1D8E1C8D1B8C1A0538 +:1006B00019E519C3941840B30518E518C394084008 +:1006C00091D291D2AF7F0A7E00120BDC12092D125B +:1006D0000003120CC3E4F537220233000001370097 +:1006E0000235000041007D0041007C00C100C101D5 +:1006F000C102C105C104C1030139000138006064B1 +:1007000000000000000000000000000000000000E9 +:1007100000000000000000000000000000000000D9 +:1007200000000000000000000000000000000000C9 +:1007300000000000000000000000000000000000B9 +:1007400000000000000000000000000000000000A9 +:100750000000000000000000000000000000000099 +:100760000000000000000D2200000000000000005A +:10077000000000000001210000787FE4F6D8FD753C +:1007800081390207C002005EE493A3F8E493A3401A +:1007900003F68001F208DFF48029E493A3F85407FC +:1007A000240CC8C333C4540F4420C8834004F456F7 +:1007B000800146F6DFE4800B01020408102040802F +:1007C0009006D9E47E019360BCA3FF543F30E50955 +:1007D000541FFEE493A360010ECF54C025E060A82F +:1007E00040B8E493A3FAE493A3F8E493A3C8C582C2 +:1007F000C8CAC583CAF0A3C8C582C8CAC583CADF30 +:10080000E9DEE780BEAB07AA06900001E07019C3DD +:10081000EB94C8EA9400405130934EA3EAF0A3EB66 +:10082000F09000017401F0227C007D05AF03AE0260 +:1008300012022DD3900003E09F900002E09E401032 +:10084000E52112087DF583EAF0A3EBF0052180078E +:10085000E4900001F0F521E521C39430400BE4F56C +:100860002190000004F0E4A3F022EB25E02406F53B +:1008700082E43400F583E0FEA3E022FFEB25E024D0 +:1008800004F582E43400227D1812023FAC06AD0765 +:10089000E4120173E4FBFAF9783F12007D0201AC27 +:1008A000AF0BAE0AAD09AC08780102031590000247 +:1008B000E0F522A3E0F523222515F515EE3514F514 +:1008C00014222517F517EE3516F51622C0E0C0F0F4 +:1008D000C083C082C0D075D000C000C001C002C0BB +:1008E00003C004C005C006C00730D823C2D885FCA9 +:1008F0002F85FB30C3E5309532F534E52F9531F582 +:1009000033852F31853032AF34FE12080580035312 +:10091000D879D007D006D005D004D003D002D001BA +:10092000D000D0D0D082D083D0F0D0E03290007010 +:1009300074AAF074A0A3F0A37455F07E007F707DBC +:100940000322AF2BAE2AAD29AC28120302A3EFF08D +:1009500022120A7D120C207E007F707D0C22D28034 +:10096000AF27AE26120BF4C28022A3E0FEA3E0FD67 +:10097000EE2212022DEEA3F02275F00AA4A3F022BB +:10098000C3E52E9496E52D940022053930052AE51D +:1009900039C39414404C0538E538D394045002B25E +:1009A00096E4F539B290E538C394084035E4F5385B +:1009B000C296C290C205C20422300412E539C39423 +:1009C0000A401F309602C296E4F539B290223003F5 +:1009D00011E539D3940A400AE4F539B29020900227 +:1009E000C20322900064E0FFB4AA0BA3E0B4A00607 +:1009F000A3E064556040EF64AA7022900065E06453 +:100A0000A1701AA3E0B45515120C2012092D120082 +:100A100003E4F535F536120C947537012290006425 +:100A2000E0B4AA12A3E0B4A50D90006FE0B455069F +:100A3000753702120C2022C0E0C0F0C083C082C013 +:100A4000D075D000C000C001C002C003C004C00502 +:100A5000C006C00712098A0536E53670020535530F +:100A6000917FD007D006D005D004D003D002D001AA +:100A7000D000D0D0D082D083D0F0D0E032900070BF +:100A800074AAF0A3EFF0AE22AF237C007D0A120916 +:100A900072E523120979AE26AF27120972E52712F3 +:100AA0000979AE24AF25120972E52512097978106B +:100AB0001209427808120942A3E52BF0A37455F0FD +:100AC00022E52CB40A03120CBD1209804015E52C56 +:100AD000940A400FE4F52DF52E7FA3120951120060 +:100AE00003801CC3E5369470E535941740149000DC +:100AF0007074AAF074A2120935120003120026E4E1 +:100B0000F53722C0E0C0F0C083C082C0D075D000ED +:100B1000C000C001C002C003C004C005C006C007B9 +:100B2000120328C2CFD007D006D005D004D003D0FE +:100B300002D001D000D0D0D082D083D0F0D0E0322B +:100B40001209804017E52CD394004010E4F52DF5F0 +:100B50002E7FA4120951120003120CC322E5D854AF +:100B600040FFE5F75480FE53D8BF53F77F75DA3165 +:100B7000EF42D8EE42F722E5377015120CB7EF704E +:100B80000F120CB1EF70097E007F647D0C120C4EC9 +:100B900022AF885388AF758C0B758AD7758DCBEFD4 +:100BA0005440FEEF54104E428822E5C8540453C806 +:100BB000FB75CD4075CC9875CB4075CA9843C80479 +:100BC00042C822E59154045391FB7595FF75940B2F +:100BD0007593B075923F439104429122AD07AC06E4 +:100BE000D3ED9400EC9400400A120C40ED1D70F01F +:100BF0001C80ED22EF1FAC0670011E4C600B000044 +:100C00000000000000000080EB22E53714600A14A9 +:100C1000600A24027009020B40020AC11205D722A1 +:100C2000E4F52CF52BF52AF529F528F522F52322F4 +:100C3000C280D291C290C296E4FBFD7F10020052A6 +:100C40007F927E09EF1F70011EEF4E70F722900019 +:100C50007EEEF0A3EFF090007CEDF02275E690754B +:100C6000F31075A8B075B8102290007CE4F0C200B3 +:100C7000C201C20222C2DE75D904759E01D2DE22F3 +:100C800075E34075E10175E20122758E14758922C4 +:100C900043885022D204E4F539D296227597DE7546 +:100CA00097AD2275A41375D4CF2275A54375D507CA +:100CB0002290007DE0FF2290007CE0FF22D205E43C +:090CC000F53922D203E4F53922D2 +:00000001FF From c860927857a996785753be76cb080309674556c5 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Mon, 4 Jun 2018 20:32:58 +0200 Subject: [PATCH 403/435] Add support for LM75AD I2C Temperature Sensor Add support for LM75AD I2C Temperature Sensor --- sonoff/xsns_26_lm75ad.ino | 127 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 sonoff/xsns_26_lm75ad.ino diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino new file mode 100644 index 000000000..beeb6205c --- /dev/null +++ b/sonoff/xsns_26_lm75ad.ino @@ -0,0 +1,127 @@ +/* + xdrv_26_lm75ad.ino - Support for I2C LM75AD Temperature Sensor + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_I2C +#ifdef USE_LM75AD + +/*********************************************************************************************\ + * LM75AD +\*********************************************************************************************/ + +#define LM75AD_ADDRESS1 0x48 +#define LM75AD_ADDRESS2 0x49 +#define LM75AD_ADDRESS3 0x4A +#define LM75AD_ADDRESS4 0x4B +#define LM75AD_ADDRESS5 0x4C +#define LM75AD_ADDRESS6 0x4D +#define LM75AD_ADDRESS7 0x4E +#define LM75AD_ADDRESS8 0x4F + +#define LM75_TEMP_REGISTER 0x00 +#define LM75_CONF_REGISTER 0x01 +#define LM75_THYST_REGISTER 0x02 +#define LM75_TOS_REGISTER 0x03 + +uint8_t lm75ad_type = 0; +uint8_t lm75ad_address; +uint8_t lm75ad_addresses[] = { LM75AD_ADDRESS1, LM75AD_ADDRESS2, LM75AD_ADDRESS3, LM75AD_ADDRESS4, LM75AD_ADDRESS5, LM75AD_ADDRESS6, LM75AD_ADDRESS7, LM75AD_ADDRESS8 }; + +int16_t LM75ADGetTempRegister(void) +{ + uint16_t res = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); + return (int16_t)res; +} + +void LM75ADDetect() +{ + uint8_t buffer; + if (lm75ad_type) { + return; + } + for (byte i = 0; i < sizeof(lm75ad_addresses); i++) { + lm75ad_address = lm75ad_addresses[i]; + if (I2cValidRead8(&buffer,lm75ad_address,LM75_CONF_REGISTER)) { + lm75ad_type = 1; + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "LM75AD", lm75ad_address); + AddLog(LOG_LEVEL_DEBUG); + break; + } + } +} + +float LM75ADConvertTemp(uint16_t t) { + float tmpt; + if (t & 0x8000) { // we are getting a negative temperature value + t=t<<1; // shift out the MSB + t=t>>6; // shift value into place (5 LSB not used + the MSB we shifted out to make it zero) + tmpt=t*0.125*-1; + } else { // we're getting a positive value + t=t>>5; // shift value into place (5 LSB not used) + tmpt=t*0.125; + } + return tmpt; +} + +void LM75ADShow(boolean json) +{ + if (lm75ad_type) { + char temperature[10]; + uint16_t lm75ad_value = LM75ADGetTempRegister(); + float t=LM75ADConvertTemp(lm75ad_value); + dtostrfd(t, Settings.flag2.temperature_resolution, temperature); + if (json) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"LM75AD\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); +#ifdef USE_WEBSERVER + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "LM75AD", temperature, TempUnit()); +#endif // USE_WEBSERVER + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XSNS_26 + +boolean Xsns26(byte function) +{ + boolean result = false; + + if (i2c_flg) { + switch (function) { + case FUNC_PREP_BEFORE_TELEPERIOD: + LM75ADDetect(); + break; + case FUNC_JSON_APPEND: + LM75ADShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_APPEND: + LM75ADShow(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_LM75AD +#endif // USE_I2C From b23763cca30b6fb37636c7386d65c02bbe7a70f2 Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Mon, 4 Jun 2018 20:33:02 -0300 Subject: [PATCH 404/435] Updated Spanish Translation --- sonoff/language/es-AR.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index 68fbb1750..37fa89589 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.14.0b + * Updated until v6.0.0a \*********************************************************************/ #define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -321,10 +321,10 @@ #define D_UPLOAD_ERR_7 "Carga cancelada" #define D_UPLOAD_ERR_8 "Archivo no válido" #define D_UPLOAD_ERR_9 "Archivo muy grande" -#define D_UPLOAD_ERR_10 "Failed to init RF chip" -#define D_UPLOAD_ERR_11 "Failed to erase RF chip" -#define D_UPLOAD_ERR_12 "Failed to write to RF chip" -#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" +#define D_UPLOAD_ERR_10 "No inició chip RF" +#define D_UPLOAD_ERR_11 "No se pudo borrar en el chip RF" +#define D_UPLOAD_ERR_12 "No se puedo escribir en el chip RF" +#define D_UPLOAD_ERR_13 "No se pudo decodificar firmware RF" #define D_UPLOAD_ERROR_CODE "Código de error de carga" #define D_ENTER_COMMAND "Ingresar comando" From da11ae353c43131cc033df2d2b2c511600215f1c Mon Sep 17 00:00:00 2001 From: znanev <20048364+znanev@users.noreply.github.com> Date: Tue, 5 Jun 2018 09:34:13 +0100 Subject: [PATCH 405/435] Update bg-BG.h --- sonoff/language/bg-BG.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 13911e083..8f397bb82 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -28,7 +28,7 @@ * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. * Use online command Prefix to translate cmnd, stat and tele. * - * Updated until v5.14.0a + * Updated until v6.0.0a \*********************************************************************/ //#define LANGUAGE_MODULE_NAME // Enable to display "Module Generic" (ie Spanish), Disable to display "Generic Module" (ie English) @@ -206,7 +206,7 @@ #define D_ERASED_SECTOR "Изтрит сектор" // xdrv_02_webserver.ino -#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Минимаен фърмуеър - моля надградете го" +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Минимален фърмуеър - моля надградете го" #define D_WEBSERVER_ACTIVE_ON "Уеб сървърът е активен на" #define D_WITH_IP_ADDRESS "с IP адрес" #define D_WEBSERVER_STOPPED "Уеб сървърът е спрян" @@ -321,10 +321,10 @@ #define D_UPLOAD_ERR_7 "Зареждането е прекъснато" #define D_UPLOAD_ERR_8 "Файлът е невалиден" #define D_UPLOAD_ERR_9 "Файлът е прекалено голям" -#define D_UPLOAD_ERR_10 "Failed to init RF chip" -#define D_UPLOAD_ERR_11 "Failed to erase RF chip" -#define D_UPLOAD_ERR_12 "Failed to write to RF chip" -#define D_UPLOAD_ERR_13 "Failed to decode RF firmware" +#define D_UPLOAD_ERR_10 "Грешка при инициализация на RF чипа" +#define D_UPLOAD_ERR_11 "Грешка при изтриване на RF чипа" +#define D_UPLOAD_ERR_12 "Грешка при записване в RF чипа" +#define D_UPLOAD_ERR_13 "Грешка при декодиране на RF фирмуера" #define D_UPLOAD_ERROR_CODE "Код на грешка при зареждането" #define D_ENTER_COMMAND "Въвеждане на команда" From 289b662f108cb46b8a689db90370ec2b30031e25 Mon Sep 17 00:00:00 2001 From: andrethomas Date: Tue, 5 Jun 2018 14:50:52 +0200 Subject: [PATCH 406/435] Update xdrv_26_lm75ad.ino to support C or F Update xdrv_26_lm75ad.ino to support C or F depending on Settings.flag.temperature_conversion (#define TEMP_CONVERSION 0 or 1) as stored in [SetOption8] Return temperature in (0 = Celsius or 1 = Fahrenheit) --- sonoff/xsns_26_lm75ad.ino | 255 +++++++++++++++++++------------------- 1 file changed, 129 insertions(+), 126 deletions(-) diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino index beeb6205c..4d0a4af94 100644 --- a/sonoff/xsns_26_lm75ad.ino +++ b/sonoff/xsns_26_lm75ad.ino @@ -1,127 +1,130 @@ -/* - xdrv_26_lm75ad.ino - Support for I2C LM75AD Temperature Sensor - - Copyright (C) 2018 Theo Arends - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program 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 General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -#ifdef USE_I2C -#ifdef USE_LM75AD - -/*********************************************************************************************\ - * LM75AD -\*********************************************************************************************/ - -#define LM75AD_ADDRESS1 0x48 -#define LM75AD_ADDRESS2 0x49 -#define LM75AD_ADDRESS3 0x4A -#define LM75AD_ADDRESS4 0x4B -#define LM75AD_ADDRESS5 0x4C -#define LM75AD_ADDRESS6 0x4D -#define LM75AD_ADDRESS7 0x4E -#define LM75AD_ADDRESS8 0x4F - -#define LM75_TEMP_REGISTER 0x00 -#define LM75_CONF_REGISTER 0x01 -#define LM75_THYST_REGISTER 0x02 -#define LM75_TOS_REGISTER 0x03 - -uint8_t lm75ad_type = 0; -uint8_t lm75ad_address; -uint8_t lm75ad_addresses[] = { LM75AD_ADDRESS1, LM75AD_ADDRESS2, LM75AD_ADDRESS3, LM75AD_ADDRESS4, LM75AD_ADDRESS5, LM75AD_ADDRESS6, LM75AD_ADDRESS7, LM75AD_ADDRESS8 }; - -int16_t LM75ADGetTempRegister(void) -{ - uint16_t res = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); - return (int16_t)res; -} - -void LM75ADDetect() -{ - uint8_t buffer; - if (lm75ad_type) { - return; - } - for (byte i = 0; i < sizeof(lm75ad_addresses); i++) { - lm75ad_address = lm75ad_addresses[i]; - if (I2cValidRead8(&buffer,lm75ad_address,LM75_CONF_REGISTER)) { - lm75ad_type = 1; - snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "LM75AD", lm75ad_address); - AddLog(LOG_LEVEL_DEBUG); - break; - } - } -} - -float LM75ADConvertTemp(uint16_t t) { - float tmpt; - if (t & 0x8000) { // we are getting a negative temperature value - t=t<<1; // shift out the MSB - t=t>>6; // shift value into place (5 LSB not used + the MSB we shifted out to make it zero) - tmpt=t*0.125*-1; - } else { // we're getting a positive value - t=t>>5; // shift value into place (5 LSB not used) - tmpt=t*0.125; - } - return tmpt; -} - -void LM75ADShow(boolean json) -{ - if (lm75ad_type) { - char temperature[10]; - uint16_t lm75ad_value = LM75ADGetTempRegister(); - float t=LM75ADConvertTemp(lm75ad_value); - dtostrfd(t, Settings.flag2.temperature_resolution, temperature); - if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"LM75AD\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); -#ifdef USE_WEBSERVER - } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "LM75AD", temperature, TempUnit()); -#endif // USE_WEBSERVER - } - } -} - -/*********************************************************************************************\ - * Interface -\*********************************************************************************************/ - -#define XSNS_26 - -boolean Xsns26(byte function) -{ - boolean result = false; - - if (i2c_flg) { - switch (function) { - case FUNC_PREP_BEFORE_TELEPERIOD: - LM75ADDetect(); - break; - case FUNC_JSON_APPEND: - LM75ADShow(1); - break; -#ifdef USE_WEBSERVER - case FUNC_WEB_APPEND: - LM75ADShow(0); - break; -#endif // USE_WEBSERVER - } - } - return result; -} - -#endif // USE_LM75AD +/* + xdrv_26_lm75ad.ino - Support for I2C LM75AD Temperature Sensor + + Copyright (C) 2018 Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifdef USE_I2C +#ifdef USE_LM75AD + +/*********************************************************************************************\ + * LM75AD +\*********************************************************************************************/ + +#define LM75AD_ADDRESS1 0x48 +#define LM75AD_ADDRESS2 0x49 +#define LM75AD_ADDRESS3 0x4A +#define LM75AD_ADDRESS4 0x4B +#define LM75AD_ADDRESS5 0x4C +#define LM75AD_ADDRESS6 0x4D +#define LM75AD_ADDRESS7 0x4E +#define LM75AD_ADDRESS8 0x4F + +#define LM75_TEMP_REGISTER 0x00 +#define LM75_CONF_REGISTER 0x01 +#define LM75_THYST_REGISTER 0x02 +#define LM75_TOS_REGISTER 0x03 + +uint8_t lm75ad_type = 0; +uint8_t lm75ad_address; +uint8_t lm75ad_addresses[] = { LM75AD_ADDRESS1, LM75AD_ADDRESS2, LM75AD_ADDRESS3, LM75AD_ADDRESS4, LM75AD_ADDRESS5, LM75AD_ADDRESS6, LM75AD_ADDRESS7, LM75AD_ADDRESS8 }; + +int16_t LM75ADGetTempRegister(void) +{ + uint16_t res = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); + return (int16_t)res; +} + +void LM75ADDetect() +{ + uint8_t buffer; + if (lm75ad_type) { + return; + } + for (byte i = 0; i < sizeof(lm75ad_addresses); i++) { + lm75ad_address = lm75ad_addresses[i]; + if (I2cValidRead8(&buffer,lm75ad_address,LM75_CONF_REGISTER)) { + lm75ad_type = 1; + snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "LM75AD", lm75ad_address); + AddLog(LOG_LEVEL_DEBUG); + break; + } + } +} + +float LM75ADConvertTemp(uint16_t t) { + float tmpt; + if (t & 0x8000) { // we are getting a negative temperature value + t=t<<1; // shift out the MSB + t=t>>6; // shift value into place (5 LSB not used + the MSB we shifted out to make it zero) + tmpt=t*0.125*-1; + } else { // we're getting a positive value + t=t>>5; // shift value into place (5 LSB not used) + tmpt=t*0.125; + } + if (!isnan(tmpt) && Settings.flag.temperature_conversion) { + tmpt = tmpt * 1.8 + 32; // Fahrenheit + } + return tmpt; +} + +void LM75ADShow(boolean json) +{ + if (lm75ad_type) { + char temperature[10]; + uint16_t lm75ad_value = LM75ADGetTempRegister(); + float t=LM75ADConvertTemp(lm75ad_value); + dtostrfd(t, Settings.flag2.temperature_resolution, temperature); + if (json) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"LM75AD\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); +#ifdef USE_WEBSERVER + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "LM75AD", temperature, TempUnit()); +#endif // USE_WEBSERVER + } + } +} + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ + +#define XSNS_26 + +boolean Xsns26(byte function) +{ + boolean result = false; + + if (i2c_flg) { + switch (function) { + case FUNC_PREP_BEFORE_TELEPERIOD: + LM75ADDetect(); + break; + case FUNC_JSON_APPEND: + LM75ADShow(1); + break; +#ifdef USE_WEBSERVER + case FUNC_WEB_APPEND: + LM75ADShow(0); + break; +#endif // USE_WEBSERVER + } + } + return result; +} + +#endif // USE_LM75AD #endif // USE_I2C From 43dd708413846911d347acaf470b249306fbfa0d Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Tue, 5 Jun 2018 16:14:00 +0200 Subject: [PATCH 407/435] Add I2C temperature sensor LM75AD 6.0.0a * Add support for I2C temperature sensor LM75AD (#2909) --- sonoff/_releasenotes.ino | 1 + sonoff/user_config.h | 1 + sonoff/xsns_26_lm75ad.ino | 51 ++++++++++++++++++++++----------------- 3 files changed, 31 insertions(+), 22 deletions(-) diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 5f28ffcc7..318fff236 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,6 +1,7 @@ /* 6.0.0a * Add CRC to Settings making future upgrades more fail-safe * Add support for uploading Sonoff Bridge firmware found in tools/fw_efm8bb1 folder build by Portisch using Web Gui File Upload (#2886) + * Add support for I2C temperature sensor LM75AD (#2909) * Add command RfRaw to control Portisch firmware features * Remove version 3, 4 and pre 5.2 settings auto-upgrade. See https://github.com/arendst/Sonoff-Tasmota/wiki/Upgrade#migration-path * Change default CFG_HOLDER from 0x20161209 to 4617 (=0x1209) - no impact on default upgrades diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 17b09bbe0..6e51d8e3d 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -263,6 +263,7 @@ #define USE_SHT // Add I2C emulating code for SHT1X sensor (+1k4 code) #define USE_SHT3X // Add I2C code for SHT3x or SHTC3 sensor (+0k7 code) #define USE_HTU // Add I2C code for HTU21/SI7013/SI7020/SI7021 sensor (+1k5 code) + #define USE_LM75AD // Add I2C code for LM75AD sensor (+0k5 code) #define USE_BMP // Add I2C code for BMP085/BMP180/BMP280/BME280 sensor (+4k code) // #define USE_BME680 // Add additional support for BME680 sensor using Adafruit Sensor and BME680 libraries (+6k code) #define USE_SGP30 // Add I2C code for SGP30 sensor (+1k1 code) diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino index 4d0a4af94..fd3dd109b 100644 --- a/sonoff/xsns_26_lm75ad.ino +++ b/sonoff/xsns_26_lm75ad.ino @@ -1,7 +1,7 @@ /* - xdrv_26_lm75ad.ino - Support for I2C LM75AD Temperature Sensor + xsns_26_lm75ad.ino - Support for I2C LM75AD Temperature Sensor - Copyright (C) 2018 Theo Arends + Copyright (C) 2018 Andre Thomas and Theo Arends This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -21,7 +21,11 @@ #ifdef USE_LM75AD /*********************************************************************************************\ - * LM75AD + * LM75AD - Temperature + * + * Docs at https://www.nxp.com/docs/en/data-sheet/LM75A.pdf + * + * I2C Address: 0x48 - 0x4F \*********************************************************************************************/ #define LM75AD_ADDRESS1 0x48 @@ -56,7 +60,7 @@ void LM75ADDetect() } for (byte i = 0; i < sizeof(lm75ad_addresses); i++) { lm75ad_address = lm75ad_addresses[i]; - if (I2cValidRead8(&buffer,lm75ad_address,LM75_CONF_REGISTER)) { + if (I2cValidRead8(&buffer, lm75ad_address, LM75_CONF_REGISTER)) { lm75ad_type = 1; snprintf_P(log_data, sizeof(log_data), S_LOG_I2C_FOUND_AT, "LM75AD", lm75ad_address); AddLog(LOG_LEVEL_DEBUG); @@ -67,34 +71,37 @@ void LM75ADDetect() float LM75ADConvertTemp(uint16_t t) { float tmpt; + + int16_t sign = 1; if (t & 0x8000) { // we are getting a negative temperature value - t=t<<1; // shift out the MSB - t=t>>6; // shift value into place (5 LSB not used + the MSB we shifted out to make it zero) - tmpt=t*0.125*-1; - } else { // we're getting a positive value - t=t>>5; // shift value into place (5 LSB not used) - tmpt=t*0.125; - } - if (!isnan(tmpt) && Settings.flag.temperature_conversion) { - tmpt = tmpt * 1.8 + 32; // Fahrenheit + t = (~t) +0x20; + sign = -1; } + t = t >> 5; // shift value into place (5 LSB not used) + tmpt = ConvertTemp(sign * t * 0.125); + return tmpt; } void LM75ADShow(boolean json) { if (lm75ad_type) { - char temperature[10]; - uint16_t lm75ad_value = LM75ADGetTempRegister(); - float t=LM75ADConvertTemp(lm75ad_value); - dtostrfd(t, Settings.flag2.temperature_resolution, temperature); - if (json) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"LM75AD\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); + char temperature[10]; + + uint16_t lm75ad_value = LM75ADGetTempRegister(); + float t = LM75ADConvertTemp(lm75ad_value); + dtostrfd(t, Settings.flag2.temperature_resolution, temperature); + + if (json) { + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"LM75AD\":{\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, temperature); +#ifdef USE_DOMOTICZ + if (0 == tele_period) DomoticzSensor(DZ_TEMP, temperature); +#endif // USE_DOMOTICZ #ifdef USE_WEBSERVER - } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "LM75AD", temperature, TempUnit()); + } else { + snprintf_P(mqtt_data, sizeof(mqtt_data), HTTP_SNS_TEMP, mqtt_data, "LM75AD", temperature, TempUnit()); #endif // USE_WEBSERVER - } + } } } From 221c420fcb2d611574a8441c64496333fe9cd0ea Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Tue, 5 Jun 2018 16:55:35 +0200 Subject: [PATCH 408/435] Tuning LM75AD sensor driver --- sonoff/xsns_26_lm75ad.ino | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/sonoff/xsns_26_lm75ad.ino b/sonoff/xsns_26_lm75ad.ino index fd3dd109b..be83fc79a 100644 --- a/sonoff/xsns_26_lm75ad.ino +++ b/sonoff/xsns_26_lm75ad.ino @@ -46,18 +46,12 @@ uint8_t lm75ad_type = 0; uint8_t lm75ad_address; uint8_t lm75ad_addresses[] = { LM75AD_ADDRESS1, LM75AD_ADDRESS2, LM75AD_ADDRESS3, LM75AD_ADDRESS4, LM75AD_ADDRESS5, LM75AD_ADDRESS6, LM75AD_ADDRESS7, LM75AD_ADDRESS8 }; -int16_t LM75ADGetTempRegister(void) -{ - uint16_t res = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); - return (int16_t)res; -} - void LM75ADDetect() { uint8_t buffer; - if (lm75ad_type) { - return; - } + + if (lm75ad_type) { return; } + for (byte i = 0; i < sizeof(lm75ad_addresses); i++) { lm75ad_address = lm75ad_addresses[i]; if (I2cValidRead8(&buffer, lm75ad_address, LM75_CONF_REGISTER)) { @@ -69,18 +63,16 @@ void LM75ADDetect() } } -float LM75ADConvertTemp(uint16_t t) { - float tmpt; - +float LM75ADGetTemp() { int16_t sign = 1; + + uint16_t t = I2cRead16(lm75ad_address, LM75_TEMP_REGISTER); if (t & 0x8000) { // we are getting a negative temperature value t = (~t) +0x20; sign = -1; } t = t >> 5; // shift value into place (5 LSB not used) - tmpt = ConvertTemp(sign * t * 0.125); - - return tmpt; + return ConvertTemp(sign * t * 0.125); } void LM75ADShow(boolean json) @@ -88,8 +80,7 @@ void LM75ADShow(boolean json) if (lm75ad_type) { char temperature[10]; - uint16_t lm75ad_value = LM75ADGetTempRegister(); - float t = LM75ADConvertTemp(lm75ad_value); + float t = LM75ADGetTemp(); dtostrfd(t, Settings.flag2.temperature_resolution, temperature); if (json) { From 0d5117cdca1b1c909d1250f55488e88695f033bd Mon Sep 17 00:00:00 2001 From: Theo Arends Date: Tue, 5 Jun 2018 18:12:18 +0200 Subject: [PATCH 409/435] Add RfRaw 255 --- sonoff/xdrv_06_snfbridge.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/xdrv_06_snfbridge.ino b/sonoff/xdrv_06_snfbridge.ino index e146ea1ea..155944005 100644 --- a/sonoff/xdrv_06_snfbridge.ino +++ b/sonoff/xdrv_06_snfbridge.ino @@ -533,6 +533,7 @@ boolean SonoffBridgeCommand() case 169: // 0xA9 - Start learning predefined protocols case 176: // 0xB0 - Stop sniffing case 177: // 0xB1 - Start sniffing + case 255: // 0xFF - Show firmware version SonoffBridgeSendCommand(XdrvMailbox.payload); sonoff_bridge_receive_raw_flag = 1; break; From 7d8495b26325be40ff662b6636d0579a3ed0bbaa Mon Sep 17 00:00:00 2001 From: Adrian Scillato <35405447+ascillato@users.noreply.github.com> Date: Tue, 5 Jun 2018 16:20:25 -0300 Subject: [PATCH 410/435] Update Stale Bot --- .github/stale.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/stale.yml b/.github/stale.yml index 43d5e77f3..88c5f7c21 100644 --- a/.github/stale.yml +++ b/.github/stale.yml @@ -1,9 +1,9 @@ # Number of days of inactivity before an Issue or Pull Request becomes stale -daysUntilStale: 120 +daysUntilStale: 45 # Number of days of inactivity before a stale Issue or Pull Request is closed. # Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale. -daysUntilClose: 14 +daysUntilClose: 15 # Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable exemptLabels: From 1c337ae28eed653b1382d33b6349906d7c191416 Mon Sep 17 00:00:00 2001 From: ascillato Date: Tue, 5 Jun 2018 17:04:34 -0300 Subject: [PATCH 411/435] Revert Changes --- .github/1.jpg | Bin 68619 -> 0 bytes .github/2.jpg | Bin 78315 -> 0 bytes .github/3.jpg | Bin 82436 -> 0 bytes .github/4.jpg | Bin 80450 -> 0 bytes .github/5.jpg | Bin 69690 -> 0 bytes .github/6.jpg | Bin 68331 -> 0 bytes .github/7.jpg | Bin 93256 -> 0 bytes .github/Config_Menu.jpg | Bin 78164 -> 0 bytes .github/KNX_menu.jpg | Bin 77343 -> 0 bytes .github/donate.jpg | Bin 19598 -> 0 bytes .github/stale.yml | 20 +- COPYFILES.BAT | 37 - README.md | 163 -- lib/Adafruit_GFX-1.2.2.07/.gitignore | 2 - lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp | 1348 ----------------- lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h | 211 --- lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp | 336 ---- lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h | 80 - .../Adafruit_SPITFT_Macros.h | 114 -- .../Fonts/FreeMono12pt7b.h | 227 --- .../Fonts/FreeMono18pt7b.h | 363 ----- .../Fonts/FreeMono24pt7b.h | 577 ------- .../Fonts/FreeMono9pt7b.h | 176 --- .../Fonts/FreeMonoBold12pt7b.h | 250 --- .../Fonts/FreeMonoBold18pt7b.h | 423 ------ .../Fonts/FreeMonoBold24pt7b.h | 672 -------- .../Fonts/FreeMonoBold9pt7b.h | 189 --- .../Fonts/FreeMonoBoldOblique12pt7b.h | 269 ---- .../Fonts/FreeMonoBoldOblique18pt7b.h | 460 ------ .../Fonts/FreeMonoBoldOblique24pt7b.h | 742 --------- .../Fonts/FreeMonoBoldOblique9pt7b.h | 203 --- .../Fonts/FreeMonoOblique12pt7b.h | 248 --- .../Fonts/FreeMonoOblique18pt7b.h | 398 ----- .../Fonts/FreeMonoOblique24pt7b.h | 643 -------- .../Fonts/FreeMonoOblique9pt7b.h | 187 --- .../Fonts/FreeSans12pt7b.h | 270 ---- .../Fonts/FreeSans18pt7b.h | 452 ------ .../Fonts/FreeSans24pt7b.h | 727 --------- .../Fonts/FreeSans9pt7b.h | 201 --- .../Fonts/FreeSansBold12pt7b.h | 288 ---- .../Fonts/FreeSansBold18pt7b.h | 481 ------ .../Fonts/FreeSansBold24pt7b.h | 784 ---------- .../Fonts/FreeSansBold9pt7b.h | 208 --- .../Fonts/FreeSansBoldOblique12pt7b.h | 317 ---- .../Fonts/FreeSansBoldOblique18pt7b.h | 545 ------- .../Fonts/FreeSansBoldOblique24pt7b.h | 893 ----------- .../Fonts/FreeSansBoldOblique9pt7b.h | 227 --- .../Fonts/FreeSansOblique12pt7b.h | 302 ---- .../Fonts/FreeSansOblique18pt7b.h | 518 ------- .../Fonts/FreeSansOblique24pt7b.h | 840 ---------- .../Fonts/FreeSansOblique9pt7b.h | 220 --- .../Fonts/FreeSerif12pt7b.h | 259 ---- .../Fonts/FreeSerif18pt7b.h | 429 ------ .../Fonts/FreeSerif24pt7b.h | 690 --------- .../Fonts/FreeSerif9pt7b.h | 195 --- .../Fonts/FreeSerifBold12pt7b.h | 271 ---- .../Fonts/FreeSerifBold18pt7b.h | 462 ------ .../Fonts/FreeSerifBold24pt7b.h | 759 ---------- .../Fonts/FreeSerifBold9pt7b.h | 202 --- .../Fonts/FreeSerifBoldItalic12pt7b.h | 292 ---- .../Fonts/FreeSerifBoldItalic18pt7b.h | 500 ------ .../Fonts/FreeSerifBoldItalic24pt7b.h | 793 ---------- .../Fonts/FreeSerifBoldItalic9pt7b.h | 215 --- .../Fonts/FreeSerifItalic12pt7b.h | 271 ---- .../Fonts/FreeSerifItalic18pt7b.h | 450 ------ .../Fonts/FreeSerifItalic24pt7b.h | 737 --------- .../Fonts/FreeSerifItalic9pt7b.h | 202 --- lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h | 131 -- lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h | 123 -- lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b | 130 -- lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h | 474 ------ lib/Adafruit_GFX-1.2.2.07/README.md | 31 - .../fontconvert/Makefile | 12 - .../fontconvert/fontconvert.c | 284 ---- .../fontconvert/fontconvert_win.md | 88 -- .../fontconvert/makefonts.sh | 38 - lib/Adafruit_GFX-1.2.2.07/gfxfont.h | 24 - lib/Adafruit_GFX-1.2.2.07/glcdfont.c | 276 ---- lib/Adafruit_GFX-1.2.2.07/library.properties | 9 - lib/Adafruit_GFX-1.2.2.07/license.txt | 24 - .../Adafruit_LEDBackpack.cpp | 672 -------- .../Adafruit_LEDBackpack.h | 171 --- lib/Adafruit_LED_Backpack-1.1.6/README.md | 30 - lib/Adafruit_LED_Backpack-1.1.6/README.txt | 26 - .../examples/HT16K33/HT16K33.ino | 55 - .../examples/bargraph24/bargraph24.ino | 65 - .../examples/bicolor8x8/bicolor8x8.pde | 122 -- .../clock_sevenseg_ds1307.ino | 178 --- .../clock_sevenseg_gps/clock_sevenseg_gps.ino | 159 -- .../examples/matrix16x8/matrix16x8.ino | 133 -- .../examples/matrix8x8/matrix8x8.ino | 120 -- .../minimatrix16x8/minimatrix16x8.ino | 123 -- .../examples/quadalphanum/quadalphanum.ino | 73 - .../quadalphanum_mini/quadalphanum_mini.ino | 72 - .../examples/roboface/roboface.pde | 251 --- .../examples/sevenseg/sevenseg.ino | 81 - .../examples/wavface/wavface.pde | 336 ---- .../examples/wavface/wavs/beware_i.wav | Bin 20802 -> 0 bytes .../examples/wavface/wavs/ihunger.wav | Bin 10258 -> 0 bytes .../examples/wavface/wavs/run_cowd.wav | Bin 16096 -> 0 bytes .../library.properties | 9 - lib/Adafruit_LED_Backpack-1.1.6/license.txt | 21 - .../.github/ISSUE_TEMPLATE.md | 46 - .../.github/PULL_REQUEST_TEMPLATE.md | 26 - .../Adafruit_SSD1306.cpp | 729 --------- lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h | 186 --- lib/Adafruit_SSD1306-1.1.2/README.md | 32 - lib/Adafruit_SSD1306-1.1.2/README.txt | 24 - .../ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino | 375 ----- .../ssd1306_128x32_spi/ssd1306_128x32_spi.ino | 368 ----- .../ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino | 375 ----- .../ssd1306_128x64_spi/ssd1306_128x64_spi.ino | 368 ----- lib/Adafruit_SSD1306-1.1.2/library.properties | 9 - lib/Adafruit_SSD1306-1.1.2/license.txt | 26 - .../LiquidCrystal_I2C.cpp | 315 ---- .../LiquidCrystal_I2C.h | 126 -- .../LiquidCrystal_I2C.o | Bin 41564 -> 0 bytes lib/LiquidCrystal_I2C-1.1.3/README.md | 2 - .../examples/CustomChars/CustomChars.pde | 70 - .../examples/HelloWorld/HelloWorld.pde | 28 - .../examples/SerialDisplay/SerialDisplay.pde | 34 - lib/LiquidCrystal_I2C-1.1.3/keywords.txt | 46 - lib/LiquidCrystal_I2C-1.1.3/library.json | 15 - .../library.properties | 9 - lib/TasmotaTFT-1.0.1/README.txt | 21 - .../examples/graphicstest/graphicstest.ino | 360 ----- lib/TasmotaTFT-1.0.1/keywords.txt | 41 - lib/TasmotaTFT-1.0.1/library.json | 15 - lib/TasmotaTFT-1.0.1/library.properties | 9 - lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp | 616 -------- lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h | 137 -- lib/process-control-master/LICENSE | 201 --- lib/process-control-master/PID.cpp | 168 -- lib/process-control-master/PID.h | 89 -- lib/process-control-master/README.md | 2 - lib/process-control-master/Timeprop.cpp | 94 -- lib/process-control-master/Timeprop.h | 85 -- platformio.ini | 172 +-- sonoff/i18n.h | 2 +- sonoff/support.ino | 27 - sonoff/user_config.h | 224 +-- sonoff/xdrv_13_controller.ino | 603 -------- sonoff/xdrv_14_display.ino | 1096 -------------- 143 files changed, 80 insertions(+), 33770 deletions(-) delete mode 100644 .github/1.jpg delete mode 100644 .github/2.jpg delete mode 100644 .github/3.jpg delete mode 100644 .github/4.jpg delete mode 100644 .github/5.jpg delete mode 100644 .github/6.jpg delete mode 100644 .github/7.jpg delete mode 100644 .github/Config_Menu.jpg delete mode 100644 .github/KNX_menu.jpg delete mode 100644 .github/donate.jpg delete mode 100644 COPYFILES.BAT delete mode 100644 lib/Adafruit_GFX-1.2.2.07/.gitignore delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.cpp delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_GFX.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.cpp delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Adafruit_SPITFT_Macros.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMono9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoBoldOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeMonoOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSans9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansBoldOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSansOblique9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerif9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBold9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifBoldItalic9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic12pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic18pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic24pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/FreeSerifItalic9pt7b.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Org_01.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Picopixel.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/Tiny3x3a2pt7b delete mode 100644 lib/Adafruit_GFX-1.2.2.07/Fonts/TomThumb.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/README.md delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/Makefile delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert.c delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/fontconvert_win.md delete mode 100644 lib/Adafruit_GFX-1.2.2.07/fontconvert/makefonts.sh delete mode 100644 lib/Adafruit_GFX-1.2.2.07/gfxfont.h delete mode 100644 lib/Adafruit_GFX-1.2.2.07/glcdfont.c delete mode 100644 lib/Adafruit_GFX-1.2.2.07/library.properties delete mode 100644 lib/Adafruit_GFX-1.2.2.07/license.txt delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.cpp delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/Adafruit_LEDBackpack.h delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.md delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/README.txt delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/HT16K33/HT16K33.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bargraph24/bargraph24.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/bicolor8x8/bicolor8x8.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_ds1307/clock_sevenseg_ds1307.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/clock_sevenseg_gps/clock_sevenseg_gps.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix16x8/matrix16x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/matrix8x8/matrix8x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/minimatrix16x8/minimatrix16x8.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum/quadalphanum.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/quadalphanum_mini/quadalphanum_mini.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/roboface/roboface.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/sevenseg/sevenseg.ino delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavface.pde delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/beware_i.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/ihunger.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/examples/wavface/wavs/run_cowd.wav delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/library.properties delete mode 100644 lib/Adafruit_LED_Backpack-1.1.6/license.txt delete mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/ISSUE_TEMPLATE.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/.github/PULL_REQUEST_TEMPLATE.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.cpp delete mode 100644 lib/Adafruit_SSD1306-1.1.2/Adafruit_SSD1306.h delete mode 100644 lib/Adafruit_SSD1306-1.1.2/README.md delete mode 100644 lib/Adafruit_SSD1306-1.1.2/README.txt delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_i2c/ssd1306_128x32_i2c.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x32_spi/ssd1306_128x32_spi.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_i2c/ssd1306_128x64_i2c.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/examples/ssd1306_128x64_spi/ssd1306_128x64_spi.ino delete mode 100644 lib/Adafruit_SSD1306-1.1.2/library.properties delete mode 100644 lib/Adafruit_SSD1306-1.1.2/license.txt delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.cpp delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.h delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/LiquidCrystal_I2C.o delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/README.md delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/CustomChars/CustomChars.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/HelloWorld/HelloWorld.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/examples/SerialDisplay/SerialDisplay.pde delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/keywords.txt delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.json delete mode 100644 lib/LiquidCrystal_I2C-1.1.3/library.properties delete mode 100644 lib/TasmotaTFT-1.0.1/README.txt delete mode 100644 lib/TasmotaTFT-1.0.1/examples/graphicstest/graphicstest.ino delete mode 100644 lib/TasmotaTFT-1.0.1/keywords.txt delete mode 100644 lib/TasmotaTFT-1.0.1/library.json delete mode 100644 lib/TasmotaTFT-1.0.1/library.properties delete mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.cpp delete mode 100644 lib/TasmotaTFT-1.0.1/src/TasmotaTFT.h delete mode 100644 lib/process-control-master/LICENSE delete mode 100644 lib/process-control-master/PID.cpp delete mode 100644 lib/process-control-master/PID.h delete mode 100644 lib/process-control-master/README.md delete mode 100644 lib/process-control-master/Timeprop.cpp delete mode 100644 lib/process-control-master/Timeprop.h delete mode 100644 sonoff/xdrv_13_controller.ino delete mode 100644 sonoff/xdrv_14_display.ino diff --git a/.github/1.jpg b/.github/1.jpg deleted file mode 100644 index 757a10a96e69f3636fffd4faca69ebac735aec6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68619 zcmeFZc~lcyw=Wt*MLpY z(gdVSq!&<-UV;z;(i2E%LIG)R?eE?3y>s?=-Z?z2RYgf&#LO3`$Ab)^=5cW942(piZzsezQ zUhYGOcn)!K@$m8R@E!&?E^dASzQg=~?f-R?zpDRL3;Z2E#C7PeEB@Cu_7{lYp?#wJ zo2`H_6323Q*i%*6K4+!U9#f3 z`|zmjxhIE&FTZ?W(abG({uWi_-lKjVQF#rr0_`u={-N1_O|gjoTblh-vHw#qBIGb9 z2l(OFjW z%;P<_H~c({-;z4f$2e;A1u8WMc!emosmDn&`=T19sC|~B=&`VJ=hhIqYt8aXw+*b` zJcNr+-jh>QB%@T!Y9O)Fsk}>zIo~4{)G*L<>#f5zOAk!5^R7K2=>0Cj8102=wuDVh zl_6N%+KSEQ@R%IVsrq5`$)A0ga-!#?=AH>dcKPs+yiO@xtm^M43SH1T=Y=~ux8$*Y zG$cbL)2NzR5A#ru%$A^T$|zIUC}QNEHKE09)o9yw*UFlR0rL-EYu3ek=1MqHPP+v? z;y>$nSR1g#`b~T+|H5nA zPnhP@Fkh?~ruiz&{WI$nf(_w030RStfwM`^C~KOnA6%AgATMewP3WFi4$ZGZ29Oee z1itdfz%(Z5Yt7!;(Hhv9(Cn$Ns_!S3geA|WZO`r$eBZV&3dcDtVK;FiG&toF8*<82_9Li({$wP>tY-I&?RC(Ii^hnf`ct7g;%%s!|z4-FTY2U%~ zwwQYu;Iw)a8{$cjWcX0wZQ%#|ruq^w9z7j#?KE#mhHdCEo6O&KYww3#^!~i7BJO^! zUGS2uht35n?`w;z`7A3`C8B?AoATjKBlL7bJL-2`-gX(DvT4|v+enzgQktl6dNS?G zF0>UJN8)9KmpM9Wt`ITN`qr)`6Gr{DIQh7zwJ zf|#NB*ixuWDe~QtO$t!hp|i=nI`eJ)^qi5B=c>Yb!PrsA+AN-f_|PWEoUk*#F*tg0 zfrJDwJ+}uJu*YavhOjvu4IpNg2|U3`GeyncIol<}zu@Zox6~!QYHI0&$L?uIm_^3U z%gw4}o0J7k8Uj00@MkVcR94J%l4P)XYv^d4e6YU(%zBuzvWiQ$C>SB?NITqXNI$_L z_h+Bgt&E4a91R*<-3KRp1FCIbc@b)(zfe5LTJL9;E#nD1zKy*3E^0a9(-%;VMfeoA zN8?(}sz1`Z&GY0ix^65NaQ+31n?H%#CWJ-*${5wjJLe`%$OIZ zwQz6M*${<8cTZCCkNCwRul%Mv?s#E(;1?aL({C5#Hl~;|8(F-;Rb*%^BY?aXOX5e} zCR=ij<9h3g7w{)5@VG(9WwLv!!r8WO97O4K&1Ouq4s5CnbASz*`T*sp;Bul}PDBhk zWa!1rQ4=dLuF#kV$Df;p&(0duShZtL=4CPdP!=(lWO(Z<-CE%uw~{VYIm5piYtmUN{)q#?9lT z^=4W?baB^hx^3s@oJ4^w@#lpL&7C4kHbF1FwO%?o_8g<$h%o(~@Kiqbs?oj+#}gxO zW(|*g*$lj2ZDkA*{(rHAU@33dkdqjiBdd)9XG2U2KdO%{(~SVPDHZj@!L`QJt4|7m zL<2*e0T%J6iL!pp-hH`aeBG-Tq{T4fQvPtm)iKo6xlEPa^SSkZCW?E<`j4cStnA&nWj@dE;W4bEqJ}8O zhW>cv(GYLF_o!5RQLVJzVF3e!Qti~E(6VgE(|E#zB=H4I6)QTA1o+Wys9P&y*{W&B zP2x4v10Lo(bn{D}KOCV2J4rq-BxE|qhFD{!;&Z500*BdaT;# zRC*Of!^l7fVc`KOQXm2wL`>#2lfMaSpWW z#MYb@Tgdzd8| zT>vwcBMAo_I~}ZhUHI}Xl`JP?0 zQdbKZ%+7wB5VE1Y9GQ3OQj704J%|nY>}>{`HYbuwIOz$jhCq3PMGyXE?U0sSs2f1a zdxmt%m)eY|H)O(72UxWKYn*`i^Ea!mBS^zhAHOjFfez5%ek6*-sJ89Rz_W8`QkFG9 zgCaw)aJ1c~1}}#j`glw4tL6opC6xll@H0v;kBL0+ae22XvNvz+`i$AOXciuAv0LwL zPMh19#ieE1oC@;}xLd1R(qvGUHXc^9KDX>ji>A8)UgSPuuoL}3m?|2r&xzi&xVqli zGD4>hPS~|;)X;t{`tiQH>ZV|GvviK5l_FIYyJOOt;gPgO0FEcEs82t~q8xI#(NNTl zreXYXmxWO8CBFqN(cQK+{`c|%!u^d}Uu#wO78IVJzbawLLmF@sNfXL^f8&TH`OYm$ z=D9q9axB@oY~Z}!$M}ZF{1sU_N|y_bSVf0*p+$ZM{~}|y#{0n0v!#!D*(a zg#hreA){EY+$Y(p|8hEyB|S*hW5uLD!%(Hz5Uk6fF(kN_p;t5}6b1CCE^HpC?f z2(tXLwtLb=gbn$EWHp6Z2y;x6sH-_oNSoIiRoIZnBxWd#JOSe*EW8P}WkWa!yIT~E zn_O|2)_OD-rvDrj%i_drEwCZc{tSLLB-f1$XB=chmPf1mFUtIHvHo{!{denIAil;% zOA55)BodDKtMe_2N~)z4A$0Eq(nnrAAJOztp1gPAH*4KqDj7|qz%Px)q5I(L{%|N^ zMJFG#nAZE)pfFbHoq#5@3ii8?rGojHRmz4e3J(vXKqn&Ek&N9t;J}6~q?X&#zp)`H zFrbVLxfck!6#2Jpt*Ln|Gh`HDMFjLib8Q~$@+jp#{{OYmkYmfN8*ww+%xH}y=DD%a z>i>@wR%wAv6~b#e8G5DkAWBf~$2K@(Pwmj~p?m@!gEju`9k0$vPo-7}F=s!j-NbG{oKp!~+ z9oudfWgVsI*ZU^;P{(aPH{tusjJieneB1+%kPh7W^?cu|{e>x8t0~y{_LNCG?D!D4Vak}3vrX0*c0u<*d8f;X-aIvFM> ztYaX@4k+S+i=tptxoFK1!c^U)9P^Fa0OK^CbHGrlbLJ3ofcUT!H*UG#P0~`Y>+C(7 zsmoHwQA3I$EjjisB>IXQI2$InCoJTX#&9ejWAy1g-Pm4QQ0zy2Ub2Oy?1({d_%P*7i47 zGS_XmE+_{$-A{c8Euu7oAgZSp*q|lPd~rE&W=S_vGHc>vQlaOFD19RYA=fmt9)fc9 z(|Fxipk!uYQIsz-zK9s7hS9nA-o`MC+?Ek6lW}3&FKmbac*jp=v<4Qh@q5%kAiRvB zM(b>mwj~eYm63uAwmHNgkDH0po*4(~BWBAQaf0Qyd(^mL+TOcGEu@;!=A2_oMCYg& znjbl_BD`!VNb+QskLz@%R7?Qxp1(=Uy%%sMyV z=?`62&BC+T5UPlJ7in!JG+bnsrN*p9^D!DWw_IsddaR+f_H;_Ih5S=q_=t0LYmn#H(ZLQi&X>gKJ5?%AN(Wy04@9+loLOX3>YFq-NxI&HDm1|ps`4FB4j zTjTBLfy7<|QF7etFXpYspTz{YL15N$AIbzG;MGa31S0%W!!Y_-@OCrih(-f%Ql+y? zFw(JR_>Y=QPo(N3SAZ?CJ22(#8H0tTQENhav9^sRzV+@f%6b|p0>qLmh8kf-W1ge^ zV^`C4uaDm9$}|t@5p#UqY5%-qGFC?uxhK~N-8=)_2GQ$y63ZfwOkyOk^w^M3EAZV1 z71-mG^wEtHjli$%@`Cb_ z2CeV!NZFXgJM?Odtb40`Z%W^)99|IeK9g$ZBRsxtj#)14_YP%4=q8DVsy_NZ=Wan)R6t`Az(n6H5#4_;3GBg^xKh-ZB@cmQS{_Job<+ z>98@;^OHNUpJLo|I}fWU6ZF=2O2?lMvr`u|yHOx&PlnE@?{UB}i+Vq}Y>kC)a&eQJ z%sULv)igHN3^!`JKFCPjdV8iPw@?XKsL^$59HG~f<=ARF(pPLZ z_WiKKX{w(5w$;UUr-{$|xw$274;BOkbfdti(96qxtk!xM>n+8TvlQeZIQts8J_OHn zOmg+(awr5IM-1X;bJ%Y-fBXqZP56^hYb>6dUb7T|NWCqz9j9OV1a(fCy^vp zN&$)n0-FP3H2+o$S}8-lKM#;70lH97u^2Xld`*bgD$Fj z2AHmX6dJ5I_mT}Mbkv2=GeFFzKl-17!#eo*dDe9{WV)6aLnN?XS~%ObB<(2RCBb`H zV_7i{kcEHy^uP826BfTK8}jNn!yokcEY7nbH%6>~6DrschR|pmwAN!KYfl15nh|LG zE@uNEsiiGMu^5KIR3Crv4GUTG()NmKt%MJx@8OR|_X*qFIv(}Y^uFseaR;VpZb{so z8BIjpH6fQ9JZ4^1K|z*z4q^`Ifq2iRbOXlFjz}Y3I*hc&h-St!1ag5)7XNW@PJc}D zb}&r;;IhaP8@P-6TvwfF?~|8#{fYY(_x&Yb-yMXIA4BFv*0om__s%WnRI4*2G4F#1 zTSjfE!F%*@T6O`AvsL?yS&Ywt)bXxI#c!t$x!6aPpO-fqeb0(V^uiE1W2KhN3K(e7 z#ZYI58JDIphZk5H6+Y*05~!QhOCMCLUe0w&eHZ?adu2k(jhje`KPDJWFc;`DnTbCk z-qf^U(R*%rw5WXhlkw%?#83j~+X98A86~A_upl_#x1Pk}er7MH>&q{9)*xGQ<(%YygI8DiVJGa z8O!?u7a@2gjYFrjDoQ0zM@OEftOn#nr=7Ww7Jh4aB`mMX^rn#{;Ef0!HPd z%6FEFjM1z5B@>cQeYD5wbgnJKLmieLb)3)Qk|apY1yQ~w5B4jS`J+m&l;>gvA7Xb^UnJ14rf06iAAXB=2i`0Nw(lM8`va06Qvsb7X9(@)Pn#O zcdG|l604C9usAEmr>$LW>S7!SipH}w6^j884j3Tj1uyoudD}z0T!5Fj0SBa^Zit2^ zLzSBGv29te?%g#JXnkohdLraOvN=X>qm#w&$^5W|d;+Ihgstrlwvw6egvn@zA*1V6 zt6k4^t8LH|^5oVommM+4@W)0Iye%VS48gvy&FatjG~YoG0*uIOPa98AyH2wNgOhGi z=i{-OX~PdZVx6~bz0}^^e=%i-f$^!$E1%Pfz=SP)Xq`;8^lF%oCs2m!LJTBR&DoG7 zA3^JZQUQ1R?^ozYL32A7T1IM{@%3mORv%o5p}nVxX?{fT(IX{=&P9{4N5D8?>+YX` z&j-ZzWu+~O&=vnZwM_YC^(yQJt`_;4LM zh;T^}vD1C7)-o_hp={Uy1heON7MPKSM^GneVC;Nmn((D>TnZ#f)0+iE$Aj^EcC_s$ zTgCdC1uh6NRr#P7OMhB~7n*;V>^hSmZhoNcS<45jiXX5d7KzB0zOuFFs@MsC46BK5 zS>r<80m7%8rCN47pR&%1`(QPlW%QJ=KQ8*7*vK~j%<6X03kx3qo-xHe{it8ySFBRz z+tlfu`>z6=hmNUxgq7PO420?_-cMsw{G7TrKrEZ_Fq>5xK3;`S%A{`4GnI0%5f|uiH4;A04~wQ9DpkF+PkmmOUh@IKO|D5k9N z>~Z$-mq*4$FEA=`+XW(6jibdq((>cx`Ho@b#p?xPW!ZEGg}#;FJ5r$?-OSqVS7({XhO8SgKrr)%${JHK zbZPk&u*QbS!#d#feRwuxAm|-`?ljp)b<&=HD8am<^P-Ms7iu4{O@{>ew4m||=wU--pXD&4{V_}(;;5}tQ3rfS_%s``q6aFv*gNuAopBvV%0o#553xXP zTTsr}qzo0G^{~`C2yOnIjJzKrn@w;T#(Um{T8(zL5KbF&fjBt+?bKG&H5f**QJeoG4<{>01uEEi9 zEv&2zt4LMy1*E3P%kS+mi@LUR^gLQ-^Q0PR8NvVr9bQ8-e1X=r1NO|Rjg!3g!?>Rb zNipvmGqyf%%&QjtRGnPwQ<)99a%5f(mJi`m{%V8Go8D2QnSt2u`I zjfEjr|EAdfJxteB*yudr*Iz;YCISqMcj_u zJBq_FWi#rr&!Fq(C{3`tmBN`q)f_+m?bH7k_Bpzp8E13$Ft-VxXeQ4!k|-e~bHS>4 zmBEeeQ5S*)v?hMK$==X*J-*uyW~!`#5%>3N?HE9y5VNij;16Qhe>n@KmTzHpWf1VXKSB0|iq919&H z{au*<>`d~GY7&Vyq^`c*DU|MS8BR*1j$MK;zL!pP~I z*hVObJn%=TqVN2X$51Xb&7uhZEc=@c3tqZCnzOrV{P!ceCznjuwPI`xe%-gl0ldv= zB>qN`f(0#G-KN>Xmk-h^EK9s?B~w?rpK=t|eGba-FqkxPS4{Ry_~lfuh|EgCsAyuH zZ7-(R54lj_vw`W8Lrto4385-vfhbHZR~w86(`?651dKW+zsuJE z_&Hb{?6W;I$}R3C*BI-#wzV2)knbJ6or%a|#$u-OFh|gGtRX_RVhqZs_?Ht(dZ3Z( zF74=--2>%W?rNv21M7zWFn{*ua^qUq!7OQFj2kh6a>R#dmgFU4I^^5`@DTxF+}-!R zU8@nNkt)&tdEBvG-OxQ5(Pg$?+g}<;SV$20jX%z;M4ct~9b`a96)Q$F24`G~@8)}Y z9TSvLb!)81pr5Qecv0}mpBL^$T^9cUiGSG>jA8LWa*pUDF02mPAJM zNi3fA;>~Lf;_D_(RJI$w7h(Jux15ttHu7A4?RIMJz;~aO--T1#7Dc~@vFMRG$HkJf z@vn+IO3*9Gi0_67$EF>(Le_Ga+=8ykZ|F}1h#pdCIrI!*maHzs&;_1oM>EuElFLQ| zTVwFn{zd$;swA^dS*k^LNc@c z=HRN{4&`!mkv>Y{3kmU1tMyD5ZP7#Zoa+(1?|Dc2wRrhRuTs2D!6i%|$pfj5=s{rB zd@#JF+P4OY>c8g+%(^fZd@lTwaWJM8HlAlnGig)xYeAo|p#9nGaDxf&icqO(rO8~I{l2gHzZu$~V6mPo7!4Cyw#t%5Sy79gp=F&k zv5_d}vY+f+`;iHj8DXg{N z?AO{w$5M9X2k|3bli$xTc&j{T7N8A4hP1M8WpBnZM&@|U5LN@WZ(-D7mLciyrSR*A zW5ve& zLbDoAaqQTTFn>_0I3$hFxarAa=>{f{4GHKo$;DfN19+;8B|NAPoyLe1wIbtcUG`JO zVl)N#f~(q93hj&vfk1N=Ql+K;vgWjtvqSMgBZYWv1uHw<{Mi0Pf;BU5iVCCD%{a?B z)0!sIBT<^vmcI6F2e;lNgy@@sPWt%o%$vH8Qz(b$E}Z#MeNV$Kb+|{5Bjc@;tKQhP zRn|4NpfwMXyz%l;gr%Ea_bG&Eii@we=+>=d!bF4F9#dq)G71#2AkCpO!BG0AH|!Ap zOt8mgpsF-Mt_3YOTvq*jCEzN;Jo9UT=h2&C%lE^=JpNSkx%a}?`o2wfVmroHfCtvB z9ye*g>Z1wJVaj$z)x;u?Mfju)unoFNT+Ud)`Fns;yB@7 ztASj49^v=u1fLVpY6F=uvWB*I?9c8o4$f(Vjz2Y{wq+j~MCnYeNimFRm;{Xg8edKn zN>4gsNi@UD`sDhY<9I2;RE~d9T;NYhlY4UZTBf#@%q)T@AC#U7cxTJ?Q#2El+Jhbz zdh6O?AE<8eN$yTwjh!AKbDj%%`SoK#UQj}ZjJCg2kb}cNzszF=6E*O-rGZYk>fox*aw88D5HE2H>Uzcz+rf2S<&!99jJQL-w_v z<3}te#54K3a;MyBQHnMbLu?prEg*J)BVdXie_S4{77^?6!5r|G1tYnzYHO{8Tmt)>TNI0~<1bQp$^lq)4+~I*PKMkwGiGuA$ z?+poOt$IDw>PXh=phJL#pjZ%cId8Nk!N8}mL1xW31iLc3cYP7$FDVzI$8a3QM3L_sL+DbYYe9Z2r zQ__9~+}lb=i=eYH#QB>qQ}4gw#WmUsD(hTLvot`C4^CsA5T>$WlA8oU;1#B24^VYQ z_!GD3&L7Ro7e{+jyy{CFADlt29}HHoPP+HY;TPoHfnrNDlF9x|=Lh31={CbIyF1s~ znm{J5@jekQpT&fpGus|4AuNQ8tYay*d)A1YPbQsNdYz;rC=(4fqzW6Su{jXHeZL|a zDzNpswGs5kt+?~6@e+@BKF+DU^cCaP;a(tBgtH-SeUgBjHLa+vYkp8o-zSV&^d7iG zd6&dG^8NHX(UHop&*hV8gF?ST5|@&{_IE}mot~;oNghKkhc`KFr*8)Y`kc()aj-1Q z*syS6#q44CCLOZ7jDw3n4{scK1JI$3Uk5x~r{K@gdbFBa@(#o7?p<<^icMlzu&-Q% zaad;Qb5+W(kj&=KX&QeNSQBkbNidVYW|d$mYi1^CT5gf0T=i0OjG+Lsz|}Q}SjSV~ zv9lB@Q&ZQM)5*VkN4Y}%R(uvV!t$7x~$AeGW zX_~sl(q}BQ54pu&O@^`{aOmL!(2@_MrdDlA7tM z9*@5D-&QHe%GnGr`j+jkP3%s~GK(jL+5zKb1PxILwaCtuoeyk?8wewexU!0!gq=%W z@ox4(mU9kCXY-g0p&||=X-q7pHXIvacw!kXM(u31j3I!m`=PPcu<6$fMP$(#>emdI zu6Ut#dfH@oYx|r1qB)+g)LOpc9~j;Z=q?DCyumy@JV-zw!k-OymiTCnERK~1;j@bx zL0&t!kHup?;h+$1$KwM74Lfo{ zcI*jM^dvy0)|%6<jzt!MrJWBFzbK-!p9_WUmfh8GS&JZ>p-VN*GHc>QH>vT;Is? z#M2z{+Ue@v>RFesjWQ@t6Lm@dF6jE z{{gW<&-i;T$q%k-&`sx<`%ipnT=#$CcKqP_M`YmdGW_MSe8W(0mpS7_05}=m9z!Wt zs}^`VX;4k$dfxbIawOvpJw3ziJDD>ptp}|pZ;%&ZM8v;|@UMR&pD<$j`{viBM;`@_ zKmBzlv@qSL+$&wwwub6rKY8Vc<$hX>Y_`?`dx;xHr}jq(?3XN<%Hdof@afAHfj~3E zFrCcgGO0B;=hL>RP8=BM5Ei$ajy)rIgn!=$h?VG&6FiK$c(O@Mbu<%gl=Aee&G*klmOhz_UP0WUG5t##hrUTP^SI%Ae zF3(@9RjJrp(sppFbf4`l=JPG4BfS-v)l5tBd5_OGu~ z6`w^1KO{?kGJAuHbveU))#${A99zQ)MCNcAs-pyG7LPHVtwUI0pUhf0m0@je7K$LpAkCnyO!BHJ4+~1cJT@t zDk{yyATz*7;MUqs)ifqHrxFX|uG}0!hHW{}(7e0dT(+N~Hp-G(v(7@9Y`(9=M~?(lsYjtam@SqfFHDqu#ysf7bKZjp>8EG-Dnmw-~ zbmnW4FMNv^d2X@N@ch=rUXDe$q4NS<;;(deq8Qy_G{7<{pmZK)Y#_Gu73HAf53+>>c8h6TXOqPpEBeinAJNEoamcOQhx=m z#8KSwM2XEL{Ul7gRDi=G6?By(90BAvT4x&{vST~rU?%guw;@S1uVmtveQk!@dftX? zs+5p!>O>UJC6T&4Q&zLfS!TYWD#~T>o0TVC28gEaBavszai{yur12koaiad7soxr` zd}Z&A2fk=i5jq5YU}dkg-f`BFd`)GR`}Q8?B-3ZmDCl|0s{+Qrqn-K}#cW8yC3W+y zVRSg^PXJ4k>mW%HTq$xLa4wLuga0H6$;DX>Y4TyN<8k;#IRDaO?F~nrxim+#f~zXg z!IUfIxm{y~1X>Lx3Jg!>L=bSumLwj=i6MP=^f{N{I9qC8j2ulS)iqDnJHuPfabjmM z?(6C;w>N^f227o*rRHNC%djz@so1hS>(kI_ zA4UkjQQWjRx-d;GhL-Y$Bm`}N3hO^~C-G|#_9KW~t!zk4kfFe+MnmbzG*4fV+@b0{ z$DT*NiiyT)%l;2!JzutV)h??4v?WVNx4ck-%W!{%YxUz*B=d#MR+|jT_>oAibW(XVNJhqXu zQcH!lWB4(?1Y%H!LvJb_#>X%kLg~Pw*9->_=McHQ@;ZI~43tYxx?f_u9h*NRCznyW z=L&LOHA#DS7{UOK4BPJwt_k|s$mN4w*u_WZlDy~{Md`&x-mdl0lx@+G-j`kOf71LU<3dG8wMW17Lvz9lol#c_5nuOyq~gYQV-lW{`;i7D7Ji7ik@Fef_eSX^>lRNoBkq z69k4!Ap0Z))p zktrB@Vg8Gjh+DA-zPRgcUwwbGR&383)2v$!9S@_=175|bD?nH-Fi#GAI;DPeQJYe% zaU)GPfzpwt`pwhndX@OShEw`RXGOmHKZ<0A8G8lv7LJTE?#=AzmG@3)2#cL|axEZY z{9h3?nFf}TTYZn=P*vDn5V&#D14pVUw$skFj1vy!Z>XfsS_j;75F{Mg#q8g)X1k+6>r?C zKBp1qY~uVY&@{o5XFFC~HzQ(WZ{C>^$5w@*mP$yG!|6AirMHja<_JV@%h_vpd=|)x z=tg2;jiCs2bj8k44NU%PFY+RBvoshQH1&AA^peZrs!^6Q$|}9ROsOeh_->T&2+r!* zspIzYkM1GsMc}Hnh-vs^ydvudlxh*Yc?B?@MshK1f%_RUSn_v8+mY%(XN1jwd`-P^ zO?`D!hDMaflc^20!>Tpzs^SvZYNZmy#KRjTzOw#~Tgk~QgDK(IGVF)7lKOfJf{SOz zIm>!)K@zU!2V`;Lm!GOeziL_iJV;w^$s#8F#&U za27`p+qMB}k(EaBevZ7+t-X@RZ^5*eb(MD}3d9#O(^)qL5lvX(ky^{L>XYA>6@xsP zwE9~$qh9L`s%3@Gfjl~j8L5w?@=hnMl&5ohl-V&fsC{u|4C|7yZ!d|&CCU6WTi#=5 zOZHEj6qcV5fkW0P^d_=o z2e-nOhqZUzY4qwCha>vK95ze0kACdNLMQLsah!~t$$RSKn1>=_Zy-9WO!3HH^+LlM zxr~A2^ce)~WUm0-hek?3pI|5quHjDrGRSDwnItV@b~-c92lHU#I7bmKgBu!99eom} zVWLGMNXn>m!n~cGP)^Jy7|2{iJD4l9lOk}uq?l}3Woh3NDv2s_ z$}0WxrG!9`Fw9_#^mPwZ*DSgrCaxpJubo=W*f9X}vA#IM;|R{(O1UroL-OOl4FmIc zM&_T#kyEzXiX9lP))TfgcvR}Esi(zX4#BpEA^z3YK8kkLqaWq!E9z?-ap|uzxc9## z_=*eh*}vQO7ZLxDqVgK3qhXr~5PeCOEDc=xets%Ppk4XmZZ@IhQsG#B;-Amm-=uP$ zojUxRo=g9Ada~2f_#F4Z(*9&^d%2fJa>d=B^dkfwI(4?f!Ay6cFQEJqI4Ow-JGT1; z-(zl;xf@8?MC?>&w#ggdzQp`&KlkEMQk3{_tC5y^TyF^|!rlMCIs6x=_3zjGH*sSB zujJ%Xq4km}hTK4lU6;Mwk2Po0l`H(-BMPl{AxEVUr0^Gq%;YKUB zmunv$k{ztBzM>w^efgTo{b%T}9Pq3m#U=Q24Rg#DwtXH)TspTPOG80 z5#$5S3sc!FyJW@27hZI?+4~no?0;1q$&+w(!8xt9!lJdhL= zhc*;nl$4u7lv;8hLm&r^*&1IwfHuW66K!6=8OqGpf7JJbQPLANnKK6>{k$AcU?>`A zzDklFe5-(-aXTxgEKNGgd6M9`{5uIyv1ACbHds7JGCWE&BPgk?k>dmEEbSQ~4h#UG z42j>gD_i1)#A1BQV#}wwPi#EC*zri#d%bY?R5QW&LM%gpjItibTR$=jZVt?cvE{>>%>ac+YtA& z!Y?O40^f1&F!L=s*^|TtW=B=EW}o^2MrKU`c)2J3#EpiRXw~E zN3fz-tkqw)dD^8K-kXZrQE>(d0~Dc#Fcs$@w(^t>;q~ibwT%#JU}P}R9O-Bnw2K3IME-~Va)J83f2eiWnWQQ>F-n`-;!3#AOWiS~#W!T-zPDMm$d@wDX;B)m@80L4Br3f{Phz zk>k!$bB7!bTYAV&j^pwhRA7-Z?lTGT=K{wglze@p3}+=H21 zy#^1sVO_A+v@*7k4yRgS;xLu-3}F@UYZf{*BQwCSI9QwhI-DnutTFfwI}+5aBAyy$|Bg?(NGVG>U^pnz{*XwU(N9 zCB>9_BaYn1-9>IvF->;!|J?Z6JUmSETc4EjV>i=5_rRlHrwzershOiu!ix$8xmx7R znuNFE8EPLzZU&Jg(d*CD_tHimdpW;%#q4mx>1CDn<5z{w9q{?=`BmNq=cZpm@ zASj5&1+EwoR=wh)IE2!pI(E1mwT!NPB(HuL8(tDpvrP{PIno`+#XE<}O){aD3lA)Zhk2fR>L|M3DfvDa?V{$dw z>lU}d{J*ZZc1h=cZ84OvkF(8XO%f^z46W@IKbinpo4&@7gHp4-guLKH!o5A@&!88m zKE-cI=(B^NOhk@Oe(4{j{jH@nB}$uthzXaBF|F}ciu>*vO@+h8x~cV#YJJKx=P+q8 z3b@o&^ii-q^-!UhsY=XIjJv>C+_d~Q3j!!mF<(SwWMxE#-)9i#XAV$G#53&dIHbm| zE-Hz?s4_YH?cf};3RJNff!@zB0;9YU>#ZdW$eCbF2Yer1V3DOwWxXkKcx4_Jt~J}g z@<;6PgM&!950R(rMXuYm{zgYKg2CaAe!x; z?hgw!Xi0<$qTz{bm%`>F&0mG`?p#Mi9=&@qS9313RBK+MA61!P*1b3Jxi7hpxHKbU zi>uxaoG*~NR1&*%hb-lDzd$A!HL6jUMp-Vg1)wZ$`#nzp2HIutal16Jwh8`8ZVhl@ zUf+>%Z=yxV7{1xRmTu)db}j#I1fKjq*n1DCCbz9^6e|KEN|hR=h=PD3hyoHDAR;0n zARt7PB1DMv0D)LgI!IR#kgigqRHa3F6ObZ-P(niQ2_*zlyvu#Q|Bk!e=O1T}|DJKb z|K5AX*kkOG*8uBXYpyltn)8{@(^8))e}A9+WY^6;e3@F0~Lf zaG!ddY{=kSrrMC3>$=#?H$@;p1z%&Pv|%N4$S`rRS{UC|}w(qSC=(h8smO&7CB!uF>jDB2R_S@W9*JiMc2wetWF6){%F_HP0$SPe_`PIDN1>;B0V3B#i_oV?7!Oh_pVcPSz#NY zSn}&`^rlD@%>fe%U4vDbfQX|r48Svg{1+?0ITQedWiUw?#t{z~ODB^hJWq;Z3M~tu ziKj9EWLNdSC8(L~}eP6b&ZT!%R_C-ZEqsWEnzrH+pli%LEO7|K#sU~Uc`m{@9kdV}~ zG)KxaBFKb>KpaGLBdabrW`X*Ke>&HYXnO9Pn%U_v#qB|p}))0$v!8g0B15)SvdcVg8j=(_o3^5 zo8-cIP|!zn27H6DYhD@$rC{xjxVskAbr!v?L$j){FC~3HmT=TVyk;*;hWY} zY(YxpAl1$pzRpxYSIjT#ru=0n|7^WM26gcg-H66VJxM#9&(NjC7ozLb#=3Ymp?Hy~ zfkFTpooaj8OwU73#1~5kYu!52d7bS@Tvi4~GE-P@rP1n5Ipgn`Y93O)N!`1_aQCd% zq3$KE!7O;$jX6Oz2}|ASTDjxVHT~NX<-Yy{1AYC2QJiIXeA21F@iXshN6x+ed;7)` zQYO0?3$XZmY1|(`$exB#d_wd;7Q-i5x4}1JczB3^f5YRdn6oo%U)hQUOzg#k>X&Ip z4SuqPqI|{-APo>Ut#im7hP2?Tj!8@9Hkre-30)ID-Pz-gTk(Bm&WGw`@sihCF4~?x zZ-nZ2x1m2pwZ>!+oK>|ANA%i1ASTKK!tw^imHyUj{QZrqx`Jcy<5-+vFYlX98|y*W zfn$RsilKm&xJ{FS;(xLYg8yKSU0Y^bA*c}$!JLE6NQ66r++J2}$NdXj&WMds{b_^RH=^2vJKHkj6`)J$PUfed&`he^jF;^eQ_AAp45_cm`j07CLb|%)} zLl^p&jr&gztoE?rMbIB$B^fHCxHQcfdR98M?!`i3z5ju6=wHVD&yGtUVj?9kRy1)WZK-K$zSGV9{iMf>3_CLft+ z+$(~vi#qh30e`EV2lCJh3X(%kWxNBh!7Gv7?FiSMk2Q_8S=Jq3_-zn}5Cf3*_OdU%|I_!|cb;FNi+Y58{+6JUt} z2IVcJ905Yj4mXfIn1iiK@QLBSa?@N&=V8tG7aV7}-@P37 zaDj=%pKR>fwD>(|Yi@`9odq*wae&J0F0NlluX(CN5hye)DY$iAs;vIfn^n|r^Fow< zY|KADChKO~2wW`ESbmNXIOz8Mr#40W+n+%&622O31LUt&*kM$CPRBB-`>2rXZ%9S^O~iAd&-aGKwH_L5c@OCVD!XI+7oaM0HBdA zx1^{)leYZ(fHujX9EYB04iH8U?1RkzYG4LQ2!LXY75_yhc=rstz|Y{HGBXOSC^3Zc zSU0BWm(T;5uAps2#^2Li;v5bAmSIBnN+%NdA0+99XhQSqoR`-+Zgy(4YYar)N)X;5 z^}bnWr`ZwcKFUFhIKJXI3;K_UkLxDtpWbb$u%-gev3{WUGtLpwG!=c~bWo}3i+L-` z^5ZIvw=@U6Tjm&5f4#}F2jgWy%X*T}l~%TYJ$%Sj|HA`Z61Hi1fKJt=7}i0ajvk}c z=At0Q)%}_<3gS|1!`M(Xjm9wDWpdY7L=KC*vBKOQ|@ zMp1fF!@-auI|MKM=pmSVuY%+{;y%j1*X2+-k@wC{dOy#hmvHa#poMgDIrWXYBQ2JU z`wH0~88#)ZNlUEnPbweK?5J^wrv?++M?Re@7asUBBVTr18KaI_Y=2$YA5Kb4Eq1O} ztR4{* zr~9+Wfu>X)XSK_>?oC;pK4$v{|8-ByEiU;u-j>n(f({5T+7lAEO@HiSh)&Zr;es%> z06`?ql-9}~xHdS}_fWET&FYc`{B$b8sDJd}st>=h&Ns?8w9l7XyH?e$dGa#Vn}#Mo z#lfD{1?(bwKOdu*^d(jd`|5-_+g3C-JPt~lxEy*U`pH>`*0X0-+mL=#HX096DG0wD zSb}+q-m})lNy|?6hijLR15);-<&`MZ@VRcUlX}%O{N7W;P)b11J2n=poQ_tz${2lv zBY2Q1vVJUMeQUg^$-XP=hI&@HnGTbnFYe^nIXG1fq(S0c0z?Lf8OOUz0EUHeD9V^} z`U$zK{wD2y{XOb2^K|=O{K{lNuSn#PZ+4lVW!o=FC2n0}?Te*(=K@ZJJ>?XgmHCTB z{Qv{so-?QJu`;O8fWMQ5D38=5-pkHF9MLmMdE}+>6f}H3A=gtCXc}bw27Ey2SXUqc zK)>>5Pv3MbQ`=H{zVJ}-;i7Hyq#rUXRK_+W%iAsVVuF{nZLHNsNY$wv8m``ZORG3{ zU=FWS;4G7}9#mm3JIA$%}V`11r?;>#Ni~E)HN|? zq|}h1i6>3xB-%fDbASP`S5M=SvR9a?z|Fo%`&1r;;(j}W<_Xxxu%b9TAET8*Up&m{ zUi56&PuBN*>BKuE$sXyss@WV};~&c5vg0GTpE* zM@Y?UROEYs$19g?t`a@T^TEPTA1hxtL#nX4Md1T8bPTjaZqIp}IV<=j(K|a~np;yN zQt+VPNYjZ3aEa3jK$t6e7UD-1P`~npUzjghysQy)(TgZ@Jt?{%=ZHDXcb%PLR<*p)ygEb0q2Dv6?Gy0sK$Vfzs()jITsnw?*8 znvP@g5B4JLJt~(MEidI-XdidaH_8{)*FL>M4COIo=CT9^kn=1qc5u8C$(RsLH|)W+ zSxxr$_1>gP%kmdW!dYI*<@gk03S*$qYloz;ZKQ4V4@QF*_f|F~ipo!uqF<&}A)k@h zYrCEYsN(`ToK%(e)2`PWSM5)ixxeZVl6Lp_z@0G{tqOg-dHJ9l*s&Ul`(qm^T4Y~v?ChaX^7Bzo&g>fM>+|+YsOljoPv&I9imwp zQTAcsdu2^2+`S*#ksIEJe9CugythIlE!!1JoM&M*TD&yAu_!iLZ$ql|_bO4Ml~9AV zvPUfJ$8nWpKY$W=x&OtS?fKRCyQfs#P`0JsST>(eXwI{1UFb3kzvHqxFh!Bg9W_+oqM&m*z@@W%HaMt3^30jP( zYF|{U)PE+FJR6MiV-V3ML+;|=(j%{Q*v`O)EKI2{Cn`qF%O|Vxz6IPi=Gr~6 zW>oj7a{to|K3x*J5yA=Fh%@sgcI*v=FMtj2h&OBo8})E^foF>4#k;C#v087JnE8`) zHxDVpbg7>X#&u2kXn#D7TSx@nkw^&DQe@RZg*6q%GSwI|tixpMg4_q~T)`7DOO}AG z-t^w~;**>lhxV=uaXYl@T8h`E6b%Xi1$dlt-$9xVFU=VEHgbJQ<5 z!~CEITStOM@XiTbj+xG>!~@r}wX99lWbI0B#oWnjwV=xrY~6v|%e!8%+>%j!=S~Ve zZ?wO%v>a#H6h%9NUJN0@25~IzTCGDggAYias}#b*v|T}(7$|RBi+-v8qW`(D(4MaH z>4LwbOje8w_f(5?=fQ`=1yQQt@P8Wcy`q`HZ#>q_;9YKJohdKvDMf^!dB^-smAHpT zW*reVTX;UIqp7?54(A(}vPSQf%YA(kH2?*vI>WBVSn(=XZxTY3ae$^huEYxqv@Ec^ zL-tB}N4OJsK3Kvr-NE_YhfLYWZ};u;tWjpBYHp(lqPf~hJUfsYRrthB%7sBUy4 zu;j*j2!mTjbhF;dJAT>j(^jCwU>v3&4(KL)f-I~O3k2uuApkI2<>#jsrlKEl zePvZ2w|+^XikgtPGTbUZSy!@$9ae-%3pf%*OCu4|?(tHqe5-(b>M9m>+8(P0ood?od{9e(u0r$+v}l83~0 z-C)c2gFdd=-CLtH!njyYb_g7!tTSKr7NYbeqFpK)8{Z8DODxE~>E;eu5gb}k665SB zo9j+?rfb2>&**d``W^KcKL!%w=9=?2Yp%L&B(kZg|xLaE-EiAG}nh=k4WL1fr**DSxc}3!xJULr<_S*Wp{L{b&aa z8!c>ncOr%B1{wNnxeA>=q?(#cf=7tpt?nB>34GkhJ#;upMbi9&$=#DulvOc`2q1~# z3#0l_Oe+hWl5)Qyo{1#nl6)kr?3d;N?@;et=Su!J+`jJ#aj#8mWm?(EFmxxM}S$HJVJcgyP3p`=q-A zgc%;)`I<)Lt~%&0XU`}$B&@-x(I>-6%}x73xlowH(US%z2)=yJWj|g29f@fWzuoHvo zyTt2>leRsX6rP~t>)O2nPhafk7FE!x2W$o$9jEgb*7i zzhk|zxOm_Z$M`oztTCgr)dhVF3=@lX7y!>wAmodP{R|6c+Czp35gP&k*BZow3|G>- zD%}rrzUd!t-_wbg{+w#erXAb1Tj{v2*sGiAd=lC8W9ZrwYv|_?aTXiHj~vvr{203r zrMY#or@#XnWW5c&*BoU~`nkyGrsx;x{zAd62mNZF%}y3i33{>LJ+|eSLvuImt~!Uv z8XPdkJDMiUJM4-(A!k{?{hfBm{T&a^zdd^61Y47QTYxCKRs-#@{LK1fDMctyYZpVD zj0rxTaJj5+4ZUl&Of7+Q1%GzC0l(awh?>Vk36ob69EG9rq8QT>kE!_a5k)fzLo#6f znM#PHo_S!i`Ka$*-;XBEBG&4L|NJuA)2AfiLo-QcIm8~usN-g`i#a$R-#tZ z94N_6ris2vO%X~rL+2ZDINVAT)zH~fUeC2m!_taU>&$zR>#cs3gE!#SzgEM=uwte_ zoe^Q^Qi%d`<(SZ7GFj+uNngpb!06DOIVksW4_b4|{fCL#Z%bYd>mON`6n!t2t|W#y zJhIhDZf9|flXr|^B9EgC#t2W+*sEkn2FHud=kQ9;RED_bFSfKaoy~Y|r5xV&Naxal z@4dfjSvwb)X((69_UXnX+*i!ABy1?gg+*}9AEhZ7eD0I|+=4hejl33dPY>s>O5%!~8_)T42%-26O`_TLWSJ2-r@>1=k#z7xC|Zl5u;Wofske^%P-5 zqcvyfvM1Nz;@v*C?xyJQr;vNCpPy`5Qi8@{PoWRc;6_k)4%Cp?k!H>6?5TizG4)W- z-M$4zU+19a`|en`iLr61BcDg)soQA>(gEq3CZ8SIm?)F>Ott;hvZums9`;$vY*HX) zygdPKvnN#d8h3u%m9Mp=4_JlUou_HT7;nEO zZ})^h7@2fFJ}K*+z8MQ%%8gPA?*BvJmH5fa3yTyu^&$;QP8=7E9~&CEbPecPHnl^&K?%f09`qTIuBa@BS+6P@DfA;x z{cOIoAZrVI%he8|xL?YgyDWL?WX(x7OABM%1wkd|4PXGy?3w>zvL+GZ| zcPQ}~4WtDxIsj#h_lZB*UV_T(Z+{R2@-0Crzw{{5LB{YXJ_vxxGk^Pw>z3+2+1{#S zX^Q9x$p26O0)%XgdC~yTJIerr>3<0z&CCiJXJ{#JQP$)vb;65MON0CRpJi?$MGu{r z%iqWOaVdYB@a&ye-;z(%UBcg+xqe{zXq!Cc%FH;g;sX4ehqfR%AgJt89&1VbREa+<4(pL3^ zaY82&XmD1oDRxWd!Hy2>SPFFIK6Wp5ft_a^MXNa;R`LHnz79xH32 zN%mye6V+;)dwgZFHs?qUmfJ6hJ*4X`zPVS_89j~$1jh2fO4plz5g1d3SXY9=!7ua! zq7chgR)4S;gYpL8g~rkh@BD)o`cI#ch2?ZhlqJP`5lRsyF4rTTgL1a#yy1)1Y-YJJ zMX5o4WS@R+O_>^})Kh{^wdk#5J4+tNM#|?g-~42Im<$O;??ZXNqv4wkXs(4Q*&jqKjYHjr}3rM`mN`%8yht;zx zDpBjbINc4fNvXPE0|Mr642uu<59aSbeYW2#ObH19iD;)8rN|Q zJ%^kTLf+}GHldCJ6T4V<-f2?$Q<9vNygzADioLrLE8p>~77CWRSL;`7;tRsp*ayEq zfE()4p1(zgu3DD&u6Iaojn}I|@ApfVS4EojIIP5=<;IR3kzL7-G{8J7y8O`QNiGf6 zY#|$|DSV%FPUv<|DVoR0D+KNE!Q86Z)y~_cz1lv~Rz^ZO>%`qFQg3<&trl~~%L(5L z%aqYYnjn(`IM31KRDhNFgY*2)4=98II*Zeo$OHNwpU_?daPus_pev|Ge85pCfpzrr ziz~;gt}7+2Un}FB$$?)!ZD%^G7iq6FIVoTpJA;3J(WqQ4mR?_gEx3t}Wxf7I7*6;_ z7!DHJ=RoE456196Jph#9H~(P2{<9qdI_y6^_#Z^te=_dq}(6cQP;pxFyku>Mr*|NlNT++jGgnWlW&wkFX{Wo^*_|!Sx zVemVvcy}gPgGUr0=Hn79^JpLZ2{Qxgh~}s9jk7=35(Ate_7UTTV#s8J8eEovdxP?f zy6Nj&^XjUb`U>Any<>!};h%ZWB<%Rial2v<>%Lb;IXc6c*?O80Ux$Znv68#Jz4VQ1 zfOR(mbLR) z5whnqZih8lpXEG^Og(+{d0EueoFC7BtubB>|B~M z*;zo$n|J8Te>n9*K@ce(zzy2R!+KQ>%2{Tl=B0YK=9UhlJ2xn37ho5o-QGH7u{XE z(*+-zwg-L6ok`+mjn+pfu;7BV5&ilt|AYvC@i<5KtPaoPuS?3`eDeGf?)fU*c_uT~ z6x`Q-lPmb0$Ci>7o>m5H5LY8PM6D@3Cvd442A{@q<`*n!8ffK???~@b_|`wQ_|Suv z&^GC!xT`#FdXd+nIr-JCD{hNoZLX0;UUDbmY6Q@8&Bed*`u~OJA5K(jSd<-y)pc>x zn$M>#szXB8DxL2eCd#4O{ely2x8kp~nu&8rtbgw>J$zKJ&Z*W-4E zbehzXM7I#e4C(uTch6~`1C;phR28mrL#}_WtcX8URvM9$qRwbB_js`8<09>>nzMHy;5!xO5OeJ=d-P+Y@EfJo z6&63)&ehO0d{6kw1YmpVCG_s{e~Z3DjW?Qhv@0y>G^GT}6_CsS zYC(Z;L*(yL7n#3FUlbOGvi(&xBS^PjQ#Tu>^QlMGZ;|gtS)a;KWh4CDX-nM@V!{tL zncTP&lI{cdA52w>OsYn0DoOw!{Za52kA;XQTfkj(tST}C%)z* zL%8243rGy5bp41x(XBT?js=AJvE#sven!vM;H!AC#YhvGm|sn0THsgB9%bzuKTX(w zKlvwH+7IYj84zgoo9@^pu#T>a8W^e%kYmPVC2Wn}r)V@(*lh$eG}9+_EH!jOPzA|V zWv8|`>fIqWX)VF0F@eyXRVI}AM(DsOZ+D?;%7uH5DN?o(k{5oY>dFOcaDP+2vLj{} z@-u*1vj5}t|}MR z#6(DA4zV*cvD$u-eo@&});bkYXGo zMW}h1zRwY|WmlX@1r9P=pTy3LL-2xSY;%JCS*GIONd79}403kA!Nq{+;BP$&Z746G z*>d=oW(y#SnAP}2f!&PQl$7`tQHw9LVyitpwvp}A$nwpwgFq{nPzpy1jl&{XyiR4* zRFTlWSrMI}_qV&;@V8QL;ZDK^?p&RV2+ulo>5H2($6n1H)>VC;kO2#Vj^m;VGz7M{ zMtOFtd67pgWNlMZTeRz-X`+Q#cmJ<5Gkz{9==3O5W+K=Uzn zP%OG`(wuFwoJ2N2>zYO)bgM{^*Q7HxxR@&@0HO@RAre3e)qt?NQYKWNo7$URl{$;b3GyThQveOJEM zElj(NjA|uE?QRQMVO@Zo@y6<}7kQh`dL(^N_L%>`bV*}vkI^qEGjr;so1czqMTA?F zhiDySNYWhC>ZyH-1!!l)bCx*G7oQUCR$*VIut*9sKE91PJ}YF_X?q4rIr>D8{+Ve^ z7J3SRJgK|8tIlQ)$)rZVyFJRjKPlcZ!Eawb*p2J9g4jX^^ofkPGM(JBYkjG)m+rpsiD;OoY#;1++&^nQ?UVF zm9Am_K6kR)wsiE&Z%?M{4%YFfRz(|Oy)qA$yCfPt$E_Y&T0&vSJgl1=bY1j7$QXht zj=}xlH!|pIau z;(-Gkb32h_T?TK$JgJW*gj|-TMUz52OxN@>Xi5w`lESJ#_IDZzvo}>sG5L#C^Dd>2AsND z5T`N;X^Khdf=J1C!(62Cm4q!c5AulgbK?aIR7K$GNXaEpBvRpNGbGjy{(1+KTlwg(^&b4L^4j_xY_<9#>B0kP>g5i+R6 z;yg756K3dA1S7`Mb|cHbTI9YcU|cE~)wRjCoV!7=u*%LaSB{T7d*pE^CCF}sYR=Y5 zstE#BiHXn1FxFQK7%R?6^+#V;{1uaV2{?M_dmMx)i%^yoIHT@1IP{ZECMJe)uSWM< z8d;x5sR6b}>kzWPq3g&KiaZG#tZDRiSbxVQ>Y}=3v_N&w?#c9&L#vr6HcGqbzJq*g zBmBmCItOyaGY>ZU>d48lyeuL|*8r|+oq?ROXf&_0gJ3I1cE|f1_9tzlVdch(xGEr1ItoHtFe&z~5gk91n7FjLO-jI8 zKM0#V_U7(254O}6ko{RFyBFGrWs%i^2Wl&s<4lb`=)7*f+$Ue^LqThOU}KKr>j?ohkX z7;aYRPf}zR6?Z&Q2;|rL^6mU(Y&bBtsDMiyP`{m z2%}qmvVq_d_5nCw_Oz^UCg4J9wjfS-Lsn$dpza{B=h4 zhfi%1%H`l?%r>|bwWbJU(sNMOoO9D?uH%Y%7i zklKR*GIw-Au4T`3)Uy%G*ZmU@KJA$}nW-+wJ!z}|T$XK7{G=sz$1g@22uh2Yr6q&J zTJ$Tppp;0}N;guQmc$Jd`5N|&e|sLIde2qNVfn;1Hvv7#R$k% zwHXf1I_f8n++ocd7EF4==VH}Qyzv9Q&Ec#9Sx&{|r_`GDu{ZvkZhoz~Md3GRm&*5N zgvzh&SUr!a#*PI;SBN;dFc1RE4&(UZWcKf*ApF@Yers#j&m1eTC184yi` zFydbs(!u`A$?;#*<~Lh$Wqt(2HNfXdCN}WUkB-WK10k;OH!<9(fgqN)QZR&SRHYAo z(Xn^TRP4k|4HP}#4xC-DLJAvb_cS^$0soi60e3KquR(GYO|fJ(EW&`b<@~P6!RGT@ zB&iCT_O7RGo+P}0QFjDw;Yz;m6iH3qU7Ry)K5{u0KXUnd2VZ!8@YfeN&+U;mI~~A1 z%g(Z90LS@UEBhx~^L$>$sPldr$2awDB!3#5n$|TU7%yt@I9Kc^@l?{fRFG$w?c zvlg|<0Nu3wTOdOP`N!>!XfO*|-2@%7$JUitP+i8cYAF_4^S^ssE#&5>D!`)kH1J%_ zNi%Zosv`>xHpPxp3x52rK>2r=ZVVXPo5u){Geu);0zf9Mzf{uJ;@SN;GwWj_jx zwPQAo5d!2Rx3&HLQ1|yA`{%zbo*M^rNlXe7KorfA=~E~uTwK=bI&Qirrs|Y*%faS{ zn24D#^?SE)_qG3MW^qeI?{#1i`j!_ojY!;5bZgHqsay{hQk72HM2gpUlzRzZiH#U& z(JJ|UJpXqF`S;#fJGWjK?BKO_I^fhmJ~Lyrq!iwLI;9~U_U(afkn2i8cOpSK;v=fmDbG9iChn)>Ygn@GQ$vrR&slWy@3Jer3wd5~XT?Zz})Z zDF5!dC_W=k8OS%@nA=D_)W4pW?5CGcv}`E793q2EY1v;dEd9#({h8@VcuvOSUzz-; zF91PV0gY+MEx!4MEAEc6Vvu^i%1j2V3}8LAqrEXHz|MD6CM$Y*yGT)Vyg2$6hfh4jm5ZiEKZGgcyD8i2%blG_`2^+xS;=vF|x< zxftjem5vt7bDXoTOp7Lv7YrkzYtraR2jKX?Ua$Y8b>=7AcW?y6r-0gG6mC93Us#a65X!+~%;q{cySAl)0~A8pw!*W?v;>zzQ1z6DN@0luX=3OZaHO?$f-f}B z{B>X$oXAliInkJc?)m_u?fuENc>;Xod5P|tBhdJvo93VfOTGq;lm^>3Hp)H!Hh8V* z`6Vb#R(8SX1FOw?SN|ksFSQGUOn6|8RLEMDDh=JwvJm{bYxQ{Gc;qWtVNB*b3}3LO zcE>4{RP8-}DR%fu4#vT=D$U9;gBZnG^e{@Sc&|#Xdi3?-B?bAs(_ik3Kg9RbpM%WF z&Vac8-TlxCbitBtgA^hfE@X~Dc;Mw)GNnICswECC*+kV<6tp!pxO|O~x7Qhqs%Y*l z@I^B;`H0@kohTDf60|P`lNtwfsm#LA^|e|;=;?*7h0>uH3XBI;zx>)k)ffNwu&+`BHfdc+6#*&Dk?*hf8nfSN+{t%V? zKlv>G2e0M-ga7|0YK5MQ;D+<(Wd6VJjd?g|2Pk|XT567ZmMTVxNGKrtHVrkHo*d1t zVnO<@y<8G|FS)_auDP)$E?>ZEVP>FbY-pes6iChe17q;#M)C6!3e0FaNPv8=Cxh67 zV-dtnzc3iT{TQGqy1^cXwhicpuAN{2EKQvsNJ;#HNI)N?Z5<5YLKDxu2gyh0f3O4% zLP`vod!f6qF`2N}xW8sOaMDN11!dA!ad0ZS6My!PEgL1b`Qm0RDaLf=yV-~oNj zqP7W1$#>Gl``Lt#)VTFP0V7;-e`&g7(s00Wii!kpzbAiBewDfR7<9h{(t_muW++EB zNEz1J8`bD$C>Xad(f^&Em(3o#I*Uv4M`0(Gzp-sT z?t~9%o+4TD2-6UT{VJ93FeM$Pc+mI%D)J^tm|tBzP3PvGt!{|VS>0PHX|aoQyc-tb zCC*kph4U>dhQF<}?(c7$kHudC?I2@mgMQQ^+9|R-tcPLjO+rVS2_wF&xpg{r#lrsbFlw=HjH}_&-Qncd{y)Ff`Y?6vz^g6wl{bAZcg&|S^k)*8l}Rd2No6x+F#&* zXSJNrgHhBinjwhglN&9B9y1J8r$aP(9+g$Fo_(0vz)KWoX&kjXb(>JXt1W$)4XxyO zR=DMmpMaURVwA~@{2UHo7k@vLo!u`(oEg; z`7^7IobZ~NTi|ro(<-5#p7;%&d}jE}O+VA1+T~yZxtzsMb8mzVXi1Z?3~37wktixO z_;^j@huKso_7%mq!=txaQwozK`*+%Y2ha*jN;UQf&o2q!^3BZ7f7{@}ojIrpyO-4o z*@My@?-HJa4UF=WQvxee^ZcnkE?Vt~gTu>{4H&60FKub6z}P4^xa@bZI#X53$o?c+ zuhsVwD5O)N>MVwqSZlEnuiTcc(*5YN0HHK1ZV2vr?V|$V|%~O*JA@lFt?Wel9V3 zaB%RldR6filLI=wpSH(3$t~a2E4TGQ{C*Jq6K|78(`d5L1uCPC_@yTwW-F$G@-1a1 zUu5PEXLn?;?Msijoqf@$JMO8l-p>6O3gmKf*k*;S*H$y>stKcB1NpFVn zcyzdoaxE$n8exO&-tR07I1R+VMs_Yux7{q<-5T!pbl(k6Ijz+gm_2T#8qDeJMD48o z)+j+9wp2mKx%2&F3|HU;e>Z_1`wYRh~h8Qetq8JW|v$t&uyU zrXT|uW%NDEU#`az?xWRu_VGtOnfNcZ_ftmpjEVIt{kQc4{Vx&x1b~RHcC?pPq(qYr zD}1bk{+LCHOsJ8gtDoF)ok@YIJZV5X2?9{R-`!;^z$Mqq;tYW>_@Goznw57BLzFDk zKzM=$FqLAIOxC7^lArF$VGE6nWWF2&7wWyyL)+*V6h7}bD25{hsE|#gC{iH!dO{MH zHNcf9*bgqObE_GZ>gVath+nO`*)W!wdF)W$_C1=Ro3RGq*pLe75b;lZp|YvDE8i(q zf^3@0EKWxvOes0l?`iH=D~1=RE@j^tZM|33F57l!Xtn&H>TUb?HF_A&zVMN9r|$3! z`b;&>)1L6CQLiuXj!K-(QH<$Q8X>cLL}p-7Nij&CtNQ2-JgPW{X!z8Y-FIeOwaYp)^O`F&4%+1_@M)cmb zG(2fzya4;63LBaf8CWCoxgRj&Dn`A|&C3kd>a?Su+04B3SqBnT-I|YyN+TPl1%iLi zZCHdhjmnT&xz6KOr>-aJhBau3Q6zGS1s0aV2T$P*JadLEJ5)pyC6Ad$>)m@R_;CE9 z;+w<5pgRoK(PknhzOljIpCZ0kbU(3bqPKYCI8NVB%hS1UK<<48wyxvh?yeMS4gi)!q#jiZF71d94?j*PZ z4NwV`J28r;IK6O*$gS2CAm7W7C3SJnpPEmSDZ{u5rsM;Z+Cr4OOQF>3_{WDTV)pDb z8z_g7uS1_~pg;AZ*r421>S=pKIvyt1M@uzxnA{~9%Y95&1R#a1fB7&>0k?X5+CeH~MRH=TLuhGD*w|XG$Lei1 zDV`YNfF6khz#QY}QcutblzIchKrK0(Ejcg=5#?#Qr%KM5)F&O0Zs`-9B(pLOad7)? zvs;RL)odn;ao`j+o|3!h2P$-BG$@6O#HTWEW+s5NC`fcD|2qhb3 z5+O8sC__+cTrH5HYcrnW@Dq_60hNp?yXEH@9ij7 zx_dGv7r@-WW25ZTbbA231dZ%=q zkH(mK`gw-LKNUEXAyB7+ucxyYhx;Vzs;Zs!dDotr?=NOm_!_He7h;m#bA7~_eV;ad z(XGy_+uhx--&uU@&tHANGON<7J2fM^5xP~+_)TOd0qO|oPa#UayB#V}8 z^nJ}=u&1+)kzX!o+S@EJQS3S;S`v4AkA(fO>z zPbIK86zE!bBp;FeMJ9Ro2;Z1u0rSh4K4P)s%1<^MYabF?4UJbbq<d|C((cOBBF6p+Zc%yK{i_7=2<6`nJ z%oms{7s$Q0Ue7+Ac3YK8xA1*qrA61}rR1_R$g8Om{0IjTRJoO`54{~eD;?WiU{S1> zb`W)fnSgd)9$c;`lz4UpF)WFG5zt00Q8?y>gm540@LZ}omRwWuvRRnxJzVgFMy(>w zPH!YbkJHv!`Q+vhivv!#nG4v)%+nHJ2r<)9d~_>@3iEA82hbbFkYK@E{a7MTu=~)! z9httET31&p^iWIFmBu*brULOVLI*pSdk%t{ZDJa`T`$T2fzCxv!(top9wIvFeua$7 z6v0pL6!L{6=Z+REEn%`!`;HTBf3oSuD4XAkd34hKD-c;iKLZXfKyHXO=>a`}Ol&$W z$mf_K(iO(ADL@u(=#{?`czt}LZ)r)SuO+{&V|SC?J&r@scS?pcHP$94{nw^Tv#SZp z29>i2&lUMa1)HMImNsLP%O|{|>Gx2U%up@OIXrrCXbgkTyk0>u z3llUDB?UcZNjrU_U2M%sJ+qK+)2kpGbj{L+pRcV|HpQduI^ABOxzvhrpEeJ67pSp5 zeIL*V*<12{Nr7>We6PPthdde!r#!Qyx!_$Z!V`Z8mxO7&RuwiM*D?7bdDJBS;>qX^ z{|+L8CN1<8%7v~I=R(38eOdA3Eu;%dEd!a@JbIY2FDO%gufblPeJN;v)r=COPY2TE zH&Fce^HRAqP|({+0_XkoxCy2q#i8CeC!WID-(;Z1;ze*F6HUlv7xSFmYHDcyOqw$(FGaK=RiVdu()^(_ z5o?J=xOL}gpDYa@Zu5eS3P$J6q|pu&7URd1@VHtaVV6NJi>Hj&vW}4>GaYP505pIy zq$p-$h5@6_%56RIf=0&b9Use{TmMIU?;Y3V*0l}Bih_tr6AMv_NSCgFL`6VEKx(As zSdb>5)KH@+y-8OPBE1ul5~-0cARt{jp-W9DA&|ms&ol4)J;(FRd(M0_^PBITdH%SS z`&N>D@3QvVYhCNQEM7MZr?mKrephOSQcvVfR41eH-=9c#o}I^XbDHTqaS`R61bfz~ zuJ*D*NfnNwvRu7mI?A=e8?GvM;+7lF)JgVvSh3nt2;d@w0hNt(Ff=0`e8#gWvITi& z?QYMqZH(Ke3p@E6XO_Q4nU3DpfF@g?eg1hr1TrRtsB#=gG%HxO!Y*>Mdzz@*^>24D zcHO1OqlRnNhtms}vj)4yzEHcs(0}$~?fOYh@p%_g#9pvD7xF%&kz;5{E-aIrr{BZp zcfX9EIX`aTcy;0#>hhC^*78^Gn`Nd=MX>pFAqeJ)mu}hr})h{I;J5->oJHNZ(BbNPgklJ^NvoG9% zO+K-?$--i@V~$0oEL2E$pAT0)upIi$l;`7=<6+q%1HKcvs_;gTcZJs>LWgj#O1<4~ z4uG;R0fJHzEjo>yrbVrLkx(e*jkn#`GA*-ut`mWemgbYo{0xVqPo3lQ)Ei?-VI#1?Jjsu(if?A_JsRP{^`}iKK8U?-e=k%s-V&+HuX?02?D{HQ`30QHkF8awwjF7Bg-rtBaz8c+q^LWFZdfg!Z(97dC}iC5nP z^*|W2HQZQ=%5CzJzbW4KzTMG*xCh7Wx#m9JlM~8Tg$wMp`kY5$MZ!rPU~VPQYm<+X z$0t|Rb(9V8TIo>c(MqPM^>$gJ z89qiT=4$2#2}N^?dv zLWj!oJ?of@PP~sB|4JVRm0~^uR3^Za^B4h$dsYLzEc1}!&Bqqad3zlc)rnGiU8RWQ zk}d8|N8iwSe1*fbPTEzK8m!f8h&(=-d_(T4_bx#G(hvV2gpdNru_@$%2JVxUABori z(bL*JR1JK!n+~A^dmwKwb5V7VCH52YQhQ)hEA!F~-{#9cVqkC#y%>mFwX4izs0l%_ zqA+%XX6)^$jH?(Z6_laz-c2Tqb-ElZw1<^EOwfp)RVer@a&7->$Wd9H3{H~S42@=) zw;myFthG2gQ(^eg!~i#>u11OT)f%?%sp%Yd?AHKtj&f8HS}q`fB43zWj?O0!Ou}RF zEgMb+UY8^8kp1$=@eN9huZt)*p~IYUaac!{uRc1DA74wi%*zza}W z(@5|7YWR_3i}?Pc)F0fe)BsT8`c$(YO)h z3oNyX5qrI^5mqu%$moVRC|gOJH)q2-GNfr}wj7mXbgjEYwr*{0&E!q0YO)~{Tc8v# zcV?Ln4_NtE=`3ExvV!4URuxe+^ z8`wk|?u?=g*aa78#V9*%7Gz$dn_-PGF&(H(!Lt_N0OXT=rfae)xWOi_Op4>hBM0f} zrJ={q;|z5tXuK32dJCfT36u?H*%_34ir9p{KOxion*;Z-E$$46I)W6Dh<%E$cBzWB zcP5bV8G79eCd~!hVe9Z>gl5&nJMOL9m-=m)CQshd-)HB1hy@g;$5jR~<3)-0$ zE9!>4JpV@GvFL1^$i3-=^@vvpf_mo*fU8-l0$9jHV98;&q=LXv(lXt+GZdxHJ*g^*lF^B0*87f5tK5Y_-plwHtk8 z2=p}Z5Jjdr0Ef2S5f79RXIU6B{#wa@Yh{BHDDb`YmXImt>xiRMB*B4xIEWxH!4XZo zQC|;b$+s)ng@m0@tdS|LuBq&OKQP#kLjAI05vhME!K`-g%c^PT0*NkU?!CY^b^WlL z6@#rdI-cTw0tN3d#l;^JIMSB%U0-HxsY>c0NbAV4z76# z5V1ini0~-2sR$ON7GDtos9+noTvfg+q4w--SWNL~WTx>~-pC6aN;=0l4^_rO+G+7V zfK89~4mAO6F|!gIGFDL;k6`dJC0mP?q9zKoCp$323!;*<(6U?61+!U<8V*m7ToB}a zG41#Ki`%vav*zf*n*%8oR`D+&X7|mf0yC$Aa2$ki>{5%+kz zi6^|*Jcp2brt%x773AoTfl#6ohJU41*V4oL6&dXk;+@eSi4=KCWi#lxsqZS%(l$(?s=DiahE zHB^x6o}zWqj9R+=H$5$WOfU0mFRTK&5-}tzsq?2?$z`yyfIPMOMCUPgpjYBHY%fCZ znzJSiiqHta@^KH&*!DEKrd*y_u)#K)qz$;!#p!qEx_XcIA@{>AoTCN_I9b zHi?4J7)65=HsP+j(m9_-G%yU0ItS6$$bG~-1433aCeY0ZiE9F{8RRw2He#YC8qF*@ ztmAh+s^g$!vS_~?#1GDBWZdan10%1JtUzy+{A36#P7azvogzo$Lt%$3iS(G{^TY#V z<+(^TT@xga@WC`U>3CnxQCwS;+V`dWM9EeHkMxXB+buRQJFB65(&r(f^zKsxN4~_V_Ct#7^<4;uU;IG>Ry~ zM${_Gv-R*VEm+K%W^xJlRwcO?4#@=C-CTFgyqB%p@J_fpM^SpdaY$1izLKFGb=*6K z-}*u!t?yCdld%(_HmcrNM-@N_M%~RxJ2tDQAU__TL(2eSz*oT=9;A1mN|@uDF=1{{ zwoQj%HDzxtN+XstZnCz}g-^D7=(h0~(aj{yzd9V>8}*{$`U6C@A{UXf30DlGp0U8g zUUA@#(|M7_wb0`}tSyC$vfKg#GrjM<4FwB>YJ52wWS`L0+L_-yy(afMk|#HNCk|Na zL)#R28`MWPzZwQ@!YZn6^}r&G@OpkooJ7i0YWA+NR$MJ%LYKhWpGgd@Nm6N-4qjz3 z0tZ(vkeeyZ3?X)a@^*(t7>gAKKMFIUcU2;azh8M>0<%03;@T3Y{WeW>-FxNW)hm6O zi&q-0J3+L}zBS4hK|VW8p=zyNv1!tZ7jc^j-p*aI15R1imrA?T-p$(=Q_D4P`~quX z;rI(Vfv&%(DE+??gd$9Pv8kLw{|sZns1)=OiwTn*q6K#qw@xd|e(8P9RCZ|(FJHKA zIfy$p=j}qeZTkm~ z`qpfeZBHGlZmJIeeiF&6>piG#$q2Hk2ad*yI!pHeX7B>sO$G84P588l+POeipl*!Q z@1)T=xiPzto8!%>WNw+NhcHV!n^F@kJ^ z^8;&NSMdN?ng>91`Ah-oBN4Yg3rN#Ji6M0P9gdEw2flp7cEq0+FZ2%Na2$20&O?nIpi#{S;PUgw4W!u}z>>;}6~R z_D{VW^XGRNM2>H-i&H^Ay+%Em*@djrp=37HSJYpcIBB0g1XBxuQT}JYxO&KzT26|J zogP(M8QN)`ajSpkAk@Z|w~(I>a7}(s_&tO+-%nQcAl`NbG~dswF=pqzP$>>Y}v4Ggs0O>0*M&GdfugJt8>kfb9%(QL%g*@#25i~avO+SX-w|`CXo*Y16L)xtO zo>pj!!^ZG+;i6qX+}1BU_GbFPd z(oS`ljveenZZ%@ZxV%q|Ykny06?aLTvN&ZrTAHsjIcD9)d2jmadEV0=AEphomm|)g zzE$G2sTT`j+l&!`=ruVqE4}_Bz#V_w$)ohMk;O zZyez3Wk;B5;y%g|ZF7nxn72qy)YiGsu5dD;X4;1-swT$Ch*LmT? zmHRG_hE7J1b~2k}=I=mx!<8p@T|i2;V<)4qO`Mscvsm_jIzeW0PPAlv0s@8B~RDL-NTa@ZT>-gr@>Re;OD^_YZQqQFTI3w7Pgd56MBZN4Wq{H6d`>bmm*VK8JXX3eZJfR zHC|baA+G{1Em#wRv=@9|x7+)pg~37*K~pG<=H}Akfzo%! zbKLo()XwX$Uw{1g9OUqYXlvo3^x=;q)kZa!hQ1Ja_}+WjSF4~7(mnQzqL#q1p3M=Cdq=%xtGw<-$@p7T8<6ZA(S zMg5+T;t};xvpxMk`S)&Y0sg&|-|Z)??3V`%i?wtS`baU7ffQCvMgTP}6f6A#GFpQ` z%L)=7uaBNLB$c^h^+swBS@xDHNOqWao4zuH*tN`N?qqMGrpKofp~BW}spGTV)FFga z59-%1_|rGeg0x2GP`oBBtvTok3eQc1`Fa^lRBrZw>Mv$wxPnD*2{uY5fm760k+jw* za_20+zx6R{>n&$z^WPW&L3u`47tVZ&sEENwcW-r`c;a+Vf(Ab9l#ni z0XIwhciQOF|1bxCd{9_e6;hAFLhB<=`F!`ley(OU3o$0Yz>glNQZ5+2_fhj`5K9u9 zAak34tLc@P%OMAR#b$?2U0sKI+-7n^)tb>-j%vp#uG+ykEw-=^KY|&IqcM%KgBk4q za|UPs`XDba^~Jj^Qgaya&&&ZoC7T?S>ZkV0{Xfcfp8(cGzg0$Hsg(a?gZje*utQxt z^Xo_HTA5$!>kRp=Tc$ue<+`>tMfOu$h= zWPkrLnk!ym zCthv^=uN!$tnX3r<|GV|_&*Yxmm+eI9d@@@#5vm?-1Dp|OdSQ{-LnR()SoW-$;G!R zjTS_d*R~@C{Hl2KkaNZ%nqAWE%J+I7A9+|>ROT6!&UpCp%>&^OKH@j{+gI&`Pw@u2 z@r1-sOh&@^Oa;!F!d)ZB+jL*>Tb{8z-1J)+wx)G-$U0+4eN$>4^O*dWB2iE1A?XnS zudK{T8Jb+9hd)j!+A|Ar&QEmerkmc3SZ;UGfPePTOnEXO#Qp&>E@X;@ zWge4aW)sJm+Fo#C3oia7l2^7yoi4&JM& zP%`e|CEAP%M^$-=>3G|mcf=vUhcKdq6y6Y^A3{$q($wnAuXbHXn(o=COcc(udNX}< zJ*eT$21AQ>vr_5yGQty8dki(3g&Gmwg*ezwRB67ls7LzukAQLfJc+yD6OU(BR|_Vz zimP>?6G)Dzggca>;ER}XZdsOBI8_Fxfn*w)xS&Cxc-RfcqVstl$8H;a#UFK^q_yh7Mx*X#8-eRg3 zh#7_=iyN4Oysi+GRU+ybJtcw_^QmE#n0pYY_Y$8Ddcg0*@7 zJ8om}p@GsK>Y;9&CHlaa)sES0PEL~cyGM*JMci~vkwlI;(A;ZZmle>rrh@rzn6aC?4gDHLo$-^7=G%7bj3M>QvtKVui*=Y9w&CLm5c@@|HgmtvD{=IQZiLB?J_{6`2zn59c|&Dypw;yFqxkkw+=T+R z%A8yL`MPE+bPbjHmGS7{72SRqV83z$>{nUz80)@C*vXYC!W@-7V8UfKq`k$CrnisqrjFK{}A>AA8ALB6@=11q=lA z8P(nc9X#zZQGZS~wvqx$jcvg?9o%F6_5fz}Yrh zrICKZ&i#9aB`4RDU5IoKA{f3_jvpszP7YziaMpH?W2CccHwTo&$IIS6+duY1tZeA< zTZ^Z;9$xW=0}>z3a?3Hiw*9g5g#djnE$)|mw5Lh|AI7OpmT^*?F5cri-%Cji(>Du)J1{8F-o+EOZ+XbN$h% z0Q#q2EYx#ZMN8X!1X4pcpnhQIaeQIhlf|qt8(9{VwcQoHq8Y4uiu+yJ!zu}q_0Jdk zKaB@)a?6m7CPdu~$n{g00FQ#2gb1&l%m{orRs4RYQ8Smd`P8y;?ELv_k0sqBbF-(P zC2SZADhv*1_Z60x!7f)Fo`91vMBVX5Sdrx`MKeNteMMmkM_K_Hc)_kO2&;_}my6x` zv4oih@e65uMf+j4rPv;?&9FL~cN4TJVkhr}L#W&_6AI%N-;upO9h?1d!9O~!aOd|a zXX8w#CZNjYy_e1aYT^Up81Pf>A&WmNaa4ui1p=7y zM738do8-b~QYLmL|G~J<$4e6{BhBq!co`)+M`Yq1CcHU%n%vBJL)5ybh|HVm#@-#- zagiazAy&z1!3>F~hos#tEN-~wM1Fx3b$H>bLMaI1tF)bwF0I}XbL zjt6sJMtv6`1rQ%&v+FG>Dx=7O8w6bAu!(I@)zwTgLL;2iKT?oX=e|DlLo=gOrfxx? z{k3R&!*|t)mXM5UvPur1Mzn0ay6-jtUMucP=kBdJhz!x`^Eyr#Z@>FS*Ck>56@6E^v52u23~JUQ?CI{2qgnm?X&i^(gkYz^p1e#3cmyn zK|ASTw-&~DN8She4o{A1I)TNHderHM+UIpTAL&#JI|AZau=+8cQCeQceDc}io~6yJ zEi+j35s6%lm~AbBW0iCMq8=$mK>Owlmw00458A+1w_CBJ31#MPc8-4Njv$E63FuKa zX1a$}HfB)C2u`m(8T1~Hm4b(!c$ja+Y%BqbNBPeTcwHy@Di{7pK3tm6G`nE5QE-4K za5dp_ucpV2U(KD1oT$OuXS81-N=5+4%wfrmB2Di*)xMH4c~zkacK9JdE!5Kbl>4T} zyeL2J+idJ;2q)#HTba9Pd3x{Ek$W#9x*bmYe8Dj)@slz230r~mlU|Ago1F}NI`gN( zGw^K+dDYAho)Vdi9)(uzIeAcr%Pf8GCEGA^JLUKf92@oO1bUzKT-_KO87x)Z0V5nC zE*?LAev@lyWvaR)STHT=d|4T%L|z-`;Jda^h6vH*;INML>BI=dm1WX{kzO=LWVEE) zxaRSS(>Ge*#X60|sKX|ew`I-Wb!jffJZH5S)u*^Sp|?TLAqG*%ObVvM=7~sgg>u8avxFO9qF1b=yoMHR~hs ztc(4Q?Gm?o1*6otl7_h+KTzk3Mwl3ykOfqun{>!wC1Da(%FKz@T?_tw%#+5&`C*X6 z(+w(p_cC4M?mmmW?U2ZRM92H%Ak`Xbd2XbtF|e01XS)x#JY46Hc*BRPNB8`C}4**!gH-h;0x8ykJ%Jv@+j2ri^g$>>-Wq{T}{Ez5nUahswT`%Lq`eGE-}`En-ap^#&G-{?y3l`{x+y$I!H zy!YfDg2Kd292fVRLZFvdvaQXFsO9te(O={|34>#M9#FSE)mKdb>LPLK5uyaw_y`nP z@<9m!rT*{lQ|za*SX;^{Trh#1s%f=h1^REo6XNVtI8iNpsiwUU8I9<-t6F!NLD;aG z3cOS8xiIiRZYpf_nelP@H}k9hO+$lT4wIW@#m|RL8e~GAzrLw27{=+t?)qFd{1T+_ z6qO|~iK|xL4K0rqE^*IjN7|;%Q|5P!wtlO+QU9%>JBQz(DKT@kqde=&JLBYp%;b>F zJd;sJ;Q08w@wvmkg{2;6pxe07>To1d&Ea3U-jex2xL6KE;IOcbY3*)BUJ#=%29xU< zY@@fcIy*I(t_3UmUnvPJ3;b_q(B^-V)TlC{AMODeSp}fk_W9{9#F&%-$O`BDVLzja z#cA#!oC3m%$!#5jKf{WTMzOq?N8dfNJZmfbxA?SSzw*5Q&hhrkul_x1?tl4FsL$pn zY6xwMa;IWxg(;r-<4l9xL+u3*A~*=2*?85@|2TAIv@c?B1>?o{M^Vi+Cu)dN^8=^s zXoYCcG{oueW3%mrsnN3Q*Ys0cxPC~0|EqQ|_ZN2Y(tkuJ)WTsvha-#5iv5QU$3Nfx zBh2v#1R;Sq1PZSJyz<|*A^!RPZ+=Yl1ndZ^j&;KOwCXy&hZgzpKzvfMW#UXzPNlt; z6!vmUlSh9kARm*OVqsXQzyz1HBX0F>(3Ix1OUjEas(Qwj`PGvd_zooSq@QGPN@@-c z`K7b}HShVq?A-r33iVE+!wbcSQ{s#Z9x9zdiqdgI1?go@(&pUnDmLzHn*~qRLcchfXh4tn^JfCWs0^&er!WJB)Qx*YP6H6w5 zB=AEC7#Y+KH`QPl@_YvbAbEbKE*#OnKGgvp`})t{T>a1A1hH8L!9PF#|I7y(U|7fp zN|L-~6h>_g`&aPTsQ!c1CXbG(@v3$oIM#SlAykL9H05xzrBhi2;^Ty>)r3712Uv5` zi(W4~d^?ja@j@)7-u{u9600I9s*&-=-G*|M(2W01^{FTH*mXQZo81CMN&=h25wSn3N?QU=BbD#KQ}_r z4rqgvZx9(I3XbFvl>s6o0!2Vqf^@bss$PhC_jfePI8|T;P`8cx40NecRlOW&`_xwN z??R3-i39m5u-{Kez}R5Fyh6mE8iX0z0VtEeP7v38Z$(>zP42M(fme1I^`O9H096vx z$O0fM0Q^+vvkE|pU4Lqj3k3m~;<$*o4Q6O{0QH&(j_wQ6;?EnXI*38-$(LtPby(u6 zQVsNH>s@yC0aqxW7GI@7Q6h6TRG@?Hpc**h&Hg&!!;Ek5`|r6h;Kf=}^tMLt%OR=I zfxZ&>i-u(WhfZE>A5LVPR5h$F94@XfUd~nPd5V7Z)<^A)nxvn#{yV*y>L|FTT;`7K z&#lbf=f5Ap=ud{l|7R``grYn})n22*DD1=5aRc&Zoq;a2`=@NZmAD!!(uG{#^1aTp z+dnPFHtqi-cpFQHf}oCm8o<}0=+hXW!)D~lk(XwkkzQehYmwRz38^a->UjFBdFH#C zyl!=346mnkYE0^~Pg&6pzlx9RE~K6cTZlo;bnZe%04(5t+{Cugu@E+u)G41?=S??iO7^N)d)yGeW&aH5>uLL;&v48iU%t{};`T zK@|*YQ)yspv!GuG%S!5JX4MPOkzL4CJD6 zS2iXLHt}|xpo8G>>BW`cmX8x0nmOn!y;W)i2Gi0Wbi){%udSxAN$`w?5Y8gOGXR@> z;YGI!<>pIQ{Myo$9W_!S8ElO7R&;S^m=Yf{N?Tl+pbGdV&88I6?>!VRdU|-I;lRE# zacp^7(%BSuFEJrE`l4ye*7xiiy1DZvW4bf89i$C~T;b2Ci8rTK8y!yh)Q=q?$~6_- zvq2xLLRbyaHZ&d{NU**%s-S82Acrwq=_bnwjwj_74;m6CU=yi`vp6fvU?qOMaXiT9 zc%RZCG73Leug%2#P_vY%8UT1fl=v%y1ue=|6PR!G3tx^{xgR3&byeWaEv90Z2ciME zvYzw5Df z&Rd=;isdx3YilQ)k6|8Fltpf~v$gq0+Kn`1ulez_58D*G?w^?OoS+F$j(-PK|A&c| zq?f=u521epXJR@(5{@7DKS#d)FlF?f8a_#N-N4Ou{uKPgn5mlmg_De`!?#?gbH>AF zdA4&s`KuEtv4eSrFSAL8RFIpu94dhe69c9&zA(!O2C!2pPXSd%GW_!pLvq~skk7fk z_dO!ifsXIg!BIV@-zF>t4pvo8aW2nfAyFjHVsZ)rT@N2G3Gn0XH6GT79w}8g`+&ss zC|HlLzbNR2`Il%BiP9>^!xF-m81CzdSzp)@rB-{|%N!gsTU{?Dt!#AJkA>)s&12B8 zhpS{E#An=aylzDo^}tm7)hdfj4Vkj63EBg>ZbglZ&b=w0g3Xks`Q} zBJ`{kRr>^H{}X^+D+h2r+*0Jq32%k^1Wb^kf=gzton7H@`_+(w#tn|u>ho~|e0-s* zXB-bYUd}S2@V(m^Cb}ZTC9QqdZ*9{-$`KX0>B3GBug8%uS~lVKplY>zSg8kz^FR-q z;T9P);Tgdpn+0m9j*ic}jUBg&9g&%qLW~O!eYtxx%05K$HUnYV2h)TmnBx4n4|id_ zj0F7YJY!U7kK(-=#%eO!*5ZMejBWO|FPCJPYsJg!XPR4WUlm)0>?<05+N}L}JMBPK zqDG(gAdZS2H5)b@J>F4nn%p9=_H52@b!BweIl7_?ZP|rj01>CM)rQVMAQU-1jQCuU z(UdWTIz;6TsV_#t>gDY+6YZP}T(YXx>)F;$a;U{!yJTOuSCDsBrQJg{5lk7AZ_7&3 z$N)Sh7`)$oKoVufTRXsgxyS2juCX=TiJV!t?_BJY3m&#YqqU(}Xv{S51l||dStH!Dw|E#y3ikBO{lPo$=Cw`iGo`zO5!_&l@ zcDAU}nV*Ij{7OQEHKcNe+D}WGwjd)Mi<;Rh#rUnJUl-1tyL1JU=jG{%u^v0xD?q48 zOt1tw3WVWKY1dT@x z2GZ;htD0VKF`yN|QL>`psz4>$fdgbXP=q0eq>^FR`)i=oJAGBG%-8_twxMkfYkU2Y z=pt)`bK#K}JV*AT1+M^Mkt^35RdA&zTRd(HX%MWujhBYDvnW@$D4w!n^%4;YeyX~M~ynk zvO~hjvcZRZ4${&TEhsXmT5(1GJhJdTdSkD6m8FZNBJPpzoR_K~)P69s*Xv8xIm__U zPGrDjcpAmU=L@$?zt{bT*4fk>WCzcTL}u6S){|nJ8n$im&y8A(-XG9;_t9@(QkCU1 zH$6dL+NdB_FG>n48m%RyDe!gJ8a4wj$`F%ilK+?oXJ+>gL*4Jl#Y%7YU2f@d?w)b7 zR?xRICs|8P4+$@TR{J{6msM<-AO1ux$IsKnI~`^P{NQ(z3SKqd39%p8Uh7vrd4`?R zaPiCe5HBd9$B66)#$&UqN+8SVi%YxqB%x;#8+)5Awq!IN#&tJK;p1hYfdW(R0-G1^gcdoQiNosBlRdvQj}q zd1grXhc>%UtrB;5eS=OAU{xp|EDdMQf{MNAx-`P&blvO;?#ebVVU~uF! zH=D0;88KoBi)T4SuR|Yusb^PgZp*kLY zi0$QR@>@aU_6&}Ki#7Jv*A~cFOpFrirr^lMVNC??#1b<^IS_ur)~2%*yqYn*SI|Igp^LSKCr!Vs=~V zWuKXXmV{S-nfgcQOKa+P5aP65K|4URR>@Ou?0W&bj1G@jEYJelI%#sRHDvb^l)>0IWC!qr4 z2VK+fk^#80JOu4T$)4F?R0IY>P`_|n0$rhNzh6icl?_@y&Ru0mk+Z3QF8#L* zD|p=Qg5xkZyM8dpe!g}^w4cfSYy7$8?`QVwy2;XNOg#PA+0SKh!;9`lhs*+cXM!s1 zJ3}K5u-Uxa@?jjP;+haP+Jt)pqPKALR3)gO@)7AvT3Z`Q-%)uTevXT@N5l^T39yVZ zjG!}i64DwGK!OkuDnUdPq64EC)}`&DyG)cNE4 zt=O+I9)#?BF1%h$XW9qW)HV%_=R`V!tx5tftWM{YTk1?1t<709=ZtUihsFo(-BK10#at^Mb6fo-d9K^gUa2q4dMx?(@D$p1dEyT>1YP5~bphycQvXc086E_JV#T0cF z*P;B;7nd({lVP{X;v@xHD9Xy=C5iwJDxu?Ns(>%_QUd8Y<#kFXY12P?s{QubR((#^ z@JY7@zOMTkWv?feA3wh+F#E)5tD61TmW@!JbHesjI*0{4NVHGP>KZ0kW6JaB_stC` z2(s|xY6HUW+dTSUl>;8_Pe0%5a1%bp-?t%E(2{QCE*Z_Ak>VU|g1&qWl2r8}Oz`|0 zA+$kirjD*5YG(WBiDzzVtIvS@xP3~J)_|0x%5oADh(1l1`hl~SO_m_`SBg%} zPtHI-z0~@6BQDOcF*H9iT_ufG{xIXj0bpsr`_zqzg1^D8S1Ye*NeKD86A>VdIe`pb z)Jz_lGy9al#Af0-F9!9jXDd8>>-&-O)1ebi2)K?`t^rS)Xl#C5kkPnB=1$FYk5|N7 zhq8+5g35u1>y@8Tgj*4(eHzBGTfkiUw6}w*e&CcV1=yu{!3q3dd#vSMGk?1liTKgt zU@atCx8hbWa{aA|h*B3X3yi!6%stUQ+#@^ICZ%KDbOxX1@zc(>tH;c2YEBa48#Lr1 z8cwMcw7@yAarL(=D3*gGpKf43xCb*Fn`7EZQ?Wi3Wx%ddfg71=ceqI^Yg5U5wMGd~ z7#v;=HPx?_Yh5nr8O>YpaYQcC4+{_zb|C=%yxcyCKIEnH&5H>|xn-Tej`MZV6x&%5 zRaQ;ZE?vtoN&OIUp8s5P4MS`n-($!nMi7kto<~1aIt3jZAZ?SyiAIXY2@GHmea?^% z&eh5H$4?a8SXtXbR3q=$X17Tvcw>{-9@(!4MY_Igk+6qp&F8$Fwl0j+*}mAyM0i(K zxM~|*!fPldxhUq4gct94hhi@VV@W;EL=ybai<|g>hEi41Y&qpuYjK0PhN1od0%>$g zrL^0{+gQa;>!Q-#XM3Bz&8kmPu4kH(Il} zJpN8H~#9iu#`VtaP4Kbmr>pFv>rpQhrmodQL!K{l}L5PGzg^1|G({+O>Q5rLa*!z8Ll@7C`(IWjP zj7oHIZ?a#n@_&cOQok$Q7-)@w-~1HMu|TnSM0>Qns_JIi?fqNHpy&z3P=;6A+$Uar z_@>!p_(MxPPDowllU_(vNz#m*V70i^hVrB~l}%1no-?pCk!5IKV?|?4mc{vQD%5Tw zPgr62O2)oNQsWv=h|8g`bAzLY zKW5QzKn_|hp(Vj)aX$*?Wx~b(5v;XG+XNlDKUtmjhss=+>CN`bBkuA2MKQvW9Fl3=IU3s1Aivn zNK@NWKY;Hl*+~i8g?#b__`q(K=@0)s;zWrxOkS*HB0&K!7f{8UPL9Bz{y~Qpg?C)2 z>~c9gYnK+)ft7fI_`x&xFTT`-ZGAe~bPT6y6B`4f@aLS2Kf&4u3_L`?Dmq z%H;3RfBw6HzcZ)*iBJ3AJ@}v8^M9gj{$GC%O2O>VWPvSzoSm?p{Os1<%5N?-9$EhZ z9c<8JX4bP~rbSV5*;javq;uH2%dBftFT?1$IJyaxHh=(l!ap%1!+vGuMSkkwZYwe{ zv)Nb`=wJ5Hgub6P7kXx>`7(T;SmUSe@Rp_%rJG$HlGccfC9eVyw_@3aIxLmlJ>KMEdhE`RoZlsj z{(9=Tp`|@F+5h^Rf67q*9a8vjd;Wr+08GC@C;U+?!S?e|H98PeQlMto?{z)f7Rzeg zrOsSKDgU~Z9c~mOtN>w>gE(sb=F^E-b4EaMOIOlSKjJ!muJ()XS!Di7G^7yzmo=l$ z<^M;Hz2}c_|Ip&@>Fs{ui->3%R}_2`@-RYI@>V2*MSLTco$PoKVQ4#$sH9W|GS~pHCr~J8Y6Md|&5mP~aQ9GMu8^ek} zt0RM1YE9~|!ku0qhOqx32qmWs;Fb(Q9bI>&JVl)30iL9iLAv#RJMS*!PMHf8GZ}lz zd3~EAW7{OUGwei>s;yEnu9DIoQm-*m7v6w>|5;#-Q-JCJs~YQgpAqz0Xp#oK)>w`n zYYfk(52DvBLG%K*q}2xi4#75StHaTBo#-6YcVSh~h`ifdNE5o+J?$Ne_AW$2t(_Q8 z4U`z)oW;;1dDkj{uf4QRKJs5h&i{}8P53+PfwyoI7Qs=tNq3T5K~O{Z>nk${Q-W8Cb>w?2HByquxxW{kECb^--Uj|;Cn&)&s>^& z4Hm|0q)g)*d`4hhZwiySI>z11YrwL1rA^{e{evG5gv`65d=_Wo!s(0s?atnv={`rv zuv%#8Y-v8ycnTj)W^Md7JhmVwPYUsL6cKqG;VI%|q-FM70G}Y^guj8o_oJNM^nJ+w zMUoX+kT5nj*NF9yP8JTrEK?OGRu8MV<>AqmNf%<2~_`;;oFiIgB?#sp(#LB9yd7 z#u6>-+)i-Jz-ZbTqj( z&6<9ZmQf>33iBF}D<|zNCm)STBpO#ESUVl-x%twZgYh~=G^$tkK zlqU_ldiB{V2>)2!;VS{Qrsh5Q+y8!0{RxZyyVt(O2r@5}nsl@p&?l5O(_;q*22p=h zuKEcM2t}gKDFg?M8QwBoUd>MMTl-=*#pANsPdHyAiFHaM0saxuxA z9GUT>tQcV{#e43I%iapY$rikXG*O>^QC;1manwhR!{S9&Se-$w0og`X z$91e*6ZVxF*Dr0-$zr2BI6h?hef0CNh418r;9H$(!jS7beKs_(xBAxrLpL8t1@^Yq z2juTsdQtTV8({lx`hYK;z-a;shy_{>vUj90 zj{l@f_NB>z?Fal$Ab9V)sBLgUC=Z}&tkTp#v&8B1K1w=>4=BRG5RP^n8U`ba1CA&8 zh(Gm=DsBh#dn=mu6*h@LEx>jmf~YNJ;#%EP_N0w&)H$}R-7bX#K= zQUQ&KfiFRS?ftZW`D*_(AS~qg@tp|JDg^Bt)hiYE8^9g@+I@d|u`tvo15l)eQNTH- z1~dpo*98pOLxVS}DL%oaFV25Q!MdzRn^jeuFUl(Y>!XOb`ZpZaxb7qF z{t^xNb-y&&g;?y#UqrLh#gJ%y0yeNpz-}@Lu3i42wEup%LO{5vJkw)=)~K7i5F;kS znRo0!?Ys4IA}r_K)J%8|`{_Zx(vRle+C!g|{jDEyJ(66|b1JrL`QbWlpB!)bsY``@ R0(u9e{viLWT&Uf_{|%m~h93X` diff --git a/.github/2.jpg b/.github/2.jpg deleted file mode 100644 index 3ea4b4b47135953a2501d3b7b8c39ee526497608..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78315 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 c6+M73KqVrn>g#<$!G8XSJM~3%ng4YMXqv%Tc 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%0D0=a#Xtd2MAY%59m9Rky^Jkg$-z36qZ2rm9 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%0Dafa{L?r$ovj|9~~0Lwtok#L({t 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